Permalink
Cannot retrieve contributors at this time
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?
compmech-project04/Linear_Algebra-project.ipynb
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
915 lines (915 sloc)
192 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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": 23, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[[ 0.00416667 0.00144338 -0.00083333 -0.00144338 -0.00333333 0.\n", | |
" 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [ 0.00144338 0.0025 -0.00144338 -0.0025 0. 0.\n", | |
" 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [-0.00083333 -0.00144338 0.005 0. -0.00083333 0.00144338\n", | |
" -0.00333333 0. 0. 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [-0.00144338 -0.0025 0. 0.005 0.00144338 -0.0025\n", | |
" 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [-0.00333333 0. -0.00083333 0.00144338 0.00833333 0.\n", | |
" -0.00083333 -0.00144338 -0.00333333 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [ 0. 0. 0.00144338 -0.0025 0. 0.005\n", | |
" -0.00144338 -0.0025 0. 0. 0. 0.\n", | |
" 0. 0. ]\n", | |
" [ 0. 0. -0.00333333 0. -0.00083333 -0.00144338\n", | |
" 0.00833333 0. -0.00083333 0.00144338 -0.00333333 0.\n", | |
" 0. 0. ]\n", | |
" [ 0. 0. 0. 0. -0.00144338 -0.0025\n", | |
" 0. 0.005 0.00144338 -0.0025 0. 0.\n", | |
" 0. 0. ]\n", | |
" [ 0. 0. 0. 0. -0.00333333 0.\n", | |
" -0.00083333 0.00144338 0.00833333 0. -0.00083333 -0.00144338\n", | |
" -0.00333333 0. ]\n", | |
" [ 0. 0. 0. 0. 0. 0.\n", | |
" 0.00144338 -0.0025 0. 0.005 -0.00144338 -0.0025\n", | |
" 0. 0. ]\n", | |
" [ 0. 0. 0. 0. 0. 0.\n", | |
" -0.00333333 0. -0.00083333 -0.00144338 0.005 0.\n", | |
" -0.00083333 0.00144338]\n", | |
" [ 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. -0.00144338 -0.0025 0. 0.005\n", | |
" 0.00144338 -0.0025 ]\n", | |
" [ 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. -0.00333333 0. -0.00083333 0.00144338\n", | |
" 0.00416667 -0.00144338]\n", | |
" [ 0. 0. 0. 0. 0. 0.\n", | |
" 0. 0. 0. 0. 0.00144338 -0.0025\n", | |
" -0.00144338 0.0025 ]]\n" | |
] | |
} | |
], | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import pandas as pd\n", | |
"import random\n", | |
"\n", | |
"fea_arrays = np.load('./fea_arrays.npz')\n", | |
"K=fea_arrays['K']\n", | |
"print(K)\n", | |
"\n", | |
"def LUNaive(A):\n", | |
" '''LUNaive: naive LU decomposition\n", | |
" L,U = LUNaive(A): LU decomposition without pivoting.\n", | |
" solution method requires floating point numbers, \n", | |
" as such the dtype is changed to float\n", | |
" \n", | |
" Arguments:\n", | |
" ----------\n", | |
" A = coefficient matrix\n", | |
" returns:\n", | |
" ---------\n", | |
" L = Lower triangular matrix\n", | |
" U = Upper triangular matrix\n", | |
" '''\n", | |
" [m,n] = np.shape(A)\n", | |
" if m!=n: error('Matrix A must be square')\n", | |
" nb = n+1\n", | |
" # Gauss Elimination\n", | |
" U = A.astype(float)\n", | |
" L = np.eye(n)\n", | |
"\n", | |
" for k in range(0,n-1):\n", | |
" for i in range(k+1,n):\n", | |
" if U[k,k] != 0.0:\n", | |
" factor = U[i,k]/U[k,k]\n", | |
" L[i,k]=factor\n", | |
" U[i,:] = U[i,:] - factor*U[k,:]\n", | |
" return L,U\n", | |
"\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": [ | |
"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": "code", | |
"execution_count": 74, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The condition of K for all values is 1.4577532625238035e+17\n", | |
"The error for all values is 14.577532625238035\n", | |
"This matrix is illconditioned. We are not considering the boundary conditions, which results in linearly idependent equations and high levels of error\n", | |
"The condition of K for 2:13 is 52.23542514351006\n", | |
"The error for 2:13 is 5.223542514351006e-15\n" | |
] | |
} | |
], | |
"source": [ | |
"#part a\n", | |
"\n", | |
"conditionallvalues=np.linalg.cond(K)\n", | |
"condition2to13=np.linalg.cond(K[2:13,2:13])\n", | |
"\n", | |
"errorallvalues=conditionallvalues*(1e-16)\n", | |
"error2to13=condition2to13*(1e-16)\n", | |
"\n", | |
"print('The condition of K for all values is',conditionallvalues)\n", | |
"print('The error for all values is',errorallvalues)\n", | |
"\n", | |
"#part b:\n", | |
"print('This matrix is illconditioned. We are not considering the boundary conditions, which results in linearly idependent equations and high levels of error')\n", | |
"\n", | |
"#part c:\n", | |
"print('The condition of K for 2:13 is',condition2to13)\n", | |
"print('The error for 2:13 is',error2to13)\n", | |
"\n" | |
] | |
}, | |
{ | |
"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": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Deflections for Steel\n", | |
"u1x= 0.0\n", | |
"u2x= 1.9485571585149877\n", | |
"u3x= 0.43301270189221935\n", | |
"u4x= 1.0825317547305489\n", | |
"u5x= 1.7320508075688772\n", | |
"u6x= 0.2165063509461101\n", | |
"u7x= 2.165063509461097\n", | |
"u1y= 0.0\n", | |
"u2y= -2.125\n", | |
"u3y= -4.0\n", | |
"u4y= -5.375\n", | |
"u5y= -4.0\n", | |
"u6y= -2.125\n", | |
"u7y= 0.0\n", | |
"Forces on Steel\n", | |
"F1x= 0.0\n", | |
"F2x= 1.4210854715202004e-14\n", | |
"F3x= 1.4210854715202004e-14\n", | |
"F4x= 3.552713678800501e-14\n", | |
"F5x= 0.0\n", | |
"F6x= 1.4210854715202004e-14\n", | |
"F7x= 2.842170943040401e-14\n", | |
"F1y= 50.00000000000001\n", | |
"F2y= 0.0\n", | |
"F3y= 7.105427357601002e-15\n", | |
"F4y= -100.0\n", | |
"F5y= 3.552713678800501e-15\n", | |
"F6y= 1.4210854715202004e-14\n", | |
"F7y= 50.000000000000036\n" | |
] | |
}, | |
{ | |
"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": [ | |
"#part a\n", | |
"\n", | |
"LUmatrix=K[2:13,2:13]\n", | |
"\n", | |
"L,U=LUNaive(LUmatrix)\n", | |
"\n", | |
"#part b\n", | |
"\n", | |
"A=0.1\n", | |
"E1=200000\n", | |
"E2=70000\n", | |
"\n", | |
"F=np.zeros(11)\n", | |
"F[5]=-100\n", | |
"\n", | |
"u1=solveLU(L,U,F/(E1*A))\n", | |
"u2=solveLU(L,U,F/(E2*A))\n", | |
"\n", | |
"usteel=np.zeros(14)\n", | |
"ualuminum=np.zeros(14)\n", | |
"\n", | |
"for i in range(len(u1)):\n", | |
" usteel[i+2]=u1[i]\n", | |
" \n", | |
"for i in range(len(u2)):\n", | |
" ualuminum[i+2]=u2[i]\n", | |
"\n", | |
" \n", | |
"#part c\n", | |
"\n", | |
"Fsteel=K*E1*A@usteel\n", | |
"Faluminum=K*E2*A@ualuminum\n", | |
"\n", | |
"print('Deflections for Steel')\n", | |
"print('u1x=',usteel[0])\n", | |
"print('u2x=',usteel[2])\n", | |
"print('u3x=',usteel[4])\n", | |
"print('u4x=',usteel[6])\n", | |
"print('u5x=',usteel[8])\n", | |
"print('u6x=',usteel[10])\n", | |
"print('u7x=',usteel[12])\n", | |
"\n", | |
"print('u1y=',usteel[1])\n", | |
"print('u2y=',usteel[3])\n", | |
"print('u3y=',usteel[5])\n", | |
"print('u4y=',usteel[7])\n", | |
"print('u5y=',usteel[9])\n", | |
"print('u6y=',usteel[11])\n", | |
"print('u7y=',usteel[13])\n", | |
"\n", | |
"\n", | |
"\n", | |
"print('Forces on Steel')\n", | |
"print('F1x=',Fsteel[0])\n", | |
"print('F2x=',Fsteel[2])\n", | |
"print('F3x=',Fsteel[4])\n", | |
"print('F4x=',Fsteel[6])\n", | |
"print('F5x=',Fsteel[8])\n", | |
"print('F6x=',Fsteel[10])\n", | |
"print('F7x=',Fsteel[12])\n", | |
"\n", | |
"print('F1y=',Fsteel[1])\n", | |
"print('F2y=',Fsteel[3])\n", | |
"print('F3y=',Fsteel[5])\n", | |
"print('F4y=',Fsteel[7])\n", | |
"print('F5y=',Fsteel[9])\n", | |
"print('F6y=',Fsteel[11])\n", | |
"print('F7y=',Fsteel[13])\n", | |
"\n", | |
"#part d\n", | |
"\n", | |
"l=300 \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", | |
"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", | |
"\n", | |
"s=5\n", | |
"plt.plot(r[ix],r[iy],'-',color='k');\n", | |
"plt.plot(r[ix]+usteel[ix]*s,r[iy]+usteel[iy]*s,'-',color='r');\n", | |
"plt.quiver(r[ix],r[iy],Fsteel[ix],Fsteel[iy],label='Force');\n", | |
"plt.quiver(r[ix],r[iy],usteel[ix],usteel[iy],color='b',label='Displacement');\n", | |
"plt.xlabel('x (mm)');\n", | |
"plt.ylabel('y (mm)');\n", | |
"plt.title('Steel Truss Configuration');\n", | |
"plt.legend();\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Deflections for Aluminum\n", | |
"u1x= 0.0\n", | |
"u2x= 5.567306167185677\n", | |
"u3x= 1.237179148263484\n", | |
"u4x= 3.09294787065871\n", | |
"u5x= 4.948716593053935\n", | |
"u6x= 0.6185895741317425\n", | |
"u7x= 6.1858957413174185\n", | |
"u1y= 0.0\n", | |
"u2y= -6.071428571428571\n", | |
"u3y= -11.428571428571427\n", | |
"u4y= -15.357142857142856\n", | |
"u5y= -11.428571428571429\n", | |
"u6y= -6.071428571428571\n", | |
"u7y= 0.0\n", | |
"Forces on Aluminum\n", | |
"F1x= 0.0\n", | |
"F2x= -2.842170943040401e-14\n", | |
"F3x= 0.0\n", | |
"F4x= 3.6008369692751166e-14\n", | |
"F5x= 0.0\n", | |
"F6x= 1.4210854715202004e-14\n", | |
"F7x= 2.842170943040401e-14\n", | |
"F1y= 50.000000000000014\n", | |
"F2y= -2.6645352591003757e-14\n", | |
"F3y= 4.973799150320701e-14\n", | |
"F4y= -100.00000000000006\n", | |
"F5y= -5.684341886080802e-14\n", | |
"F6y= 2.1316282072803006e-14\n", | |
"F7y= 50.00000000000002\n" | |
] | |
}, | |
{ | |
"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": [ | |
"#part c\n", | |
"\n", | |
"print('Deflections for Aluminum')\n", | |
"print('u1x=',ualuminum[0])\n", | |
"print('u2x=',ualuminum[2])\n", | |
"print('u3x=',ualuminum[4])\n", | |
"print('u4x=',ualuminum[6])\n", | |
"print('u5x=',ualuminum[8])\n", | |
"print('u6x=',ualuminum[10])\n", | |
"print('u7x=',ualuminum[12])\n", | |
"\n", | |
"print('u1y=',ualuminum[1])\n", | |
"print('u2y=',ualuminum[3])\n", | |
"print('u3y=',ualuminum[5])\n", | |
"print('u4y=',ualuminum[7])\n", | |
"print('u5y=',ualuminum[9])\n", | |
"print('u6y=',ualuminum[11])\n", | |
"print('u7y=',ualuminum[13])\n", | |
"\n", | |
"print('Forces on Aluminum')\n", | |
"print('F1x=',Faluminum[0])\n", | |
"print('F2x=',Faluminum[2])\n", | |
"print('F3x=',Faluminum[4])\n", | |
"print('F4x=',Faluminum[6])\n", | |
"print('F5x=',Faluminum[8])\n", | |
"print('F6x=',Faluminum[10])\n", | |
"print('F7x=',Faluminum[12])\n", | |
"\n", | |
"print('F1y=',Faluminum[1])\n", | |
"print('F2y=',Faluminum[3])\n", | |
"print('F3y=',Faluminum[5])\n", | |
"print('F4y=',Faluminum[7])\n", | |
"print('F5y=',Faluminum[9])\n", | |
"print('F6y=',Faluminum[11])\n", | |
"print('F7y=',Faluminum[13])\n", | |
"\n", | |
"#part d\n", | |
"\n", | |
"plt.plot(r[ix],r[iy],'-',color='k');\n", | |
"plt.plot(r[ix]+ualuminum[ix]*s,r[iy]+ualuminum[iy]*s,'-',color='r');\n", | |
"plt.quiver(r[ix],r[iy],Faluminum[ix],Faluminum[iy],label='Force');\n", | |
"plt.quiver(r[ix],r[iy],ualuminum[ix],ualuminum[iy],color='b',label='Displacement');\n", | |
"plt.xlabel('x (mm)');\n", | |
"plt.ylabel('y (mm)');\n", | |
"plt.title('Aluminum Truss Configuration');\n", | |
"plt.legend();\n" | |
] | |
}, | |
{ | |
"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": "code", | |
"execution_count": 76, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The minimum cross-sectional area for aluminum is 7.678571428571428\n", | |
"The minimum cross-sectional area for steel is 2.6875\n" | |
] | |
} | |
], | |
"source": [ | |
"#part a,b:\n", | |
"\n", | |
"ual=np.array([ualuminum[1],ualuminum[3],ualuminum[5],ualuminum[7],ualuminum[9]])\n", | |
"ust=np.array([usteel[1],usteel[3],usteel[5],usteel[7],usteel[9]])\n", | |
"\n", | |
"Aaluminum=A*(abs(min(ual))/0.2)\n", | |
"Asteel=A*(abs(min(ust))/0.2)\n", | |
"\n", | |
"print('The minimum cross-sectional area for aluminum in mm is',Aaluminum)\n", | |
"print('The minimum cross-sectional area for steel in mm is',Asteel)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The weight of the aluminum structure in N is 0.6736474446428571\n", | |
"The weight of the steel structure in N is 0.6829691343750001\n", | |
"The cost of the aluminum structure is 10206565.142330524\n", | |
"The cost of the steel structure is 3188060.0338650527\n", | |
"Thus we can see that the steel material is much cheaper to build the structure with\n" | |
] | |
} | |
], | |
"source": [ | |
"#part c\n", | |
"\n", | |
"n=11\n", | |
"g=9.81\n", | |
"length=300\n", | |
"totallength=n*length\n", | |
"\n", | |
"steelcrosssection=Asteel\n", | |
"aluminumcrosssection=Aaluminum\n", | |
"\n", | |
"aluminumdensity=2710e-9\n", | |
"steeldensity=7850e-9\n", | |
"\n", | |
"aluminumweight=aluminumdensity*aluminumcrosssection*totallength*g\n", | |
"steelweight=steeldensity*steelcrosssection*totallength*g\n", | |
"\n", | |
"print('The weight of the aluminum structure in N is',aluminumweight)\n", | |
"print('The weight of the steel structure in N is',steelweight)\n", | |
"\n", | |
"#part d:\n", | |
"\n", | |
"pricest=476\n", | |
"priceal=1545\n", | |
"\n", | |
"tonnestonewtons=9806.6\n", | |
"\n", | |
"costal=priceal*aluminumweight*tonnestonewtons\n", | |
"costst=pricest*steelweight*tonnestonewtons\n", | |
"\n", | |
"print('The cost of the aluminum structure is',costal)\n", | |
"print('The cost of the steel structure is',costst)\n", | |
"\n", | |
"print('Thus we can see that the steel material is much cheaper to build the structure with')" | |
] | |
}, | |
{ | |
"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": "code", | |
"execution_count": 82, | |
"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": [ | |
"#part a:\n", | |
"\n", | |
"alprices=pd.read_csv('../data/al_price.csv')\n", | |
"stprices=pd.read_csv('../data/steel_price.csv')\n", | |
"\n", | |
"aly=alprices['Year'].values\n", | |
"sty=stprices['Year'].values\n", | |
"\n", | |
"alynormal=(aly-aly.min())/(aly.max()-aly.min())\n", | |
"stynormal=(sty-sty.min())/(sty.max()-sty.min())\n", | |
"\n", | |
"alprice=alprices['dollars/MT'].values\n", | |
"stprice=stprices['dollars/MT'].values\n", | |
"\n", | |
"np.random.seed(42)\n", | |
"trainper=0.7\n", | |
"\n", | |
"irandal=random.sample(range(0,len(alynormal)),len(alynormal))\n", | |
"irandst=random.sample(range(0,len(stynormal)),len(stynormal))\n", | |
"\n", | |
"itestal=irandal[int(len(alynormal)*trainper):]\n", | |
"itestst=irandst[int(len(stynormal)*trainper):]\n", | |
"itrainal=irandal[:int(len(alynormal)*trainper)]\n", | |
"itrainst=irandst[:int(len(stynormal)*trainper)]\n", | |
"\n", | |
"alytrain=alynormal[np.sort(itrainal)]\n", | |
"alpricetrain=alprice[np.sort(itrainal)]\n", | |
"alytest=alynormal[np.sort(itestal)]\n", | |
"alpricetest=alprice[np.sort(itestal)]\n", | |
"\n", | |
"ztrainal=np.block([[alytrain**0]]).T\n", | |
"ztestal=np.block([[alytest**0]]).T\n", | |
"ztrainst=np.block([[stytrain**0]]).T\n", | |
"ztestst=np.block([[stytest**0]]).T\n", | |
"\n", | |
"stytrain=stynormal[np.sort(itrainst)]\n", | |
"stytest=stynormal[np.sort(itestst)]\n", | |
"stpricetrain=stprice[np.sort(itrainst)]\n", | |
"stpricetest=stprice[np.sort(itestst)]\n", | |
"\n", | |
"#part b:\n", | |
"\n", | |
"N=11\n", | |
"\n", | |
"SSEtrainal=np.zeros(N)\n", | |
"SSEtestal=np.zeros(N)\n", | |
"\n", | |
"SSEtrainst=np.zeros(N)\n", | |
"SSEtestst=np.zeros(N)\n", | |
"\n", | |
"for i in range(1,N):\n", | |
" ztrainal=np.hstack((ztrainal,alytrain.reshape(-1,1)**i))\n", | |
" ztestal=np.hstack((ztestal,alytest.reshape(-1,1)**i))\n", | |
" Aal=np.linalg.solve(ztrainal.T@ztrainal,ztrainal.T@alpricetrain)\n", | |
" SSEtrainal[i]=np.sum((alpricetrain-ztrainal@Aal)**2)/len(alpricetrain)\n", | |
" SSEtestal[i]=np.sum((alpricetest-ztestal@Aal)**2)/len(alpricetest)\n", | |
"\n", | |
"plt.plot(alytrain,alpricetrain,'o',label='Data Points');\n", | |
"plt.plot(alytrain,ztrainal@Aal,label='Fit');\n", | |
"plt.title('Aluminum Data vs Fit Line');\n", | |
"plt.xlabel('Time (Years)');\n", | |
"plt.ylabel('Prices ($/MT)');\n", | |
"plt.legend();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 83, | |
"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": [ | |
"for i in range(1,N):\n", | |
" ztrainst=np.hstack((ztrainst,stytrain.reshape(-1,1)**i))\n", | |
" ztestst=np.hstack((ztestst,stytest.reshape(-1,1)**i))\n", | |
" Ast=np.linalg.solve(ztrainst.T@ztrainst,ztrainst.T@stpricetrain)\n", | |
" SSEtrainst[i]=np.sum((stpricetrain-ztrainst@Ast)**2)/len(stpricetrain)\n", | |
" SSEtestst[i]=np.sum((stpricetest-ztestst@Ast)**2)/len(stpricetest)\n", | |
"\n", | |
"plt.plot(stytrain,stpricetrain,'o',label='Data Points');\n", | |
"plt.plot(stytrain,ztrainst@Ast,label='Fit');\n", | |
"plt.title('Steel Data vs Fit Line');\n", | |
"plt.xlabel('Time (Years)');\n", | |
"plt.ylabel('Prices ($/MT)');\n", | |
"plt.legend();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 84, | |
"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": [ | |
"#part c:\n", | |
"\n", | |
"plt.semilogy(np.arange(1,N),SSEtrainal[1:],label='Training Error');\n", | |
"plt.semilogy(np.arange(1,N),SSEtestal[1:],label='Testing Error');\n", | |
"plt.title('Aluminum Error');\n", | |
"plt.ylabel('Sum of Squares Error');\n", | |
"plt.xlabel('Polynomial Order');\n", | |
"plt.legend();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 85, | |
"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),SSEtrainst[1:],label='Training Error');\n", | |
"plt.semilogy(np.arange(1,N),SSEtestst[1:],label='Testing Error');\n", | |
"plt.title('Steel Error');\n", | |
"plt.ylabel('Sum of Squares Error');\n", | |
"plt.xlabel('Polynomial Order');\n", | |
"plt.legend();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The resulting price per ton for aluminum is 2377.4703859090805\n" | |
] | |
} | |
], | |
"source": [ | |
"#part d:\n", | |
"N=11\n", | |
"yal=np.linspace(2016,2025,len(alynormal))\n", | |
"ynormal=(yal-yal.min())/(yal.max()-yal.min())\n", | |
"\n", | |
"np.random.seed(42)\n", | |
"trainper=0.7\n", | |
"\n", | |
"irandomal=random.sample(range(0,len(ynormal)),len(ynormal))\n", | |
"itrainal=irandomal[:int(len(ynormal)*trainper)]\n", | |
"\n", | |
"newyal=ynormal[np.sort(itrainal)]\n", | |
"ztrainal=np.block([[newyal**0]]).T\n", | |
"\n", | |
"for i in range(1,N):\n", | |
" ztrainal=np.hstack((ztrainal,newyal.reshape(-1,1)**i))\n", | |
"\n", | |
"print('The resulting price per ton for aluminum is',(ztrainal@Aal)[-1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 95, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The resulting price per ton for steel is 268.1972759645432\n", | |
"This shows that steel is the far cheaper choice, which matches what was found in the previous question\n" | |
] | |
} | |
], | |
"source": [ | |
"trainper=0.7\n", | |
"N=10\n", | |
"yst=np.linspace(2016,2025,len(stynormal))\n", | |
"ynormal=(yst-yst.min())/(yst.max()-yst.min())\n", | |
"\n", | |
"irandomst=random.sample(range(0,len(ynormal)),len(ynormal))\n", | |
"itrainst=irandomst[:int(len(ynormal)*trainper)]\n", | |
"\n", | |
"newyst=ynormal[np.sort(itrainst)]\n", | |
"Ztrainst=np.block([[newyst**0]]).T\n", | |
"\n", | |
"for i in range(0,N):\n", | |
" Ztrainst=np.hstack((Ztrainst,newyst.reshape(-1,1)**i))\n", | |
" \n", | |
"print('The resulting price per ton for steel is',(Ztrainst@Ast)[-1])\n", | |
"\n", | |
"print('This shows that steel is the far cheaper choice, which matches what was found in the previous question')" | |
] | |
}, | |
{ | |
"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>" | |
] | |
}, | |
{ | |
"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 | |
} |