Skip to content
Permalink
9b0b2bcac0
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
933 lines (933 sloc) 161 KB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extra Material: Direct stiffness methof for Finite Element analysis (FEA)\n",
"\n",
"The direct stiffness approach looks at the stiffness of each individual element and adds them to the overall stiffness of the FEA structure. Starting with a single element, show below we have the following relation between forces applied and deformation\n",
"\n",
"![Single link element with forces applied to both ends](../images/link_elem.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\mathbf{F}_{el} = \\mathbf{K}_{el}\\mathbf{u}$\n",
"\n",
"where \n",
"\n",
"$\\mathbf{F}_{el}=\\left[\\begin{array}{c}\n",
" F_{1x}\\\\\n",
" F_{1y}\\\\\n",
" F_{2x}\\\\\n",
" F_{2y}\\end{array}\\right]$\n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\end{array}\\right]$, \n",
" \n",
"and \n",
"\n",
"$\\mathbf{K}_{el}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta & \\cos\\theta\\sin\\theta & -\\cos^2\\theta & -\\cos\\theta\\sin\\theta\\\\\n",
" \\cos\\theta\\sin\\theta & \\sin^2\\theta & -\\cos\\theta\\sin\\theta & -\\sin^2\\theta &\\\\\n",
" -\\cos^2\\theta & -\\cos\\theta\\sin\\theta & \\cos^2\\theta & \\cos\\theta\\sin\\theta\\\\\n",
" -\\cos\\theta\\sin\\theta & -\\sin^2\\theta & \\cos\\theta\\sin\\theta & \\sin^2\\theta &\\\\\n",
" \\end{array}\\right]$. \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a linear-elastic, small deformation FEA, we assume that the angle $\\theta$ remains constant before/after deformation. So our stiffness matrix, $\\mathbf{K}_{el}$ is constant once the geometry of the simulation is initialized. So, for a single link element that is deformed by $\\mathbf{u}$, the force that is applied to create that deformation is given by our first equation. \n",
"\n",
"Consider a single aluminum bar $(E=70~GPa)$, with cross-section of $1~mm^2$, and length of 1 meter. If it is initially at an angle of $45^{o}$ pinned at one end and stretched 2 mm to along the x-direction, we have the following deformation and stiffness, \n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" 2\\\\\n",
" 0\\end{array}\\right]~mm$, \n",
" \n",
"$\\mathbf{K}_{el}=70\\frac{N}{mm}\\left[\\begin{array}{cccc}\n",
" 1/2 & 1/2 & -1/2 & -1/2\\\\\n",
" 1/2 & 1/2 & -1/2 & -1/2 &\\\\\n",
" -1/2 & -1/2 & 1/2 & 1/2\\\\\n",
" -1/2 & -1/2 & 1/2 & 1/2 &\\\\\n",
" \\end{array}\\right]$. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rcParams\n",
"rcParams['font.family'] = 'sans'\n",
"rcParams['font.size'] = 16\n",
"rcParams['lines.linewidth'] = 3"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"u=np.array([0,0,2,0])\n",
"K=70*np.array([[1/2,1/2,-1/2,-1/2],[1/2,1/2,-1/2,-1/2],[-1/2,-1/2,1/2,1/2],[-1/2,-1/2,1/2,1/2]])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[F1x, F1y, F2x, F2y] = [-70. -70. 70. 70.] N\n"
]
}
],
"source": [
"F=K@u\n",
"print('[F1x, F1y, F2x, F2y] = ',F,'N')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So to stretch the 1-meter by $1~mm^2$ link from its initial configuration to the right by 2 mm, it takes a $\\mathbf{F}=70\\hat{i}+70\\hat{j}$ force and a negative $\\mathbf{F}$ reaction force. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'forces and deformation of single Al-bar\\nscale factor = 10')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# scale factor\n",
"s=10\n",
"x0=np.array([0,1/2**0.5])\n",
"y0=np.array([0,1/2**0.5])\n",
"x=x0+u[0::2]*1e-3*s\n",
"y=y0+u[1::2]*1e-3*s\n",
"\n",
"plt.plot(x0,y0,'o-',label='initial position')\n",
"plt.plot(x,y,'s-',label='final position')\n",
"plt.quiver(x,y,F[0::2]*s,F[1::2]*s)\n",
"plt.title('forces and deformation of single Al-bar\\nscale factor = {}'.format(s))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Combining multiple elements\n",
"\n",
"This method can be extended to multiple, connected bars. We just have to do some extra book-keeping. Let's consider the 3-bar element that we used in [02_Gauss_elimination](../notebooks/02_Gauss_elimination.ipynb).\n",
"\n",
"![Triangular truss](../images/truss.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have 3 elements and 3 nodes, so there are 6 degrees of freedom, with 3 constraints. Let's use 1-m aluminum bars with $A=1~mm^2$, but set $\\alpha=\\beta=60^{o}$. \n",
"\n",
"Each element still has the stiffness defined above,\n",
"\n",
"$\\mathbf{K}_{el}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta & \\cos\\theta\\sin\\theta & -\\cos^2\\theta & -\\cos\\theta\\sin\\theta\\\\\n",
" \\cos\\theta\\sin\\theta & \\sin^2\\theta & -\\cos\\theta\\sin\\theta & -\\sin^2\\theta &\\\\\n",
" -\\cos^2\\theta & -\\cos\\theta\\sin\\theta & \\cos^2\\theta & \\cos\\theta\\sin\\theta\\\\\n",
" -\\cos\\theta\\sin\\theta & -\\sin^2\\theta & \\cos\\theta\\sin\\theta & \\sin^2\\theta &\\\\\n",
" \\end{array}\\right]$, \n",
"\n",
"but there are two extra things to consider. The angle $\\theta$ is different for each bar, and the connections are in different locations for each bar. \n",
"\n",
"so if the initial geometry, $\\mathbf{r}$, is \n",
"\n",
"$\\mathbf{r}=\\left[\\begin{array}{c}\n",
" x_1\\\\\n",
" y_{1}\\\\\n",
" x_{2}\\\\\n",
" y_{2}\\\\\n",
" x_3 \\\\\n",
" y_3\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" 0.5 \\\\\n",
" \\sqrt{3}/2\\\\\n",
" 1 \\\\\n",
" 0\\end{array}\\right]~m$\n",
"\n",
"then, the displacement, \n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" 0\\end{array}\\right]$, \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The forces applied at each joint must equal the sum of the terms \n",
"\n",
"$\\mathbf{F} = \\mathbf{K_1 u}+\\mathbf{K_2 u}+\\mathbf{K_3 u}$\n",
"\n",
"where, $\\mathbf{K_i}$ is the stiffness of the structure due to element $\\mathbf{i}$, as such\n",
"\n",
"$\\mathbf{K}_{1}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta_1 & \\cos\\theta_1\\sin\\theta_1 & 0 & 0 & -\\cos^2\\theta_1 & -\\cos\\theta_1\\sin\\theta_1 \\\\\n",
" \\cos\\theta_1\\sin\\theta_1 & \\sin^2\\theta_1 & 0 & 0 & -\\cos\\theta_1\\sin\\theta_1 & -\\sin^2\\theta_1 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" -\\cos^2\\theta_1 & -\\cos\\theta_1\\sin\\theta_1 & 0 & 0 & \\cos^2\\theta_1 & \\cos\\theta_1\\sin\\theta_1 \\\\\n",
" -\\cos\\theta_1\\sin\\theta_1 & -\\sin^2\\theta_1 & 0 & 0 & \\cos\\theta_1\\sin\\theta_1 & \\sin^2\\theta_1 \\\\\n",
" \\end{array}\\right]$\n",
"\n",
"$\\mathbf{K}_{2}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" \\cos^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & -\\cos^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & 0 & 0\\\\\n",
" \\cos\\theta_2\\sin\\theta_2 & \\sin^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & -\\sin^2\\theta_2 & 0 & 0\\\\\n",
" -\\cos^2\\theta_2 & -\\cos\\theta_2\\sin\\theta_2 & \\cos^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & 0 & 0\\\\\n",
" -\\cos\\theta_2\\sin\\theta_2 & -\\sin^2\\theta_2 & \\cos\\theta_2\\sin\\theta_2 & \\sin^2\\theta_2 & 0 & 0\\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \n",
" \\end{array}\\right]$\n",
"\n",
"$\\mathbf{K}_{3}=\\frac{EA}{l}\\left[\\begin{array}{cccc}\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 & 0 & 0 & 0 & 0 \\\\\n",
" 0 & 0 &\\cos^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 & -\\cos^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 \\\\\n",
" 0 & 0 &\\cos\\theta_3\\sin\\theta_3 & \\sin^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 & -\\sin^2\\theta_3 \\\\\n",
" 0 & 0 &-\\cos^2\\theta_3 & -\\cos\\theta_3\\sin\\theta_3 & \\cos^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 \\\\\n",
" 0 & 0 &-\\cos\\theta_3\\sin\\theta_3 & -\\sin^2\\theta_3 & \\cos\\theta_3\\sin\\theta_3 & \\sin^2\\theta_3 \\\\\n",
" \\end{array}\\right]$\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 1. 0. 0. 0. -1. -0.]\n",
" [ 0. 0. 0. 0. -0. -0.]\n",
" [ 0. 0. 0. 0. 0. 0.]\n",
" [ 0. 0. 0. 0. 0. 0.]\n",
" [-1. -0. 0. 0. 1. 0.]\n",
" [-0. -0. 0. 0. 0. 0.]]\n"
]
}
],
"source": [
"Ke1 = lambda a: np.array([[np.cos(a)**2,np.cos(a)*np.sin(a)],[np.cos(a)*np.sin(a),np.sin(a)**2]])\n",
"Ke2 = lambda a: np.array([[-np.cos(a)**2,-np.cos(a)*np.sin(a)],[-np.cos(a)*np.sin(a),-np.sin(a)**2]])\n",
"\n",
"K1 = np.zeros((6,6))\n",
"K2 = np.zeros((6,6))\n",
"K3 = np.zeros((6,6))\n",
"\n",
"K1[0:2,0:2]=Ke1(0)\n",
"K1[4:6,4:6]=Ke1(0)\n",
"K1[0:2,4:6]=Ke2(0)\n",
"K1[4:6,0:2]=Ke2(0)\n",
"K2[0:4,0:4]=np.block([[Ke1(np.pi/3),Ke2(np.pi/3)],[Ke2(np.pi/3),Ke1(np.pi/3)]])\n",
"K3[2:6,2:6]=np.block([[Ke1(2*np.pi/3),Ke2(2*np.pi/3)],[Ke2(2*np.pi/3),Ke1(2*np.pi/3)]])\n",
"print(K1)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 87.5 30.31088913 -17.5 -30.31088913 -70.\n",
" 0. ]\n",
"[ 30.31088913 52.5 -30.31088913 -52.5 0.\n",
" 0. ]\n",
"[-1.75000000e+01 -3.03108891e+01 3.50000000e+01 1.55431223e-14\n",
" -1.75000000e+01 3.03108891e+01]\n",
"[-3.03108891e+01 -5.25000000e+01 1.55431223e-14 1.05000000e+02\n",
" 3.03108891e+01 -5.25000000e+01]\n",
"[-70. 0. -17.5 30.31088913 87.5\n",
" -30.31088913]\n",
"[ 0. 0. 30.31088913 -52.5 -30.31088913\n",
" 52.5 ]\n"
]
}
],
"source": [
"E=70e3\n",
"A=1\n",
"l=1e3\n",
"K = E*A/l*(K1+K2+K3)\n",
"for k in K:\n",
" print(k)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"ufree=np.linalg.solve(K[2:5,2:5],np.ones(3)*70)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.529210992451761"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.cond(K[2:5,2:5])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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4L58+fJjAC4uLlaAgQMHBm7atKnk2LFjz9esWTMxIiLC+PPPP5eIiopyuqsX3S5XEyGllAmYB0zVWh/JoZkPcCqb8ij7v95ArL3d1Vu088khhgHAAICgoKA7ilvc2urfz/PF7rMAvGL8iiaGTHls1wVQqoqDIhMFicGgeK/HfTw+czsXohOJTkjhhS/+4KunPsAc/gfEhENCFKzqD32/AcO/+swSIk+MHz8+oFKlSombNm065uRke2/WrVs3sUWLFjVzSoR+/fVX95SUFPXZZ5+dznS5LCa7tk899VTkxIkTLwJ06dLlekxMjNO8efPKjh49+lLp0qWzPTX06quvRqT9bbVaad26dUxycrKaO3duuQ8++OC8k5MThw4dcv7444/LPvvss5c++uij9ISmZ8+e6YN4zZ8/32ffvn0l1q9ff6RNmzaxAB07dowBmDZtmv+4ceMuBgQEpJ9matKkSUzatjp37nx906ZNXosWLSqzYcOGI61atYoFKF++fErjxo1rr1ixwmvo0KFX7PEGNmzYMGbz5s3H07bVtm3b61WqVKk3ceLEcp988snZtPKrV68af/zxxyP16tVLAnjggQfig4KCgj///HPvyZMnX6xTp05SqVKlLCaTSbdo0eKGPll79+4t0blz5ysvvfRSZFpZ3759r2X3HN6J3L409hrgCky4RRsFZDewSNbrKnfa7gZa6/la6wZa6wa+vr63airuwLHLsYz+2tYvqLVhN88bv82obD4KqrfKYU1RHPm4m5mVqb/QH2evMeWny7aEOe2/7qnt8PM0xwUpRBYWi4WDBw+6tW/f/mpaEgTwyCOPxPn7+yfntF7Dhg3jjUaj7ty5c+VPP/3U+/z58zmeXOjTp09U5uUnn3wyKj4+3rB3717XnNY5ffq0qVevXhX8/f3rmc3mULPZHDZlypSAmJgYp7R9rV+/3tNqtTJkyJDInLazceNGL39//+RHH300NiUlhbRH27Ztr1ssFrV169YbTum3adPmhpFQq1Spkujq6mpNS4IAgoODEwHOnj1rBjh48KDz2bNnnZ944okrmffh4eFhDQkJidu1a1eJzNusUKFCUloSBBAQEGDx8fFJOXPmjDmn48i077jly5eXHjlyZLmffvrJLbtLhXcj1xIhpVQQMAZ4HXBWSpW0d5om07ITtjM62Z3N8bb/m3YW6HbtorKp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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"scale = 10\n",
"r0=np.array([0,0,0.5,3**0.5/2,1,0])*1000\n",
"u=np.zeros((6))\n",
"u[2:5]=ufree\n",
"ix=range(-2,6,2)\n",
"iy=range(-1,6,2)\n",
"F=K@u\n",
"r=r0+u*scale\n",
"\n",
"plt.figure()\n",
"plt.plot(r0[ix],r0[iy],'s-',label='orignal')\n",
"plt.quiver(r0[ix],r0[iy],u[ix],u[iy],color=(0,1,1,1),label='displacements')\n",
"plt.plot(r[ix],r[iy],'o-',label='deformed')\n",
"plt.quiver(r0[ix],r0[iy],F[ix],F[iy],color=(1,0,0,1),label='applied forces')\n",
"plt.axis([-100,1200,-100,1000])\n",
"plt.legend(loc='center left', bbox_to_anchor=(1,0.5));\n",
"plt.title('original and deformed structure\\nscale = {}x'.format(scale));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Project Matrix creation\n",
"\n",
"In the project, we have 7 joints _(nodes)_ and 11 bars _(elements)_. That means we have 7 locations where $\\sum\\mathbf{F} = \\mathbf{0}$ and 11 stiffness matrices $(\\mathbf{K_1}...\\mathbf{K_{11}})$. The result is 14 equations with 14 unknowns, but we have some constraints on the system. $u_{1x}=u_{1y}=0$ and $u_{7y}=0.$ Which leaves us with 11 unknowns. There are 14 applied forces $(F_{ix},~F_{iy})$ that make up the vector $\\mathbf{F}.$\n",
"\n",
"$\\mathbf{u}=\\left[\\begin{array}{c}\n",
" u_{1x}\\\\\n",
" u_{1y}\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\\\\n",
" u_{4x}\\\\\n",
" u_{4y}\\\\\n",
" u_{5x}\\\\\n",
" u_{5y}\\\\\n",
" u_{6x}\\\\\n",
" u_{6y}\\\\\n",
" u_{7x}\\\\\n",
" u_{7y}\\\\\\end{array}\\right]=\n",
" \\left[\\begin{array}{c}\n",
" 0\\\\\n",
" 0\\\\\n",
" u_{2x}\\\\\n",
" u_{2y}\\\\\n",
" u_{3x}\\\\\n",
" u_{3y}\\\\\n",
" u_{4x}\\\\\n",
" u_{4y}\\\\\n",
" u_{5x}\\\\\n",
" u_{5y}\\\\\n",
" u_{6x}\\\\\n",
" u_{6y}\\\\\n",
" u_{7x}\\\\\n",
" 0\\\\\\end{array}\\right]$, and $\\mathbf{F} = \\mathbf{K_1 u}+...+\\mathbf{K_{11} u}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Node and element arrays\n",
"\n",
"In FEA, we typically store the node locations and their connections in two arrays called the node array: `nodes` and the element array: `elems`. The array `nodes` stores the node number and its x-y location. The array `elems` stores the node numbers that define each element. Our `nodes` and `elems` are printed below. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node array\n",
"---------------\n",
"[[ 1. 0. 0. ]\n",
" [ 2. 150. 259.80762114]\n",
" [ 3. 300. 0. ]\n",
" [ 4. 450. 259.80762114]\n",
" [ 5. 600. 0. ]\n",
" [ 6. 750. 259.80762114]\n",
" [ 7. 900. 0. ]]\n",
"element array\n",
"---------------\n",
"[[ 1 1 2]\n",
" [ 2 2 3]\n",
" [ 3 1 3]\n",
" [ 4 2 4]\n",
" [ 5 3 4]\n",
" [ 6 3 5]\n",
" [ 7 4 5]\n",
" [ 8 4 6]\n",
" [ 9 5 6]\n",
" [10 5 7]\n",
" [11 6 7]]\n"
]
}
],
"source": [
"l=300 # mm\n",
"nodes = np.array([[1,0,0],[2,0.5,3**0.5/2],[3,1,0],[4,1.5,3**0.5/2],[5,2,0],[6,2.5,3**0.5/2],[7,3,0]])\n",
"nodes[:,1:3]*=l\n",
"elems = np.array([[1,1,2],[2,2,3],[3,1,3],[4,2,4],[5,3,4],[6,3,5],[7,4,5],[8,4,6],[9,5,6],[10,5,7],[11,6,7]])\n",
"print('node array\\n---------------')\n",
"print(nodes)\n",
"print('element array\\n---------------')\n",
"print(elems)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can plot the mesh in different ways, here I have chosen to loop through each triangle in the mesh, $node~1\\rightarrow node~2\\rightarrow node~3 \\rightarrow node~1 \\rightarrow node~2 \\rightarrow node~3 \\rightarrow ...$\n",
"\n",
"I create an array where each column is a loop around each triangle in the support structure for the x- and y-coords, `ix` and `iy`, respectively. \n",
"\n",
"The vector `r` is the coordinates for the structure, so $\\mathbf{r} = \\mathbf{r}_0+\\mathbf{u}$, where $\\mathbf{r}_0$ is the location of each node without forces applied and $\\mathbf{u}$ is the distance each node moves after a force is applied. "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0. , 150. , 259.80762114,\n",
" 300. , 0. , 450. , 259.80762114,\n",
" 600. , 0. , 750. , 259.80762114,\n",
" 900. , 0. ])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ix = 2*np.block([[np.arange(0,5)],[np.arange(1,6)],[np.arange(2,7)],[np.arange(0,5)]])\n",
"iy = ix+1\n",
"\n",
"r = np.block([n[1:3] for n in nodes])\n",
"r"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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QHLFyJEjY/0r2223na5duzYhvVOnTrH0tm3balVVVfYKv/tu1eHDU6d166a6alVi3H33qXbq5NI6d1Zt1kz1oIOyJ08jqaqq0jZt2sTqa4cddkhIX7x4sYqb6qaAHn300dkVINP6nDZN9dBDa/fffFP1qKOyK1MjmDFjRoIdyLnnnpuQ/tJLtfZJZWVlOmfOnIgkLW4IaAcS+Us+l8EUSOasWrVK27ZtG/sT3nvvvXXyxP9JAR0xYkT2BJg7V3XXXVW/+MLtr16tunix2071wosn2bKyABg+fHhCXb388st18gwdOjQhzydhLD7TkWl9fv65aseOql9+6fZ/+1vVK67InjyNpEePHrF6atmypW7atKlOniOOOCKWZ8iQIRFIWfyYAjEFEorLLrss9ufbbbfddPPmzSnz9enTJ5avWbNmunHjxuwJMX686t57q+61l2q/fqrvvOPii0yBbNy4UZs1axarp759+6bMt2HDhkD5QpNpfd5/v+oee7j8xxyj+tVX2ZUnJE8++WSCor3zzjtT5vvggw8SWnWvvPJKniUtfkyBmALJmE8++UQrKipif7xnn302bd6PP/444c980kkn5VHS4iC5ZTF//vy0eYO0VJoy1dXV2qFDh1j9bL/99vXmP+ecc2J59957b62srMyTpKWBKRBTIBlzwgknxP50Bx54oFZXV9ebf8iQIbH8IqJLlizJk6SFT6ZjGw2NlTR1brnllgQFW9/Hjarq559/rltttVUs/+jRo/MjaIlgCsQUSEb861//SviDTp8+vcFj1qxZo+Xl5bFj9t133zxIWhwMHDgwVi8VFRW6Zs2aBo8ZPXp0wj0YNWpUHiQtfL777jtt0aJFrF722GOPQMfdeOONCQo5q92sJY4pEFMggamqqtIBAwbE/mynn3564GMvueSShJfeW2+9lUNJi4O33noroU4uu+yywMd269Ytdlzr1q2t60VVf/nLXybU5wcffBDouPXr12vHjh1jx91yyy05lrR0MAViCiQw48aNi/3JWrRooYtrZukEYMuWLdq6devY8d27d8+hpMVBshLIZJpzY5RPKbJixQotqzUz10PjpxgH4MEHH0y4FytWrMiRpKVFwSsQYEec7+Z5OD/Ov/bx2wKvAAv8b3sfL8DdwEKcL4h+DZVhCqRhvvvuu4QX3rXXXpvxOe65556El96YMWNy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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(r[ix],r[iy],'-',color='k')\n",
"plt.plot(r[ix],r[iy],'o',color='b')\n",
"plt.plot(r[0],r[1],'^',color='r',markersize=20)\n",
"plt.plot(r[0],r[1],'>',color='k',markersize=20)\n",
"plt.plot(r[-2],r[-1],'^',color='r',markersize=20)\n",
"# label the nodes\n",
"for n in nodes:\n",
" if n[2]>0.8*l: offset=0.1\n",
" else: offset=-l/5\n",
" plt.text(n[1]-l/3,n[2]+offset,'n {}'.format(int(n[0])),color='b')\n",
"# label the elements\n",
"for e in elems:\n",
" n1=nodes[e[1]-1]\n",
" n2=nodes[e[2]-1]\n",
" x=np.mean([n2[1],n1[1]])\n",
" y=np.mean([n2[2],n1[2]])\n",
" # ----------------->need elem labels<-----------------\n",
" plt.text(x-l/5,y-l/10,'el {}'.format(int(e[0])),color='r')\n",
"plt.title('Our truss structure\\neach element is 2 nodes and length L\\ntriangle markers are constraints')\n",
"plt.xlabel('x (mm)')\n",
"plt.ylabel('y (mm)')\n",
"plt.axis(l*np.array([-0.5,3.5,-1,1.5]));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Assemble the stiffness matrix\n",
"\n",
"Creating the matrix to represent $\\mathbf{K} = \\mathbf{K}_1+...\\mathbf{K}_{11}$ is called __assembling the stiffness matrix__. We loop through each element and add the individual stiffness matrices, the same way we did for the 3-element truss above. First, we define our $\\mathbf{K_{el}}$ function, `Kel(node1,node2)`. The nodes define the initial length and the angle of the beam element. We can multipy the stiffness matrix by $EA$ to get the actual N/m stiffness term. In our case, each beam is the same material and cross section, so we can factor out $EA$."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def Kel(node1,node2):\n",
" '''Kel(node1,node2) returns the diagonal and off-diagonal element stiffness matrices based upon\n",
" initial angle of a beam element and its length the full element stiffness is\n",
" K_el = np.block([[Ke1,Ke2],[Ke2,Ke1]])\n",
" \n",
" Out: [Ke1 Ke2]\n",
" [Ke2 Ke1] \n",
" arguments:\n",
" ----------\n",
" node1: is the 1st node number and coordinates from the nodes array\n",
" node2: is the 2nd node number and coordinates from the nodes array\n",
" outputs:\n",
" ----------\n",
" Ke1 : the diagonal matrix of the element stiffness\n",
" Ke2 : the off-diagonal matrix of the element stiffness\n",
" '''\n",
" a = np.arctan2(node2[2]-node1[2],node2[1]-node1[1])\n",
" l = np.sqrt((node2[2]-node1[2])**2+(node2[1]-node1[1])**2)\n",
" Ke1 = 1/l*np.array([[np.cos(a)**2,np.cos(a)*np.sin(a)],[np.cos(a)*np.sin(a),np.sin(a)**2]])\n",
" Ke2 = 1/l*np.array([[-np.cos(a)**2,-np.cos(a)*np.sin(a)],[-np.cos(a)*np.sin(a),-np.sin(a)**2]])\n",
" return Ke1,Ke2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we loop through each element (1-11) and add each element stiffness term to the _global_ stiffness matrix, $\\mathbf{K}$. The result is a $14\\times 14$ array that satisfies our $\\sum \\mathbf{F} = \\mathbf{0}$ at all 7 nodes. \n",
"\n",
"$\\mathbf{F} = \\mathbf{Ku}$"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"K=np.zeros((len(nodes)*2,len(nodes)*2))\n",
"for e in elems:\n",
" ni = nodes[e[1]-1]\n",
" nj = nodes[e[2]-1]\n",
" \n",
" Ke1,Ke2 = Kel(ni,nj)\n",
" #--> assemble K <--\n",
" i1=int(ni[0])*2-2\n",
" i2=int(ni[0])*2\n",
" j1=int(nj[0])*2-2\n",
" j2=int(nj[0])*2\n",
" \n",
" K[i1:i2,i1:i2]+=Ke1\n",
" K[j1:j2,j1:j2]+=Ke1\n",
" K[i1:i2,j1:j2]+=Ke2\n",
" K[j1:j2,i1:i2]+=Ke2"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \\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]\n",
"\n",
"\n"
]
}
],
"source": [
"pp.array_latex([K*1000],['[K]'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Save the inputs for the project\n",
"\n",
"Here, we save the arrays needed to work on the project as a Linear Algebra problem. We need the `nodes`, `elems`, and `K` arrays. So, we save them in the file `fea_arrays.npz`."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"np.savez('fea_arrays',nodes=nodes,elems=elems,K=K)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solution for our FEA problem\n",
"\n",
"In FEA, you have applied forces, in $\\mathbf{F}$, and displacement in $\\mathbf{u}.$ Typically, you have a mix of known and unknown forces and displacements. In our example, we have 14 degrees of freedom - 3 constraints for our displacements. So, we solve the problem in two steps\n",
"\n",
"1. solve for the free nodes `uf` $\\rightarrow \\mathbf{K}[2:13,2:13] \\mathbf{u}[2:13] = \\mathbf{F} [2:13]$\n",
"\n",
"2. plug in `u` to solve for `F` at constrained degrees of freedom $\\rightarrow \\mathbf{F}=\\mathbf{K}\\mathbf{u}$"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 0. 0. 0. 0. -100. 0. 0. 0. 0. 0.]\n",
"[ 1.42108547e-14 0.00000000e+00 -2.84217094e-14 0.00000000e+00\n",
" 7.10542736e-15 -1.00000000e+02 2.84217094e-14 1.13686838e-13\n",
" -7.10542736e-15 0.00000000e+00 0.00000000e+00]\n"
]
}
],
"source": [
"E=200e3\n",
"A=0.1\n",
"Ff=np.zeros(2*len(nodes)-3)\n",
"Ff[5]=-100\n",
"print(Ff)\n",
"# step 1 solve for uf (the joints without constraints)\n",
"uf = np.linalg.solve(E*A*K[2:13,2:13],Ff)\n",
"u=np.zeros(2*len(nodes))\n",
"u[2:13]=uf\n",
"\n",
"# step 2 solve for F (the solution should include reactions and applied forces)\n",
"F=E*A*K@u\n",
"print(F[2:13])\n"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"displacements:\n",
"----------------\n",
"u_1x:0.00 mm\n",
"u_1y:0.00 mm\n",
"u_2x:1.95 mm\n",
"u_2y:-2.12 mm\n",
"u_3x:0.43 mm\n",
"u_3y:-4.00 mm\n",
"u_4x:1.08 mm\n",
"u_4y:-5.37 mm\n",
"u_5x:1.73 mm\n",
"u_5y:-4.00 mm\n",
"u_6x:0.22 mm\n",
"u_6y:-2.12 mm\n",
"u_7x:2.17 mm\n",
"u_7y:0.00 mm\n",
"\n",
"forces:\n",
"----------------\n",
"F_1x:-0.00 N\n",
"F_1y:50.00 N\n",
"F_2x:0.00 N\n",
"F_2y:0.00 N\n",
"F_3x:-0.00 N\n",
"F_3y:0.00 N\n",
"F_4x:0.00 N\n",
"F_4y:-100.00 N\n",
"F_5x:0.00 N\n",
"F_5y:0.00 N\n",
"F_6x:-0.00 N\n",
"F_6y:0.00 N\n",
"F_7x:0.00 N\n",
"F_7y:50.00 N\n"
]
}
],
"source": [
"xy={0:'x',1:'y'}\n",
"print('displacements:\\n----------------')\n",
"for i in range(len(u)):\n",
" print('u_{}{}:{:.2f} mm'.format(int(i/2)+1,xy[i%2],u[i]))\n",
"print('\\nforces:\\n----------------')\n",
"for i in range(len(F)):\n",
" print('F_{}{}:{:.2f} N'.format(int(i/2)+1,xy[i%2],F[i]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Postprocess FEA results\n",
"\n",
"The last step in FEA (and any applied linear algebra problem), is to post-process the results. I have chosen to show the deflections of each joint and the applied forces at each node. I imported the `interact` widget to animate the deformation of the structure. What you should see is that the sum of external forces $\\sum F_x=0$ and $\\sum F_y=0$. This is what we see, since our the sum of the reaction forces is equal to the applied force. "
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "abd9fd06df2242e59abd2fd9fac3b3e2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=5, description='s', max=10), Output()), _dom_classes=('widget-interact',…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"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": [
"from __future__ import print_function\n",
"from ipywidgets import interact, interactive, fixed, interact_manual\n",
"import ipywidgets as widgets\n",
"\n",
"def f(s):\n",
" plt.plot(r[ix],r[iy],'-',color=(0,0,0,1))\n",
" plt.plot(r[ix]+u[ix]*s,r[iy]+u[iy]*s,'-',color=(1,0,0,1))\n",
" #plt.quiver(r[ix],r[iy],u[ix],u[iy],color=(0,0,1,1),label='displacements')\n",
" plt.quiver(r[ix],r[iy],F[ix],F[iy],color=(1,0,0,1),label='applied forces')\n",
" plt.quiver(r[ix],r[iy],u[ix],u[iy],color=(0,0,1,1),label='displacements')\n",
" plt.axis(l*np.array([-0.5,3.5,-0.5,2]))\n",
" plt.xlabel('x (mm)')\n",
" plt.ylabel('y (mm)')\n",
" plt.title('Deformation scale = {:.1f}x'.format(s))\n",
" plt.legend(bbox_to_anchor=(1,0.5))\n",
"interact(f,s=(0,10,1));"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"steel=np.loadtxt('../data/steel_price.csv',skiprows=1,delimiter=',')\n",
"al = np.loadtxt('../data/al_price.csv',skiprows=1,delimiter=',')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f1068ea0240>]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(steel[:,0],steel[:,1])\n",
"plt.plot(al[:,0],al[:,1])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"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
}