In [4]:
using ConstLab
using Plots
using Voigt
plotly();

In [ ]:
include("mises_mixed_hardening.jl")

Parameters


In [5]:
σy =  200.0*10^6
mp = MisesMixedHardMP(
    E = 200.0 * 10^9,
    ν =  0.3,
    σy = σy ,
    H = 0.1 * 200*10^9,
    κ∞ = 0.1 * σy,
    α∞ = 0.1 * σy,
    r = 0.5
);

Material Status


In [6]:
ms = MisesMixedHardMS()


Out[6]:
MisesMixedHardMS
  ₙεₚ: [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
  ₙσ: [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
  ₙα: [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
  ₙκ: 0.0
  ₙμ: 0.0
  loading: false

Loading data


In [7]:
tend = 1.0
nts = 50
ts = collect(linspace(0, tend, nts))
ε_max = 0.01


Out[7]:
0.01

Load case: Plain Strain


In [8]:
εs_pstrain, σs_pstrain, ε_control_pstrain = loadcase(:uniaxial_strain, ε_max, ts, :unsym);

In [11]:
@time εs_res_pstrain, σs_res_pstrain, matstats = driver(stress, ATS, ms, mp, ts, εs_pstrain, 
σs_pstrain, ε_control_pstrain);


  0.046601 seconds (73.30 k allocations: 5.698 MB, 35.54% gc time)

Load case: Plain Uniaxial stress


In [12]:
εs_pstress, σs_pstress, ε_control_pstress = loadcase(:uniaxial_stress, ε_max, ts, :unsym);

In [17]:
@time εs_res_pstress, σs_res_pstress, matstats = driver(stress, ATS, ms, mp, ts, εs_pstress, 
σs_pstress, ε_control_pstress, ftol = 1e-5, iterations=30);


  0.165668 seconds (517.20 k allocations: 42.176 MB, 13.54% gc time)

Plotting


In [18]:
vm(x) = sqrt(3/2) * vnorm(dev(x));

In [19]:
p = plot()
p = plot!(p, vec(εs_res_pstress[1,:]), 
          Float64[vm(σs_res_pstrain[:,i]) for i = 1:nts],
          label="Plane strain");
p = plot!(p, vec(εs_res_pstress[1,:]), 
             Float64[vm(σs_res_pstress[:,i]) for i = 1:nts],
             label="Plane stress");
p = plot!(p, vec(εs_res_pstress[1,:]), 
             (mp.κ∞ + mp.α∞ + mp.σy) * ones(ts),
             label="Saturation stress")
xlabel!(p, "ε_11"); ylabel!(p, "σ"); title!(p, "Uniaxial strain vs stress")


[Plots.jl] Initializing backend: plotly
Out[19]: