Files
JuliaFEM.jl/notebooks/2015-09-24-Von Mises material with hardening.ipynb
T
2015-11-09 21:12:23 +02:00

554 lines
70 KiB
Plaintext
Raw 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": [
"# Von Mises material with nonlinear isotropic and kinematic hardening\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 with hardening. Equations are formulated into rate depended form. Code may or may not include some bugs.."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Theory section\n",
"\n",
"### Continuum equations\n",
"\n",
"Stress:\n",
"\n",
"$\\sigma = C : \\epsilon^e$\n",
"\n",
"$C$ is material tensor and $\\epsilon$ total strain.\n",
"Total strain is divided into elastic and plastic part:\n",
"\n",
"$\\epsilon = \\epsilon^e + \\epsilon^p$\n",
"\n",
"now let's define a strain rate, which is strain increment divide with time increment $dt$\n",
"\n",
"$\\frac{d\\epsilon}{dt} = \\dot \\epsilon = \\dot \\epsilon^e + \\dot \\epsilon^p$\n",
"\n",
"Now same procedure for stress and substitute $\\dot \\epsilon^e$\n",
"\n",
"$\\dot \\sigma = C : \\dot \\epsilon^e = C : (\\dot \\epsilon - \\dot \\epsilon^p )$\n",
"\n",
"Only thing to do is to define yield function. Now we're using Von Mises material:\n",
"\n",
"$f(\\sigma - X, R(\\alpha)) = \\sqrt{3J_2(\\sigma-X))} - R(\\alpha)$ = 0\n",
"\n",
"$f(\\sigma, \\sigma_y) = \\sqrt{3J_2(\\sigma))} - \\sigma_y$ = 0\n",
"\n",
"$J_2 = \\frac{1}{2}s : s$ \n",
"\n",
"$s = \\sigma - \\frac{1}{3}\\sigma I$\n",
"\n",
"$I = eye(3)$"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# imports\n",
"using PyPlot\n",
"using ForwardDiff\n",
"using NLsolve"
]
},
{
"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",
"# Some extra data for testing purposes ...\n",
"#ss = σ[1]\n",
"#return sqrt(sum(ss.^2))\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",
"\"\"\"\n",
"Function for NLsolve. Inside this function are the functions where 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",
" p: Float\n",
" Accumulated plastic strain\n",
" X: Array{Float64, 6}\n",
" Kinematic hardening tensor\n",
" R: Function\n",
" Calculates isotropic hardening as a function of accumulated plastic strain\n",
" α:Float\n",
" Accumulated kinematic evolution variable\n",
" dα: Function\n",
" Calculates kinematic evolution variables rate as a function of accumulated plastic slip rate\n",
" fX: Function\n",
" Calculates the kinematic \n",
"\n",
"Returns\n",
"-------\n",
" Array{Float64, 7}, return values for solver\n",
"\"\"\"\n",
"function G(params, dϵ, C, σ_begin, p, X, R, fX, ϵp)\n",
" \n",
" # Initializing wrapper\n",
" yield(pars) = vonMisesYield(pars, R(p))\n",
" dfdσ = ForwardDiff.gradient(yield)\n",
" \n",
" # Initializing variables\n",
" dσ = params[1:6]\n",
" dλ = params[end]\n",
"\n",
" # Total strain\n",
" σ_new = σ_begin + dσ\n",
" σ_shifted = vec(σ_new - X)\n",
" \n",
" # Creating wrapper for gradient\n",
" vars = dfdσ(σ_shifted)\n",
" dΨdσ = vars[1:6]\n",
"\n",
" # Calculating plastic strain rate\n",
" dϵp = dλ * dΨdσ\n",
"\n",
" # Calculating material evolution variables\n",
" ϵp_new = ϵp + dϵp\n",
"\n",
" # Evaluating equations\n",
" function_1 = dσ - C * (dϵ - dϵp)\n",
" function_2 = yield(σ_shifted)\n",
" [vec(function_1); function_2]\n",
"end\n",
"\n",
"\n",
"\"\"\"\n",
"This is a novice implementation for double contraction, a=b:c\n",
"\n",
"Parameters\n",
"----------\n",
" a: Array{Float64, 6}\n",
"\n",
"Returns\n",
"-------\n",
" Float\n",
"\"\"\"\n",
"function double_contraction(a; b=a)\n",
" indexes = [1, 2, 3, 4, 5, 6, 4, 5, 6]\n",
" summation = 0\n",
" for i in indexes\n",
" summation += a[i]*b[i]\n",
" end\n",
" summation\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",
" p: Float\n",
" Accumulated plastic strain\n",
" X: Array{Float64, 6}\n",
" Kinematic hardening tensor\n",
" R: Function\n",
" Calculates isotropic hardening as a function of accumulated plastic strain\n",
" α:Float\n",
" Accumulated kinematic evolution variable\n",
" dα: Function\n",
" Calculates kinematic evolution variables rate as a function of accumulated plastic slip rate\n",
" fX: Function\n",
" Calculates the kinematic \n",
"\n",
"Returns\n",
"-------\n",
" Tuple\n",
" returns following parameters: p, X, α, σ. See Parameters for definitions\n",
"\"\"\"\n",
"function calculate_stress(dϵ, σ, C, p, X, R, fX, ϵp)\n",
"\n",
" # Test stress\n",
" σ_tria = σ + C * dϵ\n",
"\n",
" # Calculating yield\n",
" yield = vonMisesYield(σ_tria - X, R(p))\n",
"\n",
" if yield > 1\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, σ, p, X, R, fX, ϵp)\n",
" df = ForwardDiff.jacobian(f)\n",
" \n",
" # Calculating root \n",
" result = nlsolve(not_in_place(f, df), initial_guess).zero\n",
" # Extracting values\n",
" σ += result[1:6] \n",
" dλ = result[end]\n",
" \n",
" # Wrapper for gradient\n",
" yield_f(σ_) = vonMisesYield(σ_, R(p))\n",
" dfdσ_ = ForwardDiff.gradient(yield_f)\n",
" dΨdσ = dfdσ_(vec(σ)-X)\n",
" \n",
" # Stress rate and plastic strain rate\n",
" dϵᵖ = dλ * dΨdσ\n",
" ϵp = ϵp + dϵᵖ\n",
" \n",
" # Updating material parameters\n",
" dp = sqrt(2/3 * double_contraction(dϵᵖ))\n",
" p += dp\n",
" X = fX(ϵp)\n",
" else\n",
" σ = σ_tria\n",
" end\n",
" return (p, X, σ, ϵp)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Defining strain history\n",
"\n",
"In the ideal plastic example, we only had tension stress. In this example we'll take it a bit further and calculate the cyclic strain"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done\n"
]
}
],
"source": [
"steps = 10000\n",
"strain_max = 0.004\n",
"num_cycles = 50\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)).*-ν\n",
"println(\"Done\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Hardening evolution equations\n",
"\n",
"Followig equations are in charge of evolution of isotropic and kinematic parameters"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"kinematic_hardening (generic function with 1 method)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function isotropic_hardening(ϵp_cum, R0, Q)\n",
" return R0 + Q * ϵp_cum\n",
"end\n",
"\n",
"function kinematic_hardening(ϵp, C)\n",
" return C * ϵp\n",
"end"
]
},
{
"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": 19,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAI6CAYAAABme/1AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd4FOXaBvB7A2l0EloQQpAmKBiadDEgocVILwJKMOChg5RPQDpopEj1IEKkFxEw0qSGQxUpAUGKggpIJ4USUknm++M1C0s2kJns7Mzs3r/r4jonu7Mzz95M8NnZd97XJEmSBCIiIiIisgsXrQsgIiIiInImbMCJiIiIiOyIDTgRERERkR2xASciIiIisiM24EREREREdsQGnIiIiIjIjtiAExERERHZERtwIiIiIiI7YgNORERERGRHbMCJiEhVfn5+KFu2rNZlEBHpBhtwIjKMtLQ0LFq0CI0bN4aXlxfc3NxQvHhxvP766+jduzc2b95ssf3SpUvh4uKCZcuWaVSx+pKSkjBjxgzUqVMHBQsWhLu7O0qWLIlatWph4MCB2L9/v8X2EyZMgIuLS6bH1WQymWAymex2PCIivcutdQFERNmRlpaGoKAg7NixA4ULF0ZQUBBKlSqFlJQU/Pbbb1i9ejV+//13vPPOO5le66jNX3x8PBo3boyTJ0/Cx8cHHTt2RIkSJRAfH49Tp07hm2++wf379/Hmm29qWmdkZKSmxyci0hs24ERkCGvWrMGOHTvg7++Pffv2IX/+/BbPJyYm4ujRo1ZfK0mSPUq0u9mzZ+PkyZNo3rw5Nm/ejNy5Lf9Jv3fvHi5cuGD1tfbMhMNPiIgscQgKERnC4cOHAQA9e/bM1HwDgKenJxo3bmz++a233kKvXr0AACEhIXBxcTH/uXr1KoAnwzH27duH1atXo06dOsiXL59Fw5iQkIDPP/8c/v7+yJcvH/Lnz4/69etj7dq1VutctmwZ6tevj6JFi8LT0xO+vr5o0aIF1q1bZ7Hd6dOn0bVrV/j5+cHDwwPFihVDzZo1MXToUDx+/FhWJn379s3UfANAoUKFULduXfPPfn5+mDRpEgAgICDAIpMMPXv2hIuLC/7++2/MmzcP1apVQ548eRAQEAAASE1Nxfz589GqVSuUKVMGHh4e8Pb2RrNmzbB9+3ardVobA/708KC9e/firbfeQoECBVCwYEEEBQVl+cHheXbu3Il33nkHxYoVg4eHB3x9fdGmTRvs2bPH6nGtcXFxMb/XDM87T3755Re4uLigXbt2WdZVuXJleHh44N69exaP79ixA61atUKRIkXg4eGB8uXLY+TIkbh//77s905ExsIr4ERkCEWKFAEA/P7779naPiQkBIULF8aPP/6INm3awN/f3/xcwYIFLbadOXMmdu3aheDgYDRt2tTcAN27dw9NmjTBqVOnULNmTXz44YdIT0/H9u3b8d577+Hs2bOYPHmyeT+jR49GWFgYXn75ZXTp0gUFCxbEjRs3cOzYMaxfvx6dOnUCIJrvOnXqIFeuXAgODkbZsmXx4MEDXLx4EQsWLMDUqVOtNtQ5zWTo0KGIiIjAvn370LNnT/j5+WW57eDBg3HgwAEEBQUhKCgIuXLlAgDExMRgyJAhaNCgAZo3b46iRYvixo0b2Lx5M1q1aoVFixbhww8/zLS/rIYBbdmyBT/++CNatWqFvn374uzZs9i2bRuOHTuGc+fOwdvbO1vvbfz48Zg8eTLy58+PNm3aoHTp0rh+/ToOHz6MVatWoWnTptmq53nPWTtP6tSpg0qVKmHbtm2IjY2Fl5eXxWuOHj2K33//HR06dEChQoXMj0+cOBETJ06Et7e3+UPDr7/+ihkzZmDbtm34+eefrX7QJCIHIRERGcDJkyclNzc3ycXFRerRo4e0ceNG6fLly899zZIlSySTySQtW7bM6vPjx4+XTCaTlC9fPunUqVOZnv/ggw8kk8kkTZ8+3eLxpKQkqUWLFpKLi4vF67y8vKTSpUtLiYmJmfYVHR1t/v8ff/yxZDKZpE2bNmXa7t69e1J6evpz31eGLVu2SCaTSXJ3d5f69esnbd26Vbpx48ZzX5Pxnvft22f1+Yz3XKpUKav5JicnS9evX8/0+P3796XXXntN8vLyyvT+y5QpI5UtW9bisYy/G1dXVykyMtLiuVGjRkkmk0maNm3ac99Lhh07dkgmk0kqV66c1fd/7dq1TMfN6pwwmUxSQECAxWMvOk8+//xzyWQySfPnz8/0XL9+/SSTySRt2bLF/FhkZKRkMpmkBg0aSPfv37fYfunSpZLJZJKGDh36/DdNRIbGIShEZAj+/v5YuXIlihcvjpUrV6J9+/YoW7YsvL290a5dO2zZskXxvvv06YPXX3/d4rGYmBisXLkStWvXxvDhwy2ec3d3R1hYGCRJwurVq82Pm0wmuLq6WgzpyGDtSq6Hh0emxwoWLJjtm0Zbt26NOXPmwNPTEwsWLEBQUBBeeukl+Pj4oHv37jhw4EC29mPNyJEjUaZMmUyPu7m5oWTJkpkeL1CgAEJCQhAXF4djx45l+zhdunTJNOSjT58+AJDt/cybNw+AuELt4+OT6fmXXnop2/U8j7XzBAB69OhhdVhLSkoK1q5di+LFi6Nly5bmx+fOnQsAWLRoEQoUKGDxmg8++ACvv/46Vq1aZZOaiUifOASFiAyjY8eOaNu2Lfbu3YtDhw7h5MmTOHjwICIiIhAREYH3338fS5culb3fN954I9Njx44dQ3p6OgAxBvhZqampAIDz58+bH+vWrRvmzZuHKlWqoFOnTmjcuDHq1q2bachLly5dMHfuXLRp0wYdOnRA06ZN0aBBA5QrV85iu1OnTiEiIsLiscKFC2Pw4MHmnwcOHIjQ0FDs2rULP//8M06ePInDhw9j9erVWL16NcaOHYuJEyfKCwTWM8lw9uxZTJ8+Hfv378etW7eQlJRk8fyNGzeyfZxatWpleqxUqVIAgLi4uGzt48iRI3BxcUGLFi2yfVwlssrkpZdeQtOmTbFr1y6cP38elStXBgBs3rwZcXFx+Pjjjy0+lP38889wdXXFunXrrN4Mm5KSgrt37yIuLg6FCxdW580QkabYgBORoeTOnRvNmjVDs2bNAADp6enYsGEDevXqheXLl6Nt27Z49913Ze2zRIkSmR6LiYkBIBrxrK7EmkwmPHr0yPzzrFmz8PLLL2PJkiUICwtDWFgYcufOjVatWmHmzJnmBrt27do4cOAApk6divXr12PFihUAgEqVKmH8+PHo0qULAODXX3813zSZwc/Pz6IBB8QNqMHBwQgODgYgPhwsWrQIgwcPxuTJk9GuXTurV27lZgKIZrdJkyZIT09H06ZN0aZNGxQoUAAuLi44efIkfvzxRyQnJ2f7OE+Pi86QMf49LS0tW/u4d+8eChcuDHd392wfV4msMgHEzau7du3CsmXLEBYWBgDmK+IffPCBxbYxMTFIS0t77gcjk8mE+Ph4NuBEDopDUIjI0FxcXNCxY0cMHToUALB3717Z+7A25CPjqvXHH3+M9PR0q3/S0tIsZthwcXHB4MGDcerUKdy+fRsbNmxA27ZtsWnTJrRo0QIpKSnmbevWrYvNmzfj3r17OHToEMaOHYvbt2/jvffeM+/zgw8+yHTMv/7664Xvx9XVFf369UPXrl0BKJuHO6thMFOmTEFSUhJ27tyJrVu34ssvv8SECRMwbty45141V1OhQoUQFxeX6Uq8NRlXoq3NNPPsLCXPet7QoLZt26JAgQJYuXIlJEnCnTt38NNPP8Hf3x9Vq1a12LZgwYLw8vLK8rzKOLdKly79wvdDRMbEBpyIHEK+fPkAWM5vnTFzR3avpD6tTp06OVoxsmjRomjbti2+++47BAQE4M8//8TZs2czbefq6op69eph4sSJ5rHBmzZtUnTMZ2Vk8rScZAIAly5dgre3t9XFffbt26donzlVr1498+w0L5JxRTljKsqnHT9+XHENHh4e6NSpE27cuIFdu3Zh9erVSEtLy3T1O6Pe2NhYnDt3TvHxiMjY2IATkSGsWbMGu3fvtjpm9tatW1i0aBEAWDSGGTc+XrlyRfbxihYtim7duuH48eOYMmWKeTz40/78809cvnwZgBi3e+jQoUzbpKamIjY2FiaTCXny5AEg5u+2drX21q1bAGDe7kW+/vpr/PLLL1afu3DhAr7//nuYTCabZQKIRXViYmJw5swZi8fDw8Oxc+dORfvMqYEDBwIAhg0bZnX8+dOP1a5dGy4uLli9ejUSExPNj8fGxmLkyJE5qqNnz54AgOXLl2P58uVwdXVFt27dMm2X8W1N7969cfPmzUzPP3r0KMu/VyJyDBwDTkSGcPToUcyZMwclSpRAw4YNzXNY//3339i6dSuSkpLQpk0btG/f3vya+vXrI0+ePJg9ezZiYmJQvHhxAMCgQYMyzT5hzfz583Hx4kWMGzcOK1asQIMGDVC8eHHcuHED58+fx/Hjx7F27Vr4+fkhISEBjRo1Qvny5VGjRg2UKVMGSUlJ2LVrFy5cuIB3330XlSpVAgBMmzYNe/fuRaNGjeDn54d8+fLh7Nmz2L59O7y8vMyzgLzIjh070K9fP/j5+aFBgwYoVaoUkpOTcfHiRezYsQNpaWkYNGgQatasaX5NkyZN4OLiglGjRuHMmTPmK8Kffvppto45ZMgQ7NixAw0bNkSnTp1QoEABHD9+HIcOHUKHDh2wfv36bO3Hlpo1a4ZPP/0UU6ZMQeXKldGmTRuUKlUKt2/fxsGDB1GvXj0sWbIEgBjH3a1bN6xYsQL+/v5o1aoVHjx4gJ9++gmNGzfGqVOnFNdRv359lC9fHt9//z1SU1MRHBxsnqv9aU2aNEFYWBhGjRqFChUqoFWrVvDz80N8fDyuXLmC/fv3o1GjRti2bZviWohI5zSdBNGGTpw4Ib3zzjuSl5eXlCdPHum1116T5s6da7HNuXPnpObNm0v58uWTvLy8pB49ekh37961ur/FixdLr7zyiuTh4SFVqFBBmjdvnj3eBhFl4Z9//pG++uorqW3btlKlSpWkAgUKSG5ublLJkiWl1q1bS6tWrbL6uu3bt0v16tWT8uXLJ5lMJsnFxUW6cuWKJEmSNGHCBMnFxSXLObElSZJSUlKk+fPnS/Xr15cKFiwoubu7S2XKlJHefvttac6cOVJMTIwkSZKUmpoqTZs2TWrZsqXk6+sreXh4SMWKFZPq1asnLVy4UEpNTTXvc+fOnVJISIhUpUoVqWDBglLevHmlV155RRo8eLB09erVbGfyxx9/SDNnzpRatmwplS9fXsqbN6+5vvbt20tbt261+rqVK1dK/v7+kqenpzmTDD179rTIyJotW7ZIdevWlfLnzy8VLlxYat68uXTgwAFp6dKlkouLS6Y5tv38/DLNA57Vthmszcf9Itu2bZNatGgheXl5Se7u7pKvr6/Url07ae/evRbbJScnSyNGjJBKlSolubm5SRUqVJDCwsKkx48fWz1uds6TDFOmTDFnunHjxudue/DgQalTp05SyZIlJTc3N6lYsWJS9erVpWHDhkknTpyQ9d6JyFhMkmTl+1yDyVh+uGbNmujcuTPy5cuHS5cuQZIk893o165dQ/Xq1VG4cGEMGjQIDx8+xIwZM+Dr64ujR4/C1dXVvL+FCxeib9++6NChA5o3b479+/djxYoVCAsLy/FXlERERETk3AzfgD948AAVK1ZEw4YNn/vVZ79+/bB8+XJcuHDBPMfsnj170KxZMyxcuBC9e/cGACQmJqJ06dKoX7++xY1QPXr0QEREBP755x+r02YREREREWWH4W/CXL16Ne7cuYOpU6cCEDevWLtZasOGDQgKCjI33wDQtGlTVKxYEevWrTM/tnfvXsTGxqJfv34Wr+/fvz8ePXqErVu3qvROiIiIiMgZGL4B3717NwoUKIB//vkHlSpVQv78+VGwYEH069fPvBjE9evXcffuXasrrtWuXRsnT540/5zx/5/dtkaNGnBxccnRDTpERERERIZvwC9evIjHjx+jTZs2aNmyJTZu3IhevXrh66+/RkhI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",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7fdf891fc810>)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ϵ_last = zeros(Float64, (6)) # Last total strain\n",
"ϵᵖ = zeros(Float64, (6)) # Plastic strain\n",
"σ = zeros(Float64, (6, 1)) # Stress\n",
"\n",
"ss = Float64[] # plotting stress\n",
"ee = Float64[] # plotting strain\n",
"pp = Float64[] # plotting strain\n",
"\n",
"# Isotropic hardening\n",
"σy = 200.0 # yield limit\n",
"\n",
"# Kinematic hardening\n",
"Ck = 4000.0 # saturation hardening C/D\n",
"X = zeros(Float64, 6) # kinematic hardening tensor\n",
"\n",
"p = 0.0 # Accumulated plastic strain\n",
"\n",
"# Isotropic hardening\n",
"R(ϵp_cum) = isotropic_hardening(ϵp_cum, σy, σy)\n",
"\n",
"# kinematic hardening\n",
"fX(ϵp) = kinematic_hardening(ϵp, Ck)\n",
"\n",
"ϵp = zeros(Float64, 6)\n",
"for i=1:steps\n",
" # Actual calculation\n",
" dϵ = reshape(ϵ_tot[i, :, :], (6, 1)) - ϵ_last\n",
" p, X, σ, ϵp = calculate_stress(dϵ, σ, C, p, X, R, fX, ϵp)\n",
" ϵ_last += dϵ\n",
" push!(ss, σ[1])\n",
" push!(ee, ϵ_last[1])\n",
" push!(pp, p)\n",
"end\n",
"PyPlot.plot(ee, ss)\n",
"PyPlot.title(\"Stress-Strain curve\")\n",
"PyPlot.xlabel(\"Strain\")\n",
"PyPlot.ylabel(\"Stress\")\n",
"PyPlot.grid()"
]
},
{
"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
}