Files
JuliaFEM.jl/docs/tutorials/2015-09-24-Ideal plastic Von Mises material.ipynb
Jukka Aho 0f0c49da62 Cleanup of obsolete files
A lot of old files from old documentation systems etc. is in package.
These are now removed or moved. Old notebooks are in docs/tutorials.
This PR closes issue #124.
2017-08-05 12:08:46 +03:00

423 lines
58 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ideal plastic Von Mises material\n",
"\n",
"Author(s): Olli Väinölä <olli.vainola@student.oulu.fi>\n",
"\n",
"In this notebook is an small tutorial, how to create a Von Mises material without any hardening. Equations are formulated into rate depended form."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# imports\n",
"using ForwardDiff\n",
"using NLsolve\n",
"using PyPlot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create a isotropic Hooke material."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"6x6 Array{Float64,2}:\n",
" 2.69231e5 1.15385e5 1.15385e5 0.0 0.0 0.0 \n",
" 1.15385e5 2.69231e5 1.15385e5 0.0 0.0 0.0 \n",
" 1.15385e5 1.15385e5 2.69231e5 0.0 0.0 0.0 \n",
" 0.0 0.0 0.0 1.53846e5 0.0 0.0 \n",
" 0.0 0.0 0.0 0.0 1.53846e5 0.0 \n",
" 0.0 0.0 0.0 0.0 0.0 1.53846e5"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"\"\"\"\n",
"Create a isotropic Hooke material matrix C \n",
"\n",
"More information: # http://www.efunda.com/formulae/solid_mechanics/mat_mechanics/hooke_isotropic.cfm\n",
"\n",
"Parameters\n",
"----------\n",
" E: Float\n",
" Elastic modulus\n",
" ν: Float\n",
" Poisson constant\n",
"\n",
"Returns\n",
"-------\n",
" Array{Float64, (6,6)}\n",
"\"\"\"\n",
"function hookeStiffnessTensor(E, ν)\n",
" a = 1 - ν\n",
" b = 1 - 2*ν\n",
" c = 1 + ν\n",
" multiplier = E / (b * c)\n",
" return Float64[a ν ν 0 0 0;\n",
" ν a ν 0 0 0;\n",
" ν ν a 0 0 0;\n",
" 0 0 0 b 0 0;\n",
" 0 0 0 0 b 0;\n",
" 0 0 0 0 0 b].*multiplier\n",
"end\n",
"\n",
"# Pick material values\n",
"E = 200.0e3\n",
"ν = 0.3\n",
"C = hookeStiffnessTensor(E, ν)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Defining equations for the calculation\n",
"\n",
"Functions are defined for strain controller simulation"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"calculate_stress (generic function with 1 method)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# using vectors with double contradiction\n",
"# http://www-2.unipv.it/compmech/teaching/available/const_mod/const_mod_mat-review_notation.pdf\n",
"M = [1 0 0 0 0 0;\n",
" 0 1 0 0 0 0;\n",
" 0 0 1 0 0 0;\n",
" 0 0 0 2 0 0;\n",
" 0 0 0 0 2 0;\n",
" 0 0 0 0 0 2;]\n",
"\n",
"\"\"\"\n",
"Equivalent tensile stress. \n",
"\n",
"More info can be found from: https://en.wikipedia.org/wiki/Von_Mises_yield_criterion\n",
" Section: Reduced von Mises equation for different stress conditions\n",
"\n",
"Parameters\n",
"----------\n",
" σ: Array{Float64, 6}\n",
" Stress in Voigt notation\n",
"\n",
"Returns\n",
"-------\n",
" Float\n",
"\"\"\"\n",
"function σₑ(σ)\n",
" s = σ[1:6] - 1/3 * sum([σ[1], σ[2], σ[3]]) * [1 1 1 0 0 0]'\n",
" return sqrt(3/2 * s' * M * s)[1]\n",
"end\n",
"\n",
"\n",
"\"\"\"\n",
"Von Mises Yield criterion\n",
"\n",
"More info can be found from: http://csm.mech.utah.edu/content/wp-content/uploads/2011/10/9tutorialOnJ2Plasticity.pdf\n",
"\n",
"Parameters\n",
"----------\n",
" σ: Array{Float64, 6}\n",
" Stress in Voigt notation\n",
" k: Float64\n",
" Material constant, Yield limit\n",
"\n",
"Returns\n",
"-------\n",
" Float\n",
"\"\"\"\n",
"function vonMisesYield(σ, k)\n",
" σₑ(σ) - k\n",
"end\n",
"\n",
"\"\"\"\n",
"Function for NLsolve. Inside this function are the equations which we want to find root.\n",
"Ψ is the yield function below. Functions defined here:\n",
"\n",
" dσ - C (dϵ - dλ*dΨ/dσ) = 0\n",
" σₑ(σ) - k = 0\n",
"\n",
"Parameters\n",
"----------\n",
" params: Array{Float64, 7}\n",
" Array containing values from solver\n",
" dϵ: Array{Float64, 6}\n",
" Strain rate vector in Voigt notation\n",
" C: Array{Float64, (6, 6)}\n",
" Material tensor\n",
" k: Float\n",
" Material constant, yield limit\n",
" Δt: Float\n",
" time increment\n",
" σ_begin:Array{Float64, 6}\n",
" Stress vector in Voigt notation\n",
"\n",
"Returns\n",
"-------\n",
" Array{Float64, 7}, return values for solver\n",
"\"\"\"\n",
"function G(params, dϵ, C, k, σ_begin)\n",
"\n",
" # Creating wrapper for gradient\n",
" yield(pars) = vonMisesYield(pars, k)\n",
" dfdσ = ForwardDiff.gradient(yield)\n",
" \n",
" # Stress rate\n",
" dσ = params[1:6]\n",
" \n",
" σ_tot = [vec(σ_begin); 0.0] + params\n",
" \n",
" # Calculating plastic strain rate\n",
" dϵp = params[end] * dfdσ(σ_tot)\n",
" \n",
" # Calculating equations\n",
" function_1 = dσ - C * (dϵ - dϵp[1:6])\n",
" function_2 = yield(σ_tot)\n",
" [vec(function_1); function_2]\n",
"end\n",
"\n",
"\"\"\"\n",
"Function which calculates the stress. Also handles if any yielding happens\n",
"\n",
"Parameters\n",
"----------\n",
" dϵ: Array{Float64, 6}\n",
" Strain rate vector in Voigt notation\n",
" Δt: Float\n",
" time increment\n",
" σ: Array{Float64, 6}\n",
" Last stress vector in Voigt notation\n",
" C: Array{Float64, (6, 6)}\n",
" Material tensor\n",
" k: Float\n",
" Material constant, yield limit\n",
"\n",
"Returns\n",
"-------\n",
" Tuple\n",
" Plastic strain rate dϵᵖ and new stress vector σ\n",
"\"\"\"\n",
"function calculate_stress(dϵ, σ, C, k)\n",
" # Test stress\n",
" σ_tria = σ + C * dϵ\n",
" \n",
" # Calculating yield\n",
" yield = vonMisesYield(σ_tria, k)\n",
"\n",
" if yield > 0\n",
" # Yielding happened\n",
" # Creating functions for newton: xₙ₊₁ = xₙ - df⁻¹ * f and initial values\n",
" initial_guess = [vec(σ_tria - σ); 0.1]\n",
" f(σ_) = G(σ_, dϵ, C, k, σ)\n",
" df = ForwardDiff.jacobian(f)\n",
" \n",
" # Calculating root \n",
" result = nlsolve(not_in_place(f, df), initial_guess).zero\n",
"\n",
" σ[:] += result[1:6]\n",
" else\n",
" σ = σ_tria\n",
" end\n",
" return σ\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Defining strain history"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"300-element Array{Float64,1}:\n",
" -0.0 \n",
" -5.67002e-5 \n",
" -0.000113175\n",
" -0.0001692 \n",
" -0.000224554\n",
" -0.000279014\n",
" -0.000332367\n",
" -0.000384399\n",
" -0.000434904\n",
" -0.00048368 \n",
" -0.000530536\n",
" -0.000575283\n",
" -0.000617745\n",
" ⋮ \n",
" 0.000575283\n",
" 0.000530536\n",
" 0.00048368 \n",
" 0.000434904\n",
" 0.000384399\n",
" 0.000332367\n",
" 0.000279014\n",
" 0.000224554\n",
" 0.0001692 \n",
" 0.000113175\n",
" 5.67002e-5 \n",
" 6.61309e-19"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"steps = 300\n",
"strain_max = 0.003\n",
"num_cycles = 3\n",
"\n",
"ϵ_tot = zeros(Float64, (steps, 6))\n",
"ϵ_tot2 = zeros(Float64, (steps, 6))\n",
"ϵ_tot3 = zeros(Float64, (steps, 6))\n",
"\n",
"# Adding only strain in x-axis and counting for the poisson effect\n",
"ϵ_tot[:, 1] = strain_max * sin(2 * pi * linspace(0, num_cycles, steps))\n",
"ϵ_tot[:, 2] = strain_max * sin(2 * pi * linspace(0, num_cycles, steps)).*-ν\n",
"ϵ_tot[:, 3] = strain_max * sin(2 * pi * linspace(0, num_cycles, steps)).*-ν"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simulation\n",
"\n",
"Ok, we're good to go! Now we just need to define yield limit and the main loop.\n",
"\n",
"This simulation is not time dependent, but since it's already defined in the equations we'll give it value 1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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hw9x48YNHDt2DK+++ir27dtX7FiIyIwp2uiwlCxatEhSqVRSy5YtDY5dvHhR6t27t1SxYkXJ2dlZGj16tHT37l2j97NhwwbpxRdflOzt7aXGjRtLX331VWmHTkRP8Pfff0v/7//9P+n111+XmjZtKlWqVEmytbWVatWqJfXv31/atm2b0dsdOHBA6ty5s1SxYkVJpVJJarVaunHjhiRJkvTJJ59IarX6iT2vJUmScnJypMDAQMnDw0NycnKS7OzspPr160u9evWSVq9eLaWmpkqSJEm5ubnSsmXLpL59+0r16tWT7O3tpWrVqkmdO3eW1q5dK+Xm5mrv8+DBg9L48eOl5s2bS05OTtILL7wgvfjii9KMGTOkmzdvFvl78ueff0oBAQFS3759pUaNGkkvvPCCNr6hQ4dK4eHhRm+3detWqU2bNpKDg4P2e6Ixbtw42ffImLCwMKlTp06So6OjVKVKFal3795SVFSUFBQUJKnVaoMe2m5ubgZ9vp90roaxftv/Zt++fVKfPn0kZ2dnyc7OTqpXr540ZMgQKTIyUnZedna29P7770t16tSRbG1tpcaNG0tLly6V8vLyjD5uUV4nGpq/P2q1Wvrxxx+feu7x48elESNGSLVq1ZJsbW2latWqSW3btpVmzZolnTx58pmeOxFZDpUkGfkM14IlJCSgadOmUKvVaNCgAc6dOyc71rZtW1SpUgXTp0/HgwcP8OWXX6JevXqIiYmBjY2N9ty1a9diypQpGDZsGHr37o1jx45hy5YtWLp06XN/NElEREREZZPVJd+jRo1Camoq8vLykJKSIluXOHXqVGzevBmXL1/W9pE9cuQIPD09sXbtWkyaNAkAkJmZibp168LDw0N24dPo0aOxZ88e/P3330bbYxERERERPY1VXXB57Ngx7N69G6tWrYIkSQZtoXbv3g1vb29t4g0APXv2RJMmTbBjxw7tXGRkJNLS0jB16lTZ7adNm4ZHjx4hPDy8dJ8IEREREVklq0m+8/Pz8d5772HSpElo0aKFwfFbt27h7t27RndT69ChA06fPq39WjMufK67uzvUavVzXZBDRERERGWX1XQ7+eabb3Dz5s0nbiahaedUs2ZNg2M1a9ZEWloacnNzYWNjg8TERJQrV87gKnVbW1u4uLg809bJREREREQaVlH5Tk1NxYIFC7BgwQJtD9vCNP1cjW0/bG9vLzsnMzMTtra2Ru/Hzs5O1huWiIiIiKiorKLyPW/ePFStWlW70YIxDg4OAIDs7GyDY5rNLjTnODg4yLaBLnyu5jx9KSkpiIiIgJubm9HjRERERKSszMxMXL9+Hb179zbah98ULD75jo+Px/r167Fq1SokJCRo57OyspCTk4MbN26gUqVK2uUmxnYTS0xMhIuLi7bVYM2aNZGfn4+UlBTZDyYnJwdpaWmoVauWwX1ERETgrbfeKumnR0REREQlbOvWrUZ3oDUFi0++b926hYKCAkyfPh3Tp083ON6gQQPMnDkTK1asgKurK2JjYw3OiYmJQZs2bbRft23bFgAQGxuLvn37aufj4uJQUFAgO1dDs9ve1q1b0axZs+d9WlQKfH19sXLlSqXDICP4szFf/NmYN/58zBd/Nubp0qVLeOutt7R5mxIsPvl+6aWX8L///U/WVlCSJMybNw8PHz7E6tWr0bBhQwDA0KFDsWnTJiQkJMj6fMfHx2PWrFna2/fo0QPOzs5Ys2aNLPles2YNXnjhBfTv398gDs1Sk2bNmsHd3b1Unis9HycnJ/5szBR/NuaLPxvzxp+P+eLPxrwpuUTY4pNvFxcXDBo0yGBe825z4MCB2rmPPvoIO3fuRPfu3TFjxgw8ePAAy5cvR6tWrTB+/Hjtefb29vD398e0adMwYsQIeHl5ISoqCtu2bcPixYu5wQ4RERERFYvFJ99PolKpDDbZqVOnDo4ePQo/Pz98+OGHsLOzg7e3NwICAmRbywPAlClTYGNjg4CAAISEhKBevXpYtWqV0aUtRERERERFYbXJd2RkpNH55s2b48CBA0W6j4kTJ2LixIklGRYRERERlWFW0eebqCh8fHyUDoGegD8b88WfjXnjz8d88WdDT6KSJElSOghrcOrUKbRr1w4nT57kBRZEREREZsgc8jVWvomIiIiITITJNxERERGRiTD5JiIiIiIyESbfREREREQmwuSbiIiIiMhEmHwTEREREZkIk28iIiIiIhNh8k1EREREZCJMvomIiIiITITJNxERERGRiTD5JiIiIiIyESbfREREREQmwuSbiIiIiMhEmHwTEREREZkIk28iIiIiIhNh8k1EREREZCJMvomIiIiITITJNxERERGRiTD5JiIiIiIyESbfREREREQmwuSbiIiIiMhEmHwTEREREZkIk28i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1q1jmXciIiIie8OV7zpiWs694pGCM2ZIiXXFxDsnR1rlTkpi4k1ERERkj5h814F586RtIgBw546USGdlSb9rNEBCgnFsfLzx5sk2bZSJl4iIiIisg9tOatn+/cD770vtH38EnnvOeLa3XtOm0nndDRpYPz4iIiIiUg6T71oWE2NsP/GE/LGdO4EhQ6wbDxERERGpB5PvOhYRISXdLPNOREREREy+68ipU0DHjkpHQURERERqwhsua9nRo9LNk0y8iYiIiKgiJt9ERERERFbC5JuIiIiIyEqYfBMRERERWQmTbyIiIiIiK2HyTURERERkJUy+iYiIiIishMk3EREREZGVMPkmIiIiIrISJt9ERERERFbC5JuIiIiIyEqYfBMRERERWQmTbyIiIiIiK2HyTURERERkJUy+iYiIiIishMk3EREREZGVMPkmIiIiIrISJt9ERERERFbC5JuIiIiIyEqYfBMRERERWQmTbyIiIiIiK2HyTURERERkJUy+iYiIiIishMk3EREREZGVMPkmIiIiIrISJt9ERERERFbC5JuIiIiIyEqYfBMRERERWQmTbyIiIiIiK2HyTURERERkJUy+iYiIiIishMk3EREREZGV2F3yPWnSJDg5OWHo0KGVPn7w4EH06dMH7u7u8PHxQUxMDIqKiszGCSGwdOlStG3bFlqtFl26dMGWLVvqOnwiIiIismN2lXz/8MMPWL9+Pdzc3KDRaMweP378OAYMGACdToeEhARMnDgRq1atQmRkpNnYuXPnIjY2FhEREUhMTETr1q0RFRWFzz77zBqXQkRERER2yG6SbyEE/vznPyM6OhpeXl6Vjpk7dy4effRRpKenY/LkyVi0aBESExPx9ddf49tvvzWMu3r1Kj744AO89dZb+OSTTzBhwgR8+eWX6Nu3L2bOnIny8nJrXRbVos2bNysdAlWBc6NenBt14/yoF+eGqmI3yfeGDRvw448/4t1334UQwuzxW7duYffu3RgzZgw8PDwM/WPHjoWHhwe2bt1q6EtJSUFpaSnefPNN2WtMnToVV65cwaFDh+ruQqjO8B9C9eLcqBfnRt04P+rFuaGq2EXyffv2bcyePRtz586tctX75MmTKC0tRXBwsKzfxcUFQUFByMzMNPRlZmbCw8MDHTp0kI3t0aMHAGn7ChERERFRddlF8r1w4UK4u7tj+vTp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",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f0821bd9610>)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"PyObject <matplotlib.text.Text object at 0x7f0821a8f790>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ϵ_last = zeros(Float64, (6))\n",
"ϵᵖ = zeros(Float64, (6))\n",
"σ = zeros(Float64, (6, 1))\n",
"σy = 200.0\n",
"ss = Float64[]\n",
"ee = Float64[]\n",
"\n",
"for i=1:steps\n",
" dϵ = reshape(ϵ_tot[i, :, :], (6, 1)) - ϵ_last\n",
" σ = calculate_stress(dϵ, σ, C, σy)\n",
" ϵ_last += dϵ \n",
" push!(ss, σ[1])\n",
" push!(ee, ϵ_last[1]) \n",
"end\n",
"\n",
"PyPlot.plot(ee, ss)\n",
"PyPlot.title(\"Stress-Strain curve\")\n",
"PyPlot.xlabel(\"Strain\")\n",
"PyPlot.ylabel(\"Stress\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 0.4.1-pre",
"language": "julia",
"name": "julia-0.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.4.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}