RasmahRasmah

Gradient-Enhanced Plasticity

println("Julia ", VERSION)
Julia 1.12.6

Overview

Local softening plasticity predicts mesh-dependent strain localization: as the mesh is refined, the plastic zone collapses onto a single element. Gradient-enhanced plasticity (de Borst & Mühlhaus 1992; Peerlings et al. 1996) regularizes this by making the equivalent plastic strain nonlocal. The nonlocal field κ̄ is the solution of an implicit Helmholtz equation

\[\bar\kappa - l^2 \nabla^2 \bar\kappa = \kappa , \qquad \partial\bar\kappa/\partial n = 0\]

where l is an internal length. The regularized κ̄ enters the yield stress, so localization smears out over a width ~l instead of a single element.

using Rasmah

n = 201
dx = 1.0 / (n - 1)
x = range(0, 1; length = n)
κ = cos.(π .* x)          # a smooth "local plastic strain" field
l = 0.1

κ̄ = helmholtz_regularize(κ, l; dx = dx)

println("peak |κ|  = ", round(maximum(abs, κ); digits = 3))
println("peak |κ̄|  = ", round(maximum(abs, κ̄); digits = 3), "   (regularization reduces the peak)")
peak |κ|  = 1.0
peak |κ̄|  = 0.912   (regularization reduces the peak)

The Helmholtz equation is linear with constant coefficients, so cos(πx) is an eigenfunction: κ̄ = cos(πx)/(1 + l²π²). The regularized field is the local field attenuated by 1/(1 + l²π²) — the longer the internal length l, the more smoothing:

an = κ ./ (1 + l^2 * π^2)
println("max |κ̄ − cos(πx)/(1+l²π²)| = ", round(maximum(abs.(κ̄ .- an)); sigdigits = 3))
max |κ̄ − cos(πx)/(1+l²π²)| = 0.00219

Next steps