Skip to content

The affine formulation ​

The whole page as one script

Every block of this page, in order, is scripts/material_laws/14_affine.jl. From a clone of the repository, julia --project=docs -e 'using Pkg; Pkg.instantiate()' once, then julia scripts/material_laws/14_affine.jl, runs it end to end.

The secant methods replace each nonlinear phase by a linear one of the same stress at the same strain, without prestress: a line through the origin. The incremental approach uses the tangent, but only for the increments of a step. Between the two, the affine formulation of Masson et al. (2000) uses the tangent on the total strain: every phase is replaced by the line that touches its stress–strain curve at the current strain, a linear law with a prestress. The composite of these phases is a linear thermoelastic one, which the schemes of the package homogenize. The example below runs it.

The linearization of a phase ​

Phase , of volume fraction , is nonlinear elastic (or viscous, the strain then being a strain rate): its stress is a function of the strain alone. Near a strain it is approximated by its first-order expansion,

exact at in value and in slope. The tangent of an isotropic law is anisotropic as soon as the strain has a deviator: the stiffness along the current deviator differs from the stiffness across it. For the power law (PowerLawElasticity) of exponent , the shear stiffness along the deviator is times the secant one.

The exact linearization would be taken at the local strain, different at every point. As in the secant methods, the formulation keeps one linearization per phase, about a strain that represents the phase: here its average strain.

The comparison composite ​

With uniform tangents and prestresses, the phases form a linear composite with eigenstresses, whose response a linear scheme gives through its strain concentration tensors . For two phases, Levin's theorem gives its phase averages without any further scheme-specific tensor: the effect of uniform eigenstresses follows from the concentration tensors of the composite without them. Written for the strain,

and the mixture rule    gives the second phase. The tangents and prestresses depend on the average strains, which the comparison composite returns: the formulation is a fixed point on , solved by Newton's method. The macroscopic stress is that of the comparison composite,       : the phases carry the stress of their average strain.

Properties ​

  • Linear phases. The tangents are the stiffnesses and the prestresses vanish: the formulation is the linear scheme.

  • Laminates. The exact fields of a nonlinear laminate are uniform in each layer, so that the linearization about the average strain of a layer is exact there, and the thermoelastic laminate of the tangents has the same solution. With the scheme Laminated, the affine formulation is the exact nonlinear laminate. The tests of the package check it against an independent solution, by the continuity of the tractions across the layers.

  • Between the secant estimates. For a matrix–inclusion composite of power laws, Masson et al. (2000) find the affine estimate softer than the classical secant and incremental ones, and in general stiffer than the variational (modified secant) one, except in shear at very high nonlinearity; the example below finds the same order with Mori–Tanaka.

  • The third invariant. The anisotropic tangent sees the direction of the strain deviator: unlike the secant estimates, the affine one distinguishes a tension from a shear of the same equivalent strain.

  • No effective potential. The stress is not the derivative of an effective energy, and Masson et al. (2000) show that it can violate the Hashin–Shtrikman variational bound at small contrast and high nonlinearity.

The composite as a law ​

AffineComposite builds a law of MaterialLaws whose internal variable is the average strain of the first phase (M_ε, after its name). The tangents come from automatic differentiation of the phase laws, and the cell whose stiffnesses they replace gives the concentration tensors: any linear scheme of the package for an RVE, Laminated for a Laminate. The tangent of the composite follows from the implicit-function theorem applied to the fixed point, the variation of the concentration tensors with the tangents included.

At zero strain, a power law of exponent below one has an infinite shear tangent: the linearization does not exist. The composite at rest is left untouched; a loading that leaves a phase without deviatoric strain, such as a pure volume change, is refused.

Scope ​

phasestwo, laws of the strain alone (nonlinear elasticity, or viscosity read in strain rates)
schemesany linear scheme of the package; the tangents are anisotropic, and the Hill tensors of an anisotropic matrix are integrated numerically
costabout 70 ms per step for spheres and Mori–Tanaka, most of it in the derivatives of the anisotropic Hill tensors
not coveredmore than two phases (Levin's theorem then needs the eigenstress concentration of the scheme); the extension to history-dependent laws in the same paper; the tangent model of Molinari et al. (1987) for viscoplastic polycrystals, which uses the same linearization but, as Masson et al. (2000) show, combines it with a secant concentration rule, an inconsistency that drives it toward the Reuss bound at high nonlinearity

Example: a power-law composite by the affine formulation ​

This example homogenizes the composite of the secant example with the affine formulation, and compares it with the secant estimates and the uniform-field composites.

The composite ​

A soft matrix holds 30 % of stronger spherical particles, both of power-law type (PowerLawElasticity).

julia
using MeanFieldHomogenization, TensND, Plots

f = 0.3                                                              # particle fraction
matrix = PowerLawElasticity(; k = 60e3, σ₀ = 80.0, ε₀ = 1e-3, m = 0.2)      # MPa
particles = PowerLawElasticity(; k = 150e3, σ₀ = 320.0, ε₀ = 1e-3, m = 0.6)
rve = RVE()
add_phase!(rve, :M, Ellipsoid(1.0), Dict(:C => TensISO{3}(1.0, 1.0)); fraction = :rest)
add_phase!(rve, :P, Ellipsoid(1.0), Dict(:C => TensISO{3}(1.0, 1.0)); fraction = f)
laws = (M = matrix, P = particles)
codetheory
AffineComposite(rve, laws)each phase replaced by its tangent and prestress at its average strain, Mori–Tanaka on the comparison composite
NonlinearHomogenized(rve, Dict(pairs(laws)); method)the secant estimates, classical or modified
UniformStrain, UniformStressthe uniform-field composites

Tension ​

An isochoric tension, of equivalent strain e_max at the end:

julia
e_max = 5e-3
tension = LoadingPath(range(0, 1; length = 26); ε11 = t -> e_max * t,
    ε22 = t -> -e_max * t / 2, ε33 = t -> -e_max * t / 2, ε23 = 0, ε13 = 0, ε12 = 0)
σ_eq(r) = r[:σ11] - r[:σ22]                       # the von Mises stress on this path
p = plot(; xlabel = "macroscopic equivalent strain (‰)", ylabel = "macroscopic equivalent stress (MPa)",
    legend = :bottomright)
for (c, label, ls) in ((UniformStrain(laws, (M = 1 - f, P = f)), "uniform strain", :dash),
                       (NonlinearHomogenized(rve, Dict(pairs(laws)); method = ClassicalSecant()), "classical secant", :solid),
                       (AffineComposite(rve, laws), "affine", :solid),
                       (NonlinearHomogenized(rve, Dict(pairs(laws))), "modified secant", :solid),
                       (UniformStress(laws, (M = 1 - f, P = f)), "uniform stress", :dash))
    r = point_response(c, tension)
    plot!(p, r[:ε11] * 1e3, σ_eq(r); lw = 2, ls, label)
end
p

The affine estimate lies between the two secant ones, softer than the classical and stiffer than the modified, as Masson et al. (2000) find for the Hashin–Shtrikman estimate.

Tension and shear ​

A shear of the same equivalent strain:

julia
shear = LoadingPath(range(0, 1; length = 11); ε11 = 0, ε22 = 0, ε33 = 0, ε23 = 0, ε13 = 0,
    ε12 = t -> sqrt(3) / 2 * e_max * t)
final(c) = (rt = point_response(c, tension); rs = point_response(c, shear);
    (tension = σ_eq(rt)[end], shear = sqrt(3) * rs[:σ12][end]))
(affine = final(AffineComposite(rve, laws)), modified_secant = final(NonlinearHomogenized(rve, Dict(pairs(laws)))))
(affine = (tension = 150.24084922795004, shear = 146.68782386401068), modified_secant = (tension = 145.0855931464917, shear = 145.0855931464917))

The modified secant estimate depends on the strain through its second invariant only, and gives the same equivalent stress in both. The affine one does not: the tangent of each phase is stiffer across its strain deviator than along it, and the composite sees the direction of the loading.

Check ​

With linear phases the formulation is the linear Mori–Tanaka estimate. A power law of exponent one is linear, of shear modulus :

julia
linear = (M = PowerLawElasticity(; k = 60e3, σ₀ = 80.0, ε₀ = 1e-3, m = 1.0),
          P = PowerLawElasticity(; k = 150e3, σ₀ = 320.0, ε₀ = 1e-3, m = 1.0))
c = AffineComposite(rve, linear)
lin = RVE()
add_phase!(lin, :M, Ellipsoid(1.0), Dict(:C => TensISO{3}(3 * 60e3, 2 * 80.0 / 3e-3)); fraction = :rest)
add_phase!(lin, :P, Ellipsoid(1.0), Dict(:C => TensISO{3}(3 * 150e3, 2 * 320.0 / 3e-3)); fraction = f)
E = Mandel{Float64}(1e-3, -5e-4, -5e-4, 0, 0, 0)
point_update(c, E, initial_state(c), 1.0)[2] ≈ KM(homogenize(lin, MoriTanaka(), :C))
true

This page was generated using Literate.jl.