Elastic Properties
ElasticProperties is the data side of the mechanics subsystem. It holds per-phase elastic constants, transformation stretches, global mechanical boundary conditions applied to the domain, and optional chemo- and thermo-mechanical coupling parameters. The continuum mechanics that consumes this state — St. Venant–Kirchhoff hyperelasticity, the Piola-Kirchhoff stress, and the spectral mechanical-equilibrium solver — is covered in the Mechanics module. This page documents what ElasticProperties reads and stores.
Key Classes and Concepts
ElasticProperties : public OPObject: the storage + reader.ElasticityModels: enum selecting the effective-stiffness homogenisation model across diffuse interfaces. Accepted$EModelvalues (defaultKHACHATURYAN):KHACHATURYAN,STEINBACH,VOIGT,REUSS,RANK1,RANK1NL.ElasticConstantMode: eitherELASTICMODULI(default) — specify elastic moduli; the stiffness tensor is assembled from them — orTENSOR, which lets you provide the fullVoigt stiffness matrix directly.
Mechanical boundary conditions
Six axes are exposed, matching the Voigt index order used elsewhere in the library (normal + shear):
| Token | Voigt axis |
|---|---|
$BCX | |
$BCY | |
$BCZ | |
$BCYZ | |
$BCXZ | |
$BCXY |
Each axis accepts one of four kinds:
| Value | Accompanying value |
|---|---|
FREEBOUNDARIES | none |
APPLIEDSTRAIN | $BCValueX…$BCValueXY (matching axis) |
APPLIEDSTRAINRATE | $BCValueX…$BCValueXY (matching axis) |
APPLIEDSTRESS | $BCValueX…$BCValueXY (matching axis) |
Additionally $Restrict accepts ASPECTRATIO (aspect ratio kept constant during adjustment) or SHEAR (shear deformation prevented). The rationale is the Fourier-periodic-boundary limitation described under External boundary conditions in Mechanics.
Elastic moduli
For each phase
| Token | Modulus |
|---|---|
$K_<alpha> | Bulk modulus |
$E_<alpha> | Young's modulus |
$L_<alpha> | First Lamé parameter |
$G_<alpha> | Shear modulus |
$Nu_<alpha> | Poisson's ratio |
$M_<alpha> | P-wave modulus |
With $ElasticConstantMode = TENSOR, supply either the full matrix $C_<alpha> (6×6) or its individual components $C<ii><jj>_<alpha> with
Transformation stretches
Each phase carries a
$U_0 Transformation stretch for phase 0 : ((1.0 0 0)(0 1.0 0)(0 0 1.0))Couplings
- External forces —
$ConsiderExternalForces(defaultfalse). When on, an external force-density field is allocated and applied in the equilibrium equation (see Mechanics §Considering internal forces). - Chemo-mechanical —
$ChemoMechanicalCoupling(defaultfalse). Requires$Cref_<alpha>_<comp>per phase-component pair (reference composition for eigenstrain calculation). - Thermo-mechanical —
$ThermoMechanicalCoupling(defaultfalse). Requires$Tref_<alpha>reference temperature per phase. Supply either a scalar$Gamma_<alpha>(applied uniformly to every entry of theGamma matrix) or the per-component upper triangle $Gamma<ii><jj>_<alpha>. Athermal expansion matrix $Alpha<ii><jj>_<alpha>(with) may also be supplied.
Usage
Input
@ElasticProperties
$EModel Homogenisation model : KHACHATURYAN
$ElasticConstantMode Elastic-constant specification : ELASTICMODULI
$BCX X-axis stress/strain kind : FREEBOUNDARIES
$BCY Y-axis stress/strain kind : APPLIEDSTRAIN
$BCValueY Y-axis applied strain : 0.01
$BCZ Z-axis stress/strain kind : FREEBOUNDARIES
$BCYZ yz shear kind : FREEBOUNDARIES
$BCXZ xz shear kind : FREEBOUNDARIES
$BCXY xy shear kind : FREEBOUNDARIES
$Restrict Geometric restriction (optional) : ASPECTRATIO
# Per-phase elastic moduli (provide any two) {#per-phase-elastic-moduli-provide-any-two}
$E_0 Young's modulus, phase 0 : 210e9
$Nu_0 Poisson's ratio, phase 0 : 0.30
$E_1 Young's modulus, phase 1 : 120e9
$Nu_1 Poisson's ratio, phase 1 : 0.34
# Transformation stretches (required) {#transformation-stretches-required}
$U_0 Transformation stretch, phase 0 : ((1.0 0 0)(0 1.0 0)(0 0 1.0))
$U_1 Transformation stretch, phase 1 : ((1.02 0 0)(0 0.99 0)(0 0 0.99))
$ConsiderExternalForces Apply external force density : No
$ChemoMechanicalCoupling Enable eigenstrain from composition : No
$ThermoMechanicalCoupling Enable thermal eigenstrain : NoOutput
ElasticProperties is written via its WriteVTK method — stress and strain fields, typically through the Voigt-component name convention (xx, yy, zz, yz, xz, xy). Restart is supported through the standard Read / Write raw I/O.
Example
#include "ElasticProperties.h"
#include "ElasticitySolverSpectral.h"
ElasticProperties EP(OPSettings, InputFile);
ElasticitySolverSpectral ES(OPSettings, InputFile);
for(RTC.tStep = RTC.tStart; RTC.tStep <= RTC.nSteps; RTC.IncrementTimeStep())
{
// ... phase-field update ...
ES.Solve(EP, BC, RTC.dt);
if (RTC.WriteVTK())
{
EP.WriteVTK(OPSettings, RTC.tStep);
}
}Dependencies
- Mechanics — continuum theory, strain measures.
- ElasticitySolverSpectral — consumes
ElasticPropertiesevery time step. - MechanicalLoads — optional time-varying loading schedule.
- PhaseField, BoundaryConditions, Temperature, Composition — for coupled problems.