ConstitutiveModels

Stable Dev Build Status Coverage

ConstitutiveModels.jl aims to offer a general package for efficient implementation of general constitutive models with state.

Example LinearElastoPlasticity model

using ConstitutiveModels
using Plots
using Tensors

function run_loop!(Fs, σs, motion, model, props, state, λs)
  for λ in λs
    @show λ
    F = deformation_gradient(motion, model, props, state, λ)
    # P = pk1_stress(model, props, F)
    σ, state = cauchy_stress(model, props, F, state)
    push!(Fs, F)
    push!(σs, σ)
  end
end

props = Dict(
  "youngs modulus"            => 70e9,
  "poissons ratio"            => 0.3,
  "yield stress"              => 200.0e6,
  "isotropic hardening model" => "VoceIsotropicHardening",
  "A"                         => 200.0e6,
  "n"                         => 20

)
model, props, state = LinearElastoPlasticity(props)

motion = UniaxialStressDisplacementControl
λs = LinRange(1.0, 1.1, 100)

Fs = Tensor{2, 3, Float64, 9}[]
σs = Tensor{2, 3, Float64, 9}[]

run_loop!(Fs, σs, motion, model, props, state, λs)

F_11s = map(x -> x[1, 1], Fs)
σ_11s = map(x -> x[1, 1], σs)

p = plot(F_11s, σ_11s)