{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# PGE383 - Advanced Geomechanics - Midterm Exam\n", "\n", "**Instructions:** This exam will be assigned at 11:50 AM Friday, 10/2 via [Canvas](https://utexas.instructure.com/courses/1150226) and is due at 11:00 AM Monday, 10/5.\n", "\n", "You are allowed any resource (e.g. books, notes, web) to complete the exam except consultation with another student or professor. You are reminded of the [UT Student Honor Code](http://www.utexas.edu/about-ut/mission-core-purpose-honor-code), violations of academic integrity with be [reported](http://deanofstudents.utexas.edu/sjs/acadint_reportingprocedures.php)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 1\n", "\n", "Valid constitutive models must obey the *Principle of Material Reference Frame Indifference*, i.e. they should be invarient to rigid rotations. Mathematically, for a Cauchy stress $\\boldsymbold{\\sigma}$ and a orthoganal time-dependent rotation tensor $\\mathbf{R}$ we might say that the stress is invariant to a rotation if\n", "\n", "\\begin{equation}\n", "\\boldsymbol{\\sigma} = \\mathbf{R} \\boldsymbol{\\sigma} \\mathbf{R}^{\\intercal}.\n", "\\label{eqn:1}\n", "\\end{equation}\n", "\n", "However, often in plasticity modeling, we use rate-forms of constitutive models. Is the rate-of-Cauchy stress material reference frame indifferent? Explain." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "Take the time derivative of both sides of the equation, i.e.\n", "\n", "\\begin{align*}\n", " \\dot{\\boldsymbol{\\sigma}} = \\dot{\\mathbf{R}} \\boldsymbol{\\sigma} \\mathbf{R}^\\intercal + \\mathbf{R} \\dot{\\boldsymbol{\\sigma}} \\mathbf{R}^\\intercal + \\mathbf{R} \\boldsymbol{\\sigma} \\dot{\\mathbf{R}}^\\intercal\n", "\\end{align*}\n", "\n", "This clearly is not equivalent to $\\ref{eqn:1}$, therefore the rate-of-Cauchy stress **is not** material reference frame indifferent." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 2\n", "\n", "If the Lagrangian strain components at a point are as shown\n", "\n", "$$\n", "\\mathbf{E} = \n", "\\begin{bmatrix}\n", "-1 & 0 & 0 \\\\\n", " 0 & 1.84 & -0.28 \\\\\n", " 0 & -0.28 & 1.84\n", "\\end{bmatrix}\n", "$$\n", "\n", "Compute:\n", "\n", "1. the principle strains\n", "\n", "2. the maximum shear strain component" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "1. We need to simply solve an eigenvalue problem." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2.12, 1.56, -1. ])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import numpy.linalg\n", "\n", "\n", "w, v = np.linalg.eig(np.array([[-1., 0., 0.], [0., 1.84, -0.28], [0., -0.28, 1.84]]));\n", "w" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum shear strain is one-half the difference between the maximum and minumum principle strains (from Mohr's circles)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.5600000000000001" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Emax = 0.5 * (w[0] - w[2]); Emax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 3\n", "\n", "For the stress tensor\n", "\n", "$$\n", "\\boldsymbol{\\sigma} =\n", "\\begin{bmatrix}\n", "2 & 0 & 4 \\\\\n", "0 & 3 & 6 \\\\\n", "4 & 6 & 0\n", "\\end{bmatrix}\n", "$$\n", "\n", "find a direction $\\mathbf{\\hat{n}}$, such that the traction vector on a plane normal to $\\mathbf{\\hat{n}}$ has components $t_1 = t_2 = 0$, and determine $t_3$ on that plane." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "First we will solve for the unknown normal vector using the Cauchy stress equation, i.e. $\\vec{t} = \\sigma^T \\hat{n}$. Where $\\vec{t}^T$ = [0 0 1], we can use 1 here in place of $t_3$ because any arbrary $t_3$ that appears in the solution, will cancel when dividing the solution by its norm to create the normal vector." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.66666667, 0.66666667, -0.33333333])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma = np.array([[2., 0, 4],[0, 3, 6], [4, 6, 0]])\n", "#First compute the solution\n", "n = np.linalg.solve(sigma.T, np.array([0,0,1]))\n", "#Now divide by the norm to get a normal vector\n", "n_hat = n / np.linalg.norm(n); n_hat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now can use this normal vector to determine $t_3$." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ -4.44089210e-16, 4.44089210e-16, 6.66666667e+00])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(sigma.T, n_hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So the final answers in rational form are\n", "\n", "$$\\hat{n}^T = \\left[ \\frac{2}{3}, \\frac{2}{3}, -\\frac{1}{3} \\right]$$\n", "\n", "and\n", "\n", "$$t_3 = \\frac{20}{3}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 4\n", "\n", "Evaluate the second invariant of the *deviatoric* stress for the stress tensor\n", "\n", "$$\n", "\\boldsymbol{\\sigma} =\n", "\\begin{bmatrix}\n", " 2 & -1 & 1 \\\\\n", " -1 & 0 & 1 \\\\\n", " 1 & 1 & 2\n", "\\end{bmatrix}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "First we compute the deviatoric stress" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.66666667, -1. , 1. ],\n", " [-1. , -1.33333333, 1. ],\n", " [ 1. , 1. , 0.66666667]])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma = np.array([[2., -1., 1.], [-1., 0., 1], [1., 1., 2.]])\n", "\n", "S = sigma - 1./3. * np.trace(sigma) * np.eye(3); S" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we perform the summation\n", "\n", "$$\n", "J_2 = \\frac{1}{2} S_{ij} S_{ij}\n", "$$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4.333333333333333" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "J_2 = 0.0\n", "for i in range(3):\n", " for j in range(3):\n", " J_2 += 0.5 * S[i,j] * S[i, j]\n", " \n", "J_2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or in rational form we have\n", "\n", "$$J_2 = \\frac{13}{3}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 5\n", "\n", "Under what condition are these two statements equavalent\n", "\n", "$$ \\det({\\mathbf{F}}) = 1 $$ \n", "\n", "$$ \\frac{\\partial v_i}{\\partial x_i} = 0 $$\n", "\n", "Explain your answer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "The correct answer to both conditions would be the *incompressibility* condition, from conservation of mass\n", "\n", "$$\n", "\\det(\\mathbf{F}) = 1 = \\frac{\\rho_o}{\\rho}\n", "$$\n", "\n", "which implies that density doesn't change or the motion is *volume preserving* when viewed from the reference configuration. Likewise, in Eulerian form, conservation of mass is\n", "\n", "$$\n", "\\frac{D \\rho}{Dt} + \\rho \\frac{\\partial v_i}{\\partial x_i} = 0\n", "$$\n", "\n", "When viewed from the position of a moving particle, incompressibility implies $\\frac{D \\rho}{Dt} = 0$ therefore\n", "\n", "$$\n", "\\frac{\\partial v_i}{\\partial x_i} = 0\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem 6\n", "\n", "Show that the *plane stress* equilibrium equations, in the absence of body forces, implies\n", "\n", "$$\n", "2 \\frac{\\partial\\sigma_{12}}{\\partial x_1 \\partial x_2} = -\\frac{\\partial^2 \\sigma_{11}}{\\partial x_1^2} -\\frac{\\partial^2 \\sigma_{22}}{\\partial x_2^2}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Solution**\n", "\n", "Starting with the momentum equations\n", "\n", "\\begin{align}\n", " \\rho \\frac{\\partial^2 u_1}{\\partial t^2} &= \\frac{\\partial \\sigma_{11}}{\\partial x_1} + \\frac{\\partial \\sigma_{12}}{\\partial x_2} + \\frac{\\partial \\sigma_{13}}{\\partial x_3} + b_1 \\\\\n", " \\rho \\frac{\\partial^2 u_2}{\\partial t^2} &= \\frac{\\partial \\sigma_{12}}{\\partial x_1} + \\frac{\\partial \\sigma_{22}}{\\partial x_2} + \\frac{\\partial \\sigma_{23}}{\\partial x_3} + b_2 \\\\\n", " \\rho \\frac{\\partial^2 u_3}{\\partial t^2} &= \\frac{\\partial \\sigma_{31}}{\\partial x_1} + \\frac{\\partial \\sigma_{23}}{\\partial x_2} + \\frac{\\partial \\sigma_{33}}{\\partial x_3} + b_3\n", " \\end{align}\n", " \n", "Now we apply the equalibrium condition, i.e. $ \\rho \\frac{\\partial^2 \\vec{u}}{\\partial t^2} = 0$, the plane strain assumptions, i.e. $\\sigma_{33} = \\sigma_{13} = \\sigma_{23} = 0$ and exclude the body forces, we are left with.\n", "\n", "\\begin{align}\n", " 0 &= \\frac{\\partial \\sigma_{11}}{\\partial x_1} + \\frac{\\partial \\sigma_{12}}{\\partial x_2} \\\\\n", " 0 &= \\frac{\\partial \\sigma_{12}}{\\partial x_1} + \\frac{\\partial \\sigma_{22}}{\\partial x_2}\n", " \\end{align}\n", " \n", "Now we differentiate the first equation w.r.t. $x_1$ and the second w.r.t $x_2$ we have \n", "\n", "\n", "\\begin{align}\n", " 0 &= \\frac{\\partial^2 \\sigma_{11}}{\\partial x_1^2} + \\frac{\\partial^2 \\sigma_{12}}{\\partial x_1 \\partial x_2} \\\\\n", " 0 &= \\frac{\\partial^2 \\sigma_{12}}{\\partial x_1 \\partial x_2} + \\frac{\\partial^2 \\sigma_{22}}{\\partial x_2^2}\n", " \\end{align}\n", " \n", " Adding the two equations together and rearranging, we have the result\n", " \n", "$$\n", "2 \\frac{\\partial\\sigma_{12}}{\\partial x_1 \\partial x_2} = -\\frac{\\partial^2 \\sigma_{11}}{\\partial x_1^2} -\\frac{\\partial^2 \\sigma_{22}}{\\partial x_2^2}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem 7\n", "\n", "If a ductile material undergoing uniaxial stress, exhibits linear isotropic hardening, with hardening modulus $H$ and yield stress $Y$, write a von Mises yield function for this material as a function of these material constants and equivalent plastic strain $\\varepsilon^p$.\n", "\n", "**Solution**\n", "\n", "$$ f = \\sqrt{3 J_2} - Y - H \\varepsilon^p$$" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }