diff --git a/examples/jupyter/nuclear-data-resonance-covariance.ipynb b/examples/jupyter/nuclear-data-resonance-covariance.ipynb
index 9e79175d88..ab2694922d 100644
--- a/examples/jupyter/nuclear-data-resonance-covariance.ipynb
+++ b/examples/jupyter/nuclear-data-resonance-covariance.ipynb
@@ -1,5 +1,12 @@
{
"cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this notebook we will explore features of the Python API that allow us to import and manipulate resonance covariance data. A full description of the ENDF-VI and ENDF-VII formats can be found in the [ENDF102 manual](https://www.oecd-nea.org/dbdata/data/manual-endf/endf102.pdf)."
+ ]
+ },
{
"cell_type": "code",
"execution_count": 1,
@@ -16,8 +23,6 @@
"import h5py\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
- "import matplotlib.cm\n",
- "from matplotlib.patches import Rectangle\n",
"\n",
"import openmc.data"
]
@@ -28,7 +33,7 @@
"source": [
"### ENDF: Resonance Covariance Data\n",
"\n",
- "We can also load the resonance covariance data contained within File 32 of ENDF. Let's download the ENDF/B-VII.1 evaluation for $^{157}$Gd and load it in:"
+ "Let's download the ENDF/B-VII.1 evaluation for $^{157}$Gd and load it in:"
]
},
{
@@ -53,7 +58,7 @@
"filename, headers = urllib.request.urlretrieve(url, 'gd157.endf')\n",
"\n",
"# Load into memory\n",
- "gd157_endf = openmc.data.IncidentNeutron.from_endf(filename, covariance = True)\n",
+ "gd157_endf = openmc.data.IncidentNeutron.from_endf(filename, covariance=True)\n",
"gd157_endf"
]
},
@@ -70,28 +75,113 @@
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " energy J neutronWidth captureWidth fissionWidthA fissionWidthB L\n",
- "0 0.0314 2.0 0.000474 0.1072 0.0 0.0 0\n",
- "1 2.8250 2.0 0.000345 0.0970 0.0 0.0 0\n",
- "2 16.2400 1.0 0.000400 0.0910 0.0 0.0 0\n",
- "3 16.7700 2.0 0.012800 0.0805 0.0 0.0 0\n",
- "4 20.5600 2.0 0.011360 0.0880 0.0 0.0 0\n"
- ]
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " energy | \n",
+ " J | \n",
+ " neutronWidth | \n",
+ " captureWidth | \n",
+ " fissionWidthA | \n",
+ " fissionWidthB | \n",
+ " L | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.0314 | \n",
+ " 2.0 | \n",
+ " 0.000474 | \n",
+ " 0.1072 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2.8250 | \n",
+ " 2.0 | \n",
+ " 0.000345 | \n",
+ " 0.0970 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 16.2400 | \n",
+ " 1.0 | \n",
+ " 0.000400 | \n",
+ " 0.0910 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 16.7700 | \n",
+ " 2.0 | \n",
+ " 0.012800 | \n",
+ " 0.0805 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 20.5600 | \n",
+ " 2.0 | \n",
+ " 0.011360 | \n",
+ " 0.0880 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " energy J neutronWidth captureWidth fissionWidthA fissionWidthB L\n",
+ "0 0.0314 2.0 0.000474 0.1072 0.0 0.0 0\n",
+ "1 2.8250 2.0 0.000345 0.0970 0.0 0.0 0\n",
+ "2 16.2400 1.0 0.000400 0.0910 0.0 0.0 0\n",
+ "3 16.7700 2.0 0.012800 0.0805 0.0 0.0 0\n",
+ "4 20.5600 2.0 0.011360 0.0880 0.0 0.0 0"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "first_five = gd157_endf.resonance_covariance.ranges[0].parameters[:5]\n",
- "print(first_five)"
+ "gd157_endf.resonance_covariance.ranges[0].parameters[:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "The newly created object will contain multiple resonance regions within 'gd157_endf.res_covariance.ranges'. We can access the full covariance matrix from File 32 for a given range by:"
+ "The newly created object will contain multiple resonance regions within `gd157_endf.resonance_covariance.ranges`. We can access the full covariance matrix from File 32 for a given range by:"
]
},
{
@@ -118,7 +208,7 @@
{
"data": {
"text/plain": [
- ""
+ ""
]
},
"execution_count": 5,
@@ -127,9 +217,9 @@
},
{
"data": {
- "image/png": "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\n",
+ "image/png": "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\nIiq5Enr3y8wuN7OTzOwUqk1VPmZmPwl8nGrHKZjTfY2nTZjoaI47bH5pY+9jVmIunphK1nS1TlN1\nxSzBmNxNhRQqp5L+tz2P2PlQcTeVRqx86pXqb9iXnOKNlS19dm2fgZx8uXrCz99QxnaNJZ0n6XZJ\neyVdFrl+WD3yZG89EuWU4PrTJd0v6dd6d6pmGgr+dcBr6p2njqHaiWrlCD+cuV//Lr/Y03J924h9\nqVeRPs8gpuBiFt4Y8qTqGet/N5YilLQBeAdwPnA68ApJpwfFLgLuNbPTqLbrfFtw/Srgf/fryeMZ\nJcFjZjcAN9Tv7wDOGKPeZSL2QYy5ol0/sH3rKHGNY1/cMb5Qfa2U0i992FZp2RL6yt4mx1iW25gW\nYMjIc43PAPbW+gJJ1wBbgM83ymwB3lS//wDwe5JU7238UuAO4J/GEGZZXX7HcaaApKIXsGkyKqR+\nXRxUdSLw1cZxbITJo2XqnMN9wDGSnkzlef76WP1axCE/C0n4S52L++VoixHG2iqpZ4hMXelbd8xK\n7dPPWZNK9IxVdxfLeBASbCxUGQ8/fI+ZreVqi5wLR5ikyvw61aSN+2ulOxhXhDOiqxuacndzH/xp\nxg/nQaHMA31d+mn9b2b+fylXhG0l9gEnN45jI0wmZfZJ2gg8FTgAPB94maTfAI4EHpH0oJn9Xplw\nT8QV4YyJDSsJz+fIKdRYYmZIzCg1fCQs0yZ3WE+p0m+jS7+aMpTeN1YSq6sS7CrjzJRhF4uwnZuA\nzZJOBb5GNfLklUGZ7VQjTz5JNRLlY2ZmwL99TCS9Cbh/iBIEV4QzJ6as2pRNSX3TJGfRlFiqoaLu\n006MPkqg67MtlWdMq29ure9DDoHDDy8r+4//mL1sZgclXQpcR7Vy1zYz2y3pCmCXmW2nGnHyh/UI\nlANUynIquCJ0HKeMcS1CzGwHsCM494bG+weBl7fU8aYxZHFFuE6UBv1zrnDI0KB8Lm45LboMiRki\nz3oOn4lZi2M93z5DigYxoiKcJ5azVwtELH7WJW7W9QsVKx+LnZUq6j5xtJJ4YtdrJW1PQ/Gsdz19\nMum9GdkinCeWs1cLRMxaGDrLIKechliIYRuls03asuJjzaooZRoKNTZTqOT/MbZ8U8UVoTNNcpnY\nLlnkti9cV6sul+To4rJ3qaeLa9xFYYw1RjLXx5TFm1KcKZmGJMtKQyy9cEXozJJUZjlG1+EzKStv\n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\nUQAAAABJRU5ErkJggg==\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -137,7 +227,7 @@
}
],
"source": [
- "plt.imshow(covariance)\n",
+ "plt.imshow(covariance,cmap='seismic',vmin=-0.08, vmax=0.08)\n",
"plt.colorbar()"
]
},
@@ -145,7 +235,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Another capability of the covariance module is selecting a subset of the resonance parameters and the corresponding subset of the covariance matrix. We can do this by specifying the value we want to discriminate and the bounds within one energy region. Selecting only resonances with J=2:"
+ "The correlation matrix can be constructed using the covariance matrix and also give some insight into the relations among the parameters."
]
},
{
@@ -154,31 +244,47 @@
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " energy J neutronWidth captureWidth fissionWidthA fissionWidthB L\n",
- "0 0.0314 2.0 0.000474 0.1072 0.0 0.0 0\n",
- "1 2.8250 2.0 0.000345 0.0970 0.0 0.0 0\n",
- "3 16.7700 2.0 0.012800 0.0805 0.0 0.0 0\n",
- "4 20.5600 2.0 0.011360 0.0880 0.0 0.0 0\n",
- "5 21.6500 2.0 0.000376 0.1140 0.0 0.0 0\n"
- ]
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUMAAAD8CAYAAADt2MYTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvX+cZUV55/9+bl/uNE07NEMDA46T\nAQckBFmio7AxX2P8FUxYcHdJvujXhPjjReJX47p+80OTXXNDQl4km9VdY6JBQ9D8kLjsJsGVXYO/\n1nUVBZTAgAiTccQWmqEdmknT9LT33vr+UVXnPqdunXPP7Xt7+sfU5/W6rz516jlVT9U9t7qep54f\nYowhISEh4VhHba0ZSEhISFgPSIthQkJCAmkxTEhISADSYpiQkJAApMUwISEhAUiLYUJCQgKQFsOE\nhIQ1gIjcICIHRWRvQb2IyPtEZJ+I3CMiz1N1V4nIQ+5z1ah4WrXFUEQuEZFvusG8c7X6SUhI2JC4\nEbikpP5VwNnuczXwAQAR2Qb8JnAR8ELgN0XkpFEwtCqLoYiMAX+EHdB5wGtE5LzV6CshIWHjwRjz\nBeBQCcnlwEeNxe3AlIicDvwEcJsx5pAx5gngNsoX1cqoj6KRCF4I7DPG7AcQkZuwg7s/RjwhYk4G\nZjgRgOc9bzfLy7Cl8zQcfzydjqWruaX7qafghBO6z+vy8rL922jYv08/DePjIGLLi4tw/PG2vLjY\npavXLe2WLd1+9LOLi/ba8+FpReDIEXv/uONgbAyWlrp1vs8tW7p1Ia2/Bluu1+3Ht+Nx5Ei+Xc+f\nv9ZjWVqy5Vqtd06+/3173/cJgDEgwuKiLY6PW5pwLL6fsbHuHPg50bR+nL6sefXz6efk6ae7/Pk5\n8XPg58/zo8c5NmbnpNEAwXpSdYxQq9nhaP7C7yXGX6PR+50dd1yXVs+1fqfCOSqD/l78tZ8//f75\nPvW7oN+TI0fs/aJ3ql6H+pidk1ZbqNfhrrvumjPGnNKfyzh2i5jFirSPwn3Akrp1vTHm+gG6eybw\nHVWecfeK7g+N1VoMYwxfpAlE5Grs9pedO3fy+ocf5rd4HQBf/vL7mZ2FnQv3w7nnsrhkV6eJ8Q4d\nauzdCxec38naumdvLSs/PGNpd+ywdfv2wa5d3R/W3r1w7rm2vHdvl25qCh54wNL6l/6BB2D37i7t\n7t32/vh4l7ZehwMHyPqcGO+w/0CNHTvyfe7aBZOTlh9POz5uy/4abFtTU/bjefc4cCA/Fs+fv/a0\nWyctD9u323ZnZ+39M7bb+Xv8cXjGM9TiTgdaLTr1BnudBmf37i5/u3ZBo27n9/4H7NgmJ/N9Tox3\neHBfLaPdf8B+D75e86rn08+lp/V9bt9u+9BjmxjvZP37cT48Y8fZwK74i61G7j3x/fu59/PnvwfP\n7/0P1HJz+/Wv27rTTikei5+TB/fV2L3bzmMnImzV6L6rD+6r5b5736bmwdcBTE/Dtik7t3pOZmbs\nO+K/a0/ry1NTsG3SzsmhhQbbpjrI2Ni3e5gbAIvAL1SkbcKSMWbPEN3F/rWYkvtDY7UWw74Mu/8S\n1wPs2bPHNL/1rezfXoP3sLM1wz2t8zgfmMD+P+owQY0OFyzdSYcXZm1dsPTVrLyztd/d3QXAOUt7\ngXPxQ72gdTdwPlB317sc/RTntfYCuwG7Spy3FNKe62jHFW2dc1ruzW3toMNWzmo96NrVfe4GJjmn\n9UBGS2vcPtvaAdi3/KzWPmhNAdOOdnc2Tku7C+qOv5YfG1zQ2mvrgA7bHA87gHHOaM24+zup0eG0\n9iy0JrM+O9Ro0aBBx/GKa3c8m78ODdfnPW5sk2oO7HdzTut+YDcdGq5/HL/1HK/ZfLZ2q3YcrZ+j\n1nZgSn0P59JhQvUPHba673sHy46/CRbte9JatnOSzd+kms9693tw/J7Xusf1b7+zi9p3g+ymw6nd\nsbi2/Fj8nJzTuh9au+nUG7mFz0MvkOcs3YN/x85Z2uvmADp1PzZXl/G3nQ7b3Nx235OdrQPAtHrf\nPK0vT7PMNgC2cYiOux4GwlE9cZ0BnqXKO4BH3P2XBPc/P4oOV2tsRQNJSEjYoBDsv4oqnxHgFuDn\n3KnyxcCTxphHgU8BrxSRk9zBySvdvaEhqxG1RkTqwIPAy4DvAncArzXG3Bej37Nnj7nzq1/Nys2x\nMX79iGFpyW77NTrUesQRX9b/lXW5H22s/bJ2ip6NPb8WKOKh7D70H1cZTThPqzEHVb+bQfsf1fvQ\nb3417TA8rIS/DjXGxuSuYUTXHSLmlyrSvhNK+xKRj2F3eNPAY9gT4uMAjDEfFBEB3o89HFkEXm+M\nudM9+wbg111T1xpj/mwFw+nBquwMjTEt4K3YFfsbwMeLFsIYmu02v7tFOPHER3MvUvZFLyxQWzhs\nP3Rgbo5aa9nSzs/D/Hx3wZydpdZapkbH0rpyh5pVvCwtdTXQc3PUlpSK2NHqa12m1cqeY24u105W\n52l1XRltWKeh+wzLkbFkdW5OMiws5NvRmJmxH18f69P34etitH6cIa+aX/2cflb3Ebbr63z9/Hye\nP30dzolXnuo+Y/y1WlZBu7DQMxb/DuUQlssQjqXf/Gne9ZyE70lY1rT6ekjUKn76wRjzGmPM6caY\n44wxO4wxf2qM+aAx5oOu3hhj3mKMebYx5rl+IXR1NxhjdrvPSBZCWKWd4aAId4YezbExmu127wML\nCyzWtwLulHFpkeX6RKbQhpL/pq0W1Ou2vrXc1ZirOl3O9EDuGroHDjnasn4LaIeGblddF+3SKu0M\n/Y8x4DejCedM1Q+0MxxkTvR3NsjOsGIfZe9Cv12Z7zPkJ0anaaM8rPOd4bNEzNsr0v5yn53hesRq\nHaCMBM12m+bYGFe68i5g/E/+hM6bruaD/8nee8fbOywywcTSYZic7NlJQv4F1Epuv7hliJSzHaZ+\nzpVjiJ4oFtAODd2uug55CH8UIaqMK2urwriL+inkvR8UbUzl4a99vf7OqqBGp/BdKBtL0aKzEtp+\nz5bNZ1hXdZFeCTazy9q6XgyhuyACXAmce/fd1OYP8aEP2dOxd7zdbWYWFmByMvrSaehy1RckRlf2\n7EpevCp6u0HaWvHOMNLOoDubot1KrJ2ynU1ZH7F2fDlGVzb2fotFlZ2hbie2GMXmuGxHt9I5KdsZ\nDoujfJp81LHuF8OEhIT1g7H+JBsWG2Ix9HrD5tgYzV27oNXiGc8IiJwFcUxkqHLKXITYf/qyZ4f9\nLzyK/+BDicl9+Kky7lg/ZeWqfYR1fcXkPmOJtTNonW63aN5jPPQTk6uK0LF+YnMyCghpMVw38CLz\nr771V/ngB+29DjW2TnbosK1HBCn74ReVh1k8y0TBMtoYr1XEyio/mCqiWFWeNwKqvAPrERuFz43B\n5cqw4cbWbLf5/ROE5z//Zp7//JutvnBpidrCYYDM/GVxyf7YawuHWW7VunqbuTmWW65utmsH7uu0\n/ofZ2e4Pyl1nn9lHutdzB6nNHczaqs0dzP8oZx/pmvd42lYrKwP5tpz5jm8na8vxkGvX18/MZNcd\natTmD3XNgCKmNVldCGdak+OnaCyq/w61jDa7VvzneI214+qzcStzqGidnyM3zuw7c6fh4Zzosejv\nIePX8+farh3Yn7Vbmz9kP5oH9Z7k2tH96e8u8m6E32+UP89DOCfhexKW1ZzkzMWGgNcZjsK0Zj1i\nXZvWlMEfqjTbbdi3j3uWzuH888kWRep1OuMT9kXQXv9LSzA+bl8SvSDU61HTmpjpSlbWz/k+fbtl\nJjshivpdyXMEJ+aUHw54Ggh2yUU8hKY3uk837tzcls1Z0EZPuyV9hGOL7azLno2OI5zrpSX7DoVj\nUWY3QH7cfea6cA6KeCh7F/q8rzlTMEDGxoYyd9klYv59Rdo3JdOahISEzQrvjrdZsWHHpg9Vrv6u\n4YLZL8DcuTw4fypg/0med26HzvgErRY0/H9stysEev/Thv/ddVnvBFxZPxe2EyvHdg4datQUfa7c\nz2C4X78BKu1cwrYqjq30erVpy1C1nYiRec2H9RlkDiryE37vhe2UvQtVv4sRYqOKwFWw4cfWbLe5\n/pmC/Ng3YWqK6WkbysiHOqotLbKwoGy9ZmdptZRbVeAOldMZOp0TkNM/+XKG0J0sdKNzrmdZn4pW\n6y2zsnbP0igr+zhiHs4dr0anV2cYurA5+DH3jI38/OVc6sI+9bUuK9qsH92Oq+/pI+xHfWfZ2BRt\nbWkx/x1pWj1fir9cn55+34NR18KMVqOPO57WIHrakJ+edtV7Ep0T9/16XXdPWdMuLfWoEVYCGeCz\nEbFhdYYhmmNjNL/9be5f2AnAP/0TXPQC+6NYbtVyrnqgdkmhvk/tnIpOX7Oy0hVBscGvfsajX7ux\ncFBlbS+3allMv6peIiFfRfVFPBTxU7gD7jMvpXMSmVt9v2isXt+3Ej1q0fdQle++7ZfQhvrIsueL\n+AjvD6szPEvEXFuR9rVJZ7h28GY3nX9vF/fpaXjBC+xL0aj3mrFkL06JG1v4QvXUuR9K7McQe9lj\nP+Sydj2dv1+22Nox5hXmIcrGEuO/bE5C3nWfRQth2dxW6TM2jqLxZn0GhwixBTUcV1YOFsKyA5sy\n/ormr6gu92w9/p0OMn8xfleCze6BsqnG1my3qf22UPtt4W17vmRfkoWFrikNnZz5DPPzVqzyotX8\nfD7CjYt+E15rWsC6AjpzlQ41e61fXi3KKVpfzvW5sNA1hXDtZG05HnLtqmtvFuJ5yKAit9ToWFMk\n1acflRapw3GH/Wh+svl0fWbXrlw2f7k+fTmck7DPyDgzMdSJirk+An6zuQvKOesCF8FIj6Xsewj/\nGRTu+grmr6cceU9yom9YF3mnMhRFKFoBNrNpzabZGSYkJKwuNvtp8qbRGYZojo3RfOopOuMTzM7a\n/B9A1P6qDGW6mX70a4Uicb1MxwfV5mPQPkeJfjpd6K+3rdLuIHW+z1HSDsJDv+d0n8PqDHeLmP9Y\nkfbVG1BnuOIdrYg8S0Q+JyLfEJH7ROTfuPvbROQ2l+D5tlHlNB0UzXab5gkn9B6c1uvd02TyJ33+\n5dHlUIyM6Zt0OdZuDKGOKey/qE7fKyoX/XC0LikcY5meqQp//XSGRe0UjWMlfeb0fSV9xHgrqiv6\nvvu1U8R72G6VOSnrs2z+ivhbKTa7B8owfLeA/88Y84PAxcBbXG7kdwKfMcacDXzGldcEzXab950s\nXHGFuhmYcGidoTdryV5PZ/ai63JmOF4v40wbdLTtnH4sEsFYP9ujH/M6Q6ffzOqUuUzWrubP6QY9\nD5lJidMpZT/CQCeXW1yUSYfvM7e4FUT/7lCLm3vQNSPJXN10WfWZlZ2+To+zZ750ZHMKdIZhdHI9\nFv89+LLvw3/HMzPUFg53+9B6wXBOgnLuOwsR++4j70LGn34XtFudfk+UzrWnDkYa6TqZ1lRpSOTv\nsDkL3g+8xBjzqEv6/HljzHPKnl0NMVkjFzF7YYGH57eyc0envzvUWke6rsBfv0jXfXkjEKcKIl1X\n6rPMLa0f7xX61H2E49FjyO5X7DNst6fPgrFkfVZwx4vShmMpM6MpqCtD7ntleDH5bBHzvoq0P1lB\nTBaRS4D/jA2G82FjzHVB/XuBH3fFCeBUY8yUq2sD97q6h40xl1VkrRAj0YeKyC7gh4GvAKe5LFa4\nBfHUgmdyeZNXEzpAbPOpp9i5fRmo975c6gUH8h4CA3iV9GCl3gAVPGTCuqHRb1yDeN6U1Q3iLeHq\na3RW5O1Rqc+KY+lQ0XMkQNF3lqsfZP7WAKM8QBGRMeCPgFdgs2neISK3GGPu9zTGmH+r6H8Ju8Z4\nPG2MuXBE7AAjEO9FZBL4r8DbjTGHqz5njLneGLPHGLPnlFNOGZaNhISEVcaIdYYvBPYZY/YbY5aB\nm4DLS+hfA3xshaxXwlCLoYgch10I/9IY89/c7ceceIz7e7Do+aOJZrudHarIFpe0PJI9rSeTnv+P\nPjMTzY6n9Ts5vWDoThZmMiuiDTOiaWjdmeIh48/pP3vaXUF2vNw4UTq5NcyOl+t/A2XHyx2S6PdG\n9anrcn32yY6X08/qcpAdbyRSAyNdDJ8JfEeVZ9y9HojIDwBnAp9Vt8dF5E4RuV1EXj3QIAqw4l2v\ny2v6p8A3jDHvUVW3AFcB17m/fzcUhyNGs92GsTE6GGrbt+fFj+npvNfB1FRXXHR1QFbOnp2asn91\nWber++lHOz0dv/blkNaXw7Hodn2fHt5xO4bt2/P8OR6yOdF9lvET9hnSan79OKu0G9aF/RT1ofsJ\nr2Pt7thR3Efs2RLkTupdPx1q1KrMX9mcuLY1bVbWtOPj/VU5FTHAkjotIneq8vXGmOtVOXbOUnSA\ncSVwszFGp8rcaYx5RETOAj4rIvcaY/6xOnu9GEYF8CLgZ4F7ReRud+/XsYvgx0XkjcDDwE8Pw+Bq\nwOoQhV8/Ymi4+Iedya3UnNlNve6+8vEJW0cNxifyL1Q9H9HG09WIZ1oLdUb62dAspl87GX2QHS9n\nBhLxT9bPhqefmUlGkBWuFugpO8FYcgcXyj2xqJ2QVuvgsvpQ/1nQZ+6Z4CClQ40wo6EeS48bZuiD\nrPqJ0Wr0jDVyqBO2W8RDVu7zTuW+y4L5y419BIvhgO54c30OUGaAZ6nyDuCRAtorgbfoG8aYR9zf\n/SLyeaw+cajFcMV7Z2PMF40xYoy5wBhzofvcaoz5njHmZcaYs93fQ8MwuFrwierlxOORE4+3L8uB\nA9TryjTiwH7AlWcezjdQYlrTE5V45uG8uBMzFfGiuTKhyEXTJm76kz3r+/Bud5oHF6nZ/yhqC4dz\n4mRuMZ552LalRLmc+Y034VFzkI3b8ZfNgYriHZq5hH2EpjbatMbTZn0qdUAY6TprP5iTUO2ho2tr\n3rWYnEVPV1Gx9feSzZluJ/gnk/vnFbw32fen5i9mWpPVaXOjwOwmZoaTzYl3KxwBRmhacwdwtoic\nKSIN7IJ3S09/Is8BTgK+rO6dJCJb3PU0dmN2f/jsoFj7I6o1hBeZLewOfN8+2L3b/0eHxx+HU06p\nUZucZLll7zfqHStqelHEi526HIpyPjZeKP6EtJOTvbS6nTJR2D8XthuKxePjxaeTMTE+rNf8FfET\n9hlTBwyiOqgyTt1GjFaPpd/cTk93n42NpaxcBtdPhxq1KvNXNu6QP10e5LS+IgQ4biQtgTGmJSJv\nBT6FNa25wRhzn4hcA9xpjPEL42uAm0zeBvAHgT8RkQ72Z3qdPoVeKY7pxTAhIWEwjNK7xBhzK3Br\ncO/dQbkZee5LwHNHyAqQFsNcxOx3tw3nHNhPh7Ns5dRU9z/h5GT+H+zkZFcs0v+xobesdxb9aHU5\nUpcTxYKdQk4U0nWD2NA5XiuNbYV1HVQU6X7tlLRbZJuXzU9sR1y1z4LvrIf32LNlGMH8DUw7wp3h\nRnW1q4LNPLaB0Gy3uWZMkGd/qXuzXmfbeNflKeY65a97TFk0YiYTRaY18/N5MxyNiBuY7iNnWhMJ\nG5ahwLQm1N8V8VAY0bss0rW6zpmVaNqiOQlptTlKONf+vn4uxm+Z6Y9zx8uZ7+h+ysbdDzoCeb+5\n1SYysfckNJ3S5cC0ZlTYzL7Jx/zOUMPrEGu81t6YmeGe1nlccL7dIS274KkNAp1haNpQpi/rpx+L\ntavbKSqX6dJiO4cBdYba3KgSf/14H0ZnGM6XRtFz/fgrM3NRfeRMWYraCpA7ROk3fwO+J7n3rUgP\nPcjOtQSbfWeYFsMA2nXvzbOGC+77LB1eSo3uP95GnUIxNOquNYjI2sdlrLI73iCuZ0W8roC/yn2u\nFu2o2lnpd9YP2mRmFeakr+pgSKTFMCEh4ZjHZg/uupkX+hXDu+59YLsgL7vP7ggXFhgfVxuGubnu\nTqxAP5ZzwdJ1oa5Ko0wnp90Dw2ddXVYf0yl5FOgMO9R6s+PFxlKUva+fTk73E7aj3P56MsEVuM3V\n6ER1htqFciD+Qne8yPxl7m5F7UaQ27Frt74qOtcyt82jnB3P8r15dYabNtL1qNAcG6N55AgsLLA4\nvg2AifEg1JV+8WIiUyxEVUEorFw5Fvqr33OwokxwEIhSmgfNe1k5DLUVG7OmHXBOOvVG3xBeHtlY\n9JzoMFj9xgV2ERmf6B3LCkJ4Fc5B0fjDe/3ehbDc6o3oPmwIr+eKZAEI+uGcDRjpejPvekcCr0P8\n1acME5/7JACdV/0UNWCZBnXoTQIf/iBiC2QV/VDkudAdLoN6+TVyLnpVfqz9eCgo9+jABh1zv/qS\nOdHo8fhw9D26tH56XuiKASPQGcZc53rem4I5KasrLA+ixxwAG3XXVwWbeWwjQ7Pd5vdPEOTSGeTS\nmZx4pl2nMpSJybFoKRplyejLoqWESe5XELUmKibHotYU8bNaYvIASeQz17vwuSr8VRWTy8YdQeiO\nBwVickES+ayPJCavKpKYPAD8KfO728aGhJ/cal/qUEwuEF8LRerVEJMHEN1yYnJsLCGvRWMpE5PL\n2u03J+G4PN/BODU2pZgc8neUxeQLRMwnK9LuTGJyQkLCZsZGzW9SBWkxHABd1z2xCev33gPnn5/V\nZ/q8cJcQ0eUUhsWKtAOUthUtF+iMYruXnJ5thfZtfXWGg/JaVN+n3SKd4UC8e2xAnWH2/a6CzlCw\nERU2KzaqeL+m8Icq8s9c+LQw453OpAaVsuNlCOu0HrCPzjDneqaz4zmdV/ZDCXSGucWjis5wSNMa\nPSdZm7occ8cLniszrYnNSY+Orkhn6HHgQNQdbySmNWXueCF/A+oMo7RJZ1gJQ+sMXWKXO4HvGmMu\nFZEzsfkMtgFfA37W5TgoxEbRGYbwwR384pXpaJYW8x4MS0vdckxXFdET9ei4YrQF+sNMZzeMzrCK\nbk0vqKGesorOsIo+MdZnwTj9GLIxV+mzjN9Wa9V0hpW+X3cvpyst0i1H5m/UOsMLRcxtFWlP3YA6\nw1Es4v8G+IYq/x7wXpc3+QngjSPoY13CB3fgxhvhxhupveTF1F59GX984wSvfV1eVFtuuZ1VvZ79\ncHzZX2tRVYvJ+n4oAupySAu9pjUaWfBP/QOO8Bcra1rNb9hO1q+i1fyFdT19BDzp+33FwVi7YZ8R\nfrOyFpMHUQEEyH2/BfMVjq2n7ZAHd6/S/NH73a8Um3lnOBTfIrID+Cngw64swEuBmx3JR4CRJGtZ\nr2i22zR/4Rdo/sIvsPXuL8AVV3DxxXDllYpofr77bsYSfmsxWUccCUXAUPzWUWzCqDphlJpI1Jpo\nJGYvxnvxvGLUmp4IMkq0rByhpUwkDJ/zIqIeF/SK16HqwPMTi0QTithVo9aE31MZqkb9iUWi0fz1\ni1oTiMmjgHfHq/LZiBh2Ef9PwK9C9gs9GZg3xvhvYobijFdXu+xWdz7++ONDspGQkLDaGHGq0HWH\nFS/iInIpcNAYc5eIvMTfjpBGlZIuU9b1YHWGK+VjPcCfMjMmMPcfmZqC666Dyy51BOPjtFoqXQB0\nRSUdigl6gormdoJhcNeANueB0i/4Z5FoVxDivlIIL/1sv1D5etz9srtpHiKZ33IIn9Pqgn786Wd9\nlsCqYylB7jsMw/4XtRu2GUsPUe8N4RUNIbc22fE2HIbZ0b4IuExEfhIYB7Zid4pTIlJ3u8MdFGe8\n2nTwp8yHDryDT3yie78zuZXG0iKd+gQEmdRiGe8ykxuXnc/Tl0a+DmLuFbrtuXJM2d+hG8VZ86OR\ny3IXHlzosZVkxwOoOd59O7rPHlpdLshqp8eS9an66BlLQYa7sE89lnBs4bM9KocYInMU4yGckyL+\nYmMhODgZlb7Qtrl5seKxGWPeZYzZYYzZhc1s9VljzP8DfA64wpGtu7zJq41mu822PxSuvVYdUMwd\nzP47h1njctd0qM0fyvQ9tflD+R96mc7QZUTLsqnpDHihznBpKa+ndNCuhZqfXJ9eN+lotd7R02bX\n84dy7XaPETqZCVGuT19WfWhaoJv1z2eU86leHbXXJeb60FkC9bjU2MKMhj5yuB5LOM5s3nRd7rgk\nv0hntH4swfebKwe6Zf9cVr+wkK8L29UZA3308yExajFZRC4RkW+KyD4ReWek/udF5HERudt93qTq\nrhKRh9znqiGHZtschTueE5N/2ZnWnEXXtObrwOuMMUfKnt+opjVlaI6NdcXnhQUee3orp53SyZtW\n0OmaTvgfTR93uyq0RSYeZfehwLQmRMz8g14zl0omJlUNg0M3v8g4C01rykyR3DjDdnV9Tz7lgB8Y\n0LTGobDPorldgZib+14Z3rTm+SLm9oq0jT6mNc4k70HgFdizhTuA1+gsdyLy88AeY8xbg2e3Yc35\n9mDVcHcBzzfGPDHAcHowkoMfY8zngc+76/3AC0fR7kaGjpjdPHKE02YfhFN295hTxETEDP0Wi+AH\nGL78ZSgUkwsW1Ch/EX6qQPdTCVrvF5rW9HkuNyeDmMcU8BflvcJYot9NwbswDFa6cFbBiIO7vhDY\n59YLROQm4HKq5T/+CeA2n5NdRG4DLgE+NgxDm1kFkJCQMGKISKUPMO2tRdzn6qCpZwLfUeUiy5N/\nLSL3iMjNIvKsAZ8dCGkxXEX4iNnNLVuQ5zxmb/rscxHdWaY/q5odT0e+VtnxOgQubZEQXoU6Q+eO\nl9WXhRiLZZ8LbQf1c7qfWAgvXda2caHrnrYzDG3qAlvBnO1lv4jjfiwtF8LL61mruBaWIHeA4frJ\nzUE4n7pP/S7oOXHl7LsO5z7IjjeSQxSRvPF82QfmjDF71Of6sLVID6HO7hPALmPMBcCnsXbLVZ8d\nGBvVPnJDwWfdg3Z26rvcqllTm3qdZRo24x7Y/MfjE/gT4px4pXM1Q48phj59zpmKxPIHF4lk09P2\nb2A+U2haU2DKUimzX0jry7GsdkV9hiYn+jqW8a4KP2BNayJjqdHJtxO2G0HulFnz1G+cZfy5cmia\nFH12RNnxcn30w/e/349iBniWKvdYnhhjvqeKH8J6t/lnXxI8+/lqjBUj7QyPErwOcf/cVvbPbaWx\n7/5sZzMzk3elyzY3kcTmMbtDAKam8qeX/VzPiqASvXSoZX1k/AX2i9mJZUwnp3lQtHpsWZu6PuRv\nwCTyMVrfbtccJZiTmNmSN1lxy3TbAAAgAElEQVSp4I5XtvPKm/eUtKPnJL/LKtRpFn6/I9A/9mCw\nnWE/3AGcLSJnikgDa5FyS747OV0VL6Pr9vsp4JUicpKInAS80t0bCmkxPIpottt89NnCR58tyA/t\ns1LY9u2cNX24Ky0tLdGg66qXQ1gO3PFYWuqKR2XueEtLeXEyaDN0fwvNebQ4pk1r+rnj5RbriEid\nS1wfidCSu16JO144X33c8TKTlApJ5CsfWlRwx9OmNYUuimvgjket+4+r76cPnB3yW7GL2DeAjxtj\n7hORa0TkMkf2NhG5T0T+AXgb8PPu2UPAb2MX1DuAa/xhyjBIYnJCQkI1+J3hiGCMuRW4Nbj3bnX9\nLuBdBc/eANwwMmZIi+FRR9d1b4yt9afggQf4+7nn8cqXu52F1ueFblStFotLNZudD/K6wFaLRazO\ncNy3Q4HnSoEo06FGzbWZib4FbnTA0XPHC2nLxNsCHVzPWPq542l9nqLt0MeNLoKcznBQd7w+ulKv\nS/a0WblsjobBaojf6wSbd2TrHF6H+I4nDa9c+AIdXgxAbXaWh+tnsXNHJ6cT9Ir73Gut3fHCugLd\nVMyeLWeorBdR92zu0Eb/sEJdWUW9Ws8C3c/eTunSBrLxC3SGA0fijujronrKEdhM9rRT0Q4yHNeo\n7BWjGPHOcL0h6QzXEM12m/ecKMiP7ePxx+Hxx4HJSXZu74bhyqn7Qv3Y3FxXNaRcz3poVSM1OuU6\npDBTXZjpT5V7XOwKdIb6uVi70eyCZSG8HLxbWg5FEbI9T77PfnpA/ayavx7dqGtX/1PIHRQRHKCE\nYbo0yuYkFsJLX4flInOjYTDaA5R1h43J9SaCN7s57Xjnzr0ED8822LHD/qfaWvd+pePQarnoN+7W\n5KQ7bLEvYL+oNeFJs0fux6rMRLxomXMbm5qydnL1enYNzm2tQEzOteP7D9uB3rJHWZ9lYvL0dNfP\nu17PeMqJlkEf2fPbt7sI5RO9J9gFUWGKPIByZddPOF9ajM+J9K0W1BuF/Opx9ZSLeFgpNvnOcPOO\nbAMh57r37W+z89M3wBVX0Jncyr59luac3fYHkvvCtJjsTGsgHzW5TIwK/XmByuLZUHUrpB1YTC4T\nH1coJkfLFXRyldwtB+FP3+snJo9qARMZrf5xnSEthgkJCdWwyXeGSWe4TpC57v3ADyBvtLamrVav\niWBO3Jmf76r/fMY7rx9yFZlebWGhu/tTdT3BGJSuyuvHckbXgR4wZ3StGY3oDHPtFOjHojo592zW\nrp6LiM4wZ8uoocaiMwaG7QJZhsBw/vSchO3qeSzUGYapBzRNmU6zwOa0Eq23yRwWSWeYcDSRue6N\nH6Ex9wi7d5/Rrdy3j0PT57Btqqv7m6g7neHCAp3JrfnGvA4spjMMQn5l9aH+aXw8rzMcH8/ppnRm\nwJx4FtGz5XSGk5PFOi/XhzZtyXjwdbE+XdvZ4jw52V34nTFwrh2UiiDsc3o6m1Pfhz5Rz6kWBtEZ\nun4yfWcWSqzRM7dAXm8ZzEmpztA/F+NhpdjkO8PNO7INDK9D/Jn7DLh/8uedC0xP8/3vq8VL+y6H\nBx8R0xXtNhcL9dShN9J1GC06F6E6jCStdZgDtrOSPqOmQMQjXXvaIv56UioMMBaCco53OtGxaH5i\n7WR6XX8oFvJXr/fSqnLuMC00gVopNvliONQMiciUC63zgIh8Q0T+uYhsE5HbXATa25zvYMKAaLbb\nfPyHhEsvhUsvtYEdaLVsgFgP7eI2P5+PWqPNK1YS6TqIZp3rU9dpcx5Hq0W3XHQeJSiXRrqORPLJ\n9aEiXWuTlw61wkjXmj9/3RMpvLXcVTU4d7xwLD3tRMq5cYYoGEvP3Po+vUugfg56Miz2ZFzU0a1H\n5Y4Hm1pMHirStYh8BPjfxpgPO2frCeDXgUPGmOtcKO+TjDG/VtbOZox0PSroALHs28ct+87jUpdo\nSp8e9+xACsQivbsIT5OHEaXCdkcilg3YJ6xsLGX0/ep8n/1oB2l3GNoy/oaNdL1nasrc+eIXV6KV\nT3xiwyWRX/ESLiJbgRfTdZ5eBpZF5HLIwut8BBtap3QxTEhI2ABIYnIhzgIeB/5MRL4uIh8WkROA\n04wxjwK4v6fGHk55k6tBB4hl1y4uO39/VwRbWODwgvsKZ2ezQ8WeXYSK8hLuYvSO0ouZ4elj7hSY\nvE6sH2K0K9FfxZ4p2i1l9904RqIvK+GjyjP9+Fgpj+FzRe2k0+T+GGaG6sDzgA8YY34YeAroyXBV\nBGPM9T4K7imnnDIEG8cGmu02zRNOQJ79vzm8ULOL4NJS98C0Xmdb/TDb6jZbXMwdL1v4lpZ6dFwZ\nQv1YWdgwZS7TQxvRs4Xt5K4jLndZ2y6itzbJyY1NI3Djy+nuylzYwnZnZoojhUdMdiqjwLUwWhcL\nXab7LOJvtUJ4bfLFcBiuZ4AZY8xXXPlm7GL4mIicbox51AVnPDgskwkW3uxmK//S3hgf5/HH4bRn\nLEK9zmGsac0k5N3UnGtXeDrqkdMtRaLLxNzxvEtdj7mMei4H5UaXc6ur17sugLrszUTAusZ5t7Qy\nF0DyOYyz52K0MVc4bbqyY4ddRAJXuKI5KkPMHS90O+xpV81JjU7OtTDXjn4u4rIIjDSJ/EZd6Kpg\nxSMzxsyKyHdE5DnGmG8CL8Nmtrofmy/5Oo7BvMmrDe26d/V3DWfM3UPnlAuozc4yxzYAtk5GIqIE\nKDStKTDD8dDJ1YvqgEJznmg7vv8g8X3uUMTXqXHFfuA9h0p6cQx493RF/GSLSAFthqBcaloTmMRU\nmRPNfw4hfWR8MZ5WDB/cdZNi2GX+l4C/dCfJ+4HXY0Xvj4vIG4GHgZ8eso+EhIT1gHSAUgxjzN1O\n73eBMebVxpgnjDHfM8a8zBhztvs7dDjuhDz8ocr1zxTkn/2TlYimpjhr8iBnTR4ks43ziOkMI3aG\nQDd7X8w2z5eDuqj9XWjHpzMC+rLOWhf06UXAGp2sLtMZhtnxNPRBkXuukp2h71/ZGWZZ5VbBzjC0\nvYzNLXNzOTvDQp1hqF/0KSA8ks6wEjYm1wlAV4fY4Ag88AC3zP0IYI20c3osHRzVi1CRFzbTTaFE\n1qmpvChWNQNeJINcTjcZZomDfLuaP00byxKnUfRcSBs+F9KWZccbQaTr6HP9MgYW9VlWB+s20rWI\nXAL8Z2AM+LAx5rqg/h3Am4AW1nLlDcaYb7u6NnCvI33YGHMZQyIthhscXofYfPJJLpt90N3dnSfS\n/q8OMQPtDjVqIW29nvsx1wgWVY2yH4prJ+un7LmCdqroDEuh2+3XZwEPWq/aj7aMh77tVGyz6hyM\n5ABlhGKyiIwBfwS8AnsYe4eI3GKMuV+RfR3YY4xZFJE3A78P/N+u7mljzIUjYcYhRa3ZBGi22zRP\nPBF5zgHkOQfszaUl68IHXTHZi5pKBPULXYealaaUSA3A/DzLrVo3IE6QTH25Vev2E0aB0eXZ2a6p\nDOQj0TgxOVcmb1qj+8whFJOd2VDPc2GfEf6ArpjsAklq17go75FyaFOYow0T2WuE4yyj7RcpXGNt\nksj3wwuBfcaY/c5h4ybgck1gjPmcMcb7Fd6OzY+8akg7w02CbqJ66GCoQTcKthd9/Q9ifLy7gGV0\nMEGrK1L5yCr1Oo3WYvf+1JTVY42Pw9SUrQOo20RWtdayPQENAyj451z/YTtAtzw9bRc1bVqztERn\nfMImUXI6sM74RK9pjYvUUmstd6NVe1odtca1nZV9u36cu3bZBXBqW2amlI3FmRvpIAq6HO7CesTk\npSXbpos8AyXmRgsLdoxZJBrHn58jNX+58sIC+ChGalc+FAY7TZ4WkTtV+XpjzPWq/EzgO6o8A1xU\n0t4bgf+hyuOu/RZwnTHmb6syVoS0GCYkJFRHdTF5ro9vskTuRQMliMjrgD3Aj6nbO40xj4jIWcBn\nReReY8w/VmUuhrQYbiL4NKTNMaH5kY/Ad77D4V/6jSyPyszcBFu2wPHH11hY6P6T39Zyoub0dLZj\nbGBPPDuTW/M7m/GJblnFywOynUiNTrZDy1BWDuvqjZx+098L2+2xI6TXvhBVn4v3qK6j/NYbMLWt\ndCxZn3rcfcTRTtm4ddnzP9mI0+p7wVitoXjXZrMTzuVKMVrTmhngWaq8A3ikt0t5OfAbwI8ZY474\n+8aYR9zf/SLyeeCHgaEWw6Qz3IRotts0r7oKTj/dLnhf/CJ88YssLMB3vwtPPw2f/jQcOGA/7N0L\nDzxAhxqNhUM0Fg51s+nNHcyZdNTmD3V1jnMHc6YhtflD2YJQmz+UlaO0cwe7YbrmDubqa/OHciG8\nfF3WrjKXqS0czuk9vV40e07Tan4Uf7l2ff3sI922Fg5n/YTjzJ6lGy0n/Gj08BCZvxx/mnfNX1gX\noc340+G8hsFodYZ3AGeLyJnOTvlK4JZ8d/LDwJ8AlxljDqr7J4nIFnc9DbwI6+wxFNLOcJPCnzL/\n6pVvoPH97wP2HGBhwb6rDzxgVWoAPP4oHHecvfb6J38wUZC83NfldkJl7ngqEG1Pu8pdEFzQWrWb\nqWnznjBBetiPOv3W7fhnc+0E/IVmOJl5kaPN+A/HEpbLoAPyxngIrrN5iIw7V1dGOyrTmhHuDI0x\nLRF5K/AprGnNDcaY+0TkGuBOY8wtwH/Aepf+FxGBrgnNDwJ/IiId7IbuuuAUekVIi+Emhl0QheZz\nnwvAj8y+Hq67jj/e9wa+/nX4xV90hFNnw0MPAbC4ZH+oE9qnV+1udDkUv3Q5rIul9KxsohOYnOTc\n9NR1D0If7BL+eg4/ggT0ZbS63HdRVGPpEV/rvdGrY3U99X3c9EZykgwjz45njLkVuDW49251/fKC\n574EPHdkjDgkMXmTo9lu07z3Xpr33sv1v3MQLryQuTn4F/9CEU1OwimnsLSkckr53CGBp0pt4XD0\nGuxpcCbyuajb4BaNMLqMNt8Jk9zrOsh7f7i6XD9KZA29NHK0mnfFn68r8irxtGE7mRiqyjFPlKJx\n+z6jYwtNnFRdzxwV0GrVwUiQPFASEhIS2PS+yZt3ZAkZ9Cnzl/6P4YEH4GMf28fsrPVUuebOX4ZW\ni4mLL+axp+3J6Na5OTo7dlpxzNuvYU9OvT2gP2nOoDPORU5cc+K2PqUOT2NdXfasP9VVdeDEv+CU\nVYusy5PbaGha1WdoO9hzaj59aresxhI7YdflcHfYU1Zj03MSlvUJdfRUP2gnRqvnJKpGGBRpMUzY\nLPA6xA8Cf3Xhhdz/23cDIPwVcAVP1Y/jtOOtyPfg5PM4x/2AFpnAa4pqdLJymY4s1FeFtPr01aMq\nbameULXVqPfqFPv1WbqQ9eGvX11V2tw/gj78hWPrRzsUNvlimHSGxxia7TbvAVp3380CYDV1TwB3\n80//ROZ6lqn4lpZyarhQt6fz1vdkZAsT2dPbTnbdR2eoaXN6Nu9hQlxnmIOO8K340+3qZ7PFytGG\nOrlouwrRxbpADxiri9EWtZMrK5fEnjkZBptcZ5gWw2MQzXab38EmsTkLsIEdvslJJ5Ethg891N1N\n5H5LwSmmf/f9qXD2g3QV+nQ2dwAQ1OWiMSsRtoY1bemKrMEpb9lJqnsux5MeR8iDhnKVy7nv0eml\nDXgID06KVAm6nZ523ZxkPIR9+oTz/jldrtfzX9qo3PH8aXKVzwbEUEu4iPxbbIgdgw2n83rgdKzT\n9Tbga8DPOkfshHUEHTHbZmx4vr0891wAXnJa9weae7XHx6m38gnnoRuFJTSX0aYiOZEwljC9iLYe\nj66t+9HIxMQIbRF/oTlKUQQZ324O9Xik61B81W2F7fS0W9HcqG87AU9DIYnJcYjIM4G3YUPsnI81\nnLwS+D3gvcaYs7Hy1xtHwWhCQsIaY5OLycNyXQeOF5HvYxPIPwq8FHitq/8I0AQ+MGQ/CasAf8rM\n2BgX8yEarZ/lcMuenJ72vfvpnHIeABOtw1hHAHcw0VqEut3Z5RJCET8U8M8VHU5UOeQIDx70cxpF\nhwhlhxaxPnxd1UOOomvdh64P+dPlfjwU1cXKsflcMdLOMA5jzHeBP8DmOXkUeBK4C5g3xniFxQw2\nVE/COkaz3eZ2gHq9q/JxIaSiuveI7g2qnfKGKBLfwvuhGBrWh3q6zOwloC0TF8v6HIY29mxV/laL\nhxVjE+8MhxGTT8IGYzwTOAM4AXhVhLQoLE9KIr+O4BPVN+YP0pg/CB/6EDU6NFjmsae3Zj/aWmuZ\nZYrj9kF+9xPWheXcoYqqKyqH9Ho3FO60imjL+gzp9VjK+gx3erFxVB1LVd4HnZOhscnF5GH+lbwc\n+JYx5nFjzPeB/wb8CDAlIn42omF5ICWRX49otts0TzuN5mmnIf/uldm28PjjlZteEI1Z/zR7Eq0H\n0axztDMzuXZi0axD2hodW+eYqdEpj3R94EB2u0anMHF9h1pPpOvavgejSdpztLqtEuTGXRC1O1rn\nxprV6W26SwDVoZZLCJWVgyTyI9k1+uCum/Q0eZgZehi4WEQmxIaU8HmTPwdc4WhS3uSEhM2CTb4z\nXDHXxpiviMjNWPOZFjZ5y/XAJ4GbROR33L0/HQWjCUcH+lClUzfUZh7m6S072TruDkq2b88OUJie\nzh+geLu4eqMbyt+LaCHt9u29Ie592dVlJiI7dnTTEKhMcB1qxWH/6djQ/Tr6jgurn1071OhYHnz/\nALt3W2PreiMXWiuj1aiQHS+D66emxx3jwcdX8+kPItkGs92xmr9cOx7ahnNYbNCFrgqGGpkx5jeB\n3wxu78cme0nYwPCue+940nAah+nUlf+w93WN2A5miNi+5WgjNnW5E9/Qn9YbDvexv+s5edXG0pFr\nzV+ILCp1RZu/MmRjG9A+EGePGa2L2EZm5dVYtNJpcsKxima7zXtOFOTEb3cV9E5/5/VYOeV9gU4O\n6KVVesFo4noddkrTqiTyUZ2h3hEpvWT2rL4O+dXPHjjQdS9UOsOMVqOCzjDsp2e+wnbCxPBlSeQ9\nf7q8GjrDJCYnHMvwWfc6ziigNj3N0hJMjHdUqGy3sylIbF4jT5vVe3HR1xWJeVpsDsXkQETNBUx1\n4jXQzT7n+Yklhtc7tV1ndRfDMCL1CpLIh+MOeQ95ioq+YZ++zj+ny6shJg+WHW/DIe0ME/qi2W5z\nzZhwzZhwuDXBxN1fynYaOTs5LYY6aLoc6vVs4cra0OJysLvQtIOgU2/YD7V8f+5+rP2sD//DD3Y7\nOkyYF+kr86PHWRYpPDYnRe0UzF/MtGdobOKdYVoMExISqmHEYrKIXCIi3xSRfSLyzkj9FhH5a1f/\nFRHZpere5e5/U0R+YhTDS4thQiU02+2uDvFFU3Gdl7bFC/RstbksuVlO3wjYTHSzj+RptZjnaDvU\nunUFOsOcrnFmJsuOV6OT8eCvfblDzfbfanXpD+zvhvgK7Az1c7pcBG1n6PnX/ITt+jnwtLlx+3qX\npdDX5WjnD2V6wg61dakzFJEx4I+wjhrnAa8RkfMCsjcCTxhjdgPvxcY9wNFdCfwQcAnwx669obAx\n97MJawatQ6zRDUs4OUk3jJQ3s0GJzDpKTagfUzovlG6vpz7ryCJmWpP7IU5P50THWln2Pt9HYM4T\n0tboxDPrlSB3wl0wlp52y/SJ6tmo/rMgY+DQGO1p8guBfcaY/bZpuQnr0aaz3F2OjW0ANrTS+51N\n8+XATS6P8rdEZJ9r78vDMJR2hgkDw+sQmZpi6wNfZesDX7U/+PEJHpmz+jntieAXglw8Vbc4Zrou\np0P05Zw+LYzzp3cfZT/OWAxAfR1rVyFnWqPrytrtBz9W8ocRYVnvsvQcRdupQjsKDLYznPbutu5z\nddDaM4HvqPIMvXEMMhoX7+BJ4OSKzw6MtBgmrAjel1kuWkQuclnwFg5zxnZlZuPE6KUlYGEhv/5o\ndzxHm+1etJmNo9VufZVNa5Q7XtYPBaY1obvbgQNdHkZtWkPEPdDzoOnKTGvCujLaEYnJxsByq1bp\nA8x5d1v3uT5oTmJdVKSp8uzASGJyworhRWYAWkfoTG7l9tvh4ovpiqStFhN1YHIy2xWOj9eobd/e\nXfy0GYn2TvHYvt0uTDHTmjIxuaJpTY4HjwIPFGA405p+XjAhP34eYvweZQ8UY0aXQQC7m3uWKsfi\nGHiaGRfv4ETgUMVnB0baGSYkJFSCXwyrfCrgDuBsETlTRBrYA5FbAppbsPENwMY7+Kwxxrj7V7rT\n5jOBs4GvDju+tDNMGArdNKRjNJ96ih+Z+zQdLmMRq2+7+Sa44gqYmKwz4YyYO0zkXfmU3V7otmbr\nu25mWpeo3fbC0FkxF0C0HjLSTg/GJ+J19XwIs06E/xAhbXjdw5+6V8hf5PmMB+XOOJKTZEa7MzTG\ntETkrcCnsFHybzDG3Cci1wB3GmNuwcY1+HN3QHIIu2Di6D6OPWxpAW8xxrSH5Skthgkjgc+p8jP3\nGXa3YGLpEAC7dm2zkusDD7C4y0XOxrrj1bznideVTU/bRXBuLu8R4mgzExMnMnbqDWtGMjnZXZBa\ny12/5tnZbmAH364ve33d9HRPuxlP09N0xidsH9Ctd+1kC/fcwW47EXFUG3Jn/ehx+rHoOq+jHB+3\nPOg6sPVu3Bl/uuyeA6gtLXYPg4bECMVkjDG3ArcG996trpeAny549lrg2tFxkxbDhBHCB3doHjnC\nIbYB8P73w4UXQmNqKn+oqRcTtWBlbmqhiYxHWBfq0spMa2LmPEXtbt/eLffTEVbQGeZMa4rGqcv9\ndJpl+s+wvD51husOaTFMGCn8DrH5la8A8PFdN8Psm2DHDv77f7c0/+rVZLs37SYXEyWBnDjYIyZr\n20WCXCYl7m59xeQy0XcFYnLIQ6zPIre+Ku3m2onMySjQ6eRTTW82pMUwYeTQaUiv/q7hjPpB2LeP\nev0CQHl8aLEYYGrKlp0IqMVkisTkhcNWPPQLQCAmo8Xk+fnursmLoVNT+XZ1n1NTPWJyRqt3tvOH\nunUFYrKH7se3k82JKveIyU4dsJZictoZJiQkJDgc04uhiNwAXAocdPmREZFtwF8Du4ADwM8YY55w\nrjL/GfhJYBH4eWPM11aH9YT1jO4ps9C86y6YnOTTn7Z1l13ayfR5HWq90asj+rJsdxWGBitzPZue\nzovVfkdZ0EcOOuRYmT1gUN8XMVvCWHkQPWUFneEosNl3hlWUCTdinaE13gl8xiWK/4wrg3W6Ptt9\nriblSz7m0Wy3aT7/+SzuOIc/+AP4gz/ohpjKFjhnnKbFybxJTDwcVZEuTIcUywWUdah6mDAqXVs/\n0XkQnqq0PQxdGUZsZ7ju0PfbNsZ8AWvjo3E5NkE87u+r1f2PGovbsZnyTh8VswkbE812m98/Qdiy\n5Wts2fI1fMTs7IcTc8fTP17njpdFxdbueD5ShEeBO17fSNehO96+favjjufMiEJ3vGxsIX993PEq\n0Y7IHc8foFT5bESsVGd4mjHmUQBjzKMicqq7X+RA/WjYgHPcvhpg586dK2QjYaNAu+51MFnE7K2T\nnV7RVyeLAtixo9gdLxQBtamKSgg1qDteZ/c5NtJ1iTtetmAP4o7nxlbmjhe62GX86QVujRJCbdRd\nXxWM2h2vsgN1ypuckLCxcMyLyQV4zIu/7q+PSrkqDtQJmwM+QOw1YwLj42zd+yVb4cI+LS51PTVy\nNnduJ6Vps4OSSHiqXNoBFfY/FgIro48FJY2E/S8Lt18ZReHHVFm3nY0nqC97fjXC/qfFMA7tQK0T\nxd8C/JxYXAw86cXphAQPb4coLzrZ3nDZ8cbH6brRtZZzesLM8FjpDIFoCK9MPxZEui7K3tfTbquV\nj3Qd0y9qhOUAOtK17yezg9SHR0pvmUWv9vq+QKeZq1M6w6y8CpGuN/tiWMW05mPAS7DBGmeweZKv\nAz4uIm8EHqbrP3gr1qxmH9a05vWrwHPCJkAYMRvseceuXV03Na2Ti0aKhnLTmqmpqGlN9LmK7nhR\n05qwHCDnQaJcBPV11m6ZO17EDTEa6Tq5460IfRdDY8xrCqpeFqE1wFuGZSrh2ID3ZX7zrFUrn8V+\nOpwF2CCi/rdf0yHuVfoAIJ783bvkTW7NLwKDRKvW/ZSJo7FyBKGo66PqFLajrqPqgALaaLsjgjEb\n96S4ClI8w4Q1RbPd5gPbhQ9sF+TZ83bnMT9Po67sA52JjBcBc6JviWlN7cD+7HqtTWsykbUg0rU2\nrcnaDEXfNTatOebF5ISEhARIYnJCwqrDu+4xNkaj3obJSQ4v1DK1Xm16mlYLGvW8PqxI1MxEUhfc\nAZQuzacW6OeO520Uj3bYf29fOUjY/346wxFlx9vsi2ESkxPWDfwp8yMLW9n6vz/ZrajXeeKJ7rU3\nlwGifreZWOoiVWt9XY+JjuojLBdmxyvQ31VacHRbsXaKFvdIXTiWnAmRNq0ZkQ5xs4vJaTFMWFdo\ntttc/0xBLt3d/THPz/OMZyidofY3DjX63jSFTpYYXuvWspPdmB4wcOUbVGdY5itdSWcYM/0p0hnO\nz2fmR56/HL/uuVGa1sDmXgyTmJyw7uDNbpZb9pS5ceAAX1w4g1e+3EWp8b+2er376wuCtfr6Zez9\nBp184vVwRxmKwjpqTZDfuCcjX4Uk8jlaLyaXtdPPhEiPpV+S+xGJyUcruGtRVKyA5kJsIJitQBu4\n1hjz167uRuDHsHmWwUbPurtfv2lnmLAu0Wy3+d0twu9uETj3XF5Z/6ytGB/vFZMjImEHm5Tdr5W+\nnKFfEnldjtFqDBIiK2y3qJ18QvZe/kJxO1bWtCPAURSTi6JiaSwCP2eM+SFsVK3/JCL6P8ivGGMu\ndJ++CyGknWFCQkJFHMUDlMuxjh5go2J9Hvi1PC/mQXX9iIgcBE4BApek6kg7w4R1C+/L3Dz5ZORl\n7jBjfj6/+1C6Ma8fc7dhfp6J8Q4T413dY4ZQD+ht/HzjBw50ZcJR2hmGtoQaBXaGWbmCnWFUv7g2\nOsNpEblTfa4eoJtcVEEjvlkAABjWSURBVCzg1DJiEXkh0AD+Ud2+VkTuEZH3isiWKp2mnWHCukfO\nda9ez0t9rVY3vBdkfxssw9QUi0t2ERgfx4b78vo6JZJqs5usHe2OF+rk+unzAvS440XMe3pMa/qZ\nywxiWrM27nhzxpg9RZUi8mlge6TqNwbhyQWK+XPgKmOMH+S7gFnsAnk9dld5Tb+20mKYsCHgXffe\n9j3Dtn1OQtq9m+Xxrd24iB7ZggfoH68+CPHJktwi4c1wNG0sgo7OaqefzeroJoUKs9QB+QjfJVkA\na0r3GetT86VpfTnkY70doBhjXl5UJyKPicjpLlaqjooV0m0FPgn8OxdM2rftg8McEZE/A365Ck9J\nTE7YMGi227zvZOGsS87hrEvOAaCxdJitk52uGOoXQjqwd2++ASU+ZlFhUNn6QtOapUVLO3/IftyC\nUps7mC18PqtduBACmXCcE1G9OyGd7Lms3dlH8hF25uZsZjvfhzedgbwpjadVZf9ch1p2PSyO4gFK\nUVSsDCLSAP4GG1n/vwR1PrygYKPw7w2fjyHtDBM2FKzI7GIILz0F4+PsP1DjrO124eLAAWpTU3S2\nn0Ftfp6//Vt7+8orUaJwoytK+nIsIVRETI4mkxrUA0Unkdcoi1oTRtVxaUNzYnFY9hiRaQ0ctQOU\naFQsEdkD/KIx5k3AzwAvBk4WkZ93z3kTmr8UkVOwwabvBn6xSqdpMUxISKiEo3WabIz5HvGoWHcC\nb3LXfwH8RcHzL11Jv2kxTNhw6KYhHaP5F3/BWUeO8MglbwBg39x5fPkT8OY3w9Y9e3i1esM79UZX\nvxbq/ZxonendnM5Q6+t0O+GzvhwTR2N6vvA6LId6wJC2pnSPfXWGoW5yhTjmfZNF5AYROSgie9W9\n/yAiD7ij67/Rxo4i8i4R2Sci3xSRn1gtxhMSmu02zde9Dm66KbOLfs5z4Ljj3I/2z/+cP/xD+MM/\ntPS1hcOZiUxt4bAtuxOB2vyh7HS2RieLkt2hltFmuj2nP8x0cq7OL0DhB7rmNTndo7uOlgMXu9r8\noa6uERu6LNMRLizYsl90XV3Wp9Y1DoHkmxzPm3wbcL4x5gLgQexRNiJyHnAl4K3C/1hExkbGbUJC\ngGa7TfO225ictGq0f/xHeOghV/msZ3H88XD88a7s9GzZtS6HOjmdgN7TehSY1oR6ueihRVk7YSTu\nMv76eciskgfKMZ0q1BjzBRHZFdz7e1W8HbjCXV8O3GSMOQJ8S0T2AS8EvjwSbhMSIvBmNwDN7dv5\nkaeegks/xmMXXcaUspW2O7fuNdjdgN7VZQtYYC6jEZrM6HJ4oqx3ixCIyardnn5Cc55wYa0gbo/a\ntGazi8mj+JfxBqxTNdgcyberOp83uQcpb3JCwsZCWgxLICK/gTVr/Ut/K0JWmDcZax3Onj17ojQJ\nCVWhD1XeBmwDTnvyQZpNa4945ZUuOOz8POjcKAsLdKa2dXVzXqRcWspEz54doPN4Ccua1qPsWf1c\nWParjo9RmKvz9bod1I4w5K/gYGdQpMWwACJyFXAp8DKXCApS3uSENYYPENs8/niYmuLii+39ej0f\nfkufGvsT45gHSlRM7nOaHBOTw2fD67AcRvAuO02OBYSNecIMi7QYRiAil2D9/X7MGLOoqm4B/kpE\n3gOcAZwNfHVoLhMSBkC2ID71FH/1/kPurj2cWBzfxoRenApc6YrulbnbxZ4PUURbpNeL8VDUfoz3\nIj5WgmM+O57Lm/xl4DkiMuOswt8PPAO4TUTuFpEPAhhj7gM+DtwP/E/gLcaY9qpxn5BQgGa7TfOE\nE5CTH0dOfhyw6UcnWodzdN7lLosg421DZmerR60JE9mXoWrUmtnZfMa+MFH9GkSt2eymNSvNm/yn\nJfTXAtcOw1RCwijgo90A0DpCY3aWL83s5Ecu7obc379wKrt20TVN0aY3/l4Y4SaMUhMEaS06bQby\nSalU1O4sio2PWqMSQtV8WUfVmZ6GpaV49BvtdqjHNCSSmJyQkJBAWgwTEjY09Cnzm2cN557rKtzO\na4ffVE1O5nVrk5NdVzifJQ+ni1NlIHfY4mkgb2PYtV9UtCpMGHRdAIGc26BOZ6CR6Ttj7nj6QCil\nCq2EFMIr4ZhAs93mA9uFk09u5/RsjZbTGWr9HFQK4ZVBZ91TiIrJYait1nJvmd4QXkXZ8fx1WNYh\nvFJ2vGpIO8OEYwZeh1hbeirTs33l6w1e8ALy4bMAdu3qLiChjjAM9zVICC/3bIcaNdVOFuk67MOv\nLAV9Fka61ivSiCJdH63seGuFtBgmHFPwZjfveNKaxp59tqsIbPNyiImoOde5uMF1kRlObJdWFJm6\nx/4xwkO0j5LnVookJickbDI0223ec6LwnhOFCy90N2dn89FdlJgcM60JxWToNW4uE5MzUVjLla5c\nWUwO+FttMfmYN61JSEhI8NioC10VpMUw4ZiEP2W2KQQMTE9zeKmRqQdrO3bYMsQz00XKRWLpUDrD\nonI/naHG2mTH23BIYnLCMY1mu801Y8Jiq8HWA/dk9zv1RmZLnYmbdMsaRXXhc0X1mQmPKuv7OpBs\nrL6o3GPWMySOlpgsIttE5DYRecj9PamAru084O4WkVvU/TNF5Cvu+b92yaP6Ii2GCcc8mu02v3+C\nsPVHL8hMXWoH9tNYsq573rQGVCY9hVyWvcA/OFzIdBa+LBuej6itsuNl2fucvq82d5Da0mK3pflD\n+cx5rl7TZn2OKDueP00+CsFd3wl8xhhzNvAZV47haWPMhe5zmbr/e8B73fNPAG+s0mkSkxMS6Gbd\n69TtKXNtfJx7Dmzl/PPpmtZo1zgN7WIXQW53ForC+iS6IDteJvquNDveiMRkOGpi8uXAS9z1R4DP\nYwPD9IVLD/pS4LXq+SbwgX7Ppp1hQoKDF5mvGROYm+OC7da4epkGyzQ4tGBjC2ozHO8dskyjR0z1\niIUA88+FIm5I7+MZxhB7riis1xqcJk+LyJ3qc/UAXZ3mE8G7v6cW0I27tm8XkVe7eycD88YYv2wX\nBpgOkXaGCQkJlWFM5R3mnDFmT1GliHwa2B6p+o0B2NlpjHlERM4CPisi9wKHI3SVgkenxTAhQUH7\nMl8jhlbLJp8DK31mtnxqx1ZbWqRRr+N/TjHf5OWWpW3MzsIOl+Zidha2n9HtfHaWzo6dtFrQmJmx\nbXlPmNlZ2LGj2+fsLDVfduG9ajt2sNyq0Zibg+1qnVlYgMmtI5gdA4wmIp8x5uVFdSLymIicbox5\nVEROBw4WtPGI+7tfRD4P/DDwX4EpEam73WHlANNJTE5IiKDZbvNuI9QWDrONQ2zjEHfcAcs0YG6O\nhYXuAQkLCzwy12C5Ze8sLtmPXziXWzUa9Y5NOzA11V1QJyfzvsmursEy7NhhP34l9iG7fJ87dmRl\ntm+3n4UF28f0dPc56AkxtnIYYLniZyjcAlzlrq8C/i4kEJGTRGSLu54GXgTc76Luf45ukrro8zGs\nKG+yqvtlETGOGcTifS5v8j0i8rwqTCQkrEc0222aJ55IZ2obnaltXDT3SRp3fgmmprj5ZmXSMn0q\nZ0wt0qjbOxPj9uP1fY16EA3HxRnsTG61NLFyvW51im5H1xmf6ImW0xmfyHSYnjbTabo8L941b3To\nVPwMheuAV4jIQ8ArXBkR2SMiH3Y0PwjcKSL/gF38rjPG3O/qfg14h8vOeTIl8Vc1qojJN2IjW39U\n3xSRZzlGH1a3X4UN9X82cBH2BOeiKowkJKxH6DSkz/s7w2W7HoHZWc4996yMpjZ3MAv5VRT2PxNv\n5w5Sm5qyhyjzh7KT6k69Ydvxp8Y+2b1bPDNafzAyP5/VhbTMz9twYD7E19Jib9ixFWF0YnJpL8Z8\nD3hZ5P6dwJvc9ZeA5xY8vx+bongg9N0ZGmO+AByKVL0X+FXyysnLgY8ai9uxsvvpgzKVkJCwHuEX\nwyqfjYcV6QxF5DLgu8aYfwiqngl8R5VL8yb7Y/fHH398JWwkJBwVNNttmu02X7tc4H/+T9ixg/e/\nXxH4kPwlyHR9oS2hE3Gjddq2MLQzdOXMrjAsaz3hCO0M02KoICIT2OPvd8eqI/cK8yYbY/YYY/ac\ncsopg7KRkHDU0Wy3ab7xjTz2RIPLLw8qIwtOzEWuH4rc8cK6GH3YT7YAjwxpZxji2cCZwD+IyAHs\n0fXXRGQ7KW9ywiaHj5j9K7+ibs7PdzPTKUQXo4LseN5EpscdT2W8y+ro5EJ6aVpf9m58o410bYDv\nV/xsPAxsZ2iMuRdlEe4WxD3GmDnnLP1WEbkJe3DypLckT0jYLPCue7WFJ+2N8XFu/fwEl1yS9/SI\nxjN09n9hlJrMRMajLKKNqo+2E9KOTEw+Ogcoa4W+i6HLm/wSrHvNDPCbxpiio+pbgZ8E9gGLwOtH\nxGdCwrqCj5gN8O624eWFJsS9iO3SwugyoeH2SnZ2scjZw+MYXgwL8ibr+l3q2gBvGZ6thISE9YfN\nvTNMHigJCSuEP2W+ZkzYvburIwzjCOZ2ZaFesCCEVxj2P6P17c8fyjxXshBevqzCe40yhJfFUTG6\nXhMk3+SEhCHhdYiH5g2Tk90zkp3b7eKU8wBxesFopOsCnWG0rCNdh+2sWgivtDNMSEjog2a7zftO\nFt63Rdh5/lZ2nr+Vv92yBdnyC1xxRT7Q63KrqwfsF+la6wyHiXQ9utPko+KbvCZIi2FCwojQbLdZ\nANi1C3btYj8Ac8zM5O3/fOL6UKSOL3fldWXt6EVxNNjcdoZJTE5IGCH0KXPzFa/gxtlPcMcd1+Ej\n19fo5LxDegK/Rgytoz7OBQvcoPcHx8bUB1ZBWgwTEhIqYnPrDNNimJAwYugAsffyc5xySjfgkz8Z\nLkovOmg5xGjF4hjSYpiQkDAg7CnzGM1nPwT8n+z+4uSpjNMb4kvr/DTKFriqi99oD1A2J9IBSkLC\nKqLZbtO8/fbujVaLAwfsZehxUnSqXHSarJ8Lyxqj2y0akp1hQkLCiqEPVd7xpOG88f3ALoAsN4qO\nzhU7MAnv67rQBzrcYY7O4BqSmJyQkJCwyQ9QkpickHAU4F333nOiIM92Hinz8y4js3LP82Kud8fz\nrnoqRBeQ1fnrXHl+PntutO54R8fOUES2ichtIvKQ+3tShObHReRu9VnyuZNF5EYR+Zaqu7BKv2ln\nmJBwFOEPVfyC8eABuzDu3u1ymHjx1rvU6UjXGmFka4canSyvSoaRRro+KvrAdwKfMcZcJyLvdOVf\n0wTGmM8BF4JdPLGRsv5ekfyKMebmQTpNi2FCwlGG1yG+6nbDRXOftDenXgD1Ol+8c4IX/yg5JWKN\njs14pw9CXH2HGjV1DVALadlwp8mXAy9x1x8BPk+wGAa4AvgfxpjFYTpNYnJCwhqg2W7zPy4Wdr75\np9j55p+iM30qLCzwoz/qCJzoG0a6zqAiXUfFZBW1hqWlEXF91NzxTvNBod3fU/vQXwl8LLh3rUtX\n/F6fX7kfVpw3WUR+SUS+KSL3icjvq/vvcnmTvykiP1GFiYSEYxHNdps3fEd4w3eE2t1fA+Dtb3eV\nLslTFvGmYkIowIrJa58QatonfHOfq3UrIvJpEdkb+YTZZUrhsm8+F/iUuv0u4FzgBcA2yneVGVaU\nN1lEfhy7lb3AGHNERE5198/DrtI/BJwBfFpEzjHGbN4jqISEYwbezrAS5owxewpbMqYwNriIPCYi\npxtjHnWL3cGSfn4G+BtjTJZ4RaUaOSIifwb8chWGV5o3+c3YDPZHHI1n9nLgJmPMEWPMt7BKzYGT\nOSckHCvwp8zN5z+fw1M7efvbndF1vZHtCrXOMPvUG10j7YBWX680ZUAcR01MvgW4yl1fBfxdCe1r\nCERkn6tdRAR4NbA38lwPVjpL5wD/l4h8RUT+l4i8wN1PeZMTElYAb3bz7Gd/v2tmM3ewaxYTZMfz\nka6zKNgqk16YHW+0ka6PymJ4HfAKEXkIeIUrIyJ7ROTDnkhEdmGzcf6v4Pm/FJF7gXuBaeB3qnS6\n0tPkOnAScDFWLv+4iJzFgHmTgesB9uzZE6VJSDiW4M1uOhhqzjzmcGuCSejVGU5O9prdFCWcH2mk\n69U/TTbGfA94WeT+ncCbVPkAkc2WMealK+l3pf8uZoD/Ziy+ilUkTJPyJickDAWfU+Vwa4LDrQm2\nHrjHVtTrmeseAK1Wt9xq5cuM2gXPY3P7Jq90xv4WeCmAiJwDNIA5rKx/pYhsEZEzgbOBr46C0YSE\nYwVeZH7PiYL8M0OWIArry7zcqsHCAo16x1rXLC3B0lK3vLCQj4Y9MtMaOKYjXcfyJgM3ADc4c5tl\n4CqXJvQ+Efk4cD/QAt6STpITEjYLNrdv8jB5k19XQH8tcO0wTCUkHOvwAWIZG2O5ZWjU6zzxBJx2\nktPZOde9Rj2fRqBRd+54rVb3VNmdRA+Pzb0YJg+UhIR1jGa7ze9uEQ7Xt3HaX7/PHoy4zwMPWN3g\ncn2C5fpE5pHSqTcyg2xvajPaA5SUHS8hIWEN4HWIp/7O27o3l5ayxPWNpcM0lg5ni2Ft/lCPac3o\nkA5QEhIS1hDNdpv/93HJTo7Zu5cPftAFh3X3OuMTVhweH8+7441cTD5GD1ASEhLWB3TE7F8/Ynhb\n/atQ3wOzswDc/sA2Lr7Y0i63nD4Ruj7MI8HGXOiqIC2GCQkJFbG5D1DSYpiQsIHQTUMq/BaP8L3v\n1di2axcAe+pWYm60WjTqy2Q/71Yr75EyFDamPrAK0mKYkLAB4V33ti19F+YWALj5znN47ZWd7LTZ\ne6Q0Qu+VFaPDRj0proK0GCYkbFB4HeLbvmdd+1/7ow/TYSc1YHGplp2hdKiNbmOYxOSEhIT1CLsg\n2vgov8WTPPUUTCwtMT410T00WVrKny6vGElnmJCQkOCQdIYJCQnrFNp1b6J+BLDWNtPTTmc4Pj4i\nneHm3hkmo+uEhE2CZrtNc8sWHpzbxhkLD2b22cut2ggD12xeo+u0GCYkbCI0223+6jmCPOc4Jlhk\ngkUarUW21kfhkudPkzenb3ISkxMSNhm82c1X7rWnzKefDl/84qha35i7vipIi2FCwiaEPmV+NfDi\nkbQ6UHa8DYckJickJAyA1dcZishPu3zsHREpTDcqIpe4/Oz7ROSd6v6ZLlndQyLy1yLSqNJvWgwT\nEjYpfBrSvwV2/NZvjaDFoxa1Zi/wr4AvFBGIyBjwR8CrgPOA17i87QC/B7zXGHM28ATwxiqdJjE5\nIWGTQ0e7GQ4G+H5fqqF7MeYbADbtcSFeCOwzxux3tDcBl4vIN7D5mV7r6D4CNIEP9Ot3XSyGd911\n15yMjT2FTSp1rGCaY2u8cOyNeb2N9weGe/zJT8EnpisSj4vInap8vUsPPCrEcrRfBJwMzBtjWup+\nNHd7iHWxGBpjThGRO40xhfqBzYZjbbxw7I15s43XGHPJqNoSkU8D2yNVv2GM+bsqTUTumZL7fbEu\nFsOEhIRjC8aYlw/ZRFGO9jlgSkTqbndYOXd7OkBJSEjYiLgDONudHDeAK4FbXMrizwFXOLqrgCo7\nzXW1GI5Sn7ARcKyNF469MR9r4x0JRORfuhzt/xz4pIh8yt0/Q0RuBXC7vrcCnwK+AXzcGHOfa+LX\ngHeIyD6sDvFPK/VrF9KEhISEYxvraWeYkJCQsGZIi2FCQkIC62AxLHKp2WwQkQMicq+I3O3tr0Rk\nm4jc5tyGbhORk9aaz5VCRG4QkYMislfdi45PLN7nvvN7ROR5a8f5ylEw5qaIfNd9z3eLyE+qune5\nMX9TRH5ibbhOKMKaLoZ9XGo2I37cGHOhsj17J/AZ5zb0GVfeqLgRCO3Qisb3KuBs97maCt4B6xQ3\n0jtmsK5gF7rPrQDuvb4S+CH3zB+79z9hnWCtd4aZS40xZhm4Cbh8jXk6mrgc6y6E+/vqNeRlKBhj\nvgAcCm4Xje9y4KPG4nasXdjpR4fT0aFgzEW4HLjJGHPEGPMtYB/2/U9YJ1jrxTDmUlPJdWYDwgB/\nLyJ3icjV7t5pxphHAdzfU9eMu9VB0fg2+/f+Vif+36BUH5t9zBsea70Yrth1ZgPiRcaY52FFxLeI\nyGhCzG1MbObv/QPAs4ELgUeB/+jub+Yxbwqs9WJY5FKz6WCMecT9PQj8DVZEesyLh+7vwbXjcFVQ\nNL5N+70bYx4zxrSNMR3gQ3RF4U075s2CtV4Moy41a8zTyCEiJ4jIM/w18EpszLZbsO5CMIDb0AZC\n0fhuAX7OnSpfDDzpxemNjkD3+S+x3zPYMV8pIltE5Ezs4dFXjzZ/CcVY00ANxpiWiHiXmjHgBuVS\ns5lwGvA3Lj5bHfgrY/7/9u7YJAIwBsPwkx0cxBGutncAucLCIWzdRLgBxB2sz1ocwkr4Lc5SK8VT\neZ8JkuaDEELW/cw8YDczWzzj/Ig1fsnM3GKDk/dTqmvc+Li/O5w5LBFecPHjBX+DT3rezMypwwj8\nhEtYa+1nZodHvOJqrfV/H4r8QZ3jJYnjj8lJ8isUhkmiMEwSFIZJgsIwSVAYJgkKwyQBb1OGeeSN\nOEtDAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
}
],
"source": [
- "lower_bound = 2; #inclusive\n",
- "upper_bound = 2; #inclusive\n",
- "gd157_endf.resonance_covariance.ranges[0].res_subset('J',[lower_bound,upper_bound])\n",
- "subset_first_five = gd157_endf.resonance_covariance.ranges[0].parameters_subset[:5]\n",
- "print(subset_first_five)"
+ "corr = np.zeros([len(covariance),len(covariance)])\n",
+ "for i in range(len(covariance)):\n",
+ " for j in range(len(covariance)):\n",
+ " corr[i, j]=covariance[i, j]/covariance[i, i]**(0.5)/covariance[j, j]**(0.5)\n",
+ "plt.imshow(corr, cmap='seismic',vmin=-1.0, vmax=1.0)\n",
+ "plt.colorbar()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "The subset method will also store the corresponding subset of the covariance matrix"
+ "### Sampling and Reconstruction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The covariance module also has the ability to sample a new set of parameters using the covariance matrix. Currently the sampling uses numpy.multivariate_normal(). Because parameters are assumed to have a multivariate normal distribution this method doesn't not currently guarantee that sampled parameters will be positive."
]
},
{
@@ -187,32 +293,36 @@
"metadata": {},
"outputs": [
{
- "name": "stdout",
+ "name": "stderr",
"output_type": "stream",
"text": [
- "[[ 2.82609600e-06 5.89537500e-09 -4.78638600e-06 -5.73895500e-08\n",
- " -1.48636900e-09]\n",
- " [ 0.00000000e+00 1.36218000e-11 -9.61975600e-09 -1.15354000e-10\n",
- " -2.87250000e-12]\n",
- " [ 0.00000000e+00 0.00000000e+00 8.20814700e-06 9.83537100e-08\n",
- " 2.58111200e-09]\n",
- " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.54205000e-06\n",
- " -4.31977000e-10]\n",
- " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n",
- " 1.76975000e-10]]\n"
+ "/home/icmeyer/miniconda3/lib/python3.6/site-packages/openmc-0.10.0-py3.6-linux-x86_64.egg/openmc/data/resonance_covariance.py:239: UserWarning: Sampling routine does not guarantee positive values for parameters. This can lead to undefined behavior in the reconstruction routine.\n",
+ " warnings.warn(warn_str)\n"
]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "openmc.data.resonance.ReichMoore"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "cov_subset = gd157_endf.resonance_covariance.ranges[0].cov_subset\n",
- "print(cov_subset[:5,:5])"
+ "rm_resonance = gd157_endf.resonances.ranges[0]\n",
+ "n_samples = 5\n",
+ "samples = gd157_endf.resonance_covariance.ranges[0].sample_resonance_parameters(n_samples, rm_resonance)\n",
+ "type(samples[0])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "The covariance module also has the ability to sample a new set of parameters using the covariance matrix. Currently the sampling uses np.multivariate_normal(). Because parameters are assumed to have a multivariate normal distribution this method doesn't not currently guarantee that sampled parameters will be positive."
+ "The sampling routine requires the incorporation of the `openmc.data.ResonanceRange` for the same resonance range object. This allows each sample itself to be its own `openmc.data.ResonanceRange` with a new set of parameters. Looking at some of the sampled parameters below:"
]
},
{
@@ -220,10 +330,105 @@
"execution_count": 8,
"metadata": {},
"outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Sample 1\n"
+ ]
+ },
{
"data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " energy | \n",
+ " L | \n",
+ " J | \n",
+ " neutronWidth | \n",
+ " captureWidth | \n",
+ " fissionWidthA | \n",
+ " fissionWidthB | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.029309 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000468 | \n",
+ " 0.110327 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2.827761 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000359 | \n",
+ " 0.094539 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 16.208418 | \n",
+ " 0 | \n",
+ " 1.0 | \n",
+ " 0.000283 | \n",
+ " 0.046995 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 16.762322 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.013044 | \n",
+ " 0.078128 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 20.557394 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.011103 | \n",
+ " 0.086309 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
"text/plain": [
- "openmc.data.resonance.ReichMoore"
+ " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
+ "0 0.029309 0 2.0 0.000468 0.110327 0.0 0.0\n",
+ "1 2.827761 0 2.0 0.000359 0.094539 0.0 0.0\n",
+ "2 16.208418 0 1.0 0.000283 0.046995 0.0 0.0\n",
+ "3 16.762322 0 2.0 0.013044 0.078128 0.0 0.0\n",
+ "4 20.557394 0 2.0 0.011103 0.086309 0.0 0.0"
]
},
"execution_count": 8,
@@ -232,18 +437,8 @@
}
],
"source": [
- "rm_resonance = gd157_endf.resonances.ranges[0]\n",
- "n_samples = 5\n",
- "gd157_endf.resonance_covariance.ranges[0].sample_resonance_parameters(n_samples, rm_resonance)\n",
- "samples = gd157_endf.resonance_covariance.ranges[0].samples\n",
- "type(samples[0])\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The sampling routine requires the incorpotation of the `openmc.data.ResonanceRange` for the same resonance range object. This allows each sample itself to be its own `openmc.data.ResonanceRange` with a new set of parameters. Looking at some of the sampled parameters below:"
+ "print('Sample 1')\n",
+ "samples[0].parameters[:5]"
]
},
{
@@ -255,30 +450,111 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Sample 1\n",
- " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
- "0 0.030278 0 2.0 0.000472 0.109151 0.0 0.0\n",
- "1 2.826910 0 2.0 0.000347 0.099239 0.0 0.0\n",
- "2 16.199761 0 1.0 0.000258 0.082103 0.0 0.0\n",
- "3 16.772474 0 2.0 0.012354 0.091428 0.0 0.0\n",
- "4 20.553868 0 2.0 0.011185 0.089609 0.0 0.0\n",
- "Sample 2\n",
- " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
- "0 0.033611 0 2.0 0.000479 0.103410 0.0 0.0\n",
- "1 2.825707 0 2.0 0.000335 0.101266 0.0 0.0\n",
- "2 16.270769 0 1.0 0.000360 0.071230 0.0 0.0\n",
- "3 16.773850 0 2.0 0.013402 0.074592 0.0 0.0\n",
- "4 20.563037 0 2.0 0.011916 0.086590 0.0 0.0\n"
+ "Sample 2\n"
]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " energy | \n",
+ " L | \n",
+ " J | \n",
+ " neutronWidth | \n",
+ " captureWidth | \n",
+ " fissionWidthA | \n",
+ " fissionWidthB | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.031344 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000473 | \n",
+ " 0.107136 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2.827026 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000321 | \n",
+ " 0.102900 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 16.242791 | \n",
+ " 0 | \n",
+ " 1.0 | \n",
+ " 0.000479 | \n",
+ " 0.119832 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 16.772147 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.013393 | \n",
+ " 0.070252 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 20.556324 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.012220 | \n",
+ " 0.077122 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
+ "0 0.031344 0 2.0 0.000473 0.107136 0.0 0.0\n",
+ "1 2.827026 0 2.0 0.000321 0.102900 0.0 0.0\n",
+ "2 16.242791 0 1.0 0.000479 0.119832 0.0 0.0\n",
+ "3 16.772147 0 2.0 0.013393 0.070252 0.0 0.0\n",
+ "4 20.556324 0 2.0 0.012220 0.077122 0.0 0.0"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "first_five_sample_1 = samples[0].parameters[:5]\n",
- "first_five_sample_2 = samples[1].parameters[:5]\n",
- "print('Sample 1')\n",
- "print(first_five_sample_1)\n",
"print('Sample 2')\n",
- "print(first_five_sample_2)"
+ "samples[1].parameters[:5]"
]
},
{
@@ -296,8 +572,8 @@
{
"data": {
"text/plain": [
- "[,\n",
- " ]"
+ "[,\n",
+ " ]"
]
},
"execution_count": 10,
@@ -312,7 +588,9 @@
{
"cell_type": "code",
"execution_count": 11,
- "metadata": {},
+ "metadata": {
+ "scrolled": false
+ },
"outputs": [
{
"data": {
@@ -326,9 +604,9 @@
},
{
"data": {
- "image/png": "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\n",
+ "image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -339,14 +617,326 @@
"energy_range = [rm_resonance.energy_min, rm_resonance.energy_max]\n",
"energies = np.logspace(np.log10(energy_range[0]),\n",
" np.log10(energy_range[1]), 10000)\n",
- "for sample in gd157_endf.resonance_covariance.ranges[0].samples:\n",
+ "for sample in samples:\n",
" xs = sample.reconstruct(energies)\n",
" elastic_xs = xs[2]\n",
" plt.loglog(energies, elastic_xs)\n",
"plt.xlabel('Energy (eV)')\n",
- "plt.ylabel('Cross section (b)')\n",
- "\n",
- " "
+ "plt.ylabel('Cross section (b)')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Subset Selection"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Another capability of the covariance module is selecting a subset of the resonance parameters and the corresponding subset of the covariance matrix. We can do this by specifying the value we want to discriminate and the bounds within one energy region. Selecting only resonances with J=2:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " energy | \n",
+ " L | \n",
+ " J | \n",
+ " neutronWidth | \n",
+ " captureWidth | \n",
+ " fissionWidthA | \n",
+ " fissionWidthB | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.0314 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000474 | \n",
+ " 0.1072 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2.8250 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000345 | \n",
+ " 0.0970 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 16.7700 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.012800 | \n",
+ " 0.0805 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 20.5600 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.011360 | \n",
+ " 0.0880 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " 21.6500 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000376 | \n",
+ " 0.1140 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
+ "0 0.0314 0 2.0 0.000474 0.1072 0.0 0.0\n",
+ "1 2.8250 0 2.0 0.000345 0.0970 0.0 0.0\n",
+ "3 16.7700 0 2.0 0.012800 0.0805 0.0 0.0\n",
+ "4 20.5600 0 2.0 0.011360 0.0880 0.0 0.0\n",
+ "5 21.6500 0 2.0 0.000376 0.1140 0.0 0.0"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lower_bound = 2; # inclusive\n",
+ "upper_bound = 2; # inclusive\n",
+ "rm_resonance_sub, rm_res_cov_sub = gd157_endf.resonance_covariance.ranges[0].res_subset('J',[lower_bound,upper_bound], rm_resonance)\n",
+ "rm_resonance_sub.parameters[:5]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The subset method will also store the corresponding subset of the covariance matrix"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(180, 180)"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rm_res_cov_sub.covariance\n",
+ "gd157_endf.resonance_covariance.ranges[0].covariance.shape\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Checking the size of the new covariance matrix to be sure it was sampled properly: "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of parameters\n",
+ "Original: 60\n",
+ "Subet: 36\n",
+ "Covariance Size\n",
+ "Original: (180, 180)\n",
+ "Subset: (108, 108)\n"
+ ]
+ }
+ ],
+ "source": [
+ "old_n_parameters = gd157_endf.resonance_covariance.ranges[0].parameters.shape[0]\n",
+ "old_shape = gd157_endf.resonance_covariance.ranges[0].covariance.shape\n",
+ "new_n_parameters = rm_resonance_sub.parameters.shape[0]\n",
+ "new_shape = rm_res_cov_sub.covariance.shape\n",
+ "print('Number of parameters\\nOriginal: '+str(old_n_parameters)+'\\nSubet: '+str(new_n_parameters)+'\\nCovariance Size\\nOriginal: '+str(old_shape)+'\\nSubset: '+str(new_shape))\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "And finally, we can sample from the subset as well"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/icmeyer/miniconda3/lib/python3.6/site-packages/openmc-0.10.0-py3.6-linux-x86_64.egg/openmc/data/resonance_covariance.py:239: UserWarning: Sampling routine does not guarantee positive values for parameters. This can lead to undefined behavior in the reconstruction routine.\n",
+ " warnings.warn(warn_str)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " energy | \n",
+ " L | \n",
+ " J | \n",
+ " neutronWidth | \n",
+ " captureWidth | \n",
+ " fissionWidthA | \n",
+ " fissionWidthB | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.033061 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000477 | \n",
+ " 0.104286 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2.822758 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000345 | \n",
+ " 0.101087 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 16.772084 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.013277 | \n",
+ " 0.074735 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 20.555977 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.011417 | \n",
+ " 0.092437 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 21.662213 | \n",
+ " 0 | \n",
+ " 2.0 | \n",
+ " 0.000380 | \n",
+ " 0.122282 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " energy L J neutronWidth captureWidth fissionWidthA fissionWidthB\n",
+ "0 0.033061 0 2.0 0.000477 0.104286 0.0 0.0\n",
+ "1 2.822758 0 2.0 0.000345 0.101087 0.0 0.0\n",
+ "2 16.772084 0 2.0 0.013277 0.074735 0.0 0.0\n",
+ "3 20.555977 0 2.0 0.011417 0.092437 0.0 0.0\n",
+ "4 21.662213 0 2.0 0.000380 0.122282 0.0 0.0"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "samples_sub = rm_res_cov_sub.sample_resonance_parameters(n_samples, rm_resonance_sub)\n",
+ "samples_sub[0].parameters[:5]"
]
}
],
diff --git a/openmc/data/endf.py b/openmc/data/endf.py
index cc930b442f..8a118f1695 100644
--- a/openmc/data/endf.py
+++ b/openmc/data/endf.py
@@ -71,8 +71,8 @@ def float_endf(s):
return float(_ENDF_FLOAT_RE.sub(r'\1e\2', s))
-def int_endf(s):
- """Conver string to int. Used for INTG records where blank entries
+def _int_endf(s):
+ """Convert string to int. Used for INTG records where blank entries
indicate a 0.
Parameters
@@ -267,10 +267,11 @@ def get_tab2_record(file_obj):
return params, Tabulated2D(breakpoints, interpolation)
+
def get_intg_record(file_obj):
"""
- Return data from an INTG record in an ENDF-6 file. Used to store the
- covariance matrix in a compact format.
+ Return data from an INTG record in an ENDF-6 file. Used to store the
+ covariance matrix in a compact format.
Parameters
----------
@@ -285,8 +286,8 @@ def get_intg_record(file_obj):
# determine how many items are in list and NDIGIT
items = get_cont_record(file_obj)
ndigit = int(items[2])
- npar = int(items[3]) # Number of parameters
- nlines = int(items[4]) # Lines to read
+ npar = int(items[3]) # Number of parameters
+ nlines = int(items[4]) # Lines to read
NROW_RULES = {2: 18, 3: 12, 4: 11, 5: 9, 6: 8}
nrow = NROW_RULES[ndigit]
@@ -294,24 +295,23 @@ def get_intg_record(file_obj):
corr = np.identity(npar)
for i in range(nlines):
line = file_obj.readline()
- ii = int_endf(line[:5]) - 1 #-1 to account for 0 indexing
- jj = int_endf(line[5:10]) - 1
+ ii = _int_endf(line[:5]) - 1 # -1 to account for 0 indexing
+ jj = _int_endf(line[5:10]) - 1
factor = 10**ndigit
for j in range(nrow):
if jj+j >= ii:
break
- element = int_endf(line[11+(ndigit+1)*j:11+(ndigit+1)*(j+1)])
+ element = _int_endf(line[11+(ndigit+1)*j:11+(ndigit+1)*(j+1)])
if element > 0:
corr[ii, jj] = (element+0.5)/factor
elif element < 0:
corr[ii, jj] = (element-0.5)/factor
- #Symmetrize the correlation matrix
+ # Symmetrize the correlation matrix
corr = corr + corr.T - np.diag(corr.diagonal())
return corr
-
def get_evaluations(filename):
"""Return a list of all evaluations within an ENDF file.
diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py
index 3b98e00a21..3917496b8e 100644
--- a/openmc/data/neutron.py
+++ b/openmc/data/neutron.py
@@ -299,7 +299,7 @@ class IncidentNeutron(EqualityMixin):
@resonance_covariance.setter
def resonance_covariance(self, resonance_covariance):
cv.check_type('resonance covariance', resonance_covariance,
- res_cov.ResonanceCovariances)
+ res_cov.ResonanceCovariances)
self._resonance_covariance = resonance_covariance
@summed_reactions.setter
@@ -767,7 +767,7 @@ class IncidentNeutron(EqualityMixin):
be the filename for the ENDF file.
covariance : bool
- Flag to indicate whether or not covariance data from File 32 should be
+ Flag to indicate whether or not covariance data from File 32 should be
retrieved
Returns
@@ -802,7 +802,9 @@ class IncidentNeutron(EqualityMixin):
data.resonances = res.Resonances.from_endf(ev)
if (32, 151) in ev.section and covariance:
- data.resonance_covariance = res_cov.ResonanceCovariances.from_endf(ev, data.resonances)
+ data.resonance_covariance = (
+ res_cov.ResonanceCovariances.from_endf(ev, data.resonances)
+ )
# Read each reaction
for mf, mt, nc, mod in ev.reaction_list:
diff --git a/openmc/data/resonance_covariance.py b/openmc/data/resonance_covariance.py
index 960d55bc9e..69e6776921 100644
--- a/openmc/data/resonance_covariance.py
+++ b/openmc/data/resonance_covariance.py
@@ -12,13 +12,13 @@ from .resonance import Resonances
def _add_file2_contributions(file32params, file2params):
- """Function for aiding in adding resonance parameters from File 2 that are
+ """Function for aiding in adding resonance parameters from File 2 that are
not always present in File 32. Uses already imported resonance data.
Paramaters
----------
file32params : pandas.Dataframe
- Incomplete set of resonance parameters contained in File 32.
+ Incomplete set of resonance parameters contained in File 32.
file2params : pandas.Dataframe
Resonance parameters from File 2. Ordered by energy.
@@ -26,6 +26,7 @@ def _add_file2_contributions(file32params, file2params):
-------
parameters : pandas.Dataframe
Complete set of parameters ordered by L-values and then energy
+
"""
# Use l-values and competitiveWidth from File 2 data
# Re-sort File 2 by energy to match File 32
@@ -54,6 +55,7 @@ class ResonanceCovariances(Resonances):
----------
ranges : list of openmc.data.ResonanceCovarianceRange
Distinct energy ranges for resonance data
+
"""
@property
@@ -63,8 +65,8 @@ class ResonanceCovariances(Resonances):
@ranges.setter
def ranges(self, ranges):
cv.check_type('resonance ranges', ranges, MutableSequence)
- self._ranges = cv.CheckedList(ResonanceCovarianceRange, 'resonance range',
- ranges)
+ self._ranges = cv.CheckedList(ResonanceCovarianceRange,
+ 'resonance range', ranges)
@classmethod
def from_endf(cls, ev, resonances):
@@ -75,8 +77,8 @@ class ResonanceCovariances(Resonances):
ev : openmc.data.endf.Evaluation
ENDF evaluation
resonances : openmc.data.Resonance object
- openmc.data.Resonanance object generated from the same evaluation used
- to import values not contained in File 32
+ openmc.data.Resonanance object generated from the same evaluation
+ used to import values not contained in File 32
Returns
-------
@@ -88,39 +90,40 @@ class ResonanceCovariances(Resonances):
# Determine whether discrete or continuous representation
items = endf.get_head_record(file_obj)
- n_isotope = items[4] # Number of isotopes
+ n_isotope = items[4] # Number of isotopes
ranges = []
for iso in range(n_isotope):
items = endf.get_cont_record(file_obj)
abundance = items[1]
- fission_widths = (items[3] == 1) # Flag for fission widths
- n_ranges = items[4] # number of resonance energy ranges
+ fission_widths = (items[3] == 1) # Flag for fission widths
+ n_ranges = items[4] # Number of resonance energy ranges
for j in range(n_ranges):
items = endf.get_cont_record(file_obj)
- unresolved_flag = items[2] # 0: only scattering radius given
- # 1: resolved parameters given
- # 2: unresolved parameters given
+ # Unresolved flags - 0: only scattering radius given
+ # 1: resolved parameters given
+ # 2: unresolved parameters given
+ unresolved_flag = items[2]
formalism = items[3] # resonance formalism
# Throw error for unsupported formalisms
if formalism in [0, 7]:
- raise NotImplementedError('LRF= ', formalism,
- 'covariance not supported for this formalism')
+ error = 'LRF = '+str(formalism)+'covariance not supported '\
+ 'for this formalism'
+ raise NotImplementedError(error)
if unresolved_flag in (0, 1):
- # resolved resonance region
+ # Resolved resonance region
file2params = resonances.ranges[j].parameters
erange = _FORMALISMS[formalism].from_endf(ev, file_obj,
items, file2params)
ranges.append(erange)
elif unresolved_flag == 2:
- warn_str = 'Unresolved resonance not supported. '\
- 'Covariance values for the unresolved region not imported.'
- warnings.warn(warn_str)
-
+ warn = 'Unresolved resonance not supported. Covariance '\
+ 'values for the unresolved region not imported.'
+ warnings.warn(warn)
return cls(ranges)
@@ -146,7 +149,7 @@ class ResonanceCovarianceRange:
covariance : numpy.array
The covariance matrix contained within the ENDF evaluation
lcomp : int
- Flag indicating the format of the covariance matrix within the ENDF file
+ Flag indicating format of the covariance matrix within the ENDF file
mpar : int
Number of parameters in covariance matrix for each individual resonance
formalism : str
@@ -155,35 +158,47 @@ class ResonanceCovarianceRange:
def __init__(self, energy_min, energy_max):
self.energy_min = energy_min
self.energy_max = energy_max
-
- def res_subset(self, parameter_str, bounds):
+
+ def res_subset(self, parameter_str, bounds, resonances):
"""Produce a subset of resonance parameters and the corresponding
covariance matrix to an IncidentNeutron object.
-
+
Parameters
----------
parameter_str : str
parameter to be discriminated
(i.e. 'energy', 'captureWidth', 'fissionWidthA'...)
- bounds : np.array
+ bounds : np.array
[low numerical bound, high numerical bound]
-
+ resonances : openmc.data.ResonanceRange object
+ Corresponding resonance range with File 2 data.
+
Returns
-------
- parameters_subset : pandas.Dataframe
- Subset of parameters (maintains indexing of original)
- cov_subset : np.array
- Subset of covariance matrix (upper triangular)
-
+ res_range : openmc.data.ResonanceRange
+ ResonanceRange object that contains a subset of parameters
+ (maintains indexing of original)
+ res_cov_range : openmc.data.ResonanceCovarianceRange
+ ResonanceCovarianceRange object that contains a subset of the
+ covariance matrix (upper triangular) as well as parameters
+
"""
- parameters = self.parameters
- cov = self.covariance
- mpar = self.mpar
+ # Copy the objects
+ res_range = copy.copy(resonances)
+ res_cov_range = copy.copy(self)
+
+ parameters = res_range.parameters
+ cov = res_cov_range.covariance
+ mpar = res_cov_range.mpar
+ # Create mask
mask1 = parameters[parameter_str] >= bounds[0]
mask2 = parameters[parameter_str] <= bounds[1]
mask = mask1 & mask2
- parameters_subset = parameters[mask]
- indices = parameters_subset.index.values
+ # Set the parameters for each object
+ res_range.parameters = parameters[mask]
+ res_cov_range.parameters = parameters[mask]
+ indices = res_cov_range.parameters.index.values
+ # Build subset of covariance
sub_cov_dim = len(indices)*mpar
cov_subset_vals = []
for index1 in indices:
@@ -191,54 +206,48 @@ class ResonanceCovarianceRange:
for index2 in indices:
for j in range(mpar):
if index2*mpar+j >= index1*mpar+i:
- cov_subset_vals.append(cov[index1*mpar+i, index2*mpar+j])
-
+ cov_subset_vals.append(cov[index1*mpar+i,
+ index2*mpar+j])
+
cov_subset = np.zeros([sub_cov_dim, sub_cov_dim])
tri_indices = np.triu_indices(sub_cov_dim)
cov_subset[tri_indices] = cov_subset_vals
-
- self.parameters_subset = parameters_subset
- self.cov_subset = cov_subset
+ res_cov_range.covariance = cov_subset
+
+ return res_range, res_cov_range
+
+ def sample_resonance_parameters(self, n_samples, resonances):
+ """Sample resonance parameters based on the covariances provided
+ within an ENDF evaluation.
- def sample_resonance_parameters(self, n_samples, resonances, use_subset=False):
- """Return a list size 'n_samples' of openmc.data.ResonanceRange objects.
- Each with an indepentenly sampled set of parameters
-
Parameters
----------
n_samples : int
The number of samples to produce
resonances : openmc.data.ResonanceRange object
Corresponding resonance range with File 2 data.
- use_subset : bool, optional
- Flag on whether to sample from an already produced subset
-
+
Returns
-------
- samples : list of openmc.data.ResonanceCovarianceRange objects
+ samples : list of openmc.data.ResonanceCovarianceRange objects
List of samples size `n_samples`
-
+
"""
warn_str = 'Sampling routine does not guarantee positive values for '\
'parameters. This can lead to undefined behavior in the '\
'reconstruction routine.'
warnings.warn(warn_str)
- if not use_subset:
- parameters = self.parameters
- cov = self.covariance
- else:
- if self.parameters_subset is None:
- raise ValueError('No subset of resonances defined')
- parameters = self.parameters_subset
- cov = self.cov_subset
+ parameters = self.parameters
+ cov = self.covariance
nparams, params = parameters.shape
- cov = cov + cov.T - np.diag(cov.diagonal()) # symmetrizing covariance matrix
+ # Symmetrizing covariance matrix
+ cov = cov + cov.T - np.diag(cov.diagonal())
covsize = cov.shape[0]
formalism = self.formalism
mpar = self.mpar
samples = []
-
+
# Handling MLBW sampling
if formalism == 'mlbw' or formalism == 'slbw':
if mpar == 3:
@@ -258,20 +267,22 @@ class ResonanceCovarianceRange:
gt = gn + gg + gf
records = []
for j, E in enumerate(energy):
- records.append([energy[j], l_value[j], spin[j], gt[j], gn[j],
- gg[j], gf[j], gx[j]])
+ records.append([energy[j], l_value[j], spin[j], gt[j],
+ gn[j], gg[j], gf[j], gx[j]])
columns = ['energy', 'L', 'J', 'totalWidth', 'neutronWidth',
'captureWidth', 'fissionWidth', 'competitiveWidth']
- sample_params = pd.DataFrame.from_records(records, columns=columns)
+ sample_params = pd.DataFrame.from_records(records,
+ columns=columns)
res_range = copy.copy(resonances)
- res_range._prepared = False # Set prepared to False to ensure
- # the sampled parameters are used
- # in reconstruction
+ # Set _prepared to False to ensure sampled paramaters are
+ # used during construction routine
+ res_range._prepared = False
res_range.parameters = sample_params
samples.append(res_range)
-
+
elif mpar == 4:
- param_list = ['energy', 'neutronWidth', 'captureWidth', 'fissionWidth']
+ param_list = ['energy', 'neutronWidth', 'captureWidth',
+ 'fissionWidth']
mean_array = pd.DataFrame.as_matrix(parameters[param_list])
spin = pd.DataFrame.as_matrix(parameters['J'])
l_value = pd.DataFrame.as_matrix(parameters['L'])
@@ -287,18 +298,19 @@ class ResonanceCovarianceRange:
gt = gn + gg + gf
records = []
for j, E in enumerate(energy):
- records.append([energy[j], l_value[j], spin[j], gt[j], gn[j],
- gg[j], gf[j], gx[j]])
+ records.append([energy[j], l_value[j], spin[j], gt[j],
+ gn[j], gg[j], gf[j], gx[j]])
columns = ['energy', 'L', 'J', 'totalWidth', 'neutronWidth',
'captureWidth', 'fissionWidth', 'competitiveWidth']
- sample_params = pd.DataFrame.from_records(records, columns=columns)
+ sample_params = pd.DataFrame.from_records(records,
+ columns=columns)
res_range = copy.copy(resonances)
- res_range._prepared = False # Set prepared to False to ensure
- # the sampled parameters are used
- # in reconstruction
+ # Set _prepared to False to ensure sampled paramaters are
+ # used during construction routine
+ res_range._prepared = False
res_range.parameters = sample_params
samples.append(res_range)
-
+
elif mpar == 5:
param_list = ['energy', 'neutronWidth', 'captureWidth',
'fissionWidth', 'competitiveWidth']
@@ -317,15 +329,16 @@ class ResonanceCovarianceRange:
gt = gn + gg + gf
records = []
for j, E in enumerate(energy):
- records.append([energy[j], l_value[j], spin[j], gt[j], gn[j],
- gg[j], gf[j], gx[j]])
+ records.append([energy[j], l_value[j], spin[j], gt[j],
+ gn[j], gg[j], gf[j], gx[j]])
columns = ['energy', 'L', 'J', 'totalWidth', 'neutronWidth',
'captureWidth', 'fissionWidth', 'competitveWidth']
- sample_params = pd.DataFrame.from_records(records, columns=columns)
+ sample_params = pd.DataFrame.from_records(records,
+ columns=columns)
res_range = copy.copy(resonances)
- res_range._prepared = False # Set prepared to False to ensure
- # the sampled parameters are used
- # in reconstruction
+ # Set _prepared to False to ensure sampled paramaters are
+ # used during construction routine
+ res_range._prepared = False
res_range.parameters = sample_params
samples.append(res_range)
@@ -351,14 +364,15 @@ class ResonanceCovarianceRange:
gg[j], gfa[j], gfb[j]])
columns = ['energy', 'L', 'J', 'neutronWidth',
'captureWidth', 'fissionWidthA', 'fissionWidthB']
- sample_params = pd.DataFrame.from_records(records, columns=columns)
+ sample_params = pd.DataFrame.from_records(records,
+ columns=columns)
res_range = copy.copy(resonances)
- res_range._prepared = False # Set prepared to False to ensure
- # the sampled parameters are used
- # in reconstruction
+ # Set _prepared to False to ensure sampled paramaters are
+ # used during construction routine
+ res_range._prepared = False
res_range.parameters = sample_params
samples.append(res_range)
-
+
elif mpar == 5:
param_list = ['energy', 'neutronWidth', 'captureWidth',
'fissionWidthA', 'fissionWidthB']
@@ -380,15 +394,16 @@ class ResonanceCovarianceRange:
gg[j], gfa[j], gfb[j]])
columns = ['energy', 'L', 'J', 'neutronWidth',
'captureWidth', 'fissionWidthA', 'fissionWidthB']
- sample_params = pd.DataFrame.from_records(records, columns=columns)
+ sample_params = pd.DataFrame.from_records(records,
+ columns=columns)
res_range = copy.copy(resonances)
- res_range._prepared = False # Set prepared to False to ensure
- # the sampled parameters are used
- # in reconstruction
+ # Set _prepared to False to ensure sampled paramaters are
+ # used during construction routine
+ res_range._prepared = False
res_range.parameters = sample_params
samples.append(res_range)
-
- self.samples = samples
+
+ return samples
class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
@@ -411,7 +426,7 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
covariance : numpy.array
The covariance matrix contained within the ENDF evaluation
lcomp : int
- Flag indicating the format of the covariance matrix within the ENDF file
+ Flag indicating format of the covariance matrix within the ENDF file
mpar : int
Number of parameters in covariance matrix for each individual resonance
formalism : str
@@ -425,7 +440,7 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
self.mpar = mpar
self.lcomp = lcomp
self.formalism = 'mlbw'
-
+
@classmethod
def from_endf(cls, ev, file_obj, items, file2params):
"""Create MLBW covariance data from an ENDF evaluation.
@@ -460,16 +475,16 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
# Other scatter radius parameters
items = endf.get_cont_record(file_obj)
target_spin = items[0]
- lcomp = items[3] # Flag for compatibility 0, 1, 2 - 2 is compact form
+ lcomp = items[3] # Flag for compatibility 0, 1, 2 - 2 is compact form
nls = items[4] # number of l-values
# Build covariance matrix for General Resolved Resonance Formats
if lcomp == 1:
items = endf.get_cont_record(file_obj)
- num_short_range = items[4] # Number of short range type resonance
- # covariances
- num_long_range = items[5] # Number of long range type resonance
- # covariances
+ # Number of short range type resonance covariances
+ num_short_range = items[4]
+ # Number of long range type resonance covariances
+ num_long_range = items[5]
# Read resonance widths, J values, etc
records = []
@@ -498,7 +513,7 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
indices = np.triu_indices(cov_dim)
cov[indices] = cov_values
- # Create pandas DataFrame with resonance data, currently
+ # Create pandas DataFrame with resonance data, currently
# redundant with data.IncidentNeutron.resonance
columns = ['energy', 'J', 'totalWidth', 'neutronWidth',
'captureWidth', 'fissionWidth']
@@ -507,11 +522,12 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
# Add parameters from File 2
parameters = _add_file2_contributions(parameters, file2params)
- elif lcomp == 2: # Compact format - Resonances and individual
- # uncertainties followed by compact correlations
+ # Compact format - Resonances and individual uncertainties followed by
+ # compact correlations
+ elif lcomp == 2:
items, values = endf.get_list_record(file_obj)
mean = items
- num_res = items[5]
+ num_res = items[5]
energy = values[0::12]
spin = values[1::12]
gt = values[2::12]
@@ -525,9 +541,9 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
# DAJ/DGT always zero, DGF sometimes none zero [1, 2, 5]
res_unc_nonzero = []
for j in range(6):
- if j in [1, 2, 5] and res_unc[j] != 0.0 :
+ if j in [1, 2, 5] and res_unc[j] != 0.0:
res_unc_nonzero.append(res_unc[j])
- elif j in [0,3,4]:
+ elif j in [0, 3, 4]:
res_unc_nonzero.append(res_unc[j])
par_unc.extend(res_unc_nonzero)
@@ -549,11 +565,11 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
nparams, params = parameters.shape
covsize = cov.shape[0]
mpar = int(covsize/nparams)
-
+
# Add parameters from File 2
parameters = _add_file2_contributions(parameters, file2params)
- elif lcomp == 0 :
+ elif lcomp == 0:
cov = np.zeros([4, 4])
records = []
cov_index = 0
@@ -576,12 +592,11 @@ class MultiLevelBreitWignerCovariance(ResonanceCovarianceRange):
cov[cov_index+3, cov_index+3] = cov_values[6]
cov_index += 4
- if j < num_res-1: # Pad matrix for additional values
+ if j < num_res-1: # Pad matrix for additional values
cov = np.pad(cov, ((0, 4), (0, 4)), 'constant',
constant_values=0)
-
- # Create pandas DataFrame with resonance data, currently
+ # Create pandas DataFrame with resonance data, currently
# redundant with data.IncidentNeutron.resonance
columns = ['energy', 'J', 'totalWidth', 'neutronWidth',
'captureWidth', 'fissionWidth']
@@ -624,15 +639,17 @@ class SingleLevelBreitWignerCovariance(MultiLevelBreitWignerCovariance):
covariance : numpy.array
The covariance matrix contained within the ENDF evaluation
lcomp : int
- Flag indicating the format of the covariance matrix within the ENDF file
+ Flag indicating format of the covariance matrix within the ENDF file
mpar : int
Number of parameters in covariance matrix for each individual resonance
formalism : str
String descriptor of formalism
"""
- def __init__(self, energy_min, energy_max, parameters, covariance, mpar, lcomp):
- super().__init__(energy_min, energy_max, parameters, covariance, mpar, lcomp)
+ def __init__(self, energy_min, energy_max, parameters, covariance, mpar,
+ lcomp):
+ super().__init__(energy_min, energy_max, parameters, covariance, mpar,
+ lcomp)
self.formalism = 'slbw'
@@ -660,14 +677,15 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
covariance : numpy.array
The covariance matrix contained within the ENDF evaluation
lcomp : int
- Flag indicating the format of the covariance matrix within the ENDF file
+ Flag indicating format of the covariance matrix within the ENDF file
mpar : int
Number of parameters in covariance matrix for each individual resonance
formalism : str
String descriptor of formalism
"""
- def __init__(self, energy_min, energy_max, parameters, covariance, mpar, lcomp):
+ def __init__(self, energy_min, energy_max, parameters, covariance, mpar,
+ lcomp):
super().__init__(energy_min, energy_max)
self.parameters = parameters
self.covariance = covariance
@@ -677,8 +695,9 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
@classmethod
def from_endf(cls, ev, file_obj, items, file2params):
- """Create Reich-Moore resonance covariance data from an ENDF evaluation.
- Includes the resonance parameters contained separately in File 32.
+ """Create Reich-Moore resonance covariance data from an ENDF
+ evaluation. Includes the resonance parameters contained separately in
+ File 32.
Parameters
----------
@@ -691,8 +710,8 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
Items from the CONT record at the start of the resonance range
subsection
resonances : openmc.data.Resonance object
- openmc.data.Resonanance object generated from the same evaluation used
- to import values not contained in File 32
+ openmc.data.Resonanance object generated from the same evaluation
+ used to import values not contained in File 32
Returns
-------
@@ -712,14 +731,13 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
lcomp = items[3] # Flag for compatibility 0, 1, 2 - 2 is compact form
nls = items[4] # Number of l-values
-
# Build covariance matrix for General Resolved Resonance Formats
if lcomp == 1:
items = endf.get_cont_record(file_obj)
- num_short_range = items[4] # Number of short range type resonance
- # covariances
- num_long_range = items[5] # Number of long range type resonance
- # covariances
+ # Number of short range type resonance covariances
+ num_short_range = items[4]
+ # Number of long range type resonance covariances
+ num_long_range = items[5]
# Read resonance widths, J values, etc
channel_radius = {}
scattering_radius = {}
@@ -731,7 +749,7 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
num_par_vals = num_res*6
res_values = values[:num_par_vals]
cov_values = values[num_par_vals:]
-
+
energy = res_values[0::6]
spin = res_values[1::6]
gn = res_values[2::6]
@@ -745,7 +763,7 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
# Build the upper-triangular covariance matrix
cov_dim = mpar*num_res
- cov = np.zeros([cov_dim,cov_dim])
+ cov = np.zeros([cov_dim, cov_dim])
indices = np.triu_indices(cov_dim)
cov[indices] = cov_values
@@ -757,10 +775,11 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
# Add parameters from File 2
parameters = _add_file2_contributions(parameters, file2params)
- elif lcomp == 2: # Compact format - Resonances and individual
- # uncertainties followed by compact correlations
+ # Compact format - Resonances and individual uncertainties followed by
+ # compact correlations
+ elif lcomp == 2:
items, values = endf.get_list_record(file_obj)
- num_res = items[5]
+ num_res = items[5]
energy = values[0::12]
spin = values[1::12]
gn = values[2::12]
@@ -789,7 +808,7 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
# Determine mpar (number of parameters for each resonance in
# covariance matrix)
- nparams,params = parameters.shape
+ nparams, params = parameters.shape
covsize = cov.shape[0]
mpar = int(covsize/nparams)
@@ -800,6 +819,7 @@ class ReichMooreCovariance(ResonanceCovarianceRange):
rmc = cls(energy_min, energy_max, parameters, cov, mpar, lcomp)
return rmc
+
_FORMALISMS = {
0: ResonanceCovarianceRange,
1: SingleLevelBreitWignerCovariance,
@@ -807,6 +827,3 @@ _FORMALISMS = {
3: ReichMooreCovariance
# 7: RMatrixLimitedCovariance
}
-
-
-