Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extra Material: Direct stiffness methof for Finite Element analysis (FEA)\n",
"\n",
"The direct stiffness approach looks at the stiffness of each individual element and adds them to the overall stiffness of the FEA structure. Starting with a single element, show below we have the following relation between forces applied and deformation\n",
"\n",
"![Single link element with forces applied to both ends](../images/link_elem.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\mathbf{F}_{el} = \\mathbf{K}_{el}\\mathbf{u}$\n",
"\n",
"where \n",
"\n",
"$\\mathbf{F}_{el}=\\left[\\begin{array}{c}\n",
" F_{1x}\\\\\n",
" F_{1y}\\\\\n",
" F_{2x}\\\\\n",
" F_{2y}\\end{array}\\right]$\n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\end{array}\\right]$, \n",
" \n",
"and \n",
"\n",
"$\\mathbf{K}_{el}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta & \\cos\\theta\\sin\\theta & -\\cos^2\\theta & -\\cos\\theta\\sin\\theta\\\\\n",
" \\cos\\theta\\sin\\theta & \\sin^2\\theta & -\\cos\\theta\\sin\\theta & -\\sin^2\\theta &\\\\\n",
" -\\cos^2\\theta & -\\cos\\theta\\sin\\theta & \\cos^2\\theta & \\cos\\theta\\sin\\theta\\\\\n",
" -\\cos\\theta\\sin\\theta & -\\sin^2\\theta & \\cos\\theta\\sin\\theta & \\sin^2\\theta &\\\\\n",
" \\end{array}\\right]$. \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a linear-elastic, small deformation FEA, we assume that the angle $\\theta$ remains constant before/after deformation. So our stiffness matrix, $\\mathbf{K}_{el}$ is constant once the geometry of the simulation is initialized. So, for a single link element that is deformed by $\\mathbf{u}$, the force that is applied to create that deformation is given by our first equation. \n",
"\n",
"Consider a single aluminum bar $(E=70~GPa)$, with cross-section of $1~mm^2$, and length of 1 meter. If it is initially at an angle of $45^{o}$ pinned at one end and stretched 2 mm to along the x-direction, we have the following deformation and stiffness, \n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" 2\\\\\n",
" 0\\end{array}\\right]~mm$, \n",
" \n",
"$\\mathbf{K}_{el}=70\\frac{N}{mm}\\left[\\begin{array}{cccc}\n",
" 1/2 & 1/2 & -1/2 & -1/2\\\\\n",
" 1/2 & 1/2 & -1/2 & -1/2 &\\\\\n",
" -1/2 & -1/2 & 1/2 & 1/2\\\\\n",
" -1/2 & -1/2 & 1/2 & 1/2 &\\\\\n",
" \\end{array}\\right]$. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rcParams\n",
"rcParams['font.family'] = 'sans'\n",
"rcParams['font.size'] = 16\n",
"rcParams['lines.linewidth'] = 3"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"u=np.array([0,0,2,0])\n",
"K=70*np.array([[1/2,1/2,-1/2,-1/2],[1/2,1/2,-1/2,-1/2],[-1/2,-1/2,1/2,1/2],[-1/2,-1/2,1/2,1/2]])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[F1x, F1y, F2x, F2y] = [-70. -70. 70. 70.] N\n"
]
}
],
"source": [
"F=K@u\n",
"print('[F1x, F1y, F2x, F2y] = ',F,'N')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So to stretch the 1-meter by $1~mm^2$ link from its initial configuration to the right by 2 mm, it takes a $\\mathbf{F}=70\\hat{i}+70\\hat{j}$ force and a negative $\\mathbf{F}$ reaction force. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'forces and deformation of single Al-bar\\nscale factor = 10')"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# scale factor\n",
"s=10\n",
"x0=np.array([0,1/2**0.5])\n",
"y0=np.array([0,1/2**0.5])\n",
"x=x0+u[0::2]*1e-3*s\n",
"y=y0+u[1::2]*1e-3*s\n",
"\n",
"plt.plot(x0,y0,'o-',label='initial position')\n",
"plt.plot(x,y,'s-',label='final position')\n",
"plt.quiver(x,y,F[0::2]*s,F[1::2]*s)\n",
"plt.title('forces and deformation of single Al-bar\\nscale factor = {}'.format(s))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Combining multiple elements\n",
"\n",
"This method can be extended to multiple, connected bars. We just have to do some extra book-keeping. Let's consider the 3-bar element that we used in [02_Gauss_elimination](../notebooks/02_Gauss_elimination.ipynb).\n",
"\n",
"![Triangular truss](../images/truss.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have 3 elements and 3 nodes, so there are 6 degrees of freedom, with 3 constraints. Let's use 1-m aluminum bars with $A=1~mm^2$, but set $\\alpha=\\beta=60^{o}$. \n",
"\n",
"Each element still has the stiffness defined above,\n",
"\n",
"$\\mathbf{K}_{el}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta & \\cos\\theta\\sin\\theta & -\\cos^2\\theta & -\\cos\\theta\\sin\\theta\\\\\n",
" \\cos\\theta\\sin\\theta & \\sin^2\\theta & -\\cos\\theta\\sin\\theta & -\\sin^2\\theta &\\\\\n",
" -\\cos^2\\theta & -\\cos\\theta\\sin\\theta & \\cos^2\\theta & \\cos\\theta\\sin\\theta\\\\\n",
" -\\cos\\theta\\sin\\theta & -\\sin^2\\theta & \\cos\\theta\\sin\\theta & \\sin^2\\theta &\\\\\n",
" \\end{array}\\right]$, \n",
"\n",
"but there are two extra things to consider. The angle $\\theta$ is different for each bar, and the connections are in different locations for each bar. \n",
"\n",
"so if the initial geometry, $\\mathbf{r}$, is \n",
"\n",
"$\\mathbf{r}=\\left[\\begin{array}{c}\n",
" x_1\\\\\n",
" y_{1}\\\\\n",
" x_{2}\\\\\n",
" y_{2}\\\\\n",
" x_3 \\\\\n",
" y_3\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" 0.5 \\\\\n",
" \\sqrt{3}/2\\\\\n",
" 1 \\\\\n",
" 0\\end{array}\\right]~m$\n",
"\n",
"then, the displacement, \n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" 0\\end{array}\\right]$, \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The forces applied at each joint must equal the sum of the terms \n",
"\n",
"$\\mathbf{F} = \\mathbf{K_1 u}+\\mathbf{K_2 u}+\\mathbf{K_3 u}$\n",
"\n",
"where, $\\mathbf{K_i}$ is the stiffness of the structure due to element $\\mathbf{i}$, as such\n",
"\n",
"$\\mathbf{K}_{1}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta_1 & \\cos\\theta_1\\sin\\theta_1 & 0 & 0 & -\\cos^2\\theta_1 & -\\cos\\theta_1\\sin\\theta_1 \\\\\n",
" \\cos\\theta_1\\sin\\theta_1 & \\sin^2\\theta_1 & 0 & 0 & -\\cos\\theta_1\\sin\\theta_1 & -\\sin^2\\theta_1 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" -\\cos^2\\theta_1 & -\\cos\\theta_1\\sin\\theta_1 & 0 & 0 & \\cos^2\\theta_1 & \\cos\\theta_1\\sin\\theta_1 \\\\\n",
" -\\cos\\theta_1\\sin\\theta_1 & -\\sin^2\\theta_1 & 0 & 0 & \\cos\\theta_1\\sin\\theta_1 & \\sin^2\\theta_1 \\\\\n",
" \\end{array}\\right]$\n",
"\n",
"$\\mathbf{K}_{2}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & -\\cos^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & 0 & 0\\\\\n",
" \\cos\\theta_2\\sin\\theta_2 & \\sin^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & -\\sin^2\\theta_2 & 0 & 0\\\\\n",
" -\\cos^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & \\cos^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & 0 & 0\\\\\n",
" -\\cos\\theta_2\\sin\\theta_2 & -\\sin^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & \\sin^2\\theta_2 & 0 & 0\\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \n",
" \\end{array}\\right]$\n",
"\n",
"$\\mathbf{K}_{3}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 &\\cos^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 & -\\cos^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 \\\\\n",
" 0 & 0 &\\cos\\theta_3\\sin\\theta_3 & \\sin^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 & -\\sin^2\\theta_3 \\\\\n",
" 0 & 0 &-\\cos^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 & \\cos^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 \\\\\n",
" 0 & 0 &-\\cos\\theta_3\\sin\\theta_3 & -\\sin^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 & \\sin^2\\theta_3 \\\\\n",
" \\end{array}\\right]$\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1. 0. 0. 0. -1. -0.]\n",
" [ 0. 0. 0. 0. -0. -0.]\n",
" [ 0. 0. 0. 0. 0. 0.]\n",
" [ 0. 0. 0. 0. 0. 0.]\n",
" [-1. -0. 0. 0. 1. 0.]\n",
" [-0. -0. 0. 0. 0. 0.]]\n"
]
}
],
"source": [
"Ke1 = lambda a: np.array([[np.cos(a)**2,np.cos(a)*np.sin(a)],[np.cos(a)*np.sin(a),np.sin(a)**2]])\n",
"Ke2 = lambda a: np.array([[-np.cos(a)**2,-np.cos(a)*np.sin(a)],[-np.cos(a)*np.sin(a),-np.sin(a)**2]])\n",
"\n",
"K1 = np.zeros((6,6))\n",
"K2 = np.zeros((6,6))\n",
"K3 = np.zeros((6,6))\n",
"\n",
"K1[0:2,0:2]=Ke1(0)\n",
"K1[4:6,4:6]=Ke1(0)\n",
"K1[0:2,4:6]=Ke2(0)\n",
"K1[4:6,0:2]=Ke2(0)\n",
"K2[0:4,0:4]=np.block([[Ke1(np.pi/3),Ke2(np.pi/3)],[Ke2(np.pi/3),Ke1(np.pi/3)]])\n",
"K3[2:6,2:6]=np.block([[Ke1(2*np.pi/3),Ke2(2*np.pi/3)],[Ke2(2*np.pi/3),Ke1(2*np.pi/3)]])\n",
"print(K1)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 87.5 30.31088913 -17.5 -30.31088913 -70.\n",
" 0. ]\n",
"[ 30.31088913 52.5 -30.31088913 -52.5 0.\n",
" 0. ]\n",
"[-1.75000000e+01 -3.03108891e+01 3.50000000e+01 1.55431223e-14\n",
" -1.75000000e+01 3.03108891e+01]\n",
"[-3.03108891e+01 -5.25000000e+01 1.55431223e-14 1.05000000e+02\n",
" 3.03108891e+01 -5.25000000e+01]\n",
"[-70. 0. -17.5 30.31088913 87.5\n",
" -30.31088913]\n",
"[ 0. 0. 30.31088913 -52.5 -30.31088913\n",
" 52.5 ]\n"
]
}
],
"source": [
"E=70e3\n",
"A=1\n",
"l=1e3\n",
"K = E*A/l*(K1+K2+K3)\n",
"for k in K:\n",
" print(k)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"ufree=np.linalg.solve(K[2:5,2:5],np.ones(3)*70)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.529210992451761"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.cond(K[2:5,2:5])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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4L58+fJjAC4uLlaAgQMHBm7atKnk2LFjz9esWTMxIiLC+PPPP5eIiopyuqsX3S5XEyGllAmYB0zVWh/JoZkPcCqb8ij7v95ArL3d1Vu088khhgHAAICgoKA7ilvc2urfz/PF7rMAvGL8iiaGTHls1wVQqoqDIhMFicGgeK/HfTw+czsXohOJTkjhhS/+4KunPsAc/gfEhENCFKzqD32/AcO/+swSIk+MHz8+oFKlSombNm065uRke2/WrVs3sUWLFjVzSoR+/fVX95SUFPXZZ5+dznS5LCa7tk899VTkxIkTLwJ06dLlekxMjNO8efPKjh49+lLp0qWzPTX06quvRqT9bbVaad26dUxycrKaO3duuQ8++OC8k5MThw4dcv7444/LPvvss5c++uij9ISmZ8+e6YN4zZ8/32ffvn0l1q9ff6RNmzaxAB07dowBmDZtmv+4ceMuBgQEpJ9matKkSUzatjp37nx906ZNXosWLSqzYcOGI61atYoFKF++fErjxo1rr1ixwmvo0KFX7PEGNmzYMGbz5s3H07bVtm3b61WqVKk3ceLEcp988snZtPKrV68af/zxxyP16tVLAnjggQfig4KCgj///HPvyZMnX6xTp05SqVKlLCaTSbdo0eKGPll79+4t0blz5ysvvfRSZFpZ3759r2X3HN6J3L409hrgCky4RRsFZDewSNbrKnfa7gZa6/la6wZa6wa+vr63airuwLHLsYz+2tYvqLVhN88bv82obD4KqrfKYU1RHPm4m5mVqb/QH2evMeWny7aEOe2/7qnt8PM0xwUpRBYWi4WDBw+6tW/f/mpaEgTwyCOPxPn7+yfntF7Dhg3jjUaj7ty5c+VPP/3U+/z58zmeXOjTp09U5uUnn3wyKj4+3rB3717XnNY5ffq0qVevXhX8/f3rmc3mULPZHDZlypSAmJgYp7R9rV+/3tNqtTJkyJDInLazceNGL39//+RHH300NiUlhbRH27Ztr1ssFrV169YbTum3adPmhpFQq1Spkujq6mpNS4IAgoODEwHOnj1rBjh48KDz2bNnnZ944okrmffh4eFhDQkJidu1a1eJzNusUKFCUloSBBAQEGDx8fFJOXPmjDmn48i077jly5eXHjlyZLmffvrJLbtLhXcj1xIhpVQQMAZ4HXBWSpW0d5om07ITtjM62Z3N8bb/m3YW6HbtorKp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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"scale = 10\n",
"r0=np.array([0,0,0.5,3**0.5/2,1,0])*1000\n",
"u=np.zeros((6))\n",
"u[2:5]=ufree\n",
"ix=range(-2,6,2)\n",
"iy=range(-1,6,2)\n",
"F=K@u\n",
"r=r0+u*scale\n",
"\n",
"plt.figure()\n",
"plt.plot(r0[ix],r0[iy],'s-',label='orignal')\n",
"plt.quiver(r0[ix],r0[iy],u[ix],u[iy],color=(0,1,1,1),label='displacements')\n",
"plt.plot(r[ix],r[iy],'o-',label='deformed')\n",
"plt.quiver(r0[ix],r0[iy],F[ix],F[iy],color=(1,0,0,1),label='applied forces')\n",
"plt.axis([-100,1200,-100,1000])\n",
"plt.legend(loc='center left', bbox_to_anchor=(1,0.5));\n",
"plt.title('original and deformed structure\\nscale = {}x'.format(scale));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Project Matrix creation\n",
"\n",
"In the project, we have 7 joints _(nodes)_ and 11 bars _(elements)_. That means we have 7 locations where $\\sum\\mathbf{F} = \\mathbf{0}$ and 11 stiffness matrices $(\\mathbf{K_1}...\\mathbf{K_{11}})$. The result is 14 equations with 14 unknowns, but we have some constraints on the system. $u_{1x}=u_{1y}=0$ and $u_{7y}=0.$ Which leaves us with 11 unknowns. There are 14 applied forces $(F_{ix},~F_{iy})$ that make up the vector $\\mathbf{F}.$\n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\\\\n",
" u_{4x}\\\\\n",
" u_{4y}\\\\\n",
" u_{5x}\\\\\n",
" u_{5y}\\\\\n",
" u_{6x}\\\\\n",
" u_{6y}\\\\\n",
" u_{7x}\\\\\n",
" u_{7y}\\\\\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\\\\n",
" u_{4x}\\\\\n",
" u_{4y}\\\\\n",
" u_{5x}\\\\\n",
" u_{5y}\\\\\n",
" u_{6x}\\\\\n",
" u_{6y}\\\\\n",
" u_{7x}\\\\\n",
" 0\\\\\\end{array}\\right]$, and $\\mathbf{F} = \\mathbf{K_1 u}+...+\\mathbf{K_{11} u}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Node and element arrays\n",
"\n",
"In FEA, we typically store the node locations and their connections in two arrays called the node array: `nodes` and the element array: `elems`. The array `nodes` stores the node number and its x-y location. The array `elems` stores the node numbers that define each element. Our `nodes` and `elems` are printed below. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node array\n",
"---------------\n",
"[[ 1. 0. 0. ]\n",
" [ 2. 150. 259.80762114]\n",
" [ 3. 300. 0. ]\n",
" [ 4. 450. 259.80762114]\n",
" [ 5. 600. 0. ]\n",
" [ 6. 750. 259.80762114]\n",
" [ 7. 900. 0. ]]\n",
"element array\n",
"---------------\n",
"[[ 1 1 2]\n",
" [ 2 2 3]\n",
" [ 3 1 3]\n",
" [ 4 2 4]\n",
" [ 5 3 4]\n",
" [ 6 3 5]\n",
" [ 7 4 5]\n",
" [ 8 4 6]\n",
" [ 9 5 6]\n",
" [10 5 7]\n",
" [11 6 7]]\n"
]
}
],
"source": [
"l=300 # mm\n",
"nodes = np.array([[1,0,0],[2,0.5,3**0.5/2],[3,1,0],[4,1.5,3**0.5/2],[5,2,0],[6,2.5,3**0.5/2],[7,3,0]])\n",
"nodes[:,1:3]*=l\n",
"elems = np.array([[1,1,2],[2,2,3],[3,1,3],[4,2,4],[5,3,4],[6,3,5],[7,4,5],[8,4,6],[9,5,6],[10,5,7],[11,6,7]])\n",
"print('node array\\n---------------')\n",
"print(nodes)\n",
"print('element array\\n---------------')\n",
"print(elems)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can plot the mesh in different ways, here I have chosen to loop through each triangle in the mesh, $node~1\\rightarrow node~2\\rightarrow node~3 \\rightarrow node~1 \\rightarrow node~2 \\rightarrow node~3 \\rightarrow ...$\n",
"\n",
"I create an array where each column is a loop around each triangle in the support structure for the x- and y-coords, `ix` and `iy`, respectively. \n",
"\n",
"The vector `r` is the coordinates for the structure, so $\\mathbf{r} = \\mathbf{r}_0+\\mathbf{u}$, where $\\mathbf{r}_0$ is the location of each node without forces applied and $\\mathbf{u}$ is the distance each node moves after a force is applied. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0. , 150. , 259.80762114,\n",
" 300. , 0. , 450. , 259.80762114,\n",
" 600. , 0. , 750. , 259.80762114,\n",
" 900. , 0. ])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ix = 2*np.block([[np.arange(0,5)],[np.arange(1,6)],[np.arange(2,7)],[np.arange(0,5)]])\n",
"iy = ix+1\n",
"\n",
"r = np.block([n[1:3] for n in nodes])\n",
"r"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(r[ix],r[iy],'-',color='k')\n",
"plt.plot(r[ix],r[iy],'o',color='b')\n",
"plt.plot(r[0],r[1],'^',color='r',markersize=20)\n",
"plt.plot(r[0],r[1],'>',color='k',markersize=20)\n",
"plt.plot(r[-2],r[-1],'^',color='r',markersize=20)\n",
"# label the nodes\n",
"for n in nodes:\n",
" if n[2]>0.8*l: offset=0.1\n",
" else: offset=-l/5\n",
" plt.text(n[1]-l/3,n[2]+offset,'n {}'.format(int(n[0])),color='b')\n",
"# label the elements\n",
"for e in elems:\n",
" n1=nodes[e[1]-1]\n",
" n2=nodes[e[2]-1]\n",
" x=np.mean([n2[1],n1[1]])\n",
" y=np.mean([n2[2],n1[2]])\n",
" # ----------------->need elem labels<-----------------\n",
" plt.text(x-l/5,y-l/10,'el {}'.format(int(e[0])),color='r')\n",
"plt.title('Our truss structure\\neach element is 2 nodes and length L\\ntriangle markers are constraints')\n",
"plt.xlabel('x (mm)')\n",
"plt.ylabel('y (mm)')\n",
"plt.axis(l*np.array([-0.5,3.5,-1,1.5]));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Assemble the stiffness matrix\n",
"\n",
"Creating the matrix to represent $\\mathbf{K} = \\mathbf{K}_1+...\\mathbf{K}_{11}$ is called __assembling the stiffness matrix__. We loop through each element and add the individual stiffness matrices, the same way we did for the 3-element truss above. First, we define our $\\mathbf{K_{el}}$ function, `Kel(node1,node2)`. The nodes define the initial length and the angle of the beam element. We can multipy the stiffness matrix by $EA$ to get the actual N/m stiffness term. In our case, each beam is the same material and cross section, so we can factor out $EA$."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def Kel(node1,node2):\n",
" '''Kel(node1,node2) returns the diagonal and off-diagonal element stiffness matrices based upon\n",
" initial angle of a beam element and its length the full element stiffness is\n",
" K_el = np.block([[Ke1,Ke2],[Ke2,Ke1]])\n",
" \n",
" Out: [Ke1 Ke2]\n",
" [Ke2 Ke1] \n",
" arguments:\n",
" ----------\n",
" node1: is the 1st node number and coordinates from the nodes array\n",
" node2: is the 2nd node number and coordinates from the nodes array\n",
" outputs:\n",
" ----------\n",
" Ke1 : the diagonal matrix of the element stiffness\n",
" Ke2 : the off-diagonal matrix of the element stiffness\n",
" '''\n",
" a = np.arctan2(node2[2]-node1[2],node2[1]-node1[1])\n",
" l = np.sqrt((node2[2]-node1[2])**2+(node2[1]-node1[1])**2)\n",
" Ke1 = 1/l*np.array([[np.cos(a)**2,np.cos(a)*np.sin(a)],[np.cos(a)*np.sin(a),np.sin(a)**2]])\n",
" Ke2 = 1/l*np.array([[-np.cos(a)**2,-np.cos(a)*np.sin(a)],[-np.cos(a)*np.sin(a),-np.sin(a)**2]])\n",
" return Ke1,Ke2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we loop through each element (1-11) and add each element stiffness term to the _global_ stiffness matrix, $\\mathbf{K}$. The result is a $14\\times 14$ array that satisfies our $\\sum \\mathbf{F} = \\mathbf{0}$ at all 7 nodes. \n",
"\n",
"$\\mathbf{F} = \\mathbf{Ku}$"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"K=np.zeros((len(nodes)*2,len(nodes)*2))\n",
"for e in elems:\n",
" ni = nodes[e[1]-1]\n",
" nj = nodes[e[2]-1]\n",
" \n",
" Ke1,Ke2 = Kel(ni,nj)\n",
" #--> assemble K <--\n",
" i1=int(ni[0])*2-2\n",
" i2=int(ni[0])*2\n",
" j1=int(nj[0])*2-2\n",
" j2=int(nj[0])*2\n",
" \n",
" K[i1:i2,i1:i2]+=Ke1\n",
" K[j1:j2,j1:j2]+=Ke1\n",
" K[i1:i2,j1:j2]+=Ke2\n",
" K[j1:j2,i1:i2]+=Ke2"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"#np.array_latex([K*1000],['[K]'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Save the inputs for the project\n",
"\n",
"Here, we save the arrays needed to work on the project as a Linear Algebra problem. We need the `nodes`, `elems`, and `K` arrays. So, we save them in the file `fea_arrays.npz`."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"np.savez('fea_arrays',nodes=nodes,elems=elems,K=K)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solution for our FEA problem\n",
"\n",
"In FEA, you have applied forces, in $\\mathbf{F}$, and displacement in $\\mathbf{u}.$ Typically, you have a mix of known and unknown forces and displacements. In our example, we have 14 degrees of freedom - 3 constraints for our displacements. So, we solve the problem in two steps\n",
"\n",
"1. solve for the free nodes `uf` $\\rightarrow \\mathbf{K}[2:13,2:13] \\mathbf{u}[2:13] = \\mathbf{F} [2:13]$\n",
"\n",
"2. plug in `u` to solve for `F` at constrained degrees of freedom $\\rightarrow \\mathbf{F}=\\mathbf{K}\\mathbf{u}$"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 0. 0. 0. 0. -100. 0. 0. 0. 0. 0.]\n",
"[ 0.00000000e+00 -1.77635684e-15 -1.42108547e-14 2.84217094e-14\n",
" 7.25533735e-15 -1.00000000e+02 2.84217094e-14 -1.06581410e-14\n",
" -2.13162821e-14 -2.84217094e-14 2.84217094e-14]\n"
]
}
],
"source": [
"E=200e3\n",
"A=0.1\n",
"Ff=np.zeros(2*len(nodes)-3)\n",
"Ff[5]=-100\n",
"print(Ff)\n",
"# step 1 solve for uf (the joints without constraints)\n",
"uf = np.linalg.solve(E*A*K[2:13,2:13],Ff)\n",
"u=np.zeros(2*len(nodes))\n",
"u[2:13]=uf\n",
"\n",
"# step 2 solve for F (the solution should include reactions and applied forces)\n",
"F=E*A*K@u\n",
"print(F[2:13])\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"displacements:\n",
"----------------\n",
"u_1x:0.00 mm\n",
"u_1y:0.00 mm\n",
"u_2x:1.95 mm\n",
"u_2y:-2.12 mm\n",
"u_3x:0.43 mm\n",
"u_3y:-4.00 mm\n",
"u_4x:1.08 mm\n",
"u_4y:-5.37 mm\n",
"u_5x:1.73 mm\n",
"u_5y:-4.00 mm\n",
"u_6x:0.22 mm\n",
"u_6y:-2.12 mm\n",
"u_7x:2.17 mm\n",
"u_7y:0.00 mm\n",
"\n",
"forces:\n",
"----------------\n",
"F_1x:-0.00 N\n",
"F_1y:50.00 N\n",
"F_2x:0.00 N\n",
"F_2y:-0.00 N\n",
"F_3x:-0.00 N\n",
"F_3y:0.00 N\n",
"F_4x:0.00 N\n",
"F_4y:-100.00 N\n",
"F_5x:0.00 N\n",
"F_5y:-0.00 N\n",
"F_6x:-0.00 N\n",
"F_6y:-0.00 N\n",
"F_7x:0.00 N\n",
"F_7y:50.00 N\n"
]
}
],
"source": [
"xy={0:'x',1:'y'}\n",
"print('displacements:\\n----------------')\n",
"for i in range(len(u)):\n",
" print('u_{}{}:{:.2f} mm'.format(int(i/2)+1,xy[i%2],u[i]))\n",
"print('\\nforces:\\n----------------')\n",
"for i in range(len(F)):\n",
" print('F_{}{}:{:.2f} N'.format(int(i/2)+1,xy[i%2],F[i]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Postprocess FEA results\n",
"\n",
"The last step in FEA (and any applied linear algebra problem), is to post-process the results. I have chosen to show the deflections of each joint and the applied forces at each node. I imported the `interact` widget to animate the deformation of the structure. What you should see is that the sum of external forces $\\sum F_x=0$ and $\\sum F_y=0$. This is what we see, since our the sum of the reaction forces is equal to the applied force. "
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "76db4d860cb24d048e0df324dacbf5cf",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=5, description='s', max=10), Output()), _dom_classes=('widget-interact',…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from __future__ import print_function\n",
"from ipywidgets import interact, interactive, fixed, interact_manual\n",
"import ipywidgets as widgets\n",
"\n",
"def f(s):\n",
" plt.plot(r[ix],r[iy],'-',color=(0,0,0,1))\n",
" plt.plot(r[ix]+u[ix]*s,r[iy]+u[iy]*s,'-',color=(1,0,0,1))\n",
" #plt.quiver(r[ix],r[iy],u[ix],u[iy],color=(0,0,1,1),label='displacements')\n",
" plt.quiver(r[ix],r[iy],F[ix],F[iy],color=(1,0,0,1),label='applied forces')\n",
" plt.quiver(r[ix],r[iy],u[ix],u[iy],color=(0,0,1,1),label='displacements')\n",
" plt.axis(l*np.array([-0.5,3.5,-0.5,2]))\n",
" plt.xlabel('x (mm)')\n",
" plt.ylabel('y (mm)')\n",
" plt.title('Deformation scale = {:.1f}x'.format(s))\n",
" plt.legend(bbox_to_anchor=(1,0.5))\n",
"interact(f,s=(0,10,1));"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"steel=np.loadtxt('../data/steel_price.csv',skiprows=1,delimiter=',')\n",
"al = np.loadtxt('../data/al_price.csv',skiprows=1,delimiter=',')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fc96a47dd68>]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAD9CAYAAACvMECaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3dd5xb1Zn4/88jaTR97HHD4IKNbYoJNaYTilMoS0sIJZQQSAIhCcn+sikLbCqwsAm/kE1II5BsiEnoBJNCNy2hGVNiA6a49zq9qZzvH+dqdHV1JV3NaGY0M8/79RpL99yjqzMjWY9OF2MMSimlVCGhoS6AUkqp4UEDhlJKqUA0YCillApEA4ZSSqlANGAopZQKJDLUBRhIEyZMMDNmzBjqYiil1LDyyiuvbDPGTPSmj+iAMWPGDBYvXjzUxVBKqWFFRFb7pWuTlFJKqUA0YCillApEA4ZSSqlANGAopZQKRAOGUkqpQDRgKKWUCkQDhlKqsG3vQSI+1KVQQ0wDhlIqv8e/Dzd/EG6dD7odwqimAUMpld9zP7a3G1+H1f8c2rKoIaUBQykVXHfrUJdADSENGEqp4JLajzGaacBQSgWnAWNU04ChlArOJIa6BGoIacBQSgWX1IAxmmnAUEoFp01So5oGDKVUcFrDGNU0YCilgtMaxqimAUMpFZx2eo9qGjCUUsFpk9SopgFDKRWcNkmNahowlFLBaQ1jVNOAoZQKTmsYo5oGDKVUcFrDGNU0YCilcksmPcexoSmHKgsaMJRSuRlPwEj0DE05VFnQgKGUys077yKhNYzRTAOGUio3rWEoFw0YSqncNGAoFw0YSqncvKOitElqVNOAoZTKTWsYykUDhlIqNw0YykUDhlIqt6yAoU1So5kGDKVUbt4+jHj30JRDlQUNGEqp3LRJSrkEDhgicrKIPCMibSLSIiKLRWS+63yjiNwqIttEpF1EHheR/XyuUyUiPxKRjSLSKSLPi8gxPvlCInKliKwSkS4ReV1Ezuz7r6qUKpo2SSmXQAFDRC4DHgReAT4OnAXcA9Q45wVYCJwIXAGcCVQAi0RkqudytwGfB74DnAJsBB4RkQM9+a4BvgfcDJwEvADcIyInF/UbKqX6zjvTe8f7cPsZcN/nIK61jdEmUiiDiMwAfgJ8wxjzE9epR1z3TwOOBuYbYxY5j3seWAl8E/iKk3YAcB5wiTHmd07a08Ay4AfOdRCRScDXgRuMMTc6z7FIRGYDNwB/68PvqpQqlreG0b4VViyy93c7CI740uCXSQ2ZIDWMS4Ak8Ks8eU4DNqSCBYAxphl4CDjdky8G3OXKFwfuBE4QkUon+QQgCizwPM8CYD8RmRmg3Eqp/sq3nPkbdw9eOVRZCBIwjgbeBs4VkfdFJC4i74mI+6vFvsBSn8cuA6aLSJ0r30pjTIdPvigw25WvG3jPJx/A3ADlVkr1lzFDXQJVRoIEjN2AOcCPsM1BHwMeA24Wka86ecYBO30eu8O5bQyYb5zrtsmYrHerN18WEbnU6ZBfvHXr1lzZlFJBePswvNa9Aj89CBZ8UjvER4EgASME1AOXGWN+Y4x50hhzOfAwcKXT4S2A31cR8TkuZb4sxphbjDHzjDHzJk6cWCi7UiqfnvY8Jw3ccxHsWAHvPQav/mHQiqWGRpCAsd25fcyT/iiwC7Ar9pu/37f+VM0iVasolG+H67bRCUb58imlBtKWN3OfSyaheW36eNVzA18eNaSCBIxlOdJTH+ZJJ8++PnnmAmuMMW2ua80UkRqffD2k+yyWAZXALJ98AHnexUqpktnk1zXp6PS0Lkt4YMuihlyQgPGAc3uCJ/0EYJ0xZhN2DsYUETk2dVJEGoBTnXMpC7HzM85y5YsA5wCPGmNS6w48jA0g53ue8wJgqTFmZYByK6X6a9O/cp9rWZd5XKi/Qw17BedhYOc8LAJ+LSITgBXAJ7Gd3xc7eRYCzwMLROQb2CaoK7G1kB+mLmSMeU1E7gJ+IiIV2HkalwMzcQUHY8wWEbkJ20fSCizBBpX5ZA7TVUoNFGNgc56A4dW2ZeDKospCwYBhjDEicgZwPfB9bD/C28D5xpg/OnmSInIKcCPwC6AKG0CON8as9VzyYuA64FpgLPA6cKIxZokn39VAG/BVYDKwHDjbGPNQX35RpVSROrZDV3Pw/C0bBq4sqixI9sjVkWPevHlm8eLFQ10MpYanlg3w432C56+ohavWQ9ZYFTXciMgrxph53nRdrVYp5S/fLG8/sXbobhmYsqiyoAFDKeXPu45UEK2bS18OVTY0YCil/PVl1FOnTpEayTRgKKX89aV/s2N74Txq2NKAodRI1rED/vI1eOIHxfdJ9KVJSgPGiBZkHoZSarh68lpYfJu9P2FPOODc4I/NF2DGzbKbKXlpwBjRtIah1EiWChYAz99c3GPz1TAu/jvs8oHsdA0YI5oGDKVGi3AlPHEN3PQBeO2PhfPn6/Su3wUufRquWAKn/jSd3qGd3iOZBgylRouWDfDsjXaF2T9fXrhTu1AfRjgC42dB7YR0mtYwRjQNGEqNFq2epTtaN+XPH7STvGZ8+r4GjBFNA4ZSI1WhD/x8e11A8GG17oDRvi3YY9SwpAFDqZHKu1+F15a38p/P1YdRUZt5nFHD0D6MkUwDhlIjVaFv+wUDRo4+jKoGz/EYEOejpLtZ9/YewTRgKDVStW/Nf37LMnjuJvi/U2DtS9nnczVpVXoCRigM1Y3pY61ljFgaMJQaqQoFjA2vwuPfg1XPwh1nZZ/PVcM46YbsNO34HhV0prdSI5XfB7eE/fsmupqy09z5ph4C+37CDqHd4/jsvKUIGMmEra2osqUBQ6mRyq+GMf0ISMZh7QvZ53o6IFqTPnbXMKK1cMQXcz9XxkipAjUbr0Qc/nAGbF4Kn7gV5nykuMerQaNNUkqNVH4f3JFKGDPFP793i1V3wJACHxV1u6TvF7u39+t/ss1inTvhjjOLe6waVBowlBqp/EZJ9bRBQ66AsS7zOOkOGAWaiuonp++3FZgQ6LVteXH51ZDRgKHUcLXqObj/UljxlP9534DRnidg9KeGMSl9v9gaRqFrq7KhfRhKDUfGwN0XQcc2ePtv8K1Vdm0nN78mqe7W3E1Szes9z+Hq9C4YMFw1jEJLjngVqr2osqGhXaly19MBry6Ada+k09o222AB0NNqFxT06iiyhuG9hruGUWj0UkYNo8C+3lveglf+DzqdkVlawxg2tIahVLl76r/hnz+zy5NfsRjGToedqzPz7Hgfxs1MHydi/kuD5OvDaFqTeeyeuCeSv4wZfRh5AkZ3G/z2BOhqhjUvwMd/pQFjGNFXSqly98+f2dtENyy63t7f8Gpmnh0rM49zzbaOd0HtRP9zO1dlHpsiOr1rJwJOUGnfZofK+nnnYRsswI6OAp17MYxowFBqONm2HF6/Cx7+Vmb6ds92qfnmQoRy/LdvXpv5QV9Mp3e4wjUXw+SuZfjNHtcaxrChr5RSw8n6V+CBS7PTd6zIPM4VMI79ln862Al97qG1xfRhQGZnunfEVe81fZZM9zZ3BV1WXQ067cNQqtxF623Hdj47PDUM9/Ice58Cu+wLsU444ssFrrMSGmfY+8kiRkkBjJkGG1+395vXwrRDsvN4lyVJxLMDRCIGkWjh51ODTgOGUuVq8zI7QmrcDNj0r/x5d66yH76pobXuGkb9rnD8VcGec+dKwFkrqpgmKYAxU9P3m9f55+luyzzuaYVET2ZavEsDRpnSgKFUOVq3GG79CBCweSYZt9/qUyOl3AHDved2IZuWpu8X0+kNwQKGt6bU3eYTMLoLP5caEhowlCpHd19E3mAx52Ow5wnwzI3QutGmrXkBnv85jJ+VOcu7mICxYUn6viliWC0ErGF4A0Zr9oZL8c7Cz6WGhAYMpcqRd10nr7lnwEHn2+G1ry6waX/+Qvp8jStI5BpG23ut0+HNB+39TUvtN/xIZR86vael7y//K7RuhvpdMvN0tWQe97T5BAytYZQrHSWlVLnJNYfBbfrh9nbcHv7n3bO8a3xqGJ+41d5G6+DkG6HRacpKxuwy49CHTu+pmcf3fy7zePObsPi2zLTuluwmqZjWMMqV1jCUKjdBVm9NBYpxswrn9ath7H8W7HYQ1I6326tOOdjp8AbWL4EpH8z8ph+pCvA8kzKPVz5j16dKDbe96/zsx7z7OGz1/L5awyhbWsNQqtz47a/tlepTyFXDcMvVhzFhdnov7t0OTqenZpH3tKfTorWFn8dvQuCbf7a3W9/JnisC8OIvszdz0j6MsqU1DKXKzcpn8p8//efp+4UChoShamzh55zywfT9Nc4HeI9rCGyQgAG2JhLvSh8vvd92bD91fbDHg9YwypgGDKXKSTLpHzD2PsVurxqKwAHnpdMr62DMdGhek/0YsLWLXEuBuO12EISjtj9hx/u2wzqjhlEXrPz1u6abtgDWL7Y/xXAHHFVWtElKqXKy9S3/ZclPvAGO/DIc/oXsAHDQBbmv59fh7aeiKrOWsfaFzIBRUZP9GD8NuwXLl09MA0a50oChVDlZ8XTm8bTD4JwFMHaaf36AQz+f+1wxczCmH5G+f/enYem96eOgTVKlCBhawyhbGjCUKifu5qh/+zF89lHY59T8j6kZB0f9u/+5QnMw3HY/MvM46RreG7RJyh10+koDRtnSgKFUuUjEYfU/0sczjw3+2PnfhlN/mp1eTA1j2qG5zwWtYRx8Ecz4UPDn9KMBo2xpwFCqXGx8zU5kA7sr3vgAcyxSwhH44EW209mtmIBRNSb3uaABIxyBz/wFTvpR8Of10j6MsqUBQ6lysdLVfzHzmGDrN3n1bmLkKKZJCmBqjlpG0ICRUhFgol8uWsMoWxowlCoX7g7vYpqj3LwBI+goqd7nPcY/PWgfRkq4H8uTa8AoWxowlCoH8W5Y+2L6ONcHdyHeJqhiaxiHf9E/PRpwWG1KqB9TvDRglC0NGEqVg6Y16Q/KMdMytzstRlaTVJE1jNrx/ulB52GkhCvyn893PQ0YZatPAUNEHhYRIyLXetIbReRWEdkmIu0i8riI7Ofz+CoR+ZGIbBSRThF5XkSyvlKJSEhErhSRVSLSJSKvi8iZfSmzUmUttacFZK/6WgxvE1SxAQOgwtNfUVETbHlzt3xNUnufAhc9BEdeAfudnX1eO73LVtEBQ0Q+BRzgky7AQuBE4ArgTKACWCQi3v8BtwGfB74DnAJsBB4RkQM9+a4BvgfcDJwEvADcIyInF1tupcpa66b0/frJfb+Ot3O6sqH4a3i3Ry22wxsglKeGkeiBqfPgY9fCrPnZ57WGUbaKChgiMha4Cfiaz+nTgKOBC40xfzLGPOykhYBvuq5xAHAe8P8ZY35jjHkCOBtYA/zAlW8S8HXgBmPMjcaYRcaYy4BFwA3FlFupsueuYXiHxhbD29fQl5FW3tpBXwJGOE8fhntxwQaf31UDRtkqtobxQ2CZMeZPPudOAzYYYxalEowxzcBDwOmefDHgLle+OHAncIKIVDrJJwBRYIHneRYA+4nIzCLLrlT5KlUNI7VceX+EKzOPix0hBfmbpKa4llKv8/ldt76TvQufKguBA4aIHA18GsgxjIJ9gaU+6cuA6SJS58q30hjT4ZMvCsx25esG3vPJBzA3aNmVKnulqmGUJGB4mpNK0SQ15YO2Q37CXnC0q4HCu4Ur2JV337i7+OdUAy5QwBCRCuDXwI3GmFzbgY0Ddvqk73BuGwPmG+e6bTLGmAL5vGW9VEQWi8jirVu35iiqUmWmVDWMyfun7wfZB8NPKZqkvFu6nvg/8B/L4UsvQpWrX6W6ET7gM47l2RuDbVWrBlXQGsa3gGrgujx5BPB+uKfSBzJfBmPMLcaYecaYeRMnFjkGXamhUqoaRs04OPt22PcTcMF9fbtGZX3mcbFDaiG75jB1nq25+PWpnHkbfO0t+M+16eVJdqzIXC1XlYWCAUNEpgNXA98GKkVkrNP5jes4jP3m7/etP1WzSNUqCuXb4bptdEZf5cun1PBmTOlqGABzT4ezfmc/pPti+uGZx33pwxgzFY67yi7P/pm/5e98F7HLolc1wOFfSqc/dYNdvbe7Lfdj1aAKUsPYA6jCdjbvdP2AHcW0E9gP27ewr8/j5wJrjDGpV30ZMFNEvF9b5gI9pPsslgGVgHcFtlTfxZsByq5U+etqSo8MitZlf8MfbHM+mnlc7CzvlOO+ZZdnn3FU8MccdhlUOrWMnSvh96fCbR+1OxGqIRckYLwGHO/zAzaIHI/9kF8ITBGR3kVwRKQBONU5l7IQOz/jLFe+CHAO8KgxJjXm7mFsADnfU54LgKXGmJUoNRKUsnZRCtM8NYyWjf75BkL1WLuroNuWN2H9K4NXBpVTwQVfjDFNwFPedKelaLUx5inneCHwPLBARL6BrXlcie1z+KHreq+JyF3AT5zO9JXA5cBMXMHBGLNFRG4CrhSRVmAJNqjMJ3OYrlLDW6n6L0qlFBP3+mPeJfD0/2SmtW8Z3DIoXyVbS8oYk8TO2n4M+AXwAJAAjjfGrPVkvxj4HXAt8FdgGnCiMWaJJ9/VTp6vAo8ARwFnG2MeKlW5lRpy5VbDALjwAXsrITj88sF97vrJdj8Qtw7tsiwHfV5S0hiT1YtljNkBXOL85HtsJ3a2uN+McXe+BDZgXJsvn1JlYfMyiFSlNz56+ofw9l9g/ndgzkdyPy6jhlEmAWPWfPjyYhswitnIqVR2Owha1qePO3fAtnehp82eU0NCV6tVqj96OmDnKlj+d/jlkfCzg2HDa7BjJSy6Dja+Dn86J/81MmoYZdAklTJhztAEC8gOCiuegp8fCrccB0tuH4oSKTRgKBXMxtfhr1+HVa49t7ua4VdHw/8eAH86N53+2Ldh07/Sx8l4/iaVcuvDKAfu5UMA3n8SjDNSauEV0Nk0+GVSGjCUCuT+y+Dl38DdF6YXz1tyO+x4Pzvv1uXQtDozbYOre277+/DcT+wtZI5C0oBhFWp2evbG4q+54VX4x/9m1uhUUTRgKFVIvBu2vmXvd2yHnavtshUv3uKfP1QB2z1LoK1/1d4aA3eeB49/F/54dukn7Y0U1Y0gefbgePHXtikwqO42uP10eOw78NBX+1280UoDhlKFeL+R7lwFy/9mF8nzk+qgdUvVMEwStr5t729/D9q2QJsGDF+f+Uvuc4keePbHwa+17iXbhAjwzsP9K9co1o+Nd5UaJdo2Zx43rYal9+fOH+uA1f/ITFvvBIxkIjN9xSLbxwF2scCK6v6VdSQZMy3/+fXeUfh5eBcy7G4d+hn1w5DWMJQqpNUz0/nNB2HNP4u7RtsmaFqb7rhNeeCy9H3tv8g0ZirscVxmmrtvI1cNz0+7Z+Xq5vX++VReGjCUKsTbJLXq2b5dZ9Vz9pttLtoclUkEzr8PPnoNRKrtnJCjvmrnuoBtYko1MxXinSnevK60ZR0ltElKqVyMgQe+AG/cmTtP3S7ZTVa5rHoWxu2R+3zqg1ClhSNw1FfsciHdLXZV2yevg+1OH1HTWpg8xi6Hfuf5dvHG8++2neYrnoa7LoRun6By53nwX5v7toXtKKY1DKVyWfl0/mAxZR7M+FD+a+x+tOt6z9oPtlwSPcWVbzSprLPBAmCsq2+j2Vl16O6L7CKF616Cf/zUrm771//wDxYAiW77+qqiaMBQKhf35Ds/ux1ktx3NZ/+zoMJZvK95jZ2Alsshny2ufKOVuzO8yenH2PRGOm3l07DiyXQtJJdX7yh92UY4DRhK5eId0eRV1VA4YEzcB3Y/In385oP++c74Fex5UnHlG63GTk/fb/Lp+K6bnHuOjNvbfy1dmUYJDRhK5eIdWeNV2WC3RHULVWQej58Ne56YPk50k+XD34EDPwUh/e8YiDtgNK+1fU1usXZ499HC14m121n5KjB9hyqVS8uG/Of9ahiRyszj2vGw3ych7ElPqZkAH7y472UcjdwB480H4bcnZJ5f+QzgCSK5vLWwcB7VSwOGUrkUChiVDXY0jlvcpwZR3Qj7nJqZFqmGi/8OX3w+u5ai8vNO6Fv7Yuaxd65LPm/p1jrF0IChVC4FaxhjsgNGrg+rgy/MPB4/G3Y/Euom9b18o1X9ZAgFmBEwbhbsdnB2uru2t/F12PgG9LSXrnwjmAYMpbziPXZYZmuQGsbYzLRTbvK/P+MYGLt7+njczP6Xc7QKhe0s8EIOvRTO+UNm2oQ97fyLmcek0379IfjRnPTqwXEd3pyLBgyl3F5dADdMg9s+kl7jKWX/czOPozV2RI7bAZ+C466C466EAy9Ip4dCmbWMyfuVttyjTaF1pqJ1cOB52YElVGEn6zV40mPtcO8l8PBV8N/O5MB83nkEXvoNxLqKL/swpjO9lXJ78Ev2dv0rmen7nwMfuzZzIl/tJKiognMW2DH9h34OIlE47lv+1z7iCruGUawTDvncwJR/tHB3fPs58Dw7KMEr7Hzk1U3MPrfxNfsD8MwPYf7V/td+5ffw0Ffs/daNdpTbKKEBQ6lCZn8UPuGM6z/3T/DU9fCBT0D9LjZtn1OzO7X9VFTBqT8ZuHKOJoUCxqGX+qen+j5qA/QdGZO9dMiGV9PBAmD184WvM4JowFAqJVfbdYNrFdm9T7Y/amjla5La8yS7H3lK9Ti7RwnY5Vwg2EKPiZitMbot/m3mcWeerXdHIO3DUCqlY5t/esOUwS2HKmxsjoDx4e/Ax3+ZmXbuHRCtt7WS46+0aXueaEdR5ZOMZad592aPdQYrb180r4PHvwfvPjZwz1EkrWEoldK2xT89teidKh/VOeaufOg/stN2PxK+/o6dVBlytn2trIMvL4Zty+EXh/tfK9ED1GameZeL8QaQUlp4hV177Lmb4GtvlcX7UGsYSqXkWgpk0tzBLYcqrNidCaM16WCREgrBpH2gcoz/YxKuGkZnEyz7c/ZS9j2t2ZM1t7wF7z6evctfUMmkfbx7ocoHvpB/L5VBogFDqRS/gFE1JnOXN1UeKmqy0/q6eGNq8IKXO2Dc8xm456L03uxu7lrGjpXwyyPhjjPhpV/3rTxLfm8f77byabuE+xDTgKFUil+T1Mxjs7+ZqqHnV8M46X/6dq26XAHDGQSx7T2793ouHdvT91++NT3b/5Gr/PMbY1cR8C6amPLUDf7p7z/R91pLiWjAUCrFr4Yxa/7gl0MVFvX0LVz2LDTu7p+3kFxL1KfWmVp2f/7HuwOGNwgkfZaKeeAy+PE+cJ/PXJxk0u7/nkvL0O5FrgFDqRTfgHH84JdDFRb2LCNfzIKDWXJ803/s23ak0tIiAoZ3teKmVZnHrZvgjbvs/aX32r4Rt20FlltvWp3//ADTUVJKpXibpGYeC40zhqQoqkh+qwQHlW+jrOd/Dlvfyv/4ju12JNNLt0LLusxzG9/I3Md95bOZ57e9C9MOSR+vfSn/c/ltGDWINGAoldLumocx/9tw2GVDVxZVnHg/1nTa/Uh4+y/+516+1T+9otauPwV29vdrf8S3prLiKdj3jPTxyqcyz29bblcs/tvXbV9Kwmfuh9vOoa1haJOUUinupoX9zoLK+qEriypOf16reZ+F6Uf4n0vkmP3vDgJL7ydns9ZbCzP7NVY+k3l+63J4+Td2h8BX/5C5Vplf/9kQN0lpwFCjizG5R5q4l3kotFe3Gnon3gAStmt99Wfoc0UVXPIwfLepcN6Uuaen78fzzPbu2J6eu7FjZXaT0rZ37GKGXhKGc+6wZfq0ax94rWEoNcAScfstcOn9cMux8P/vCav/mZmnpyPdrBGOZo/CUeXn8MvhW6vg/HuyFwnsCxHY9+P+59zLoYcrYeoh/vn8bHnT3nprF2BrGDM+lJ0++QN2sqFI5kKLWsNQaoAtux/uvdj+bHzdfuv7k2dvC3dzVM340nwAqYFX1VDa1+q4q+w6U161E+C0n9lmogvutTst5poh7rXF6TRf+XT2uabVdsa5l7vGNGYaiJOndWP/Ovj7SQOGGvnu/3x2Wldz5rG7OSrXOkVq5Ju4J5x3V/ZyMBKCgz8NFz5gd+sTCb5r4pY3bVOou4YRdlbBNUnY+k72Y8T10RyuyFwAs2ltsOcdABowlILM5R1qNGCMeuM9K9n6zfYPGjA2v2lrGal5PtWNMOdj6fN+cy+2eIbyurf39c7tGEQaMNTo9dh37cQsyFzYrdJnpzY1uqT2zUjxm4/jnl+Rz9a37fDalBkfgjkfzf8Yb1+Kexb7wq/Av+4N9twlpvMw1MjnHjPv9o+f2C05P/1g5kxhvzZlNboc8jm7P8qWt+0GWn7Lpje6ahjjZ9tZ3D1t6bTaibZWEeuA1/+UTt/j2MwahtukuTD7I3aLWTd3DaNlPdz3Wbvc+e5HFv+79YMGDDXyRWv8AwbAiqehfXtmwBBdbHDUq6yze7jnM+t4O2Iq0Q0HXQBL/gA7XAFj/Ox0M9SmN1zpc+yH/eT9M9MBPvJ92NMnmPg1kz76bfj8E8F+nxLRgKFGvrx7Jxh47/HMNmrRGoYKYMxU+NKLdm7FjKPtulD/cPZs32W/3Ds1pt5re56YHTAm7+f/GO8aVWDncAwy/Z+hRrYtbxdef+fdRz1NUlrDUAGNm2mbmEJhOPabsNvBUDcZTv1J7h3yUl9I9jwhM33s9Mz9493CPgGju6Xv5e4jrWGokWvrO/D7Uwrne+/xzHHvfpvzKFVItBYuXWSXKA+FYP0r/vlSAWO3gzPTq/LM64hE/dNTzzVItIahRq7Hvp1721W3ria7jk/KxL0Grkxq5Et9gOdqkqqZkM530AXp9MO/mPuafjUMgJ0riy9fP2gNQ41cG18Pnnfr2+n7E/cufVnU6OPXJLXnSTBhdvr4+P+ygy7qJtkFL3PJVcNY/jc48or+lbMIGjDUyGRMsNqFn0n7lLYsanQaMzXzePxs+PivMtMadoXz7qSgSJV/+psPDmrAKNgkJSKfFJH7RGS1iHSKyHIRuV5E6j35GkXkVhHZJiLtIvK4iGR1+YtIlYj8SEQ2Otd7XkSO8ckXEpErRWSViHSJyOsicqY3n1K+upog6axKG82x9PXUQ9JLNKRUjoH6HB2PShWjZkJ6rka0Hs79I1SP7du1cmd2Qr8AABg4SURBVDVJrXs5Pfl0EATpw/g6kACuAk4EfglcDjwmYntvRESAhc75K4AzgQpgkYh4wiy3AZ8HvgOcAmwEHhGRAz35rgG+B9wMnAS8ANwjIicX9yuqEcdvn2Q3YzJ3z6udkHl+1nw45htw5q12OKTbpL114UFVGqEQnLMAjvkmfP7J/vWN5WqSAnhzYd+vW2wxAuQ51Rjjrts/LSI7gN8DxwFPAqcBRwPzjTGLAETkeWAl8E3gK07aAcB5wCXGmN85aU8Dy4AfONdBRCZhA9UNxpgbneddJCKzgRuAv/X1F1bD3PO/gCevse29p/00+/y2d+H2MzK3yqyblNk5OOvDcOSX7f05H4P3n0yf0/4LVUqTP2B/+itXDQNyj8YaAAVrGJ5gkfKyc5saBnAasCEVLJzHNQMPAa6dRjgNiAF3ufLFgTuBE0Qk9Vc5AYgCCzzPuwDYT0QCrvqlhrXWzfDeExB3dj2LddlgEeuAJb+H7e9nP+bO87P3Va6dmHk85YPp+94lGrT/QpUjbw3jjF/amsvl/7Q15UHS12G1xzq3qSUV9wWW+uRbBkwXkTpXvpXGmA6ffFFgtitfN/CeTz4Az9rDasTpboNfHAYLPgFPfN+mrX7OBouUdYszH9PV7L/yZ+0Euyz1hL3gsC/A7q7tOMfPsp2RKRowVDny9sPt+wmYfzXssu+gNqEWHTBEZAq2+ehxY0zqf+w4YKdP9tSa0Y0B841z3TYZY7wb5Xrz+ZXvUhFZLCKLt27t4ygZNXCW3A4Lr7DbVebzzsPQ6bxVnr/ZSXs0M896T8BY9mf/a9VOtP0WX34JTvqf7PPzvw3ROtjjOP/dz5QaanUT4aALIVINJ1xvt5UdAkUNq3VqCg8CceBi9yn8d0H3hr5S58tijLkFuAVg3rx5OXZmV0Ni7cs2WIBdTvys//PPt/nNdK0iJdYJ7z6Smbbu5cxj94qgbt4mKa99z4B9TtUlQVR5O/1mOPV/h/R9GriGISJV2JFQewAnGGPcDcU78P/Wn6pZ7AyYb4frttEZfZUvnxpOnro+fX/ZA/55jIE7P5W9/tM7D8POVZlpm5bafg2AHStgzfP+1/SOkvKjwUINB0P8Pg0UMESkArgPOBQ42RjzL0+WZdh+B6+5wBpjTJsr30wR8S7WMxfoId1nsQyoBGb55AN4M0i5VZnxNiH56WrODgwA/7w5Oy0ZS6/2+fpd2edTCtUwlFKBBJm4FwLuAD4MnG6MecEn20Jgiogc63pcA3Cqc86drwI4y5UvApwDPGqMSe1u/jA2gJzveZ4LgKXGmMFdQEX13/b3s/fRTsSz87nnT7i5g427AzDVLPXWQ7mfWwOGUiURpA/j59gP+OuAdhE53HVundM0tRB4HlggIt/ANkFdie1z+GEqszHmNRG5C/iJU2tZiZ0EOBNXcDDGbBGRm4ArRaQVWIINKvPJHKarhovlPlNnOrZB/eTMtLbNha91+BfgmR/Z++tetp3jW5xKp4TtdpY7VqTza8BQqiSCNEmd5NxejQ0K7p/PARhjkthZ248BvwAewM4OP94Ys9ZzvYuB3wHXAn8FpgEnGmOWePJd7eT5KvAIcBRwtjEmz1dJVbb8Nnvxq02056hhpEza124803vd92DtS/SOkdj1ALuvgFt1I0qp/itYwzDGzAhyIWPMDuAS5ydfvk7ga85PvnwJbMAosE+iGhaSiew0b3BYvwSeuyn/dSbMyayVtG/J7OyefgRsfzfzMdqhrVRJ6H4YanAYn/Wf2lzzZJrWwG9PhE2u8RTHX51dO2ickdnE1L7NjpZKmToPQhUlKbJSKpMGDDU4fGsYroDxxt2Q6M48XzcJxs/JTGvc3e5vnNqdzCQy+z2qGrRGodQA0YChBodfDcPdJOW3LlTdLjBhz8y0xhn2tnZSOs0dMCQMx3w9fTyIewUoNdLpBkpqcBifGoa7ScpvjkbdJNtn4ZYKGHWT0n0VGQEjZDu+P3ErbH8PDrusX8VWSqVpwFCDI1+nd+dO/1FUdbtkj3gaM83e5pq9LU6lef88210qpfpEm6RU6SSTsOJpaF6ffa5je3ZaqoaRaz3/2okwybMwcdjp0HY3Sblp/4VSA0YDhiqdx78Lt58GPz8UOjzLfXnXhoJ0DWOdJ2A0TIWP/sB2bk/aG474sq1pfPJ36Tx1OQKG6FtaqYGiTVKqNFo3wz+dHfB62mDVszDXmZSfiEPLhuzHtG+ztRL3qrMfvwUOOCcz3wnX2R83b1NVimgNQ6mBol/HVGm8+KvMY/cs7pb16U7vusmZQ2I7tmcGjKnzgj3fzGP901PXVkqVnAYM1X9dLfDybZlp7hpFs2t1mLHTMiferX0Buprs/epGGLdHsOds2BUm75+ZNmlu9qgqpVTJaMBQ/ffGXdDtWYnWHTDc/Rdjp2d2WC//e/r+1EOK225yzkczj+ddMqjbVSo12mjAUP232Wc79xbXSKkmVw1jzDS73WTK+4vS96d8sLjnne0JGPufXdzjlVJF0YCh+q/VZ0nynDWMaZk1jFZXvmJXlZ12GOx1MoQi8LHrtP9CqQGmo6RU/7Vtyk5r2WC3WxXJ3JuicSZseNX/OsUOiQ2F4FN/gni3HYKrlBpQWsNQ/edXw4h32hnckBkwxu0BiZj/dfra/6DBQqlBoTUMld+OFbB5md1edeLe2cNek8nMRQTHTk83QbVssB/mqRpIqML2YdTkWNYjVyBRSpUFrWGo/N56CO66AB78Eix7IPt881pIOntz10zIHBbbsgHefzJ93Lg7hCNwxBf9n2vXA0pXbqVUyWkNQ+Xn7kjucg2dXf53ePcxGD87nTZxL6jfLX1832ehuyV9nAomY6bCJY/AO48ABmJdMOMou1ueUqpsacBQ+fkFjLatcPdF2RseTZgD9bumj93BAjJrH9MPtz9KqWFDA4bKzy9grH0hO1gATNgLdt0/Oz0l6CxupVRZ0j4MlZ9fwNi8zD/vhD1h6qFQUet/XgOGUsOaBgyVX9XY9P1UwNj4hn/eiXtCJAozP+R/XgOGUsOaBgyVn18NY5NPwAhH7T4WALPm+18r15LkSqlhQQOGyq9qTHoGdudOO8fCvfpsSqLHzrwG/4Bx0IXp3fKUUsOSBgyVX7jC9k0AYOD1O/3zuYfTuofappz2s5IXTSk1uDRgqMIm75e+v+QP6fvuPomPfDd9XwSi9enjihpddlypEUADhirMvVFRs2vl2SO/Ahf/Hc6/F/bzLC1+zu3p+/P/a2DLp5QaFDoPQxXmrmG47X6UHRnlZ9Z8OPsP0L4VDjx/4MqmlBo0GjBUYVPnQbgyc7Je7aTC26HOPW1gy6WUGlTaJKUKq6yH2R/OTJtxlPZLKDXKaMBQwcw9I/N496OGphxKqSGjAUMFs9eJmcczjh6aciilhowGDBVM1Rg45puAwNzT7WZKSqlRRTu9VXDzr4aj/x2iORYXVEqNaFrDUMXRYKHUqKUBQymlVCAaMJRSSgWiAUMppVQgGjCUUkoFoqOkVMnFEkkSSUNVRbhf1zHG0BlLkEga6quC7aVhjGHV9g564knCIUEEumIJOnsSdDg/3fEEu46pZtbEWqoqwlRGQkTCub87xRJJmjpibG/vpr07weaWLra0dLG+qZO3N7Vy+B7jmTmhlt3GVrOlpYs1Ozpo7YpzxKzxzNu9EQNUONfviSdp7ozR3NlDc2ec8bVRpo2roSeepDISIhTKPXu+oyfOttYeRKCuMkJHLAFAe3ecba3dtHTF2djcydxdG6itjFBVESIaDhONhAiFoDuWpKMnQWcsQUdPnK6Y/Xt09iRo6oixta2bZ9/dxgFTx/T+nQ6c1khnLNH7NwyHhPqqCHWVEcIhIZYwVFWEqK20aRPqKmmojjBnUj3hPL9LKSSShu3t3exsj5E0JuOcMbCjvQeAD0xpsH8DEUIihENCSECclQriiSStXXF6EkkaqirY3NJF0hgioRBV0RAT6yp785aKMYbueJKeRBIBVm/vYPr4GqLhEJWRUO/zJZIGY0ze9+dgEuP5Q48k8+bNM4sXLx6050u9CTp6ErR3x3l1bRPja6NMqKskkTQ01lZQUxFhTE3wjYS6YoneN1A8kaQjlqCj235QVISFikiIaDhERThU8D9oTzxJR0+ctu54bxnbuxO0dcfZ0NTJxuZOaqIRmjtjbGzupK6yggl1tvxV0TCdPXE6e5J0xOJ0Oh80kXCIhuoIK7e28+6WNra32Q+ulIqw/Q/aUFXBlla7FtXE+kr2nlzPXrvUUx0N09oVp6mjh2UbWli7s4O6ygrCIdjZEaMnngSgocp+twmFhHE1UUIhccofJ5YwJJKGhLG3fREJCZWREJVOAKmMhEga2NnRQ6vr9+kLERhfG+0NWLnUV0bYe9d64kljP8DiSXriSWKJpPMhn/ux5SYaCfW+druNqaIzZgNVMgk4b1PB/m0EcW7TH+Li/JNKk4zHCEljaO6M0Z+PLxEIOdfKd536ygjhsBAW+x6JRkIkjCEWN8QS9kO/rjLSG/DDTlB6e1MrcybVMamhkpZOG6ArwiF2dvSwvb2n9+/jFQ4JNdEwxkBbd/q9t8+uDdRGw9RURqipCCNiA0rSQNJ57yeN85OEObvU8YPTP9DHv428YoyZl5WuASPTfa+s4x/vb3O+jdg3lIhgjKGtO05FOERHT5ztbT109CToSSTZ2tpNMmnoiieIJYL9PQ+bOY7qaJiO7gTxpH3jtHTFae6M0doVozJi3xBNHTGqK8IkkoaehP8bLCUk9ptsNByiIhKyH9YivUGm0OOVUiPHQdPH8sAX+7aET66AoU1SHq+tbeL+JesH/HleXLkj7/muWPrDvTMW7Jtl0kB3PEl3PAndhfMPB9FIuimnWHtMrCXpNI1VR8PURMNUV0SIRoR3Nrexra2b7liSrngi7zdMEdvEURMNM3tSHZPqq5jUUEkiYXh51Q7iScOsibVsbO5iYn0lzZ0x1u7ooN35MuCu9IRDwpjqCsZWV1BbGWHtzg6aOmJEw6GCAT0aCTGhNgrQ++UlGgmxsbkrI99eu9QjAj2JZG8tJWmcv4Pzt/DeNlRV8OaGFiY1VBINh3hvaxsHThtLdUW49+9XFQmRMNDaFaO1K44xEAkLXbEE7d2J3t97+ebWol+rvmqsqWBcbbS3yc9NROiOJdjkNDElDSR7v4XnvuYuDZVUOV/SNrd0Bf4SWKxIyNZEuvvw3g4i2cfadj4aMDy8baH9te9uDbaZqjvOBs9/7GKFBGqiEaqjYUICsYQh5rSD9iSSBavnIaG3rbkmGqa2MkJtNEJtZZiJ9ZVMbayhoydOfVUFu42tprMnzra2Hra2dtOTSFKT+pCJhnvv98Rt+/4uY6rYd7cGdh1TzZjqCtqdWpgxhkkNVbR2xWjqiJFIGmqiYZZvauWdzW0YbP9EfWWEGRNqmdJYzftb2phYX8nu42uorrBV850dPURCIWLJZG/bdE00TF1lhGjENselmgKKbW82xhBP2ubE7liiN+gaY2isidJQXdGn9nhjDCJCc0eMlq4YY2sqqKuMZJUvVcvf0NzF+1vaej/AU80fUaeJzO+x5SiZNLy/tY3W7jj1lZGMwBRyld8YMBjnNpVmMM45XOexh73nAcZUV/gGiiCM0wyVMAbBtiSEQkJ3PEFlJN331hWz/TvRSIikSb9HwiEhGrFNwRWhEC1dMeJJp2k0aVi3s6M3oNompggiEBZhXG2U8XXR3vf2ppYuJtRVEkskqYmGiSUMHT1xBKGuKtLbLNqeakruidPRnXCa1Mjsm3H6Z8Iigfv9ilH2TVIiMg24CfgotgnzceDfjTFr8j6QvjVJLVmzkxVb2512wHT7oMG2o6c6+SbUVVJdEaYiHGJSQyUVTmdVvo7e1H+ktu54bydsTaW9hjH2P8CY6grqqiJ0x2wT0vjaStq741RHwxmdYX4SSWO/USZsu3cskSSeML3BodDjlVIKhmmTlIjUAE9iG1guwn7JuBZYJCL7G2PaS/2cB09v5ODpjaW+LGA7bOfsUl84I3YUTEo0Eg30mHBI7Lc5+jc6SSml/JR1wAA+D+wB7GWMeQ9ARN4A3gUuA348hGVTSqlRpTwG9+Z2GvBCKlgAGGNWAv8ATh+yUiml1ChU7gFjX2CpT/oyYO4gl0UppUa1cg8Y44CdPuk7gIHpaFBKKeWr3AMGpEfcueUc6iMil4rIYhFZvHXr1gEsllJKjS7lHjB2YmsZXo341zwwxtxijJlnjJk3ceLEAS2cUkqNJuUeMJZh+zG85gJvDnJZlFJqVCv3YbULgRtFZA9jzAoAEZkBHAX8Z6EHv/LKK9tEZPWAlnD0mABsG+pCqD7R1254GsrXbXe/xLKe6S0itcDrQCfwX9j+jGuAemB/Y0zbEBZvVBGRxX4zP1X509dueCrH162sm6ScmdzzgXeAPwB3ACuB+RoslFJqcJV7kxTOmlFnDnU5lFJqtCvrGoYqK7cMdQFUn+lrNzyV3etW1n0YSimlyofWMJRSSgWiAUMppVQgGjBGMBH5pIjcJyKrRaRTRJaLyPUiUu/J1ygit4rINhFpF5HHRWQ/n+v9t4g8KiLbRcSIyGfyPPcUEfmtiGwSkW4RWSki1w/ArzniDNXrJiLjReR/RWSF87wrReRmEdElEwIq5WsnIvNE5BYReVtEOkRkjYjcISIzfZ43JCJXisgqEekSkddFpOSDhTRgjGxfBxLAVcCJwC+By4HHRCQEIHYLvoXO+SuwI9IqsJtUTfVc7wqgGvhLvid1Jle+BOwJfAX4GPA9IN7/X2lUGPTXzXW984AfASc5t58CFopu1RhUKV+7c7ErXfwU+3r8J3AwsNjZidTtGuz/sZudvC8A94jIySX97ezetvozEn+AiT5pn8ZOgJzvHJ/uHB/vyjMGuyLwTz2PDTm3s53HfCbH8z6MDRgVQ/03GI4/Q/G6YYO7AS71pH/BSd9rqP8uw+GnlK9djmvtDiSBH7jSJmF3Jf2+J+8TwBul/P20hjGCGWP8lut92bmd4tyeBmwwxixyPa4ZeAjPJlXGmGSh5xSRWcAJwM+MMbG+lHu0G4rXDUjtA9ziSW9ybvWzIoBSvnZ+1zLGrAa2uq4F9v9bFFjgyb4A2M+vCauv9E0w+hzr3L7l3ObbpGq6iNQVef2jnNtOEXnM6b/YKSK3i8j4PpRXWQP9ui0DngG+7bSd14nIocB3gL8bY97K/3CVR8leOxHZB1ujcL8e+2JrGO95si9zbku22ZwGjFFERKYAPwAeN8YsdpLzbVIFxW9UtZtz+1vski4nAd8C/g14JNWOq4IbjNfN2DaMk4Hl2G/ErcCLwAp0pYU+K+VrJyIR4FfYGsZtrlPjgCbnNfS7nt8WEX1S9kuDqNJwvrU8iO14vth9iiI3qSogFRCeMsZ8ybn/pIg0A3diq89/7+O1R51BfN0AfgMcju23eAvYB/g+cK+InBqwaUs5BuC1uxk4Evg3Y4w74AzEe8GXBoxRQESqsKMy9gCONcasc53eQe5NqiDHRlV5bHduH/OkP+rcHoQGjEAG83UTkX/Djoj6iDHmCSf5GRFZgX3tTsV++KkASv3aOUPSLwUuMsY86jm9A2gUEfHUMhpd50tCmwdGOBGpAO4DDgVONsb8y5Ml3yZVa0zxqwKn2k1zrTmj31IDGILXLTUH4GVP+kvO7T5FXm/UKvVrJyJXY4fUftUY8wefxy0DKoFZPteDEm42pwFjBHP6C+4APgycbox5wSfbQmCKiBzrelwD9hvlwj487QvAJuwYc7fUsfcDSXkM0eu2ybk91JN+mHO7vg/XHHVK/dqJyFeAa4GrjTE/y/G0DwM9wPme9AuApcaYlX35Xfzo4oMjmIj8EtsefR3Zk7bWGWPWOW/w54BpwDew1eErgf2BA4wxa13XOxaYCEwGfgb8HHgKwBhzryvfRcD/Ab8G7seO/78OeA07Fl3fdHkMxevmfGC9hW33vgZ4G9gb+C72w2huH2oto04pXzsRORf4I/AIti/JrcUY01tzEJEbgH/HThhcApwDXIYNWg+V7Bcciskt+jM4P8AqbNOQ38/3XPnGYUc17QA6sBN+DvC53lO5rueT90Ls0MFuYCP2g6puqP8mw+FnqF437AfYbdhNyrqc298AU4b6bzJcfkr52mG/dOW61lOevGHsrqSrnf9zbwCfLPXvpzUMpZRSgWgfhlJKqUA0YCillApEA4ZSSqlANGAopZQKRAOGUkqpQDRgKKWUCkQDhlJKqUA0YCillArk/wEa2AawI8B6ZQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(steel[:,0],steel[:,1])\n",
"plt.plot(al[:,0],al[:,1])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}