mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-20 10:08:31 +00:00
feat(materials): add continuum kinematics trait tags
Introduce `SmallStrainKinematics` vs `GreenLagrangeKinematics` hooks so `update_material_cache!` can pick the strain measure per material. - Define `AbstractContinuumKinematics`, concrete tags, and default `continuum_kinematics(::AbstractMaterial)` dispatch.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# SPDX-FileCopyrightText: 2015-2026 Jukka Aho
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
"""
|
||||
Continuum kinematics tag for stateful solid materials.
|
||||
|
||||
[`update_material_cache!`](@ref) uses [`continuum_kinematics`](@ref) to decide whether
|
||||
integration-point strain is the symmetric displacement gradient (`SmallStrainKinematics`)
|
||||
or Green–Lagrange strain from `F` (`GreenLagrangeKinematics`). Hyperelastic models already
|
||||
use the Green–Lagrange path via [`StatelessStrainDependent`](@ref).
|
||||
|
||||
Finite-strain **multiplicative** elastoplasticity is not implemented here; StVK–J₂ uses
|
||||
the Green–Lagrange measure with a St. Venant–Kirchhoff elastic predictor (see
|
||||
[`StVenantKirchhoffJ2Plasticity`](@ref)).
|
||||
"""
|
||||
|
||||
abstract type AbstractContinuumKinematics end
|
||||
|
||||
"""Symmetric gradient `ε = sym(∇u)` (small-strain assembly)."""
|
||||
struct SmallStrainKinematics <: AbstractContinuumKinematics end
|
||||
|
||||
"""`E = ½(FᵀF − I)` with `F = I + ∇u ⊗ …` (total Lagrangian assembly)."""
|
||||
struct GreenLagrangeKinematics <: AbstractContinuumKinematics end
|
||||
|
||||
"""
|
||||
continuum_kinematics(material::AbstractMaterial)
|
||||
|
||||
Return [`SmallStrainKinematics`](@ref) by default; materials such as
|
||||
[`StVenantKirchhoffJ2Plasticity`](@ref) override with [`GreenLagrangeKinematics`](@ref).
|
||||
"""
|
||||
continuum_kinematics(::AbstractMaterial) = SmallStrainKinematics()
|
||||
Reference in New Issue
Block a user