Material model API
This page documents the constructors of the bundled material models together with the PlaneStrain and PlaneStress wrappers that embed a 3D model into a 2D analysis. The assembler, the load handler, the material interface, and the remaining public functions are on the General API page.
Material models
Each material model is a concrete AbstractMaterial subtype whose constructor signature is documented on its dedicated page within the Material models section. The grouped autodocs below provide the associated parameter docstrings.
FerriteSolidMechanics.Hooke — Type
Hooke(E, nu)Three-dimensional isotropic linear elastic material. The stress is σ = C ⊡ ε with a constant tangent C, so the assembler treats Hooke cells as linear.
Parameters
E– Young's modulus; higher values stiffen the elastic responsenu– Poisson's ratio; controls lateral contraction under stretch
References
- Ferrite.jl documentation. Linear elasticity tutorial. https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/linear_elasticity/
FerriteSolidMechanics.Hooke2D — Type
Hooke2D(E, nu; plane_stress=false)Two-dimensional isotropic linear elastic material. The stress is σ = C ⊡ ε with a constant tangent C, so the assembler treats Hooke2D cells as linear.
Parameters
E– Young's modulus; higher values stiffen the elastic responsenu– Poisson's ratio; controls lateral contraction under stretch
Keyword arguments
plane_stress– selects the plane stress constitutive matrix (σ_zz = 0); the defaultfalseselects plane strain (ε_zz = 0)
FerriteSolidMechanics.NeoHooke — Type
NeoHooke(E, nu)Compressible Neo–Hookean hyperelastic material. The constructor stores the equivalent Lamé parameters μ (shear modulus) and λ.
Parameters
E– Young's modulus; higher values stiffen the elastic responsenu– Poisson's ratio; controls lateral contraction under stretch
References
- Ferrite.jl documentation. Hyperelasticity tutorial. https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/hyperelasticity/
FerriteSolidMechanics.ArrudaBoyce — Type
ArrudaBoyce(μ, κ, N; tangent=:AT)Compressible Arruda–Boyce eight-chain hyperelastic material.
Parameters
μ– Network shear modulus; scales the network stress contributionκ– Bulk modulus; parameterizes the volumetric responseN– Limiting chain extensibility, the number of Kuhn segments per chain; larger values push locking to higher stretches
Keyword arguments
tangent– chooses how the model forms∂P/∂F::AT(default) builds it from the analytic second Piola–Kirchhoff stress and its derivative,:ADobtains it by automatic differentiation of the PK1 map
References
- E. M. Arruda, M. C. Boyce. A three-dimensional constitutive model for the large stretch behavior of rubber elastic materials. Journal of the Mechanics and Physics of Solids 41(2) (1993) 389-412. https://doi.org/10.1016/0022-5096(93)90013-6
FerriteSolidMechanics.MooneyRivlin — Type
MooneyRivlin(C10, C01, κ; tangent=:AD)Compressible Mooney–Rivlin hyperelastic material. The isochoric response is linear in the first two modified invariants.
Parameters
C10– Coefficient of the first modified invariantC01– Coefficient of the second modified invariantκ– Bulk modulus; parameterizes the volumetric response
Keyword arguments
tangent– chooses how the model forms∂P/∂F::AD(default) obtains it by automatic differentiation of the PK1 map,:ATbuilds it from the analytic second Piola–Kirchhoff stress and its derivative
References
- M. Mooney. A theory of large elastic deformation. Journal of Applied Physics 11(9) (1940) 582-592. https://doi.org/10.1063/1.1712836
- R. S. Rivlin. Large elastic deformations of isotropic materials. IV. further developments of the general theory. Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences 241(835) (1948) 379-397. https://doi.org/10.1098/rsta.1948.0024
FerriteSolidMechanics.Ogden — Type
Ogden(μ, α, κ)Compressible Ogden hyperelastic material with an arbitrary number of isochoric terms. The stress and tangent are analytic, in spectral form. Scalar μ and α values are accepted as a one-term shorthand. The combined small-strain shear modulus 0.5 * sum(μ .* α) must be positive.
Parameters
μ– Vector holding one coefficient per term, in theμ / αOgden conventionα– Vector holding one nonzero principal stretch exponent per termκ– Bulk modulus; parameterizes the volumetric response
References
- R. W. Ogden. Large deformation isotropic elasticity – on the correlation of theory and experiment for incompressible rubberlike solids. Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences 326(1567) (1972) 565-584. https://doi.org/10.1098/rspa.1972.0026
- R. W. Ogden. Non-Linear Elastic Deformations. Ellis Horwood, 1984.
FerriteSolidMechanics.J2Plasticity — Type
J2Plasticity(E, nu, sigma0, H)Small-strain von Mises plasticity with isotropic hardening.
Parameters
E– Young's modulus; higher values stiffen the elastic responsenu– Poisson's ratio; controls lateral contraction under stretchsigma0– Initial yield limit; higher values delay the onset of plasticityH– Linear hardening modulus; larger values raise the post-yield stiffness
References
- E. A. de Souza Neto, D. Perić, D. R. J. Owen. Computational Methods for Plasticity: Theory and Applications. Wiley, 2008.
- J. C. Simo, T. J. R. Hughes. Computational Inelasticity. Springer, 1998.
- Ferrite.jl documentation. Von Mises plasticity tutorial. https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/plasticity/
FerriteSolidMechanics.VEPD_Detrez2010 — Type
VEPD_Detrez2010(E, ν, R0, Q, b, α, β, n_ab, μ_ab, G, τ; plastic_update=:end_step, maxwell_update=:closed_form_cv)Viscoelastic-plastic-damage material model after Detrez. Combines crystalline elasticity, network hyperelasticity, selectable Maxwell-branch updates, and isotropic hardening with damage.
Parameters
E– Young's modulus of the crystalline phase; higher values stiffen the elastic stress responseν– Poisson's ratio of the crystalline phase; controls lateral contraction under stretchR0– Initial yield stress; higher values delay the onset of plasticityQ– Saturation modulus; higher values raise the asymptotic hardening limitb– Saturation exponent; larger values cause the yield stress to plateau at smaller plastic strainsα– Damage scaling factor; sets the asymptotic damage level (value is capped at 1)β– Damage exponent; larger values accelerate damage accumulation with plastic strainn_ab– Number of Kuhn segments per Arruda–Boyce chain; larger values soften the network at moderate stretches and push locking to higher stretchesμ_ab– Network shear modulus; scales the Arruda–Boyce network stress contributionG– Vector of per-Maxwell-branch shear moduli; higher values raise the branch elastic stiffnessτ– Vector of per-Maxwell-branch relaxation times; larger values delay branch equilibration
Keyword arguments
plastic_update–:end_stepapplies one return map at the end of the global step;:path_substeppedapplies the same return map over 8 deformation-path subincrementsmaxwell_update–:closed_form_cvupdates the viscous right Cauchy-Green branch stateCvin closed form;:objective_rateadvances branch Cauchy stresses with a 16-substep objective rate update
References
- F. Detrez, S. Cantournet, R. Séguéla. A constitutive model for semi-crystalline polymer deformation involving lamellar fragmentation. Comptes Rendus Mécanique 338(12) (2010) 681–687. https://doi.org/10.1016/j.crme.2010.10.008
The code-level reference for this implementation is an unpublished C routine that was kindly provided by Fabrice Detrez.
FerriteSolidMechanics.VEVP_Zhao2021_AD — Type
VEVP_Zhao2021_AD(μE, κ, NV, β, α, μVe, μVN, τ̂₁, τ̂N, m₁, mN, τcut₁, τcutN, μV;
dt_scale=1.0)Viscoelastic-viscoplastic material model after Zhao with automatic differentiation for the algorithmic tangent. Uses multiple inelastic modules and a semi-implicit internal-variable update.
Note: not interchangeable with VEVP_Zhao2021_AT
Uses the same parameterization and semi-implicit update structure as VEVP_Zhao2021_AT, but builds the final PK2 stress from a different basis. This struct uses the converged SVⱼ (new μVₖ₊₁, new Cᵢₖ₊₁), so the returned stress is colocated with the AD tangent. VEVP_Zhao2021_AT uses the trial SV_trial{j} (old μVₖ, old Cᵢₖ_inv), matching the CAPRICCIO/Zhao analytical-tangent path. The AD path also applies small determinant and principal stretch floors. The same F, dt, parameters, and history state therefore give different PK2 stresses from the two models.
Parameters
NV must be at least 2 as branch parameters are interpolated between the branch-1 and branch-N end points.
μE– Elastic branch shear modulusκ– Bulk modulusNV– Number of inelastic modules (requires NV ≥ 2; module parameters are interpolated between the module-1 and module-NV endpoints)β– Yield-threshold softening coefficient; larger values drop the threshold soonerα– Inelastic shear modulus evolution rate; higher values approach μVe fasterμVe– Target total inelastic shear modulus approached by the μV evolutionμVN– Module-NV shear modulus endpoint; near zero gives uniform modulesτ̂₁,τ̂N– Flow-resistance stress-scale endpoints in the power-flow law; larger values reduce the viscoplastic flow ratem₁,mN– Stress exponents in the power-flow law; larger values increase the nonlinearity of the viscoplastic rateτcut₁,τcutN– Initial yield thresholds for the modules; subtracted from the trial-stress ratio before the power-law rampμV– Initial total inelastic shear modulus
Keyword arguments
dt_scale– multipliesdtinside the constitutive update so the time step is expressed in the unit used during parameter calibration. Default1.0leavesdtunscaled. When the calibration unit and the driver unit differ, set it to the conversion factor: parameters calibrated in seconds with a driver passingdtin nanoseconds givedt_scale = 1e-9.
References
- W. Zhao, M. Ries, P. Steinmann, S. Pfaller. A viscoelastic-viscoplastic constitutive model for glassy polymers informed by molecular dynamics simulations. International Journal of Solids and Structures 226–227 (2021) 111071. https://doi.org/10.1016/j.ijsolstr.2021.111071
- W. Zhao, R. Xiao, S. Pfaller, P. Steinmann. Modeling strain hardening in glassy polymers based on the microscopic mechanisms revealed by molecular dynamic simulations. Journal of the Mechanics and Physics of Solids 206 (2026) 106384. https://doi.org/10.1016/j.jmps.2025.106384
The implementation-level reference for this code path is part of the CAPRICCIO FE–MD coupling tool. This file is a translated/adapted Julia implementation with package-specific changes and explicit permission for MIT distribution in FerriteSolidMechanics.jl: Pfaller, S., Ries, M., Zhao, W., Bauer, C., Weber, F., & Laubert, L. CAPRICCIO - Tool to run concurrent Finite Element-Molecular Dynamics Simulations (Version 2.0.1), Zenodo (2024). https://doi.org/10.5281/zenodo.12606758
FerriteSolidMechanics.VEVP_Zhao2021_AT — Type
VEVP_Zhao2021_AT(μE, κ, NV, β, α, μVe, μVN, τ̂₁, τ̂N, m₁, mN, τcut₁, τcutN, μV;
dt_scale=1.0)Viscoelastic-viscoplastic material model after Zhao with an assemble-time constitutive update. Provides an analytically derived stiffness matrix for finite-strain problems.
Note: not interchangeable with VEVP_Zhao2021_AD
Uses the same parameterization and semi-implicit update structure as VEVP_Zhao2021_AD, but builds the final PK2 stress from a different basis. This struct uses the trial SV_trial{j} (old μVₖ, old Cᵢₖ_inv) with a hand-derived analytical tangent. VEVP_Zhao2021_AD uses the converged SVⱼ (new μVₖ₊₁, new Cᵢₖ₊₁) and obtains the tangent by AD. The same F, dt, parameters, and history state therefore give different PK2 stresses from the two models.
An archived Matrix-storage translation of the CAPRICCIO/Zhao routines is preserved as FerriteSolidMechanics.Experimental.VEVP_Zhao2021_AT_Matlab.
Parameters
NV must be at least 2 as branch parameters are interpolated between the branch-1 and branch-N end points.
μE– Elastic branch shear modulusκ– Bulk modulusNV– Number of inelastic modules (requires NV ≥ 2; module parameters are interpolated between the module-1 and module-NV endpoints)β– Yield-threshold softening coefficient; larger values drop the threshold soonerα– Inelastic shear modulus evolution rate; higher values approach μVe fasterμVe– Target total inelastic shear modulus approached by the μV evolutionμVN– Module-NV shear modulus endpoint; near zero gives uniform modulesτ̂₁,τ̂N– Flow-resistance stress-scale endpoints in the power-flow law; larger values reduce the viscoplastic flow ratem₁,mN– Stress exponents in the power-flow law; larger values increase the nonlinearity of the viscoplastic rateτcut₁,τcutN– Initial yield thresholds for the modules; subtracted from the trial-stress ratio before the power-law rampμV– Initial total inelastic shear modulus
Keyword arguments
dt_scale– multipliesdtinside the constitutive update so the time step is expressed in the unit used during parameter calibration. Default1.0leavesdtunscaled. When the calibration unit and the driver unit differ, set it to the conversion factor: parameters calibrated in seconds with a driver passingdtin nanoseconds givedt_scale = 1e-9.
References
- W. Zhao, M. Ries, P. Steinmann, S. Pfaller. A viscoelastic-viscoplastic constitutive model for glassy polymers informed by molecular dynamics simulations. International Journal of Solids and Structures 226-227 (2021) 111071. https://doi.org/10.1016/j.ijsolstr.2021.111071
- W. Zhao, R. Xiao, S. Pfaller, P. Steinmann. Modeling strain hardening in glassy polymers based on the microscopic mechanisms revealed by molecular dynamic simulations. Journal of the Mechanics and Physics of Solids 206 (2026) 106384. https://doi.org/10.1016/j.jmps.2025.106384
The implementation-level reference for this code path is part of the CAPRICCIO FE–MD coupling tool. This file is a translated/adapted Julia implementation with package-specific changes and explicit permission for MIT distribution in FerriteSolidMechanics.jl: Pfaller, S., Ries, M., Zhao, W., Bauer, C., Weber, F., & Laubert, L. CAPRICCIO - Tool to run concurrent Finite Element-Molecular Dynamics Simulations (Version 2.0.1), Zenodo (2024). https://doi.org/10.5281/zenodo.12606758
FerriteSolidMechanics.VEVP_MOAMMM — Type
VEVP_MOAMMM(order, KK_inf, GG_inf, alpha, nu_p, eta, p_exp,
sigmac0, hc1, hc2, hcexp,
sigmat0, ht1, ht2, htexp,
hb0, hb1, hb2,
KK, k, GG, g)Viscoelastic-viscoplastic material model from the MOAMMM project with automatic differentiation. Combines a logarithmic strain viscoelastic update, a Drucker–Prager yield surface, isotropic hardening through separate compression and tension yield stress evolution, and kinematic hardening.
Parameters
order– Polynomial order for the logarithm/exponential approximationsKK_inf– Equilibrium bulk modulus; long-term volumetric stiffnessGG_inf– Equilibrium shear modulus; long-term deviatoric stiffnessalpha– Drucker–Prager yield exponent; 1 → linear Drucker–Prager, 2 → quadraticnu_p– Plastic Poisson's ratio; controls volumetric–deviatoric coupling under plastic floweta– Viscoplastic viscosity; higher values delay rate-dependent flowp_exp– Viscoplastic exponent; controls stress sensitivity of the viscoplastic ratesigmac0– Initial compression yield limit; higher values delay compressive yieldhc1– Linear compression yield stress growth coefficienthc2– Saturation compression yield stress incrementhcexp– Compression yield stress saturation exponent; at γ = 1/h{c,exp}, the factor (1 − exp(−h{c,exp}·γ)) ≈ 0.63sigmat0– Initial tension yield limit; higher values delay tensile yieldht1– Linear tension yield stress growth coefficientht2– Saturation tension yield stress incrementhtexp– Tension yield stress saturation exponent; at γ = 1/h{t,exp}, the factor (1 − exp(−h{t,exp}·γ)) ≈ 0.63hb0– Constant term of the kinematic hardening polynomial that scales the total backstress ratehb1– Linear term of the kinematic hardening polynomial; scales with plastic strainhb2– Quadratic term of the kinematic hardening polynomial; scales with the square of plastic strainKK– Vector of per-branch bulk moduli; raise the volumetric branch stiffnessk– Vector of per-branch volumetric relaxation times; larger values delay volumetric equilibrationGG– Vector of per-branch shear moduli; raise the deviatoric branch stiffnessg– Vector of per-branch deviatoric relaxation times; larger values delay deviatoric equilibration
References
- V.-D. Nguyen, F. Lani, T. Pardoen, X. P. Morelle, L. Noels. A large strain hyperelastic viscoelastic-viscoplastic-damage constitutive model based on a multi-mechanism non-local damage continuum for amorphous glassy polymers. International Journal of Solids and Structures 96 (2016) 192–216. https://doi.org/10.1016/j.ijsolstr.2016.06.008
The code-level reference for this implementation is the Fortran UMAT umat.f from the moammmPublic code repository.
The Nguyen et al. (2016) paper describes a full hyperelastic–viscoelastic–viscoplastic model with damage and softening. The translated Fortran UMAT (umat.f in the moammmPublic repository) implements only the damage-free, no-softening subset of that model. This Julia port implements the same subset.
Dimensionality wrappers
The PlaneStrain and PlaneStress wrappers turn a 3D material model into a 2D one, with the mathematical details explained on the Wrappers page.
FerriteSolidMechanics.PlaneStrain — Type
PlaneStrain(model)Wrap a 3D material model for a 2D plane strain analysis, imposing ε₃₃ = ε₁₃ = ε₂₃ = 0. Alias for Reduced with the Prescribed closure.
The wrapper embeds the 2D strain measure with F̄₃₃ = 1 or ε̄₃₃ = 0 depending on kinematics, and restricts the 3D tangent to its in-plane part. is_linear is forwarded, so e.g. PlaneStrain(Hooke(E, ν)) is preassembled into the static linear stiffness and reproduces Hooke2D bitwise.
FerriteSolidMechanics.PlaneStress — Type
PlaneStress(model; tol=1e-10, maxiter=20)Wrap a 3D material model for a 2D plane stress analysis, imposing σ₃₃ = 0. Alias for Reduced with the ZeroOutOfPlaneStress closure.
A scalar Newton iteration solves the out-of-plane unknown locally at each quadrature point: F̄₃₃ from P̄₃₃ = 0 for a FiniteStrain model, ε̄₃₃ from σ̄₃₃ = 0 for a SmallStrain one. The in-plane tangent follows by static condensation of that constraint.
For a linear small-strain model the constraint is affine, so the solve converges in one step and the condensed tangent is constant. is_linear is forwarded in that case and PlaneStress(Hooke(E, ν)) is preassembled, matching Hooke2D(E, ν; plane_stress=true).
Keyword arguments
tol– Residual tolerance on the out-of-plane stress, relative to the stress scalemax(norm(stress), 1)maxiter– Maximum number of local Newton iterations