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": [
"# CompMech04-Linear Algebra Project\n",
"# Practical Linear Algebra for Finite Element Analysis\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this project we will perform a linear-elastic finite element analysis (FEA) on a support structure made of 11 beams that are riveted in 7 locations to create a truss as shown in the image below. \n",
"\n",
"![Mesh image of truss](../images/mesh.png)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The triangular truss shown above can be modeled using a [direct stiffness method [1]](https://en.wikipedia.org/wiki/Direct_stiffness_method), that is detailed in the [extra-FEA_material](./extra-FEA_material.ipynb) notebook. The end result of converting this structure to a FE model. Is that each joint, labeled $n~1-7$, short for _node 1-7_ can move in the x- and y-directions, but causes a force modeled with Hooke's law. Each beam labeled $el~1-11$, short for _element 1-11_, contributes to the stiffness of the structure. We have 14 equations where the sum of the components of forces = 0, represented by the equation\n",
"\n",
"$\\mathbf{F-Ku}=\\mathbf{0}$\n",
"\n",
"Where, $\\mathbf{F}$ are externally applied forces, $\\mathbf{u}$ are x- and y- displacements of nodes, and $\\mathbf{K}$ is the stiffness matrix given in `fea_arrays.npz` as `K`, shown below\n",
"\n",
"_note: the array shown is 1000x(`K`). You can use units of MPa (N/mm^2), N, and mm. The array `K` is in 1/mm_\n",
"\n",
"$\\mathbf{K}=EA*$\n",
"\n",
"$ \\left[ \\begin{array}{cccccccccccccc}\n",
" 4.2 & 1.4 & -0.8 & -1.4 & -3.3 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" 1.4 & 2.5 & -1.4 & -2.5 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" -0.8 & -1.4 & 5.0 & 0.0 & -0.8 & 1.4 & -3.3 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" -1.4 & -2.5 & 0.0 & 5.0 & 1.4 & -2.5 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" -3.3 & 0.0 & -0.8 & 1.4 & 8.3 & 0.0 & -0.8 & -1.4 & -3.3 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" 0.0 & 0.0 & 1.4 & -2.5 & 0.0 & 5.0 & -1.4 & -2.5 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" 0.0 & 0.0 & -3.3 & 0.0 & -0.8 & -1.4 & 8.3 & 0.0 & -0.8 & 1.4 & -3.3 & 0.0 & 0.0 & 0.0 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & -1.4 & -2.5 & 0.0 & 5.0 & 1.4 & -2.5 & 0.0 & 0.0 & 0.0 & 0.0 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & -3.3 & 0.0 & -0.8 & 1.4 & 8.3 & 0.0 & -0.8 & -1.4 & -3.3 & 0.0 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.4 & -2.5 & 0.0 & 5.0 & -1.4 & -2.5 & 0.0 & 0.0 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & -3.3 & 0.0 & -0.8 & -1.4 & 5.0 & 0.0 & -0.8 & 1.4 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & -1.4 & -2.5 & 0.0 & 5.0 & 1.4 & -2.5 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & -3.3 & 0.0 & -0.8 & 1.4 & 4.2 & -1.4 \\\\\n",
" 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 1.4 & -2.5 & -1.4 & 2.5 \\\\\n",
"\\end{array}\\right]~\\frac{1}{m}$"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rcParams\n",
"# I wanted to use prettyprint but it said the module didn't exist for some reason\n",
"# from pretty_print import array_print as AP\n",
"import random\n",
"fea_arrays = np.load('./fea_arrays.npz')\n",
"K=fea_arrays['K']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this project we are solving the problem, $\\mathbf{F}=\\mathbf{Ku}$, where $\\mathbf{F}$ is measured in Newtons, $\\mathbf{K}$ `=E*A*K` is the stiffness in N/mm, `E` is Young's modulus measured in MPa (N/mm^2), and `A` is the cross-sectional area of the beam measured in mm^2. \n",
"\n",
"There are three constraints on the motion of the joints:\n",
"\n",
"i. node 1 displacement in the x-direction is 0 = `u[0]`\n",
"\n",
"ii. node 1 displacement in the y-direction is 0 = `u[1]`\n",
"\n",
"iii. node 7 displacement in the y-direction is 0 = `u[13]`\n",
"\n",
"We can satisfy these constraints by leaving out the first, second, and last rows and columns from our linear algebra description. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. Calculate the condition of `K` and the condition of `K[2:13,2:13]`. \n",
"\n",
"a. What error would you expect when you solve for `u` in `K*u = F`? \n",
"\n",
"b. Why is the condition of `K` so large?\n",
"\n",
"c. What error would you expect when you solve for `u[2:13]` in `K[2:13,2:13]*u=F[2:13]`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A."
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The accuracy of K is 2.220446049250313e-16, so t = 16.\n",
"The condition of K is 1.4577532625238035e+17, so c = 17.\n",
"Finally, the expected error of K is 10.\n"
]
}
],
"source": [
"#To find the error of K, we must find its accuracy and its condition\n",
"print(\"The accuracy of K is {}, so t = 16.\".format(np.finfo(float).eps))\n",
"print(\"The condition of K is {}, so c = 17.\".format(np.linalg.cond(K)))\n",
"print(\"Finally, the expected error of K is {}.\".format(10**(17-16)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### B."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The condition is so large because K's rows are almost dependent, and thus it is ill conditioned."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### C."
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The condition of K[2:13,2:13] is 52.23542514351006.\n",
"The error of K[2:13,2:13] is 1e-15\n"
]
}
],
"source": [
"print(\"The condition of K[2:13,2:13] is {}.\".format(np.linalg.cond(K[2:13,2:13])))\n",
"print(\"The error of K[2:13,2:13] is {}\".format(10**(1-16)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. Apply a 100-N downward force to the central top node (n 4)\n",
"\n",
"a. Create the LU matrix for K[2:13,2:13]\n",
"\n",
"b. Use cross-sectional area of $0.1~mm^2$ and steel and almuminum moduli, $E=200~GPa~and~E=70~GPa,$ respectively. Solve the forward and backward substitution methods for \n",
"\n",
"* $\\mathbf{Ly}=\\mathbf{F}\\frac{1}{EA}$\n",
"\n",
"* $\\mathbf{Uu}=\\mathbf{y}$\n",
"\n",
"_your array `F` is zeros, except for `F[5]=-100`, to create a -100 N load at node 4._\n",
"\n",
"c. Plug in the values for $\\mathbf{u}$ into the full equation, $\\mathbf{Ku}=\\mathbf{F}$, to solve for the reaction forces\n",
"\n",
"d. Create a plot of the undeformed and deformed structure with the displacements and forces plotted as vectors (via `quiver`). Your result for aluminum should match the following result from [extra-FEA_material](./extra-FEA_material.ipynb). _note: The scale factor is applied to displacements $\\mathbf{u}$, not forces._\n",
"\n",
"![Deformed structure with loads applied](../images/deformed_truss.png)"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [],
"source": [
"# Taken from notebook 2, Gauss_Elimination\n",
"def solveLU(L,U,b):\n",
" '''solveLU: solve for x when LUx = b\n",
" x = solveLU(L,U,b): solves for x given the lower and upper \n",
" triangular matrix storage\n",
" uses forward substitution for \n",
" 1. Ly = b\n",
" then backward substitution for\n",
" 2. Ux = y\n",
" \n",
" Arguments:\n",
" ----------\n",
" L = Lower triangular matrix\n",
" U = Upper triangular matrix\n",
" b = output vector\n",
" \n",
" returns:\n",
" ---------\n",
" x = solution of LUx=b '''\n",
" n=len(b)\n",
" x=np.zeros(n)\n",
" y=np.zeros(n)\n",
" \n",
" # forward substitution\n",
" for k in range(0,n):\n",
" y[k] = b[k] - L[k,0:k]@y[0:k]\n",
" # backward substitution\n",
" for k in range(n-1,-1,-1):\n",
" x[k] = (y[k] - U[k,k+1:n]@x[k+1:n])/U[k,k]\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A."
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"K's L martix is:\n",
" [[ 1. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0. 1. 0. 0. 0. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [-0.16666667 0.28867513 1. 0. 0. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0.28867513 -0.5 0.12371791 1. 0. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [-0.66666667 0. -0.17857143 -0.09622504 1. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0. 0. -0.18557687 -0.72222222 -0.08247861 1.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0. 0. -0.42857143 0.12830006 -0.23809524 0.33425542\n",
" 1. 0. 0. 0. 0. ]\n",
" [ 0. 0. 0. 0. 0.24743583 -0.78947368\n",
" 0.18426072 1. 0. 0. 0. ]\n",
" [ 0. 0. 0. 0. -0.57142857 -0.09116057\n",
" -0.24822695 -0.21650635 1. 0. 0. ]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" -0.23339692 -0.875 -0.32768529 1. 0. ]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" -0.53900709 0.24056261 -0.59459459 0.28867513 1. ]]\n",
"\n",
"K's U matrix is:\n",
" [[ 0.005 0. -0.00083333 0.00144338 -0.00333333 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0. 0.005 0.00144338 -0.0025 0. 0.\n",
" 0. 0. 0. 0. 0. ]\n",
" [ 0. 0. 0.00777778 0.00096225 -0.00138889 -0.00144338\n",
" -0.00333333 0. 0. 0. 0. ]\n",
" [ 0. 0. 0. 0.00321429 -0.00030929 -0.00232143\n",
" 0.00041239 0. 0. 0. 0. ]\n",
" [ 0. 0. 0. 0. 0.00583333 -0.00048113\n",
" -0.00138889 0.00144338 -0.00333333 0. 0. ]\n",
" [ 0. 0. 0. 0. 0. 0.00301587\n",
" 0.00100807 -0.00238095 -0.00027493 0. 0. ]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" 0.00618421 0.00113951 -0.00153509 -0.00144338 -0.00333333]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" 0. 0.00255319 -0.00055278 -0.00223404 0.0006142 ]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" 0. 0. 0.00256944 -0.00084197 -0.00152778]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0.00243243 0.00070218]\n",
" [ 0. 0. 0. 0. 0. 0.\n",
" 0. 0. 0. 0. 0.00111111]]\n",
"\n",
"The P matrix obtained from the lu function is:\n",
" [[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
" [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
" [0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
" [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
" [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
" [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
" [0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n",
" [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
" [0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
" [0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n",
" [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]\n",
"Since there was no pivoting done, the P matrix can be ignored.\n"
]
}
],
"source": [
"from scipy.linalg import lu\n",
"P_K, L_K, U_K = lu(K[2:13,2:13])\n",
"print(\"K's L martix is:\\n\",L_K)\n",
"print(\"\\nK's U matrix is:\\n\",U_K)\n",
"print(\"\\nThe P matrix obtained from the lu function is:\\n\",P_K)\n",
"print(\"Since there was no pivoting done, the P matrix can be ignored.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### B."
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The u vector for steel is:\n",
" [ 1.94855716 -2.125 0.4330127 -4. 1.08253175 -5.375\n",
" 1.73205081 -4. 0.21650635 -2.125 2.16506351]\n",
"\n",
"The u vector for aluminum is:\n",
" [ 5.56730617 -6.07142857 1.23717915 -11.42857143 3.09294787\n",
" -15.35714286 4.94871659 -11.42857143 0.61858957 -6.07142857\n",
" 6.18589574]\n"
]
}
],
"source": [
"A = 0.1 #mm^2\n",
"E_st = 200e3 #MPa\n",
"E_al = 70e3 #MPa\n",
"\n",
"F = np.zeros([11,1])\n",
"F[5] = -100\n",
"\n",
"u_st = solveLU(L_K,U_K,(F/(E_st*A)))\n",
"u_al = solveLU(L_K,U_K,(F/(E_al*A)))\n",
"\n",
"print(\"The u vector for steel is:\\n\",u_st)\n",
"print(\"\\nThe u vector for aluminum is:\\n\",u_al)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### C."
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The reaction forces of steel are:\n",
" [ 0.00000000e+00 4.33680869e-19 8.67361738e-19 -1.08420217e-18\n",
" -5.42101086e-19 -5.00000000e-03 0.00000000e+00 0.00000000e+00\n",
" 1.08420217e-19 0.00000000e+00 0.00000000e+00]\n",
"\n",
"The reaction forces of aluminum are:\n",
" [ 3.46944695e-18 2.16840434e-18 -1.73472348e-18 -2.16840434e-18\n",
" -2.16840434e-18 -1.42857143e-02 3.46944695e-18 -1.73472348e-18\n",
" -8.67361738e-19 -6.93889390e-18 3.46944695e-18]\n"
]
}
],
"source": [
"F_st = K[2:13,2:13]@u_st\n",
"F_al = K[2:13,2:13]@u_al\n",
"print(\"The reaction forces of steel are:\\n\",F_st)\n",
"print(\"\\nThe reaction forces of aluminum are:\\n\",F_al)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### D."
]
},
{
"cell_type": "code",
"execution_count": 351,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAEWCAYAAABoup70AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydeZyN5f//n+9zzqzMWIexD2UIkSUlIkWppEULWpCtJKJ+lUr1+VRKq5AK2Sot0iLfSin5aLVkKZohtMhajGXMjLO8f3/c9+EYs5tzzizX8/G4Huc+133d1/W677O8r/V9iapiMBgMBoOh/OAItwCDwWAwGAyhxRh/g8FgMBjKGcb4GwwGg8FQzjDG32AwGAyGcoYx/gaDwWAwlDOM8TcYDAaDoZxhjL8hJIjI7yLSLYj5dxSRzSJyWESuClY5RUVEHhCRGUHKO0FEUkUkOkj5DxCRb4KRd6gRkedF5LZw6zAYwo0x/uUYEekkIt+JyAER2Sci34rI2fa5kP3hi8hsETkqIofs8IuIPCkilQqRzX+BKapaUVU/DJbWgiAiF4jI9sA4VR2vqoODVOT9wCxVzQxS/kFHRJ4Wkb9E5KCI/CEiD+aTvp+dLl1EPhSRqgUs6hngQRGJPHXVBkPpxRj/coqIxAOLgMlAVaAO8B8gK0ySnlbVOCABGAicC3wrIhUKeH0DYENRChYRV1GuKwmISBTQH3gj3FpOkdeApqoaD5wH9BORa3JKKCLNgVeBm4GawBFgakEKUdWdQArQqzhEGwylFWP8yy/JAKr6lqp6VTVDVT9X1fUicgbwCtDB7kZPA8vQiMizIvKniOwWkVdEJMafoYj0FJG1IpJm9yi0LKwoVc1U1ZVYf87VsCoC/vxvFZFfRWS/iCwWkQZ2/BagEfCxrTdKRGqLyEK7R+M3ERkSkM+jIvKeiLwhIgeBAXbcfDvukIj8LCLJIjJWRPbYrdKLA/IYaGs5JCJbRWSYHV8B+BSobWs5bGt5VETeCLi+l4hssJ/V1/Yz95/7XUTuEZH1dq/MO3l06Z8DpKnq9oDrB9iaDonINhG5MeDckADdG0WkjR1/v4hsCYi/OrfPSESaisgX9rNNFZHr8/5U80dVU1U1PSDKB5yeS/IbgY9V9X+qehgYB1wjInEiUlVEtovIFbbWivbnf0vA9V8Dl5+qZoOhNGOMf/llE+AVkTkicqmIVPGfUNVfgduA7+1u9Mr2qQlYlYazsP6Y6wAPA9hGZCYwDMtovwostFumhUZVDwFfAOfb+V8FPABcg9U7sBx4y057GvAncIWtN8s+tx2oDVwLjBeRiwKKuBJ4D6gMvGnHXQG8DlQB1gCLsX4jdbCGFV4NuH4P0BOIx6qgvCAibWwDdimww9ZSUVV3BN6biCTb+u6y7+UTrIpLYFf09UAPoCHQEhiQy6M6E0gNyLsCMAm41O5JOQ9Ya5+7DngUuMXW3Qv41750C9azroTVA/SGiNTKXpid/xfAPKAG0BeYarfG/ZWItNxCLvdAwLWHsT63CnYZOdEcWOd/o6pbgKNAsqruA24FpotIDeAFYK2qzg24/legVV5aDIayjjH+5RRVPQh0AhSYDuy1W8o1c0ovIgIMAUar6j7bOI8H+thJhgCvquqPdk/CHKwhhHNPQeYOrCEJsCoVT6rqr6rqscs+y9/6z6a1nn1v99k9CWuBGVjdxH6+V9UPVdWnqhl23HJVXWznPx/LMD+lqm7gbSBJRCoDqOr/qeoWtVgGfI5dUSkANwD/p6pf2Hk/C8RgGWo/k1R1h23MPsaqcOVEZeBQtjgf0EJEYlR1p6r6h0MGYw2vrLR1/6aqf9j3M98uz6eq7wCbgfY5lNcT+F1VZ6mqR1V/AhZgVbBQ1adUtXJuIa+HoqpPAXFAG6xK2IFcklbM4dwB+1pU9XOsz+9LrBb+sGxpD2E9N4Oh3GKMfznGNqQDVLUu0AKrlTwxl+QJQCywOqAV95kdD9aY+93ZWnn17DyLSh1gX0D+LwbkvQ8QO012agP+CoqfP7Kl/SuH63YHHGcA/6iqN+A9WIYHu7fkB7vrOw24DKhewPuqbesBQFV9tp5AfbsCjo/4y82B/dhGz84rHatycRuwU0T+T0Sa2qfrYbXwT0JEbpHjQzZpWN+HnO6nAXBOts/5RiAx17stBHalZA3W8/5PLskOY/VcBBLPiZWgaVj3MEtV/82WNg7IsxfCYCjrGONvAEBVU4DZWH+YYPUIBPIP1h9y84CWXCVV9Rulv4AnsrX0YlX1raLoEZGKQDes7n1//sOy5R+jqt/lcPkOoKqIxAXE1Qf+DrzlouiytUVhtXafBWraLdpPsCojBcl7B5YR9ecnWIb571yvyJ312PM3/Ni9F92BWliT26bbp/4CTsuegd17Mh0YAVSz7+cXjt9PIH8By7J9DhVV9XY7rwcC5jqcFApxX66ctNpsIKDbXkQaAVFYQ1mIiBNriGYucLuIZJ87cAYBwwYGQ3nEGP9yij1p624RqWu/r4c1fvuDnWQ3UNc/Dm23TqdjjW3XsK+pIyKX2OmnA7eJyDliUUFELs9mgAuiK0pE2gIfYrVqZ9mnXgHGBowtV7LHsE9CVf8CvgOeFJFosSYeDuL42P6pEollbPYCHhG5FLg44PxuoJrkvlTxXeByEblIRCKAu7GGSHKqyOTHCqCyiNQBEJGaYk0mrGDneRjw917MAO4Rkbb2Z3S6bfgrYFVY9tp5DOR4JTA7i4BkEblZRCLscLbYExbtJY0Vcws5ZSgiDhEZJiJVbF3tgTuwuu1z4k3gChE5377P/wLvB/T0PGC/3opVQZtrVwj8dMGalGkwlFuM8S+/HMKaKf6jiKRjGf1fsAwRwFdYLaxdIvKPHXcf8Bvwg1iz5JcATQBUdRXWuP8ULKP9G7lPUsuJe0XkEFZ3/lxgNXCefwa4qn6ANeHwbbvsX7Am1uVGXyAJq5X9AfCIqn5RCD25YhuZkVhGfD/QD1gYcD4Fa0LfVrtrvHa261OBm7CWWf6DNdHwClU9WgQtR7F6bG6yoxxYn+EOrGfZBRhup50PPIE1ke4QVgWrqqpuBJ4DvsequJwJfJvHvV+MNddjB9bwxASsytCpcDXWkMQhrGWLk+0AgN1zcL6tYQPWsMabWBMv4/z3aFccxwC32EM2E7AqNvfb52sBzex7NxjKLaJa5N5Pg8FQAhAR/+qH1gGTFw05ICLPAVtUtUB+AQyGsoox/gaDwWAwlDNMt7/BYDAYDOUMY/wNBoPBYChnGONvMBgMBkM5o9RuaFJQqlevrklJSeGWYTAYDKWK1atX/6OqCfmnNJRGyrzxT0pKYtWqVeGWYTAYDKUKEfkj/1SG0orp9jcYDAaDoZxhjL/BYDAYDOUMY/wNBoPBYChnGONvMBgMBkM5wxh/g8FgMBjKGcb4GwwGg8FQzjDG32AwGAyGcoYx/gaDwWAwlDOM8TcYDAaDoZxhjL/BYDAYDOWMsBt/EXGKyBoRWWS/ryoiX4jIZvu1SkDasSLym4ikisgl4VNtMBgMBkPpJezGHxgF/Brw/n7gS1VtDHxpv0dEmgF9gOZAD2CqiDhDrNVgMBgMhlJPWI2/iNQFLgdmBERfCcyxj+cAVwXEv62qWaq6DfgNaB8qrQaDwWAwlBXC3fKfCNwL+ALiaqrqTgD7tYYdXwf4KyDddjvuJERkqIisEpFVe/fuLX7VBoPBYDCUYsJm/EWkJ7BHVVcX9JIc4jSnhKo6TVXbqWq7hASzHbXBYDAYDIG4wlh2R6CXiFwGRAPxIvIGsFtEaqnqThGpBeyx028H6gVcXxfYEVLFBoPBYDCUAcLW8lfVsapaV1WTsCbyfaWqNwELgf52sv7AR/bxQqCPiESJSEOgMbAixLINBoPBYCj1hLPlnxtPAe+KyCDgT+A6AFXdICLvAhsBD3CHqnrDJ9NgMBgMhtKJqOY4bF5maNeuna5atSrcMgwGg6FUISKrVbVduHUYgkO4Z/sbDAaDwWAIMcb4GwwGg8FQzjDG32AwGAyGcoYx/gaDwWAwlDOM8TcYDAaDoZxhjL/BYDAYDOUMY/wNBoPBYChnGONvMBgMBkM5wxh/g8FgMBjKGcb4GwwGg8FQzjDG32AwGAyGcoYx/gaDwWAwlDOM8TcYDAaDoZxhjL/BYDAYDOUMY/wNBoPBYChnGONvMBgMBkM5wxh/g8FgMBjKGcb4GwwGg8FQzjDG32AwGAyGcoYx/gaDwWAwlDPCZvxFJFpEVojIOhHZICL/seOrisgXIrLZfq0ScM1YEflNRFJF5JJwaTcYDAaDoTQTzpZ/FnChqrYCzgJ6iMi5wP3Al6raGPjSfo+INAP6AM2BHsBUEXGGRbnBYDAYDKWYsBl/tThsv42wgwJXAnPs+DnAVfbxlcDbqpqlqtuA34D2IZRsMBgMBkOZIKxj/iLiFJG1wB7gC1X9EaipqjsB7NcadvI6wF8Bl2+343LKd6iIrBKRVXv37g3eDRgMBoPBUAoJq/FXVa+qngXUBdqLSIs8kktOWeSS7zRVbaeq7RISEopDqsFgMBgMZYYSMdtfVdOAr7HG8neLSC0A+3WPnWw7UC/gsrrAjhDKNBgMBoOhTBDO2f4JIlLZPo4BugEpwEKgv52sP/CRfbwQ6CMiUSLSEGgMrAitaoPBYDAYSj+uMJZdC5hjz9h3AO+q6iIR+R54V0QGAX8C1wGo6gYReRfYCHiAO1TVGybtBoPBYDCUWkQ1x2HzMkO7du101apV4ZZhMBgMpQoRWa2q7cKtwxAcSsSYv8FgMBgMhtBhjL/BYDAYDOUMY/wNBoPBYChnGONvyJdu3UDkeOjWLdyKSjfNm5/4PJs3D7ei0s3w4eByWc/S5bLeGwyGvAnnbH9DKaBbN/jyS7DcLPwHuJEvv1SSkw8ybNg2AJxmh4UC89RTyezeHQOsxlrMcg0bNyqJiRncf/+mMKsrfbz3Xh2+/bY6kAb0wOuN4eWXrXNTp4ZTmcFQsjGz/Q15Isf8KjYCtoVRicGQH22wKlVWhdTjCa+a0o6Z7V+2MS1/QwH4xw7wInAmLZlBT9zOnRz2RnDrcBeeiIhjwRtw7HG5UNM1cIzRo1thPUW/76p6wFxAeeGFdWHTVRIRrxeX243L47Fe7eC0X9f94GbDT3WI4XmSOMi3/MQyfgDOxWs8gBgMeWJa/oY8sVr+I4GpVOBSDrOo8Jm4XBATY4Xo6JyP83tf2HORkYHdFiUGkUNANazpNjWw9qpaAZxNif0pqsLRo5CZCRkZx0Ne74sjbSGb7ulATc4hne9xOsW0/E8R0/Iv25iWvyFPzjprDWvXvgwM5QHiwTb+a2lGf+YRQwbxrgw+X1jAP/6czh08mPP5rKyiCxcJfgUj+3F0NDjynkPrdF6P1+sGHgUuAs4H+tGs2eaC3ZfPZz2XghrW4jLKp1IzCXw+2Z9hXBzUqFGkZ++JiKBNp+5MJ4NzgArAQ/zIWBYwdOi1RddrMJQDjPE35Mnu3ZcDkZzOzdzNBczhbLqzklZsJJ1Y1tMKPPDkWhg7tpgLz27oCmrECnJu/37YsSPncz5f0TVHReVquPZnZfGBdxUZuMjgN67mOeKBOfzGme5k6NU0/3s4lQqRw5G3Qa1WrXgrRTEx1vMIUg/MJRddxGEyaA/soiafcgljeJ2ZDOPpp3sAFYNSrsFQFjDd/oZcmTJlCnfeeSfdu3fnzbQIolYuJ5lNnEMtPgRWchrn8Btg/ednZIRXb7GgCm538Vc2MjL44euvifT5qB0dTcVMBxU5AsBRYAvQ9KyzkNjY4PROxMQcXw9XBkhLS6NKlSp8B5wL9OY9vqUTm2jAd2Qx/aqreP+DD8Its1Rjuv3LOKpapkPbtm3VUHjcbrdWqFBBnU6npr35piqoPvecjhypCo/rb6A+0DasVMtiqk6eHG7VJZcpU6YooC6XS/XRR9WDqM9+hptxKqBdunQJt8xSQ8OGDbWl/fwOVks69h0cxfOqoL1At27dGm6ZpRpglZaA/3ATghPCLiDYwRj/ojFixAgF9I5Bg1QbNVI94wzVo0dVVfXQIdVORKgPdAPVjv3xVqgQZtElGKfTMvCzZ89WvfpqVdAfaaffcY4q6M2ggO7fvz/cUks8a9asUUB/to2/d8mXGhNjfQerxR/VtHr1dAvoea1bh1tqqcYY/7IdjIc/w0mkpaXx8ssvExMTw4sNGsDWrTB5MkREAFCxIoz9vw/5GTiDf7mQJQCkp8Mbb4RReAll4MCBeL1e4uPj6X/zzfDJJwD05U2u5T28OJhqTxRs3bp1OKWWCrp06cIFQHNAmjfHcdGFXHedda7+aRFUmjOHRsCFa9bw9ddfh02nwVCiCXftI9jBtPwLz2WXXaaAvvrgg6oxMarXXptjuvMrV1Yf6F/OGBVRBdVKlUIstoTjdrsVu1W/evVq1dGj1d9VksxGBdWZ9FcFnRiYzpAjc+bMUUC3+rub1qxRVdXdu623w4ZZ6f7t1k2PgJ5bq1YY1ZZuMC3/Mh1My99wAqmpqXzyySfUqFGDoZtsd7PPPZdj2rlr1vAdUNebwcEZb9C2LRw4AGae1XE6duwIQFJSEm2SkmDSJGviHdCbBQAMZRoZEsMIESoDXbt2DZPaks/gwYO5GkgCOOccOOsswFoteNZZcMklVrqqM2eCw8HdO3cyY8aMMKk1GEow4a59BDuYln/haNmypQL63eOPq4LqY4/lmf7i5GT1gv7jdKqq6vffq957byiUlnx27tx5rNW/f/9+1e7drWd68cWqoIeIVvApqI52TlQFXWKnnzVrVrjllzhGjRqlgO7yt/qzTehbskQ1I+P4+4P3368KekVMjHq93hCrLf1gWv5lOoRdQLCDMf4F57PPPlNAWzVrptqsmTXRL/DfNAcyMjL0E/vPeOfDD4dIaemgdu3ax2fxr1lj/dxq1VJ99FH1d/37jT+oap066gNt7V8VYDiG2+1WEdEh/ofVvXv+F2Vm6q64ON0Iet/o0cEXWcYwxr9sB9PtbzjGwIEDAfisZ0/YuBEmTrTWiudBdHQ071x+OV4g9r//PTUHOWWIb775hh07diAiLFmyhGMz0rLNiIyW40579kychwDvieDxeBg1alQIFZdsLrnkElSVZ0QsZ0UFmVkaFUXVuXM5A/C++CKHDx8Ouk6DobRgjL8BgMmTJ7Nz506u79yZxFdegUsvhZ49C3Tt7EWLmA/EAxv69QuqztJCjx49ALjzzjtxvf02/PYbtG8PF154QrqGEX8fO37ky85w7rk0UuUWrM/EYxzUk5aWxldffcVYoJIqXHONNchfACKuuorNycmM8/kYdf31wRVqMJQiwmb8RaSeiCwVkV9FZIOIjLLjq4rIFyKy2X6tEnDNWBH5TURSReSScGkva3g8HsaOHYvT6WROrVqWV7oXXyyUN7g/HnoIN9DonXfK/V6qL730Eunp6bhcLl584QUYPtx6lgsWnJT22vjFx44//RRYsAAVBy+JoKp069YthMpLJm3atMEBjBOxJkvOmlWo60/7+GOigC6ffsq2bWZbaoMBwtvy9wB3q+oZWB467xCRZsD9wJeq2hj40n6Pfa4P1vLeHsBUETF7xRYDo0ePJj09nSd69iT6nXdgzBho3LhQedz32GPMdDqJAb7t0CE4QksJ/u76GTNmwN13w6FDcNNNULfuSWnvrTbz2PGOHTD789rM1luoqMqLwLJly0hLSwuV9BLH2rVr2bZtG08DMaowcKDlaKIQOJKT2Xr11dwCPH7ppUHRaTCUOsI96cAfsDY47w6kArXsuFpAqn08FhgbkH4x0CG/fM2Ev7zZv3+/Op1OrRAdrb7WrVXr1LFc+BWBTxcu1COgWaCanl7MSksHAwYMUEDj4+NV//1X1elUjY5Wzco6nujRR3UWN2tl/tWb4z84NuHPH1xkqcbEqAe0CmhSUlL4bijMxMfHaySo2+FQjYo68TkWhsOHdYfLpT+BLl2ypHhFllEwE/7KdCgRY/4ikgS0Bn4EaqrqTgD71T+4Vwdr83M/2+24nPIbKiKrRGTV3r17gyW7THDjjTfi9Xp5v2dPZM0aePbZQres/PS44gqmxsQQCXyVnFy8QksBHo+H2bNnA7B06VK44QbwemH8eIiMPCHtAF7nAJV5/eBVJ+dDJEyYgBOYD/z+++/89NNPwb+BEsbcuXM5ePAg0wCXzwejR5/0HAtMhQoc+e9/aQ187p98aTCUZ8Jd+8Dad3M1cI39Pi3b+f3260vATQHxrwG988vftPxzJyUlRQFNrl5dtVo11S5dVH2+U8pz25YtegDUA5rx99/FI7SU0L59e8XfUl+9WhVUa9c+OaG91G8kz5/U6gdVh8NOZy/9a+PvSShnREREaDyoV8TaOOJU1+r7fLq6UiX9B3TuCy8Uj8gyDKblX6ZDWFv+IhIBLADeVNX37ejdIlLLPl8L2GPHbwfqBVxeF9gRKq1lkevt2c+L27eHtDTLf/8pbvma1KgRUxMTcQLfl6PW/65du1ixYgUAa9asAf/M8jyWpL3IGJycPDnS3kIB5llL/94FDh48eKxXoTxw11134Xa7ecPhwKEK//mPtcTvVBCh/kcfUQnIuvdefGZZqqE8E65aByDAXGBitvhngPvt4/uBp+3j5sA6IApoCGwFnPmVY1r+OeN36HNNo0ZWU3PkyGLLOyMjQ/eCekF/W7q02PItyZzg0GfOHFVQPeecnBMHOPl5tsZTJ7X8K1cOSNuhgyrogHLk+Mfv0CcR1CeiWrVqseb/2RlnqBf0hZtvLtZ8yxqYln+ZDuErGDphuTJdD6y1w2VANaxZ/pvt16oB1zwIbMGaFHhpQcoxxj9natWqpYAebt1aNSFBtZi3kp149tmqoN/abn/LMsuXL1dARUTdWVmqcXFWheqvv3K+IMD4a/PmGhWlJxj/E+b3/f23qsOhB223vyOLsZJWUrnwwgsV0G8iI60HMnt2seaftWeP7gL9DvTQgQPFmndZwhj/sh3CLiDYwRj/k5k0aZIC+lSLFtZX4LXXglLOn/Z+659PnBiU/EsKFSpUOG6YR460nuktt+R+QTbjP3++nmD8zzsvW/qBA1VBJ/krGG53UO8nnOzfv18BbWx/d3KcM1EMfHT11aqgL5r/h1wxxr9sh7ALCHYwxv9E3G63VqhQQSs7HOqtUUO1fftTn0iVC/NuuUV9oD9BUPIvCUyZMkXxd8nntrQvO9mMv6pqfPzxqIEDs6V3u1VjYtQNWtU/tFBGadiwoQK6MTbWehgffxyUcrxut65wOnUn6La1a4NSRmnHGP+yHUrEUj9D6PA79HmnRQsce/fClCmnPpEqF/rOmcNmEc4CXunfPyhlhJsTHPpcf721tO/JJwu9JO2zz44fn3tutpMuFzz9NC6spX9l1fGP36HP2UDTI0fg9NML7GK6sDhcLg4+8QQ1gG8uvjgoZRgMJZpw1z6CHUzL/zh+hz6toqLU53KpDhoU9DK/e/559YGmlsHW/wkOffJa2pedHFr+qqo1a1pRuU0V0Lp11Qfarow6/omPj1dAd/i7Qb75Juhlvh0fr0dBfzRbKJ8EpuVfpoNp+Zcj+vXrh9fr5cMGDZCKFa0WapDpMHo0651OGgOPnH120MsLFSc59PEv7XvzzSLn+cMP1msOXoAt3noLgHcoe45//A59eohQ6+BBaNUKOnYMerlNFizgEHD0ttus6pjBUE4wxr+ckJqayqeffkr/SpVI2rQJ/vtfSEgISdnV7D7tIatWkZmZGZIyg01H2zAlJSXR5uefYcsWq7/+gguKnGdSEuS5KWKnTsh559EIGAh07dq1yGWVNAYPHgzAu5UqWRGnUIkqDGd168ac00+nU1YWS4YPD0mZBkNJwBj/csL1119PDDA1KgrOPBNuvz1kZdft1o1VsbHUBR5u2DBk5QaLExz6rF4Nd95pzZt4771Tzjtfmzd/PjgcvEjZcfwzatQo3G43AyIjiUtLg06doHnzkJXfd+lS1gJNXn0V3+HDISvXYAgnxviXAxYvXsz69et5NiGB2D17LE9+LldINZy5fj0+4N5du0hNTQ1p2cVN27ZtAejSpQuVH33U2rXvllugTo5bTRQvtWvDgAHEAZOBIUOGBL/MIOLxeJg8eTIAr8bEWB4mQ9Tq95NYty7/d8kl1FPlq+7dQ1q2wRAujPEvBwwcOJAk4LYDB6BvX+jSJeQaok87jdW1alEdmNu6dcjLLy6++eYbduzYgYiw5N13YepUiImBV18NnYhXX4WYGG4DKnk8jBw5MnRlFzMXX3wxqsoDcXFEHjgAl14K9euHXMf/W7iQtxwOOv3wA+nr14e8fIMh1BjjX8aZPHkyO3fu5I2EBBwREfDMM2HTcvaGDXiA+zMyeL8YusjDQY8ePQC48847cfXtay3te+qpou82VxSyLf2bMmUKHs/JewSUdNLS0qzJksBjqtbQyeuvh0VLZGQku+++Gzew8ZJLwqLBYAglxviXYTweD2PHjuVSh4OOe/fCuHGh6ZrOjSpV2HjWWcQBm264IXw6ishLL71Eeno6LpeLF2++Gb76ynqe4Wh5jxgB9epxAdBWlW7duoVewynSpk0bAKbXqoXj8GHo0weqVg2bnpFPPcWzMTGcvWsXu2bODJsOgyEUGONfhhk9ejRH09OZGRcHjRvDXXeFWxItv/+eo8BdPh/j7rsv3HIKxQkOffyVlxCPT5/AvHmAtetfaXP843fo4wAG7d9vbWU4fXpYNTkcDlq+9hopwNHhwyErK6x6DIZgYox/GSUtLY2XX36Z/+dykXjgAEyaBFFR4ZYF0dHsuPJKooE6Tz8dbjUFZuDAgXi9XuLj4+nv88HWrdChQ1jmTxzDXvrXELgVOOuss8KnpZB0sZ/b4iZNkMxMGDYMYmPDrAp69+3LhNq1qZ+VxdY77wy3HIMhaBjjX0bp168fNb1eHnE6oVcvsMeqSwJJ771HBjAI6F0KxldPcOjz5ZdWN38xLe07ZRYsQB0OJgJ//vFHqXD843foU0GEblu2QHQ0vPBCuGUd446PPuIDIHHGDNi+PdxyDIagYIx/GcTv0GdSVBSRUKL+WAFwucgcM4YI4NvtgtkAACAASURBVLrPPy/xjn9OcOgzZw4cPmwt7atdO8zKgMREZODAY0v/SoPjH79Dn9WtW4PHA/fdF/Klp3nRrl073j77bESVLddcE245BkNQKJDxF5EqItJcRBqJiKkwlHCuv/56zgd6Z2XBvfdCo0bhlnQSVZ55hkMOB9cBXVu0CLecXDnBoc+SJfDyy9bSvmnTwqwsgFdegdhYhgGRJdzxj9+hT93oaJqsXQtxcfDww+GWdRIvLlzI08BpK1fi++qrcMsxGIqdXA25iFQSkQdE5GfgB+BVrLlFf4jIfBEp+U2McsjixYvZsH4906OirPXS998fbkk543AQNXEiTuCRLVtKrOMfv0Ofrl27UnnoUGtp34QJ1gS1koLLBc88c2zpX0l1/BPo0Gdtq1bg88H48UHbVfJUSExM5K9+/dgG7L7hBquHwmAoS+S24w/wBXAzUDmHc22BicCgcO9MlF8ob7v61apVS4f7d4x7771wy8mX/VFR6gVtFR8fbiknsXz5cgVURNT9ww/WM61b99QzzmVXv1OmXj31gZ4NOmLEiOLLt5jo2rWrAtouIUFVRDUhIdyS8iQrK0uvc7lUQTOffjrcckIOZle/Mh1yrXKrandVfV1VT1o/pKqrVfUuVX0tCPURQxGZPHky7p07ecrlgm7doBSMV1Z+/XUcwNSDB3n//ffDLecETnDo499xJ5xL+/IjYNe/l156qUQ5/gl06PNtUpJV9XnxxfCKyofIyEhaPvwwiwHPAw/Anj3hlmQwFBsFHfNvKSK9ROQafwi2sHLFuHGnnIXfoc94ESqCtbRP5JTzDTrXXUda5cp0AMaXIMc/Jzj0adny+NK+zp3DLS13OnZEOna0lv5pyXL843foc0Pz5kSuXAn16lmupks4Dzz4II9UqkSkx8OhESNOPcOPPz71PAyGYiBf4y8iM4GZQG/gCjv0DLKu8oPHY7mH/eefU8pm9OjRNE1PZ5AqMmoUnHFGMQkMPpXtJXMzPR4efPDBMKuxOObQZ9o0yzlSSVnalx/vvXds6d/yEuL4x+/QB+At//j+a6Wj09DhcHDPjBm8AMTNnw/25M8i8+ijsGNHcUgzGE6N/MYFgI3BGnPAqlTsAX4JiKuKNd9gs/1aJeDcWOA3IBW4pCBllPgx/9dfVwXVceOKnMX+/fvV5XDojyLqS0xUPXCgGAWGhoP166sPtAuEW4oOGDBAAY2Pj1cdMcL6fAYOLL4CgjXm72fwYFXQqaANGjQo/vwLSXx8vAL6eI8e1j03bRpuSYXmrNNO079BDzRtqur1Fi2T7dut+3/11eIVFyQwY/5lOhSk2/97EWlWrDWO48wGsnufuR/4UlUbA1/a77E19AGa29dMFRFnkHSFjhkzrNf584ucRb9+/bjJ56O9KvL00xAfX0ziQkecPd4/E7j88svDpiPQoc+y998vmUv78uPll9HYWIYA6WF2/ON36ON0Onlw82Z/ZNj0FJXpb7/N/wPiU1Jg1qyiZbJokfVquv4NJYH8agdAZ+AAVmt7PfAzsL64ah9AEie2/FOBWvZxLSDVPh4LjA1ItxjokF/+Jb7lHxOjCqoOR5FaFCkpKVoJdI/DoXreeao+XxBEhobMVq3UB3o1aEZGRlg0tG/fXgFNSkpS7drV+mwmTy7eQoLd8ldVnTpVFfRrfw9GmIiIiFBAFw4ZYt1vSf895kHn88/X/4EeqVhRdd++wmdw+eXWM4iOVk1PL36BxQym5V+mQ0Fa/jOxlvz14Ph4/xWnXOvInZqquhPAfq1hx9cB/gpIt92OOwkRGSoiq0Rk1d69e4Mo9RRZtQoyMqxjn+/YRi2F4frrr+dRoLoqTJlSOib55UKUPab+EuHxUx/o0GfdjBmwdCnUrWvtoFfauP12qF+fzsAZYXL843foExsbyxX+Vm9JXi2RD++8+y6jRIg8fBgtrGOiI0fgyy+t48xMa0dIgyGMFMT4/6mqC1V1m6r+4Q9BV3YyOVk1zSmhqk5T1Xaq2i4hISHIsk6B7G53/UMABWTx4sV4169nBCDDhkHr1sWnLRycfjq+rl2pBZyfmhpyxz+BDn3i/Y5y7OVzpRK7Mvk2oXf8E+jQ56c774SdO6FrV2jSJKQ6ipPExETOvPlmXgH0pZdg/fqCX7xkiWX0/Ziuf0OYKYjxTxGReSLSN0RL/XaLSC0A+9W/uHY7UC8gXV2gdE+bXbLkxPcrVxbq8oEDBjAZoFIlePzxYpMVTpzz5uEDngbOO/fckJX7zTffsGPHDkSEz/v0gW3b4LzzoFOnkGkodjp2RDp1IgkY6PFwZwh3qbv44otRVWrVqkWTadOsHqk33ghZ+cFi+vTpPB4ZyT5VvMNtd1oFwd/zEfi+oNcaDEGgIMY/BsgCLiY0S/0WAv3t4/7ARwHxfUQkSkQaAo2BU1x3E0b++edkpyFHjkABJ2dNnjyZTrt20RVwPfUUVKtW/BrDQWIijt69qQIMTUsLmeOfYw597rgD1913l56lffkxfz4qwvPAy1OmhMTxT6BDn5TBg2H/frjyypKxEdIpEhkZyR3jxvEA4Pz2W3j77fwv8vlONv47dhT4t24wBIVwTjgA3gJ2Am6slv0goBrWLP/N9mvVgPQPAluwJgVeWpAySuyEv4ce0mOTvgLDjTfme6nb7daE2Fj9E9TdsqWqxxMCwSHkwAH1iuhh0EiXK+jFTZo0SQF1uVyqw4dbn8OttwavwFBM+AvEnmz3MmiXLl2CXlzDhg0V0LPbtlWtUEHV6VTdvz/o5YaShKpVdSWou2ZN1UOH8k68cmXOv/VHHgmJ1qKCmfBXpkP+CaAh8DzwPlbreyGwMNzCCxpKrPFv2lRz/EOoUSPfS0eMGKGP+9N/+20IxIaBQYNUQZ8BfeCBB4JalNPpVEDfmjTJMlSxsapud/AKDLXxd7vVGxurHtDqoPuDaIjXrFmjWHNx1HPPPdY9DhgQtPLCxfz58/Uc/2d43315J3744Zx/6yX1v8nGGP+yHfJPAOuAkUBXoIs/hFt4QUOJNP5er7W0r0YNa9kPWEanfn3reO/eXC/dv3+/JjscmgnqvemmEIoOMVlZ6nG5NBM0KoiOf05w6HPBBdbznzIlaOWpauiNv6rqyy+rf+lfMB3/+B36DLzxRtWoKNXISNUwLdsMNo0bN9aZoF6XSzU1NfeEbdqodu6s2rGj9ZlXqmT1xkREqP79d+gEFxJj/Mt2KMiYf6aqTlLVpaq6zB+KOsxgAP76C2bOhN27rf3MASIj4Y8/4KOP4Pffc720X79+POfzQVQUjmeeCY3ecBAZiXPMGKKAqQTH8U+gQ58fpkyBr7+2fM7fcUexlxV2brsNtZf+JQbJ8U+gQ5+ZMTGQlWUtk4yOLvaySgLz5s3jfuCw1wujRuU8gc/thuefh2XLjrvcjo62nEZt2gTp6SHVbDAcI7/aAdAPeAToALTxh3DXWgoaSmTLP5CEBFWwnP3kQ0pKil7ubzE+91wIxIUZr1e9MTHqBo0PguOfExz6JCVZz3X58mIt4wSefNJqBefU8v/vf4NXrp/vvlMf6LYgOf7xO/SZOmHC8eGTorrCLSV07txZR/k/y48+yjux7XZZa9YMjbhTBNPyL9Mh/wTwJNZkvGXAUjt8FW7hBQ1lyfi3a9FCN4MerFdP9ejREIgrAUyYoAr6PmhycnKxZbtz585jY9OHX3zR+gw6diy2/HOkYUOrnKpV9Zjxj4629raPjAxu2X7OP18VdAjorFmzii3bkSNHKqCxsbGqvXtb9zZ+fLHlX1LZuXOnRoroRodDfQ0bqh45kntiY/xNKEEh/wSQAkSGW2hRQ1kx/p999pk+4DcYX3wRInElA1/lyuoFTQRNSUkpljxr166tgF7UpYs1I93hUN25s1jyzpU339QcJ36BNSYcCnbtUq+IHgKNdDiKJUu3260iooB++/77VmWmcuUy3+r3c8stt2hX/+eYVw+OMf4mlKBQkDH/dUDlYhljMBSZh265hQeBA927Qwnapz0UyHPP4QDeBM4777xTzu8Ehz5Nm1rjrgMHQmLiKeedJ/365X4uVFvc1qyJY8gQKgIv+nzF4vjH79Cndu3anDd1qmUGn3nG8pVQDpg+fTrfRUUxXwQdP96au2MwlHDEquDlkUDka6AlsBLL2Q8AqtorqMqKiXbt2umqVavCLSN3atSAvXutneOOHMkxyeTJk6k5ciS9HA6it26FBg1CLLIEULs2unMnTYCnFizgmmuK7mSyYsWKpKenM3bwYMbPnGlNwDpwAFyu4tObG1WqQFraiXEOB3i9wS/bj8eDNy4OMjOpA2x3u3EV8d7T0tKoUqUKALu/+44a551nVaJ27ixGwSWfxx9/nGnjxrHJ6ST6qqtydhA1ZIjlwrtmTdi1K/QiC4mIrFbVdoFxq1evruFyuWYALSiYkzhDePABv3g8nsFt27bdk1OCgvziHyleTYbC4PF4+Ozee/k/4Mh995VPww/wyitw5ZW8CXTq25esrKx8L8mJyZMnk56ejsvlYvzmzZb3tWeeCY3hB+jb19omOJCkpNCU7cflwvniizBsGO8C3bp14+uvvy5SVm3atAHg7LPPpsZdd1mRU6cWj85SxEMPPcTEiRN5/N9/eXzBAst1dxnsoXO5XDMSExPPSEhI2O9wOIx/4hKKz+eTvXv3Ntu1a9cMIMeGeq41NxFrezgNWN6n2Zb6+dMYgsfoESN4OjOTvfHxxBZ2J7GyRK9eyGmn0Q5oefQoDz74YJGyGT16NAAf3H+/tfyqXj0YPrwYhebDpEknxz3xROjK9zN0KN66dTkfOLpsGWnZeyMKwE8//cS2bdsA+O6ll2DFCmjYEK6+upjFlg5eeeUVngX+ioqCO++Eo0fDLSkYtEhISDhoDH/JxuFwaEJCwgGsHpqc0+Rx/VIRuVNE6gdGikikiFwoInM47oPfEATS0tKImDaN5kDV2bPL7HrpAmOvyZ8LPPnkk4W+fMCAAXi9XuLj4+n5+utWZKh37XO5LJ8OgfTpE1oNNs758wHLx3ZRtlDu2rUrAP3798c1YIAVOXNmMakrfVx77bXUb9yY27OyICUF7F0NyxgOY/hLB/bnlKuNz8v49wC8wFsiskNENorIViyf+32BF1R1dnGKNZzI8N69eUSVbU2b4rzqqnDLCT+dOiEtW9IU6KZaKMc/Ho+HOXPmALD+zjutSVkdO1oh1ATuVlg5jHNpzz0XOnWiAdCjkI5/Ah36zL7lFti4EVq0gAsuCJrc0sC8efP4P+DL6Gj4z3/K3dwHQ+kh14FOVc3Ecq42VUQigOpAhqoWvn/QUGhSU1Pp/tVXxAANP/rI2hLVAG++CWeeyXQg6ZNPOHLkCLGxsfle1tE28o3q16fBxInh3bXvtdegcWPr+KabwqPBRhYswJeYyHOq1OncmbTDhwt03eDBgwF44YUX4NZbrUh/b0o5pl27dnTu3Jlh//sfqR4Pzvvug7lzwy0reIi0Ldb8VFcXa355MGnSpGqrVq2qMHfu3D+ffvrphNjYWN+IESP+Lej1sbGxrY8cObIme/zjjz9eY+bMmQktWrQ4snDhwm3Fq7r4KNBsTVV1q+pOY/hDx+OXX85A4M9rr4Xk5HDLKTm0aIGcdx4NgBuA1q1b53vJrl27WLHC2v15w0UXWUv7Bg0K/tK+3Dj99OOVuRdeCI8GPzVq4Bg6lArA0+npx9wd58WoUaNwu93ExsZyZ61aVi/KuedCEYYOyiLvvPMO2xwOnnc4rArRt9+GW5IhH+699969hTH8efHaa68lfPLJJ5sLavjdbndxFFtozFKNINO6dWuGDx/Ozvy6/zIzjy3/WfzJJ4zasoVdLhenz5oVApWljHnzUBEmAZs2bSI1NTXP5G3bWo2Tqzp2JHrOHIiNDf+M9KQka+w/VKsM8mLKFNyRkQwCHhw0KM+kHo+HyfZY9qeffmrtgyAC8+aFQGjpIDExkZtuuolHjx4lLS7O2t8gcCnnvn2lYqlfSaVbt26nNW/e/IzTTz+9+bPPPlvdHx8bG9t6yJAhdZs1a3ZGhw4dknfs2OECaN++fZNbb721XuvWrZs2bty4+dKlS0/qKhwzZkzthx9+uCbAhg0bos4///zGzZs3P6Nt27ZN1qxZEw2QkpISedZZZzVt0aLFGaNGjaqdk7Z+/frV3759e1SvXr1O/89//lNj9+7dzm7dup2WnJzcrFWrVk1//PHHGH95ffv2bdCxY8fG11xzTUOPx8PQoUPrJicnN0tOTm72xBNP1ABYvnx57Nlnn92kefPmZ3Tq1KnxH3/8EQFW78Jpp53WPDk5uVnPnj0bFeU5GuMfZNauXctrr71Go0aN8q4EqMJjjwGwpF8/2gHu8eOhYsXQiS0tNGiAXHIJNYDh5O34J9Chz/sOh7W077nnwm90x4+HDh3Cq8GPy0XElCk4gbfzcfwT6NCn84YNsGcPdO9uzfI3HGP69Ol4o6K4PT0d1q61NvLx43Yf+60bCs+bb775+4YNG35du3btxldffbXmrl27nAAZGRmONm3aHNm4ceOvHTt2PHT//fcfM9BHjhxxrFmzJmXSpEl/DB06NM8v6+DBgxtMnTr1zw0bNvz6zDPPbL/99tvrAwwfPrz+4MGD9/7yyy+/JiYm5thcnzdv3p81atRwL1u2bNMjjzyy5957763dqlWrI5s2bdr42GOP/d2/f/9jZa9fvz528eLFv3388cfbnnvuuYQ//vgjasOGDRs3bdq0cfDgwf9mZWXJyJEj63/00UdbNmzY8Gv//v3/ueeee+oATJo0KfGXX37ZuGnTpo2zZ88uklepfI2/iIwQkSpFydxgcfToUTIzM3OuBAS2CGbN4rUHHuC+AwdYV6UK9e65JzyCSwOvvw4OB+OBffv2sWDBghyT9ejRA4Dnrr0WWb4c6teH224LodBc6NMHPvss3CqOM2QImYmJdAJ+mjIFj8dzUpK0tDSWLl0KwOqVK2HsWGvuhBnrP4nIyEgeeugh3vb5+Ll6dXjoIdi//3iCWbNM67+ITJgwoWaTJk2atW3b9oxdu3ZFbNiwIRrA4XAwePDgfQC33nrrvytWrDjWcurXr98+gEsvvfTw4cOHHf/8848zp7wPHDjgWLNmTcXrrrvutKZNmzYbPnx4gz179kQA/PTTTxWHDBmyD2DYsGEFGiJYsWJF3KBBg/4F6NWr16G0tDTXv//+6wTo0aNHWsWKFRXgq6++ir/tttv2RkREAFCzZk3v+vXrozZv3hxz4YUXJjdt2rTZM888U2vHjh0RAE2aNMm4+uqrG06dOrWqvaFWoSlIyz8RWCki74pID7O2v+jkWAkI2NLT6/EQ9dRTVAaSzCS/vKleHa6/nkpYXqj65eA6N9Chz2h7zD/kS/vyooQt3Yz+8EMA5gEXXXTRSecDHfokzpxpeUXs3dvyUmk4iYceeohq1arR959/0AMH4Msvj5/0ek3rvwgsWrQobtmyZXGrVq1KSU1N3XjGGWdkZGRk5GjHAk1VdrOVmxnzer3ExcV5UlJSNvrD1q1bN/jPF3aZY04edO19MKhQoYIvMJ0/PiBOTj/99Ay/jk2bNm389ttvNwMsXbp08x133LF39erVFVq1atWsKPMG8jX+qvoQ0Bh4DRgAbBaR8SJyWqFLMwDZKgFZWQwHdgKL3W76qvJNkyZUOv/8cMss+UyfDi4X9wGeHBz/+B36LLvxRmtSWqdOUAx7A5RZzjkHd4cONACa/e9/Jzj+OcGhz//+Zw1buFzlel1/QXjllVfYALyT3a3z0aOm9V8E0tLSnJUqVfLGxcX51qxZE71u3boK/nM+n49Zs2ZVAZg9e3a19u3bH/Kfe+utt6oALF68uGJcXJy3WrVqOfrTrlq1qq9u3bpHZ86cWcWf5/fffx8D0KZNm8PTp0+vCjB9+vRqBdF77rnnHpo1a1Y1sCouVapU8VStWtWXPV23bt0OvvLKKwl+I757925ny5YtM/ft2+dasmRJBYCsrCxZtWpVtNfrZcuWLZFXXHHFoalTp24/dOiQ88CBAzn2ZORFgQY+VVVFZBewC/AAVYD3ROQLVb23sIUaLI7aHsBeA2YCXwEHgPONgSoYFSvCkCHEvPwyE4FRTz7JE7a3PL9Dn8oVK3Lee+9Z3dO2UxtD7kR++CHemjV5FjizZUu2/vknkM2hz9ixkJEBw4aZOSn5cO2119K4cWPu2LyZa8n2h+tv/b/0UpjUFQMhXJoH0Lt37wPTpk1LSE5ObnbaaadltmrV6ljXaUxMjG/Dhg0xzZs3T4yLi/O+//77W/3nqlSp4m3dunXTw4cPO6dNm5bnLPy33npr65AhQxpMmDChlsfjkauvvnpfhw4dMqZOnfpnnz59Gk2dOrVmr1699ueVh58JEybs6NevX1JycnKzmJgY3+zZs3Mse/To0Xs3bdoU1bRp0+Yul0v79++/94EHHtj79ttvbxk5cmT9Q4cOOb1er9x+++27zzzzzKx+/fo1PHTokFNVZdiwYburV69e6M1BCrKxz0gsT37/ADOAD1XVLSIOYLOqlugegHBv7FPQUZJ+WLvWDQVcTifjVq+mVqtWwZRWNvB4IC4Od2Ym8cCFl13GRx99hH/sbM8115Dw/vswdCi8+mp4tZYSfMOG4Zg2jelA29Wr+eWXX+jfvz9OpxPP4cMQH29Vpg4ePNlboeEkfvrsM86/9FKeBW7PfjImBrZuDd+y0zzIaWOfdevW/d6qVat/wqUpL3Jbd9++ffsmzz777F+dO3fOeee0Msy6deuqt2rVKimncwUZ868OXKOql6jqfFV1A6iqD+hZfDILhj3vIFVEfhOR+0NdfjCoCDwDrMCqXb3m9dKobduCLREs77hccM89RADTgU8+WUpEhPW1SHRcSsKHH0KFCqW7dRViHC+9RKbLxa3ApW1vo39/a2y6evVFVmvf7YYxY4zhLyBtFi5kjAh3AIeynfMc9ZJ2txn7N4SefFv+JQkRcQKbgO7Adqxthvuq6sbcrikNLf8JwL1Ae6wb8hMZGYnD4WDgwIGMGzeOWrVqBUllKcfn43BEJWJ86VRHsUZWo/iadnThW6vFP3RomEWWLsbVmsFju4bwDWDNPmlHPF+wj+o4K8ZYk/0cZqVwvuzcCY0acTgzk8bAZVgV/MB/hSPE0L3RVjpcnUjPntbUlHCvRIXS1/I3nExeLf/SZvw7AI+q6iX2+7EAqprrLi8l3fhfB7xrH28C0u1wJNur//hIDnE5pfO/usvJioERGs0kMlgEXAGcA3wP/IGDRlJ6vuMlBdUqbGUfSVjG/1uED3FyJR7GABPLyfcqQpVYoAIcew08zisuFojH6tmLAaLtuMacaPwzieQ1BjMCq3eqcmW49FK44Qbo1St8i36M8S/95GX8S0D9slDUAf4KeL8d63/+BERkKNbwOfXr189+ukSx3X79GMtg+/844rDWWGb/gynslE63KhkOB5kOxwmvGQ4HmSInxWU/l9u1GfZ5t0iJWJI4+efOjOM1LiOTusDbVAQO04eraNFic7jllTp+/rkzN7CLH1nAPKAD/bmC2fxDFEvOTM59n9BQokqEKjE+HzH2a7TPZ70POI72p8kWcjofne01opCSvHDsN5IlgrjdHIVj4QiQiVUZ8BPNUQYyi8cYh6uO1fq/4gq48MIS8dMylFFKm/HP6adwUrNOVacB08Bq+Qdb1KnwPTnfVCCRkZE4nU4GDhjAuPvuIzEuDo4csXzU+18DjwNeI9LTiUhPJ74g6dPTrQl0hcHptNzlVqhw8mtxxEVHF+gfUARG0YF53MS31KU+21nG+fzIAnR94W7JYD3PlcDXXEBXlvE9S3AAo5nG+vW3FCwTVcttdUG/e0WJ8xZykrPLlft3rrDf0RzOOSMjqShCRYDhw61NnOxVPXkR6fTy8zWPUf2dl4zBN4SE0mb8twP1At7XBXaESUvQicRq6Q/s25dxTz1FYuCM4KpVg1Oo2118f8779598rgB/hCcgUqA/5TerVGD7/lgyiKK+3Z+yjC5MqPk8PB+E51TGmVATdu2G5ZzPBSw79kwvqLbB8lVfkO/DkSOWO+XCEBmZs2GNj7dmxJ9q5TKisG35IrJzp7WOv4Dfd5f3KAmLZsHucSVy5r+h7FHajP9KoLGINAT+BvpgrZIrUxwz+sC4iAgSK1QI3R9CRIQ16BisfeY9nuOGoTCVipzO7dp1LK6f4wiZkk60Zh0r6mEeh93A3cG5lbJMbs47bk2fBG/nYGCrVoW6dYvUWj7htSTMdCsOHnus8BWfUrjuX4Ri3dJXlUL5DRgzZkztihUreg8ePOi84IILDl111VXZF1TkyaJFi+Kee+65mkuXLv2tcEpDz+uvv165WbNmmW3bts0sjvxK1S9NVT0iMgJYjGUfZ6rqhnwuKzWcYPSxxvxxu60WxLgy0iJwuaxWXHx8sWcdDVSJ89Do8Bq20JgNGx3UqVPsxZQ72rTIgr/+YB2taZHsZN26cCsq4RSy1X8Mv9e/svJbDyETJ04ssz3Afj788MPKHo/nQLk0/gCq+gnwSbh1FCc5Gv1ASmGLIFxUqubip8NnA/D+EshjgzpDAXnrC2jaNAGA9Wb+RP4UpdXvx/zW8+W+++5LfOedd6rXrl37aLVq1dytW7c+0rt376SePXseGDhw4P7hw4fXWbx4cWWn06kXXHDBwWnTpm3v3bt3UlRUlC81NTXm33//jXjyySf/6tu374HAfJcuXRo7ZsyY+pmZmY7o6Gjf7Nmzt7Vq1SrL4/EwfPjwul9//XU8QP/+/f958MEH9yxfvjx2zJgx9Y4cOeKoUqWK58033/y9QYMG7vbt2zc588wzj6xbty523759rlmzZm174oknaqWmpsZceeWV+yZNmrQDYOrUqVVffvnlmm63W9q0aZM+d+7cP1wuF7Gxsa0HDRq05/PPWIWuDAAAEShJREFUP68UHR3tW7Ro0W8pKSlRS5YsqfzDDz/ETZgwodaCBQu2fPDBB5VmzZqV4HQ6NTk5OXPRokVbc3peuWEW6oaRSKxZv4OBrcBL5GD4wfgBLwQNGhw//uab8OkoSzRpYvXK+7n11vBpKfEUtdXvx/zW82T58uWxH3zwQdWff/5546JFi34L9O0Plk/8Tz75pMrmzZs3bNq0aeP48eOPeUn766+/olasWJH68ccfb77rrrsaHDly5ISpla1atcpcsWJFyq+//rrxkUce+fvee++tC1DY7XYBIiMjfatWrUodOHDg3uuuu+706dOn/5mSkrLhnXfeqb5r1y7nTz/9FP3ee+9VXbVqVUpKSspGh8Ohr7zySjWwtibu0KHD4dTU1I0dOnQ4PHny5ITu3bund+vWLe3xxx/fnpKSsrF58+ZZp7qtb6lr+ZcF8m3p54RpERSI1q3hf/+zjlNSwqulLPHiizB4sHU8d+7x/XwyM0vc5oTh5VRa/X7Mbz1Xli5dWvGyyy5Li4uL8wFcfPHFaYHnq1at6o2KivL16dOnweWXX37ghhtuONa679279z6n08mZZ56ZVa9evay1a9ee8M3dt2+f84Ybbmj4+++/R4uIut1ugZy32125cmW0f7tdsDYASkhIOLa13tVXX50G0KpVq4zTTz89o0GDBm6AevXqZW3dujXy66+/rvjLL7/EtmrV6gyAzMxMR40aNTwAERER2qdPnwMAbdv+//buP8iq8r7j+PsDS0FMDRjbaHadQiqmUcZfu9kxqUYLdtxEBvzFDBlSzSDDSLU1bWdCGGw7bXVGm8YxTKKI2BoTDXEi5ZcaBes0f0SjaBh+iCAqCSiErQqIUciy3/5xno2X5e7KXfbu3XvO5zVz557znOdcnq+71++eX9+n+b3Vq1eXvUbaNa3v5MmT90yfPn1PuT698ZH/ADrqI/1yfETQq23bsvfLLvuwbefO7Ekrzz1z7K67LnuqE7Lc9NBDsGwZuOhkiWM96u/i73qveiucNmzYMNauXbvpqquu2rN06dJRF1988bie9uu+PmfOnMaLLrro3VdeeWXjihUrth48eHAIVD7dLsCIESMCYMiQIQwfPvz3+w4ZMoSOjg5FhKZOnfpW1/7btm3bcMcdd7wJ0NDQEENS9cyGhgY6OjrKBnys0/o6+Q+AY0r6pTwHeI9mzMieCiyt4tvenh2tftAvt8fY1KkfLs+aBZdfnlX5taQ/jvq7+Lte1oQJE/Y/+uijo/bv36933nlnyKpVqw57LGnv3r1D0hH83gULFmzftGnTyK5tS5YsGX3o0CE2btw4fPv27cPPPvvsw/7PsG/fvqFNTU0HAe65556TutormW73aONoa2vbt3LlytFvvPFGQ9dnbtmypdfJMtJTDUMA+mNaX5/2r7JzRozgCx98cPSn93tz8CD8/Of9MKr8eeyxbIK0rjMApUaPHvDh5MrWrdlB6L33wuLFWdt7aSLVOqoOXn3PPHPsR/1d6uS7Xumjecfqggsu+O0VV1zx9vjx489sbGw80Nraur90+549e4ZOmjTptAMHDgjglltu+X1F2NNOO+1Aa2vrZ956661hd955569Gjhx52G/vnDlzds2cOXPs/PnzT77wwgv3dbVXMt1uS0vLUR1qNDc3f3DzzTe/MXHixNM7OzsZNmxYzJ8//9enn356j79A06dPf3v27NljFixY8MnFixe/OmPGjDHHMq1vXdX274ta1/a3gXPKKeXPlE6cCKtXD/x48mLdOuhtdun33/d1/zzKU23/0qcBaj2WgXSsU/qa1YUf/7h8+/XXD+w48uass7JL0D15LFcP3poVg0/7W2588YtZddjuZ16vvro248mTr30te3TyvvuO3PbYY3DllQM+JLOj9sgjj2yr9RgGGx/5W67ceOPh654kpf8sWgTnnXdkuyv+FUpnZ2env1V1IP2cerwD1cnfcuXb3z58feTI8v2sb1544cgbKHfsKN/XcmlDe3v7x/0HwODW2dmp9vb2jwMbeurj0/6WO+edBy++mC2PGVPToeTS7t3ZDX5ds+nuqbi8iNWrjo6Ombt27Vq0a9eu8fjgcTDrBDZ0dHTM7KmDk7/lzhNPwB9lpeiZPLm2Y8mjhobs8b+xY7P1/nq6zQa/5ubm3YC/VTngv9wsd0466cMZib/R09y0dkzGjIGlS7Pl/qprY2YDx8nfcunee7P3UaN672d9N2WK/7gyq1dO/pZLV18NkybVehT5d/vtWREl3/RnVl98zd9ya8WKWo+gGFw90az++MjfzMysYJz8zczMCsbJ38zMrGCc/M3MzAqmJslf0lRJGyV1Smrptm2upK2SNku6tKS9WdL6tG2+5KrtZmZmfVGrI/8NwJXAz0obJZ0BTAPOBNqAuyQNTZvvBmYB49KrbcBGa2ZmliM1Sf4RsSkiNpfZNAVYHBEHIuJ1YCvQKukU4ISIeCYiAngAuHwAh2xmZpYbg+2afyOwvWR9R2prTMvd28uSNEvSGklr2tvbqzJQMzOzelW1Ij+SVgMnl9k0LyKW9bRbmbbopb2siFgILARoaWnpsZ+ZmVkRVS35R8QlfdhtB3BqyXoT8GZqbyrTbmZmZhUabKf9lwPTJA2XNJbsxr7nImIn8K6k89Nd/tcAPZ09MDMzs17U6lG/KyTtAD4PPCrpCYCI2Ag8DLwE/BS4ISIOpd1mA4vIbgJ8FXh8wAduZmaWA8puns+vlpaWWLNmTa2HYWZWVyS9EBEtH93T6tFgO+1vZmZmVebkb2ZmVjBO/mZmZgXj5G9mZlYwTv5mZmYF4+RvZmZWME7+ZmZmBePkb2ZmVjBO/mZmZgXj5G9mZlYwTv5mZmYF4+RvZmZWME7+ZmZmBePkb2ZmVjBO/mZmZgXj5G9mZlYwTv5mZmYF4+RvZmZWME7+ZmZmBePkb2ZmVjA1Sf6SviXpZUnrJP23pFEl2+ZK2ipps6RLS9qbJa1P2+ZLUi3GbmZmVu9qdeS/ChgfEWcBW4C5AJLOAKYBZwJtwF2ShqZ97gZmAePSq22gB21mZpYHNUn+EfFkRHSk1WeBprQ8BVgcEQci4nVgK9Aq6RTghIh4JiICeAC4fMAHbmZmlgOD4Zr/DODxtNwIbC/ZtiO1Nabl7u1lSZolaY2kNe3t7f08XDMzs/rWUK0PlrQaOLnMpnkRsSz1mQd0AA927Vamf/TSXlZELAQWArS0tPTYz8zMrIiqlvwj4pLetku6FpgETEyn8iE7oj+1pFsT8GZqbyrTbmZmZhWq1d3+bcAcYHJE/LZk03JgmqThksaS3dj3XETsBN6VdH66y/8aYNmAD9zMzCwHqnbk/xG+CwwHVqUn9p6NiOsjYqOkh4GXyC4H3BARh9I+s4H7gePI7hF4/IhPNTMzs49Uk+QfEaf1su1W4NYy7WuA8dUcl5mZWREMhrv9zczMbAA5+ZuZmRWMk7+ZmVnBOPmbmZkVjJO/mZlZwTj5m5mZFYyTv5mZWcE4+ZuZmRWMk7+ZmVnBOPmbmZkVjJO/mZlZwTj5m5mZFYyTv5mZWcE4+ZuZmRWMk7+ZmVnBOPmbmZkVjJO/mZlZwTj5m5mZFYyTv5mZWcE4+ZuZmRVMTZK/pH+TtE7SWklPSvpUyba5krZK2izp0pL2Zknr07b5klSLsZuZmdW7Wh35fysizoqIc4CVwD8BSDoDmAacCbQBd0kamva5G5gFjEuvtgEftZmZWQ7UJPlHxL6S1eOBSMtTgMURcSAiXge2Aq2STgFOiIhnIiKAB4DLB3TQZmZmOdFQq39Y0q3ANcBe4C9ScyPwbEm3Hantd2m5e3tPnz2L7CwBwH5Jm/tp2NV0EvB/tR5EleQ5NnB89c7xlfcn/T0QGzyqlvwlrQZOLrNpXkQsi4h5wDxJc4EbgX8Gyl3Hj17ay4qIhcDCykddO5LWRERLrcdRDXmODRxfvXN8VkRVS/4RcclRdn0IeJQs+e8ATi3Z1gS8mdqbyrSbmZlZhWp1t/+4ktXJwMtpeTkwTdJwSWPJbux7LiJ2Au9KOj/d5X8NsGxAB21mZpYTtbrmf5ukzwCdwK+A6wEiYqOkh4GXgA7ghog4lPaZDdwPHAc8nl55UleXKSqU59jA8dU7x2eFo+zmeTMzMysKV/gzMzMrGCd/MzOzgnHyrzFJbamU8VZJ36z1ePpC0qmSnpa0SdJGSTel9hMlrZL0SnofXbJP2TLOg5WkoZJ+KWllWs9TbKMk/UTSy+ln+Pmcxfd36fdyg6QfSRpRz/FJ+k9JuyVtKGmrOB6XTC82J/8aSqWLvwd8CTgD+EoqcVxvOoB/iIjPAucDN6Q4vgk8FRHjgKfS+keVcR6sbgI2laznKbbvAD+NiD8DziaLMxfxSWoE/hZoiYjxwFCy8ddzfPdzZHnzvsTjkukF5uRfW63A1oh4LSIOAovJShzXlYjYGREvpuV3yZJHI1ks30/dvs+HJZnLlnEe2FEfPUlNwGXAopLmvMR2AvBF4D6AiDgYEXvISXxJA3CcpAZgJFmNkLqNLyJ+BrzdrbmieFwy3Zz8a6sR2F6y3mvZ4nogaQxwLvAL4JOpRgPp/Y9Tt3qL+07gG2SPpnbJS2yfBtqB/0qXNRZJOp6cxBcRbwD/Afwa2AnsjYgnyUl8JSqNp5EKSqZb/jj511ZFZYsHO0kfAx4Bvt5t8qYjupZpG5RxS5oE7I6IF452lzJtgzK2pAE4D7g7Is4F3iOdMu5BXcWXrn1PAcYCnwKOl/TV3nYp0zZo4zsK/VIy3fLHyb+2eipnXHckDSNL/A9GxJLU/Jt0epH0vju111Pcfw5MlrSN7LLMBEk/JB+xQTbeHRHxi7T+E7I/BvIS3yXA6xHRHhG/A5YAXyA/8XWpNB6XTC84J//aeh4YJ2mspD8guzFneY3HVLF0l/B9wKaIuKNk03Lg2rR8LR+WZC5bxnmgxluJiJgbEU0RMYbs5/M/EfFVchAbQETsAranipsAE8kqbOYiPrLT/edLGpl+TyeS3ZOSl/i6VBSPS6YbEeFXDV/Al4EtwKtkMx7WfEx9iOECslOG64C16fVl4BNkdx6/kt5PLNlnXop5M/ClWsdwlHFeDKxMy7mJDTgHWJN+fkuB0TmL71/I5g/ZAPwAGF7P8QE/Irt/oWuq8+v6Eg/Qkv6bvAp8l1Tx1a9ivFze18zMrGB82t/MzKxgnPzNzMwKxsnfzMysYJz8zczMCsbJ38zMrGCc/M2qRNJxkv63GhPDSFpdOnObmVklnPzNqmcGsCQiDlXhs38A/HUVPtfMCsDJ36xCkj4naV2aF/74NFf8+DJdp5Oqpkm6OJ0FeFjSFkm3SZou6bk0p/qfpn73S7pb0tOSXpN0UZq/fZOk+0s+eznwlaoHa2a51FDrAZjVm4h4XtJy4BbgOOCHEbGhtE8q1/zpiNhW0nw28Fmy6VhfAxZFRKukm4C/Ab6e+o0GJgCTgRVk8wvMBJ6XdE5ErI2Id1LJ1k9ExFtVC9bMcslH/mZ986/AX5KVSP33MttPAvZ0a3s+InZGxAGykqpPpvb1wJiSfisiK725HvhNRKyPiE5gY7d+u8lmqjMzq4iTv1nfnAh8DPhDYESZ7e+XaT9QstxZst7J4WfhDpTpU67fiPTvmJlVxMnfrG8WAv8IPAjc3n1jRLwDDJVU7g+DY5ZmYjsZ2FaNzzezfHPyN6uQpGuAjoh4CLgN+JykCWW6Pkk242E1NAPPRkRHlT7fzHLMs/qZVYmkc4G/j4i/qsJnfwdYHhFP9fdnm1n++cjfrEoi4pfA09Uo8gNscOI3s77ykb+ZmVnB+MjfzMysYJz8zczMCsbJ38zMrGCc/M3MzArGyd/MzKxg/h/cWMk/yYZr2gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#set up node and element arrays\n",
"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",
"\n",
"#determine x and y coordinates\n",
"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",
"#determine coordinates for the structure\n",
"r = np.block([n[1:3] for n in nodes])\n",
"\n",
"#plot undeformed truss\n",
"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",
"plt.axis(l*np.array([-0.5,3.5,-1,1.5]));\n",
"\n",
"Ff=np.zeros(2*len(nodes)-3)\n",
"Ff[5]=-100\n",
"# solve for uf (the joints without constraints)\n",
"uf_st = np.linalg.solve(E_st*A*K[2:13,2:13],Ff)\n",
"u=np.zeros(2*len(nodes))\n",
"u[2:13]=uf_st\n",
"\n",
"# step 2 solve for F (the solution should include reactions and applied forces)\n",
"F=E_st*A*K@u\n",
"\n",
"#set scale\n",
"s = 3\n",
"\n",
"#plot deformed truss\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],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.xlabel('x (mm)')\n",
"plt.ylabel('y (mm)')\n",
"plt.title('Steel Deformation (scale= {:.1f}x)'.format(s))\n",
"plt.legend(bbox_to_anchor=(1,0.5));"
]
},
{
"cell_type": "code",
"execution_count": 352,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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uMLXJvmO558H4Pz336du3bqICJdffrnbye12O29brXnHGHUB5s+HNWugXTv9Z+1JevXKP/bF3I3wcN0VnZvLopAQAHbt2lV0E54SeOeddzhx4gRBQUHMczUM9dNPeiijc2do376SDPd/PvjgAwCGDh0KNWvCnDnwxx/w+OM+tsxgKEix4i8imSIyQ0TOAZoCF6Kd+zQVkZEist5rVlZDkpOT+f7bb3k3OJiguDh45RVfm+RbbroJ6taF774jydqlbtGiRZxyMU/CFeeccw4AzZo1o6vV2j1NXp6enKUULFxYqWa7ZM6c/OMhQzxfnitGj4aWLVG//cbLF10EwPnnn+928ttvvx2Al4sbhho9Wr9aPTXVhe7du9O7d292796th5YuvBBGjYL//AcOHPC1eZWPUt0qNXiRqVOn1hk6dGgTgOeff77u9OnT65QlfWRkZBdX5ydPnhzXokWLxCuvvLJ5ZdjpKdyarSkiOSKSIiJlHxg0lIvrr7+eh4EOdrv+A42J8bVJvmfSJBChyeTJnHnmmQB06eLy91eA/fv3n56Mtm7duqIRRo+GEyd070rr1pVpsWtatdIVDfDtHA5rNcM9SUkEKUVaWprrVnwhxo8fT05ODpGRkYwdO7ZohI0bYdMmaNMGevasZKP9n48//hibzcaECRPIy8vTvVaNGsGPP/raNEMxPPDAA4fGjBlzpDLymjNnTt1FixZtX7hw4U534ruceOwFzFIND9OlSxdGjx5NSkpKyREzM0/PAF6yZAls3MhEgJtv1nvIG7RIn3EGLFxIkjU7/Y8//iA5ObnEZN266QZF3759iS7czb5rF8yeDTVqFGyRe5pmzfTYfzmX2FUKiYlw/fVw7BhrevcGYOTIkSUmsdvtTJs2DYBvv/3WdSRHHtOnV5qpVYn69eszZMgQ0tLSePDBB6FWLT3v4fhxHeHo0Sox299f6devX8vExMT2rVq1SnzxxRdPrx+NjIzsMnLkyEYJCQntzz777Db79u0LBujZs2fb2267rXGXLl3atW7dOnHZsmVF1l5OmDChweOPP14PYMuWLWHnnXde68TExPbdunVru27dunCAbdu2hXbu3Lldhw4d2o8fP76BK9sGDx7cZM+ePWFXXnllqyeffDLuwIEDQf369WvZpk2bhE6dOrX77bffIhzl3XTTTU3POeec1tdcc01zu93OHXfc0ahNmzYJbdq0SXj66afjAFauXBnZo0ePtomJie3PPffc1rt27QoB3bvQsmXLxDZt2iQMGDCgRbkepK8dDXg6+NrJD+g96cPDw+Wuu+6Sffv2FYzgcPIDIqNHi4hI4/r1ZS1Idp06IocP+8BqP8bJR/ygQYNKdfxTqkOfjh11fu+950GjXfDhhyJ9+ni3TFdkZWkHUzabtIiIKNXxT6kOfaw9GaRJEw8ZXDUo4vhHRKRt2yK/dX8GF05+1q9f/7eIJJ0OxTmtKm9wzruYsH///nUikpSWlramVatWGSkpKetEJAmQGTNm/CUiSffdd9/eW2655aCIJPXo0SPthhtuOCQiSYsWLdrWqlWrDBFJevXVV3c64tx77737Hnvssd0iktSrV68TGzdu3CQiSUuXLv39rLPOOiEiSX379k2dNm3aThFJeuaZZ3ZFRETkurKvQYMGWfv27VsvIklDhw49MGHChL0ikrRgwYLktm3bnnKUl5CQkJ6WlrZGRJKeffbZXRdffPGx7Ozs0/eYmZm5pnPnzif37t27XkSSZs+evWPQoEGHRSSpbt262adOnVojIkmHDh1aV9yzsj4vl9pYastfKTVGKVUNp5hXHtnZ2WRmZjJnzhxatGhRsCcgNzc/4ty5zJg8mWH799MFCHnzTahTpmGowOfhh/VSvA8+4NP33sNmOf6ZP3++y+glOvT56CPdRd2hg+5h8SY33gjW3AWfEhqq/Rrk5bHeWo732muvYbfbi0Qt1aEPwIgR+tWxtr2a4nD8Y7fbueWWW/TJjh3zI7z1lmn9l5PnnnuuXtu2bRO6devWfv/+/SFbtmwJB7DZbNx+++1HAW677bYjq1atinKkGTx48FGASy+99OTJkydthw8fDnKV9/Hjx23r1q2Luu6661q2a9cuYfTo0U0PHjwYArB27dqokSNHHgUYNWqUW0MEq1atqjlixIgjAFdeeWVaampq8JEjR4IA+vfvnxoVFSUAP/zwQ60777zzUIg1AbdevXq5GzduDNu+fXvEBRdc0KZdu3YJL7zwQvy+fftCANq2bZsxcODA5jNmzIixNtQqM+50+9cHViulPlFK9Tdr+8uPy0pAevrp67l2O99MmsRjQNa118LVV/vOWH/FZoO774acHHjgASZPngzolRGFmTZtGunp6QQHB/Pqq68WvGi36+5pb03yc0V4uG/KLcyIEdC2LTWTk7ktJgYR4cILLywSzTFRskePHtSvX79oPvv3w/Ll2onNoEEeNtr/mThxInXq1GHBggXaH8KmTfkXs7Phqad8Z1wV5euvv665YsWKmklJSduSk5O3tm/fPiMjI8OljjlLVWHZKk7GcnNzqVmzpn3btm1bHeGvv/7a4rhe1mWO4sKJnrUPBjVq1Mhzjuc473ROtWrVKsNhxx9//LH1559/3g6wbNmy7XffffehNWvW1OjUqVNCeeYNlCr+IjIRaA3MAW4FtiulnlFKtSxzaQagUCUgK4vRQArwSU4O/87NJTM8nLCZM31tpv/yzDO6xTp7Ng8/+GCxjn9KdOhzxx1w8qSe5d/cryfleocFC0Ap3rD+RH788ccCjn9KdegDela7CFgVMkO+45+br74atm/Pv5CXp+eYmNZ/mUhNTQ0644wzcmvWrJm3bt268A0bNtRwXMvLy2Pu3Lm1AebNm1enZ8+eaY5rH374YW2AJUuWRNWsWTO3Tp06uUVzh5iYmLxGjRplv/XWW7Udef7vf/+LAOjatevJN954IwbgjTfecKtLtlevXmlz586tA7riUrt2bXtMTExe4Xj9+vU7MXPmzLoOET9w4EBQx44dM48ePRr8/fff1wDIyspSSUlJ4bm5uezYsSP0iiuuSJsxY8aetLS0oOPHj7vsySgJd2f7C7DfCnagNvCZUur5shZoyCc7O5tMdK2qOfAH0A2o0bt3wPpBrxSCg/Va/MxMmDSJL774Aijo+KdEhz47dmgXyTVrgqlkadq2hcGDsaWlMT8uDijo+KdUhz7Hj+s9J2rXBmsZoCHf8c/qjRv5M6/Qf352tl7BUpURWVOpoRSuvfba43a7XbVp0ybhkUceadCpU6fTXacRERF5W7ZsiUhMTGz/448/1pwyZcrpWda1a9fO7dKlS7sxY8Y0nTVr1t8llfHhhx/+NXfu3Ni2bdsmtG7dOnH+/PnRADNmzPhn9uzZcR06dGjvrtg+99xz+9auXRvZpk2bhEcffbThvHnzXK4AuPfeew81atQou127dolt27ZNmDNnTkx4eLh89NFHOx566KFGbdu2TUhMTExYsWJFlN1uV4MHD27epk2bhA4dOiSMGjXqQGxsrMvKTEm449t/HNqT32HgTeBLEclRStmA7SLi1z0Avvbt7+4oSSKwFvgSWB4UxGNr1hDfqZMnTavanDqlZ/6Hh8Px48TVr8+hQ4e47LLLWLBgAY6xszVr1hRd15+YCFu3wiefwHXX+cB4PyUnB2rXRjIyaJKXxx7089u8eTPDhg0jKCjI5VwAQM+Z+OADvazt//7Pq2b7O2sXL+a8Sy/lCuCjwheDg2H3bnA1jOJjivHt/3enTp0O+8qmkoiMjOxy6tSpImt5e/bs2fbFF1/c3bt3b/ecggQQGzZsiO3UqVMzV9fcafnHAteIyCUi8qmI5ACISB4woPLMdA9r3kGyUupPpdRD3i7fEwQB84BU4G5gTm4uLbp1c2+JYHUlMlKPK588CS+/bK3jD2LRomWEhOivRXDwwKLC/847Wvg7dzbCX5iQEJgxA5WXx8+WX4lu3cYxbJgem46N/dp1usxMXZGqUQPuu89b1lYZui5cyASl+Bj4tdA1sdtJu9WFrwSDwcOU2vL3J5RSQeje8YuAPcBq4CYR2VpcmqrQ8n8ImAIMApznrIeGhmKz2Rg+fDiPPfYY8fHxHrKyipKaqldDREeTWP8IW7eOBRxry8OAYyQkRLDFMV3HatmSkQE7d1aLzWbKRWIisnUr1xPLZzgaed2B1SQkkP88Hdx1lx4+eeQR725SVBVISYEWLTiZmUlroAXwE+D8r5CH4oLmO+l+TVMGDIBzz/Wt+wcHVa3lbyhKSS3/qib+ZwOTROQS6/3DACJS7C4v/i7+1wGfWMdfA/+4CPvQmyy4k191Y6EIA4DhRDKPUHT/iQPdelXqGADviDAEmAGMMc+xWJqLsB04iZ7co0eqlfUu/3kC2EQ4aR1HAXnmuRYgUoQw9JOLAeKBF9EzqJ1ZTm/6ondJj47We1ndcIP27+WrR2rEv+pTkvj7Qf2yTDQEdju93wOcVTiSUuoO4A6AJn7eunPczC9AA6AXepzFmVxgL1ZFwGYjLSaG/SEhpFhhf2goaTab7/4lfMhL2dlclpzMM8A8hgA/AFuB0ehRLaFDhx9pmpnJ4O3bOWGzMbN9ezrYjHPLkpi3KYfb2MYsbIwkCBhlXdHP08H4lBTCDx/mw5gYEho29ImtviY4L496djvx2dnE5+RQPyeH+OxsGmZn0zw9ndrofqiSOIvfqMd+ghvWZ8AAvYfXBRdUy5+0wUtUNfF39VMo0nUhIrOB2aBb/p42qiL8StGbigQaA02s0Nxmo4lS9Kxfn14hIQTv26dnCjtTs6buxi4uNGyox3QDkb59iV++nKvpy5dMK3J540b0bn1Arc8/Z+NVV3nZwKpHkLIziNrcRjqTSWYX+cshN260DvLy9PcuOJib9u7lJn/xW1CZiMCRI/DPP8WH/ft1PGfq1dO/t1Onil5zQUiQsOmap4j9+DUj+AavUNXEfw9aFx00QveKBxSngGRgJ3oy4PBbbmHEs8/mO1bJy4ODBwv+Ae3alX+8ejUcLtQzZ7NBfHx+ZaBp06IVhOjoqtnUePNNpFUr/sN9fMk1BS4lJOjrJCdD9+5ghN8t2iUEM3Lrm3zEjXzFlXREO6hJSHCK9PzzWtxuucV/HBaVlcxM2LOnZHHPyCiYJiIi/zdz2WVFf0eNGsGxY9CihVvCDxCcm03dr+fCgcf8cua/IfCoauK/GmitlGqO7gm/ESjq2q2KE4ol+sBjISHUr1Gj4B+Cfon5rgAAFklJREFUzabf169f/K5pp07pJUSu/szWrIEvvijaexAVVXrvQWioh+66ArRsierRg2arV9OXpSxDe6dLSIAt67Ihepx+ZtYudobS2bIFEhNvYMPWZ+jERgbzHh8whBUrnCI9+6x+rv66gY8IHDpUsrC72ma3fn39fT/zTLj88qK/g9jY0ivJTz2lK+llITdXp3vttbKl8yFKUanb8IpQ6lp/ZyZMmNAgKioq98SJE0Hnn39+2tVXX51Weqp8vv7665ovvfRSvWXLlv1ZNku9z7vvvhudkJCQ2a1bt8zKyK9Kib+I2JVSY4AlaH18S0QKzz2ushQQfbRfZXJyYO5ceKyMLYLISO24pW1b19fz8kr+Y1y7VvcuOKNUwd4DVyEmxje9B7Nno7p04XU1hnbyOwBLlgBDhuiW2z33QAOXG3EZimHLFmDXQvKatWAWd/IRN3LhhcFs2ICe3X/8uHZBXauWbwzMyCi+gvvPP/paZqH/ycjI/O9qp06uW+1hpY3Ql0JKiv7NFq5cl0Z2dvl+6wZeeeWVgOsBLsyXX34Zbbfbj1dL8QcQkUXAIl/bUZm4FH1nPNEisNn0uGS9etCjh+s4GRnFd4muX6994pf05+oqVMafqys6d4bERNps2UJXklhLd5bP2MKQTz/VFZJqvtFMuWnalBM3jCT641nM5TaGbXxHn3/iCV3JmzXLM+WWVDl1DHEdOlQwjXPltEsXPcTji8ppeVr9Dqpg69/bPPjgg/U//vjj2AYNGmTXqVMnp0uXLqeuvfbaZgMGDDg+fPjwY6NHj264ZMmS6KCgIDn//PNPzJ49e8+1117bLCwsLC85OTniyJEjIVOmTNl90003HXfOd9myZZETJkxokpmZaQsPD8+bN2/ezk6dOmXZ7XZGjx7daPny5bUAhg0bdvjRRx89uHLlysgJEyY0PnXqlK127dr2999//++mTZvm9OzZs+2ZZ555asOGDZFHjx4Nnjt37s6nn346Pjk5OeKqq646OnXq1H0AM2bMiHn99dfr5eTkqK5du6a/8847u4KDg4mMjOwyYsSIg//973/PCA8Pz/v666//3LZtW9j3338f/euvv9Z87rnn4ufPn7/jiy++OGPu3Ll1g4KCpE2bNplff/31X2V5jlVO/AOJUkXfga9aBBER0Lq1Dq4Q0XMLCs85cIQNG0ruVi0uuNOt6oqZM+G885jNHXRnLf2mWuP7776rKzuGchH9wQyOf/whQ3iPyTzK6+ev566DB+HCC8FyBVxmShqWcrTas7IKpqlRI3++Srdu/jksVd5WvwPT+i+RlStXRn7xxRcxmzZt2pqTk0Pnzp0TunTpctpz34EDB4IWLVpU+6+//tpss9lw3r1v9+7dYatWrUreunVrWL9+/dpeddVVm5zz7tSpU+aqVau2hYSE8OWXX9Z84IEHGi1ZsmTHSy+9VHfXrl1hW7Zs2RoSEsKBAweCsrKy1Lhx45p88803fzZo0MD+xhtv1L7//vsbfvrpp38DhIaG5iUlJSU/9dRTcdddd12r1atX/x4XF2dv1qzZmY888siBffv2hXz22WcxSUlJ28LCwmTIkCFNZs6cWWfMmDFHMjIybGefffbJadOm7b3zzjsbTZs2re7zzz+f0q9fv1RHBQegb9++9Xft2rUpIiJCitulsCSM+PsAt0XfGX9sESgFdevq0K2Yob+SJlRt2gTffFN0QlV4eMkTExs1cj3B7NxzOXJGC7oeX8e/mUj99B3Qq5eelGUoPzYbq+96iwtfH8QCrqbGCsud+pw5ZGa6+Cjy8nSlr6Sx9sITUpXSwzJNmujv0sCBRT/32rX9f0JqRVr9Dvzxt+4nLFu2LOqyyy5LrVmzZh7AxRdf7OzYg5iYmNywsLC8G2+8senll19+/IYbbjjdur/22muPBgUFceaZZ2Y1btw4a/369QW+uUePHg264YYbmv/999/hSinJyclR4Hq73dWrV4c7ttsFvQFQ3bp1T2+tN3DgwFSATp06ZbRq1SqjadP/b+/eg6wozzyOf38zQwaReAslygABF4gXVtQZiXFNdIGNJFJ4WV1JkZUUcV1ZXY2mKgRxdyurphLd2lIqiiG4MeY2WtFVNBIFL5tKlURxQ2RUbl5BucyqDKAyOsyzf3SPHsczyAycOXO6f5+qU9P9dvfhfZw5Pqe7337ez74PMGzYsNYXX3zxU48//vjApqamAePGjTsKYOfOnVWHHnpoG0C/fv1i2rRpLQD19fVvL126tOh9tY5pfadOnbp1+vTpW4vtsztO/r2oR0m/Q6WeEfTvD6NGJa9iPulRqgcfTM6mOhs8+COJ4c2BwznkuOG8de4/MOi2OVzNdbRRzZ1/dx//ODCpAmw9N+mWv+Xp+fXUp+Oxtg0eTdNPV3Hn9Q9z07eLnLV3nmJ04MAPv8ideGI2H0Xd27P+DpX6We8luyt01q9fP1asWPH8okWLDmhsbDx4/vz5hy5btmxNseM6r8+ePbvu1FNP3b5kyZIXVq9e/akJEyZ8DnY/3e6KFStWFetH//79A6Cqqora2toPjq2qqqKtrU0RofPOO++Nm2+++bXOx9bU1ERVeqWypqaGtra2ogE/9thjaxcvXvzpe++996Drr79+yNq1a5v6deMz5OTfC/Yq6RfK4hmBlFzmHzQIOtfh79DaCq+9VvzLwXPPweLFHPJOcuWv4waFgBp2cf6VQzgf/Je+DxzPh2e0B2xey8nfm8zJAN+vSpL38OHw+c8ncyZ0Tu4HHtj3z9r31r446++Qxc/6PjBhwoQdM2fOHHHNNddsfP/997VkyZKDZsyY8cHgj5aWlqodO3ZUnX/++S2nnXbajjFjxvxlx7Z77rnn4EsvvfSNVatW1a5fv7523LhxOx999NGBHdu3bdtWPXTo0PcAfvzjH39Qa61jut0zzjhje8dl/8LpdidNmvR2a2urVq5cWdvQ0LBHg/EmT5687Zxzzhl11VVXba6rq2vbvHlzdUtLS/WYMWO6/OaYPtVQBVA4re+Xv/zlHUOGDDmkpaWlujuz+/l/iSV2XP/+nLxz594l/Q7vvQddzaWeZbW1yTPTRxxRfHsEOze+xRfqXmE4r/JNFjKVB7iOOQRVDNgPrryyd7ucJW++CTvehsMGwys33MlgNnMxt/Iqw5NX65C+UYy+3J54Yu/P+jtUyGe9u4/m7a1TTjnlnbPPPvvNsWPHHlNXV9c6fvz4j1zT27p1a/WUKVNGtba2CuDaa6/9oCLsqFGjWsePH/+5N954o9+NN974yoABAz5yNj979uxNF1544ch58+Yd9sUvfnFbR/sVV1zRvGbNmtojjzzymJqampgxY0bzVVdd1dzY2PjCZZddNnz79u3Vu3bt0qxZszbvafKvr6/fefXVV782ceLEMe3t7fTr1y/mzZv36u6S//Tp09+cNWvWiFtvvXVwY2PjCzNnzhyxffv26ohQT6b1raja/j1R7tr+1nsOPzwpttbZxImwdGnv9ycrnnkmeSquK+++W7k1fqxrWartX/g0QLn70pv2dkpfs4pw553F2y++uHf7kTXHHpvcgu7Kg5l68NYsH3ytzjLjS19KnvTqfOX13HPL058s+cY34A9/gNtu+/i2Bx+Ec875eLtZX3H33Xe/XO4+9DU+87dMufTSj65nfYxZb1q4sPiYzD//uff7YmXT3t7e7k9VBUh/T12OQHXyt0zpXMhvwIDy9COrnn46edy+0IYN5emLlUVTc3Pzgf4C0Le1t7erubn5QKCpq3182d8y54QTkqkJAEaMKGtXMmnLlmSA3650bPHWbpcXsUrV1tZ24aZNmxZu2rRpLD557Mvagaa2trYLu9rByd8y56GHkqKDAFOnlrcvWVRTA+vWwciRyfq+errN+r76+votgD9VGeBvbpY5gwbBQQcly9/5Tnn7klUjRsC99ybL+6qujZn1Hid/y6Sf/CT52fElwPa9M8/0lyuzSuXkb5l07rkwZUq5e5F9P/xhUkTJg/7MKovv+Vtm3X9/uXuQD66eaFZ5fOZvZmaWM07+ZmZmOePkb2ZmljNO/mZmZjlTluQv6TxJz0pql9TQadscSeskrZZ0ekF7vaSV6bZ5kqu2m5mZ9US5zvybgHOA3xc2SjoamAYcA0wGbpFUnW6eD1wEjE5fk3utt2ZmZhlSluQfEc9HxOoim84EGiOiNSJeAtYB4yUdDhwQEU9ERAB3AGf1YpfNzMwyo6/d868D1hesb0jb6tLlzu1FSbpI0nJJy5ubm0vSUTMzs0pVsiI/kpYChxXZNDci7uvqsCJtsZv2oiJiAbAAoKGhocv9zMzM8qhkyT8iJvXgsA3AsIL1ocDrafvQIu1mZmbWTX3tsv8iYJqkWkkjSQb2PRkRG4Htkk5KR/lfAHR19cDMzMx2o1yP+p0taQPwBeC3kh4CiIhngbuA54DfAZdExK70sFnAQpJBgC8Ai3u942ZmZhmgZPB8djU0NMTy5cvL3Q0zs4oi6emIaPjkPa0S9bXL/mZmZlZiTv5mZmY54+RvZmaWM07+ZmZmOePkb2ZmljNO/mZmZjnj5G9mZpYzTv5mZmY54+RvZmaWM07+ZmZmOePkb2ZmljNO/mZmZjnj5G9mZpYzTv5mZmY54+RvZmaWM07+ZmZmOePkb2ZmljNO/mZmZjnj5G9mZpYzTv5mZmY5U5bkL+kGSaskPSPpvyUdVLBtjqR1klZLOr2gvV7SynTbPEkqR9/NzMwqXbnO/JcAYyPiWGANMAdA0tHANOAYYDJwi6Tq9Jj5wEXA6PQ1ubc7bWZmlgVlSf4R8XBEtKWry4Ch6fKZQGNEtEbES8A6YLykw4EDIuKJiAjgDuCsXu+4mZlZBvSFe/4zgcXpch2wvmDbhrStLl3u3F6UpIskLZe0vLm5eR9318zMrLLVlOqNJS0FDiuyaW5E3JfuMxdoA37ZcViR/WM37UVFxAJgAUBDQ0OX+5mZmeVRyZJ/REza3XZJM4ApwMT0Uj4kZ/TDCnYbCryetg8t0m5mZmbdVK7R/pOB2cDUiHinYNMiYJqkWkkjSQb2PRkRG4Htkk5KR/lfANzX6x03MzPLgJKd+X+CHwG1wJL0ib1lEXFxRDwr6S7gOZLbAZdExK70mFnA7cB+JGMEFn/sXc3MzOwTlSX5R8So3Wy7DriuSPtyYGwp+2VmZpYHfWG0v5mZmfUiJ38zM7OccfI3MzPLGSd/MzOznHHyNzMzyxknfzMzs5xx8jczM8sZJ38zM7OccfI3MzPLGSd/MzOznHHyNzMzyxknfzMzs5xx8jczM8sZJ38zM7OccfI3MzPLGSd/MzOznHHyNzMzyxknfzMzs5xx8jczM8sZJ38zM7OcKUvyl3SNpGckrZD0sKQhBdvmSFonabWk0wva6yWtTLfNk6Ry9N3MzKzSlevM/4aIODYijgMeAP4VQNLRwDTgGGAycIuk6vSY+cBFwOj0NbnXe21mZpYBZUn+EbGtYHV/INLlM4HGiGiNiJeAdcB4SYcDB0TEExERwB3AWb3aaTMzs4yoKdc/LOk64AKgBfjrtLkOWFaw24a07f10uXN7V+99EclVAoAdklbvo26X0iDg/8rdiRLJcmzg+Cqd4yvus/u6I9Z3lCz5S1oKHFZk09yIuC8i5gJzJc0BLgX+DSh2Hz92015URCwAFnS/1+UjaXlENJS7H6WQ5djA8VU6x2d5VLLkHxGT9nDXXwG/JUn+G4BhBduGAq+n7UOLtJuZmVk3lWu0/+iC1anAqnR5ETBNUq2kkSQD+56MiI3AdkknpaP8LwDu69VOm5mZZUS57vn/QNLngHbgFeBigIh4VtJdwHNAG3BJROxKj5kF3A7sByxOX1lSUbcpuinLsYHjq3SOz3JHyeB5MzMzywtX+DMzM8sZJ38zM7OccfIvM0mT01LG6yR9t9z96QlJwyQ9Jul5Sc9KujxtP0TSEklr058HFxxTtIxzXyWpWtKfJD2QrmcptoMk/UbSqvR3+IWMxXdF+nfZJOnXkvpXcnyS/kvSFklNBW3djscl0/PNyb+M0tLFNwNfAY4GvpaWOK40bcC3I+Io4CTgkjSO7wKPRMRo4JF0/ZPKOPdVlwPPF6xnKbabgN9FxJHAOJI4MxGfpDrgMqAhIsYC1ST9r+T4bufj5c17Eo9LpueYk395jQfWRcSLEfEe0EhS4riiRMTGiPjfdHk7SfKoI4nlZ+luP+PDksxFyzj3bq/3nKShwBnAwoLmrMR2APAl4DaAiHgvIraSkfhSNcB+kmqAASQ1Qio2voj4PfBmp+ZuxeOS6ebkX151wPqC9d2WLa4EkkYAxwN/BAanNRpIfx6a7lZpcd8IfIfk0dQOWYntCKAZ+Gl6W2OhpP3JSHwR8RrwH8CrwEagJSIeJiPxFehuPHV0o2S6ZY+Tf3l1q2xxXydpIHA38K1Okzd9bNcibX0ybklTgC0R8fSeHlKkrU/GlqoBTgDmR8TxwNukl4y7UFHxpfe+zwRGAkOA/SV9fXeHFGnrs/HtgX1SMt2yx8m/vLoqZ1xxJPUjSfy/jIh70ubN6eVF0p9b0vZKivuvgKmSXia5LTNB0i/IRmyQ9HdDRPwxXf8NyZeBrMQ3CXgpIpoj4n3gHuBkshNfh+7G45LpOefkX15PAaMljZT0KZKBOYvK3KduS0cJ3wY8HxH/WbBpETAjXZ7BhyWZi5Zx7q3+dkdEzImIoRExguT382hEfJ0MxAYQEZuA9WnFTYCJJBU2MxEfyeX+kyQNSP9OJ5KMSclKfB26FY9LphsR4VcZX8BXgTXACyQzHpa9Tz2I4RSSS4bPACvS11eBz5CMPF6b/jyk4Ji5acyrga+UO4Y9jPM04IF0OTOxAccBy9Pf373AwRmL73sk84c0AT8Hais5PuDXJOMXOqY6/2ZP4gEa0v8mLwA/Iq346lc+Xi7va2ZmljO+7G9mZpYzTv5mZmY54+RvZmaWM07+ZmZmOePkb2ZmljNO/mYlImk/Sf9TiolhJC0tnLnNzKw7nPzNSmcmcE9E7CrBe/8c+KcSvK+Z5YCTv1k3STpR0jPpvPD7p3PFjy2y63TSqmmSTkuvAtwlaY2kH0iaLunJdE71v0j3u13SfEmPSXpR0qnp/O3PS7q94L0XAV8rebBmlkk15e6AWaWJiKckLQKuBfYDfhERTYX7pOWaj4iIlwuaxwFHkUzH+iKwMCLGS7oc+GfgW+l+BwMTgKnA/STzC1wIPCXpuIhYERFvpSVbPxMRb5QsWDPLJJ/5m/XMvwN/Q1Ii9foi2wcBWzu1PRURGyOilaSk6sNp+0pgRMF+90dSenMlsDkiVkZEO/Bsp/22kMxUZ2bWLU7+Zj1zCDAQ+DTQv8j2d4u0txYstxest/PRq3CtRfYptl//9N8xM+sWJ3+znlkA/AvwS+CHnTdGxFtAtaRiXwz2WjoT22HAy6V4fzPLNid/s26SdAHQFhG/An4AnChpQpFdHyaZ8bAU6oFlEdFWovc3swzzrH5mJSLpeODKiPj7Erz3TcCiiHhkX7+3mWWfz/zNSiQi/gQ8VooiP0CTE7+Z9ZTP/M3MzHLGZ/5mZmY54+RvZmaWM07+ZmZmOePkb2ZmljNO/mZmZjnz/7bgkAyaccZkAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#set up node and element arrays\n",
"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",
"\n",
"#determine x and y coordinates\n",
"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",
"#determine coordinates for the structure\n",
"r = np.block([n[1:3] for n in nodes])\n",
"\n",
"#plot undeformed truss\n",
"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",
"plt.axis(l*np.array([-0.5,3.5,-1,1.5]));\n",
"\n",
"Ff=np.zeros(2*len(nodes)-3)\n",
"Ff[5]=-100\n",
"# solve for uf (the joints without constraints)\n",
"uf_al = np.linalg.solve(E_al*A*K[2:13,2:13],Ff)\n",
"u=np.zeros(2*len(nodes))\n",
"u[2:13]=uf_al\n",
"\n",
"# step 2 solve for F (the solution should include reactions and applied forces)\n",
"F=E_al*A*K@u\n",
"\n",
"#set scale\n",
"s = 3\n",
"\n",
"#plot deformed truss\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],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.xlabel('x (mm)')\n",
"plt.ylabel('y (mm)')\n",
"plt.title('Aluminum Deformation (scale= {:.1f}x)'.format(s))\n",
"plt.legend(bbox_to_anchor=(1,0.5));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. Determine cross-sectional area\n",
"\n",
"a. Using aluminum, what is the minimum cross-sectional area to keep total y-deflections $<0.2~mm$?\n",
"\n",
"b. Using steel, what is the minimum cross-sectional area to keep total y-deflections $<0.2~mm$?\n",
"\n",
"c. What are the weights of the aluminum and steel trusses with the chosed cross-sectional areas?\n",
"\n",
"d. The current price (2020/03) of [aluminum](https://tradingeconomics.com/commodity/aluminum) is 1545 dollars/Tonne and [steel](https://tradingeconomics.com/commodity/steel) is 476 dollars/Tonne [2]. Which material is cheaper to create the truss?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A."
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The smallest cross-sectional area of steel required for y deflections of < 0.2 mm is 2.6875000000000004 mm^2.\n"
]
}
],
"source": [
"#array for u values along the y direction\n",
"u_st_y = np.array([u_st[1],u_st[3],u_st[5],u_st[7],u_st[9]])\n",
"\n",
"#find the smallest of those values\n",
"u_st_min = abs(np.min(u_st_y))\n",
"\n",
"#calculate area required for that smallest value\n",
"A_st_min = (A*u_st_min)/0.2\n",
"\n",
"print(\"The smallest cross-sectional area of steel required for y deflections of < 0.2 mm is {} mm^2.\".format(A_st_min))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### B."
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The smallest cross-sectional area of aluminum required for y deflections of < 0.2 mm is 7.678571428571428 mm^2.\n"
]
}
],
"source": [
"#array for u values along the y direction\n",
"u_al_y = np.array([u_al[1],u_al[3],u_al[5],u_al[7],u_al[9]])\n",
"\n",
"#find the smallest of those values\n",
"u_al_min = abs(np.min(u_al_y))\n",
"\n",
"#calculate area required for that smallest value\n",
"A_al_min = (A*u_al_min)/0.2\n",
"\n",
"print(\"The smallest cross-sectional area of aluminum required for y deflections of < 0.2 mm is {} mm^2.\".format(A_al_min))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### C."
]
},
{
"cell_type": "code",
"execution_count": 276,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The total weight of the steel truss is 0.7003696218750001 N.\n",
"The total weight of the aluminum truss is 0.6711616607142857 N.\n"
]
}
],
"source": [
"#find total volue of truss using 11 bars of steel 300 mm long with the stated minimum cross-sectional area\n",
"V_tot_st = A_st_min * 300 * 11# mm^3\n",
"V_tot_al = A_al_min * 300 * 11# mm^3\n",
"\n",
"#multiply volume by density to get mass (density of steel = 8.05e-6 kg/mm^3 and denstity of aluminum - 2.7e-6 kg/mm^3 courtesy of Google)\n",
"M_st = V_tot_st * 8.05e-6# kg\n",
"M_al = V_tot_al * 2.7e-6# kg\n",
"\n",
"#multiply mass by gravity to get weight (g = 9.81 m/s^2)\n",
"W_st = M_st * 9.81# N\n",
"W_al = M_al * 9.81# N\n",
"print (\"The total weight of the steel truss is {} N.\".format(W_st))\n",
"print (\"The total weight of the aluminum truss is {} N.\".format(W_al))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### D."
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The price of the steel truss is 0.03 $.\n",
"The price of the aluminum truss is 0.11 $.\n",
"Comparing the two, we see that the steel truss is significantly cheaper.\n"
]
}
],
"source": [
"#convert weights form Newtons to Tonnes (conversion factor courtesy of Google)\n",
"W_st_ton = W_st * (1/9806.65)\n",
"W_al_ton = W_st * (1/9806.65)\n",
"\n",
"#multiply weight in tonnes by price per tonne for total price\n",
"price_st = W_st_ton * 476\n",
"price_al = W_al_ton * 1545\n",
"\n",
"print(\"The price of the steel truss is {} $.\".format(round(price_st,2)))\n",
"print(\"The price of the aluminum truss is {} $.\".format(round(price_al,2)))\n",
"print(\"Comparing the two, we see that the steel truss is significantly cheaper.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4. Future Predictions using past data\n",
"\n",
"The data from the price of aluminum and steel are in the data files `../data/al_prices.csv` and `../data/steel_price.csv`. If you're going to produce these supports for 5 years, how would you use the price history of steel and aluminum to compare how much manufacturing will cost?\n",
"\n",
"a. Separate the aluminum and steel data points into training and testing data (70-30%-split)\n",
"\n",
"b. Fit the training data to polynomial functions of order n. _Choose the highest order._\n",
"\n",
"c. Plot the error between your model and the training data and the error between your model and you testing data as a function of the polynomial function order, n. [Create the training-testing curves](../notebooks/03_Linear-regression-algebra.ipynb)\n",
"\n",
"d. Choose a polynomial function to predict the price of aluminum and steel in the year 2025. \n",
"\n",
"e. Based upon your price model would you change your answer in __3.b__?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### A."
]
},
{
"cell_type": "code",
"execution_count": 346,
"metadata": {},
"outputs": [],
"source": [
"# import files\n",
"steel = pd.read_csv('../data/steel_price.csv')\n",
"aluminum = pd.read_csv('../data/al_price.csv')\n",
"\n",
"# assign years to arrays\n",
"st_year = steel['Year'].values\n",
"al_year = aluminum['Year'].values\n",
"\n",
"# assign prices to arrays\n",
"st_price = steel['dollars/MT'].values\n",
"al_price = aluminum['dollars/MT'].values\n",
"\n",
"#select seed and training percentage\n",
"np.random.seed(99)\n",
"train_per = 0.7\n",
"\n",
"#initialize random training and testing indices\n",
"i_rand_st = random.sample(range(0,len(st_year)),len(st_year))\n",
"i_rand_al = random.sample(range(0,len(al_year)),len(al_year))\n",
"\n",
"i_st_train = i_rand_st[:int(len(st_year)*train_per)]\n",
"i_st_test = i_rand_st[int(len(st_year)*train_per):]\n",
"\n",
"i_al_train = i_rand_al[:int(len(al_year)*train_per)]\n",
"i_al_test = i_rand_al[int(len(al_year)*train_per):]\n",
"\n",
"#select training data\n",
"st_year_train = st_year[np.sort(i_st_train)]\n",
"al_year_train = al_year[np.sort(i_al_train)]\n",
"\n",
"st_price_train = st_price[np.sort(i_st_train)]\n",
"al_price_train = al_price[np.sort(i_al_train)]\n",
"\n",
"#select testing data\n",
"st_year_test = st_year[np.sort(i_st_test)]\n",
"al_year_test = al_year[np.sort(i_al_test)]\n",
"\n",
"st_price_test = st_price[np.sort(i_st_test)]\n",
"al_price_test = al_price[np.sort(i_al_test)]\n",
"\n",
"#create Z matrices\n",
"Z_st_train = np.block([[st_year_train**0]]).T\n",
"Z_st_test = np.block([[st_year_test**0]]).T\n",
"\n",
"Z_al_train = np.block([[al_year_train**0]]).T\n",
"Z_al_test = np.block([[al_year_test**0]]).T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### B."
]
},
{
"cell_type": "code",
"execution_count": 347,
"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": [
"n = 11\n",
"SSE_st_train = np.zeros(n)\n",
"SSE_st_test = np.zeros(n)\n",
"\n",
"for i in range (1,n):\n",
" Z_st_train = np.hstack((Z_st_train,st_year_train.reshape(-1,1)**i))\n",
" Z_st_test = np.hstack((Z_st_test,st_year_test.reshape(-1,1)**i))\n",
" A_st = np.linalg.solve(Z_st_train.T@Z_st_train,Z_st_train.T@st_price_train)\n",
" SSE_st_train[i] = np.sum((st_price_train-Z_st_train@A_st)**2)/len(st_price_train)\n",
" SSE_st_test[i] = np.sum((st_price_test-Z_st_test@A_st)**2)/len(st_price_test)\n",
"\n",
"\n",
"plt.plot(st_year_train, st_price_train, label = 'given data')\n",
"plt.plot(st_year_train, Z_st_train@A_st, label = 'polynomial fit')\n",
"plt.title('Price of steel over time')\n",
"plt.xlabel('Year')\n",
"plt.ylabel('Price ($ / MT)')\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 348,
"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": [
"n = 11\n",
"SSE_al_train = np.zeros(n)\n",
"SSE_al_test = np.zeros(n)\n",
"\n",
"for i in range (1,n):\n",
" Z_al_train = np.hstack((Z_al_train,al_year_train.reshape(-1,1)**i))\n",
" Z_al_test = np.hstack((Z_al_test,al_year_test.reshape(-1,1)**i))\n",
" A_al = np.linalg.solve(Z_al_train.T@Z_al_train,Z_al_train.T@al_price_train)\n",
" SSE_al_train[i] = np.sum((al_price_train-Z_al_train@A_al)**2)/len(al_price_train)\n",
" SSE_al_test[i] = np.sum((al_price_test-Z_al_test@A_al)**2)/len(al_price_test)\n",
"\n",
"\n",
"plt.plot(al_year_train, al_price_train, label = 'given data')\n",
"plt.plot(al_year_train, Z_al_train@A_al, label = 'polynomial fit')\n",
"plt.title('Price of aluminum over time')\n",
"plt.xlabel('Year')\n",
"plt.ylabel('Price ($ / MT)')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### C."
]
},
{
"cell_type": "code",
"execution_count": 353,
"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.semilogy(np.arange(1,n),SSE_st_train[1:],label='training error')\n",
"plt.semilogy(np.arange(1,n),SSE_st_test[1:],label='testing error')\n",
"plt.title('Training error vs testing error of steel')\n",
"plt.ylabel('Total error')\n",
"plt.xlabel('Polynomial Order')\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 355,
"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.semilogy(np.arange(1,n),SSE_al_train[1:],label='training error')\n",
"plt.semilogy(np.arange(1,n),SSE_al_test[1:],label='testing error')\n",
"plt.title('Training error vs testing error of aluminum')\n",
"plt.ylabel('Total error')\n",
"plt.xlabel('Polynomial Order')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### D."
]
},
{
"cell_type": "code",
"execution_count": 362,
"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": [
"st_year_ext = np.linspace(2020,2025)\n",
"Z_st_ext = np.block([[st_year_ext**0],[st_year_ext**1]]).T\n",
"Z_st = np.block([[st_year**0],[st_year**1]]).T\n",
"n = 11\n",
"for i in range(2,n+1):\n",
" Z_st = np.hstack((Z_st,st_year.reshape(-1,1)**i))\n",
" Z_st_ext = np.hstack((Z_st_ext,st_year_ext.reshape(-1,1)**i))\n",
" A = np.linalg.solve(Z_st.T@Z_st,Z_st.T@st_price)\n",
"\n",
"plt.plot (st_year_ext, Z_st_ext@A);"
]
},
{
"cell_type": "code",
"execution_count": 365,
"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": [
"al_year_ext = np.linspace(2020,2025)\n",
"Z_al_ext = np.block([[al_year_ext**0],[al_year_ext**1]]).T\n",
"Z_al = np.block([[al_year**0],[al_year**1]]).T\n",
"n = 11\n",
"for i in range(2,n+1):\n",
" Z_al = np.hstack((Z_al,al_year.reshape(-1,1)**i))\n",
" Z_al_ext = np.hstack((Z_al_ext,al_year_ext.reshape(-1,1)**i))\n",
" A = np.linalg.solve(Z_al.T@Z_al,Z_al.T@al_price)\n",
"\n",
"plt.plot (al_year_ext,Z_al_ext@A);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### E."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Based purely on the extrapolated graphs, yes, I would change my answer to problem 3 b. According to the graph, aluminum will actually be worth -35000 dollars per tonne by 2025, causing you to gain money when you buy it. This however is of course due to our polynomial function being unable to account for fluctuations in price in the future and thus continuing on its downward trend from 2020. In reality, it is very unlikely that aluminum will cost less than steel, and thus it will probably always be more cost-efficient to build the steel truss (not to mention that the steel truss is significantly stronger as well)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# References\n",
"\n",
"1. <https://en.wikipedia.org/wiki/Direct_stiffness_method>\n",
"\n",
"2. Aluminum and steel price history on <https://tradingeconomics.com>"
]
}
],
"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
}