Mechanics
List of Classes
- ElasticProperties - Reads and stores elastic properties.
- ElasticitySolverSpectral - Solves mechanical equilibrium problem using the iterative algorithm in Fourier space
- CrystalPlasticity - Solves the plastic deformation problem using crystal plasticity model
- Phenomenological Crystal Plasticity Model - Defines phenomenological crystal plasticity model
- Physical Crystal Plasticity Model - Defines physics based crystal plasticity model
Elasticity model formulation
The elasticity implementation in Openphase is based on teh St. Venant-Kirchhoff hyperelasticity model:
where
where
and rewrite the deformation gradient tensor in the following form
with
where
In the absence of external forces, the general form of the mechanical equilibrium condition reads
where
The equations above assume purely elastic deformation. In real situations, other deformation mechanisms can be active, e.g., plastic and transformation induced. In such a case, the total deformation gradient tensor can be decomposed as follows:
where
For further analysis, it is convenient to introduce the stress-free deformation gradient tensor
and define the elastic deformation gradient tensor as follows
Using the Green-Lagrange strain definition and the elastic deformation gradient above, the elastic strain tensor gets the form
and the elastic second Piola-Kirchhoff stress tensor in the intermediate configuration, obtained after the transformation induced and/or plastic deformation, has the form
Then, the second Piola-Kirchhoff stress tensor in the reference configuration suitable for the mechanical equilibrium calculation can be obtained via the pull back operation
where
Then, the updated mechanical equilibrium equation reads
External boundary conditions
Periodic boundary conditions imposed by the Fourier transformation used to solve the mechanical equilibrium problem apply severe limitations on the system geometry and mechanical boundary condition. Here, we present an effective way to overcome some of the limitations.
One way to overcome the limitations imposed by the periodic boundary conditions is to consider the homogeneous part of the deformation in real space as an external condition. This is achieved by splitting the deformation gradient tensor into homogeneous and inhomogeneous parts as follows:
where
The Fourier solution delivers the inhomogeneous displacement gradient tensor
where
Solving the above with regards to
which allows finding the components of the symmetrized homogeneous displacement gradient tensor
The equation above is approximate but is sufficient for constructing the iterative scheme to adjust the homogeneous deformation and compensate for the residual stress associated with the homogeneous deformation. Thus, the updated total deformation gradient tensor reads
where
The updated deformation gradient tensor
Now, to consider the externally applied mechanical boundary conditions, the procedure described above can be modified as follows:
which considers the externally applied stress
In contrast to the applied nodal displacements and forces typically used in the finite element method, the applied stresses and strains are symmetric quantities. Thus, the procedure described above cannot consider simple shear deformation because it requires considering non-symmetric deformation tensor containing rotation. Thus, the proposed algorithm can consider only pure shear in combination with volumetric change.
Considering internal forces
The forces originating within the mechanical system can be considered by using the general form of the mechanical equilibrium condition
where
where
Different strain measures
As discussed in the previous sections, the St. Venant-Kirchhoff hyperelastic model is constructed using the Green-Lagrange strain, which has a direct physical interpretation. On the other hand, the St. Venant-Kirchhoff hyperelastic model has stability issues upon compression. Different strain measures behave very differently as the deformation gradient approaches the compressive limits described below.
One can easily see that upon compression, the Green-Lagrange strain is limited by -50%, allowing system inversion upon further compression, which is nonphysical. In contrast, the correct physical behavior of the deformed system at large deformations is described by Hencky, also called logarithmic, natural, or true strain:
Note that the stress obtained using the Hencky strain diverges to
This strain formulation has significant advantages over the Green-Lagrange and Hencky strains: it avoids the instability associated with the Green-Lagrange strain and avoids evaluating the computationally intensive functions needed for the Hencky strain. Its values vary almost linearly between factor-two compression and factor-two stretch — about
Using the Hencky strain model, the right-hand side of the mechanical equilibrium equation takes the form
where
Using the Bazant strain model, the equilibrium right-hand side becomes
ight)\left(\bf{C}\mathrm{el}^{-1}\right)^\mathrm{n-1} \bf{F}\mathrm{sf}^{-\mathrm{T}} . \tag{30} \end
Crystal plasticity
The evolution of the plastic deformation gradient
where
Phenomenological Crystal Plasticity Model
The phenomenological crystal plasticity model describes plastic deformation at the crystal scale by relating the slip on crystallographic systems to the applied stress through constitutive laws. To capture the evolution of plasticity, the critical resolved shear stress
with the slip direction vector
The shear rate in the slip system
where
This equation considers the increase in critical resolved shear stress through the interaction of slip system
Physical Crystal Plasticity Model
Physical Crystal Plasticity Model governed plastic deformation by the flow rule, namely Orowan law, which calculates the shear rate on the individual slip system of the crystal. The motion of dislocation in a particular slip system is influenced by the dislocations lying on different slip systems. The shear strain rate on a given slip system depends upon dislocation density
where
where
The resistance to dislocation slip
where
Statistically stored dislocation density
The evolution of the
The first part of Kocks-Mecking law describes the multiplication of the dislocations with the factor
The evolution of
where
The evolution of
Usage
Input
The mechanics module group is driven by three separate .opi blocks, each owning its own keyword set. Consult the dedicated pages for the full tables:
- Elastic Properties —
@ElasticPropertiesblock: homogenisation model ($EModel), the six-axis boundary-condition grid ($BCX…$BCXY), per-phase moduli, transformation stretches, and chemo- / thermo-mechanical coupling. - Mechanical Loads —
@MechanicalLoadsblock: time-scheduled load list with$TriggerON/$TriggerOFFevents. - Elasticity Solver (Spectral) —
@ElasticitySolverSpectralblock: iterative-solver convergence parameters. - Damage —
@Damageblock (creep / PEEQ models) and@CrystalPlasticityblock for plasticity hardening.
Output
Stress and strain fields via
ElasticProperties::WriteVTK(per-component Voigt-named fields:xx,yy,zz,yz,xz,xy).Crystal-plasticity CSV statistics — written by
WriteAveragePlasticStrainCSV,WriteAverageCRSSCSV,WriteAverageCRSSPhaseCSV,WriteAverageCRSSGrainsCSV,WriteAverageDislocationDensityCSV,WriteAverageDislocationDensityPhasesCSV, andWriteAverageDislocationDensityGrainsCSV:cppvoid WriteAveragePlasticStrainCSV(ElasticProperties& EP, std::string filename, double timeOrStrain); void WriteAverageCRSSCSV(PhaseField& Phase, std::string filename, double timeOrStrain); void WriteAverageCRSSPhaseCSV(PhaseField& Phase, std::string filename, double timeOrStrain); void WriteAverageCRSSGrainsCSV(PhaseField& Phase, std::string filename, double timeOrStrain); void WriteAverageDislocationDensityCSV(PhaseField& Phase, std::string filename, double timeOrStrain); void WriteAverageDislocationDensityPhasesCSV(PhaseField& Phase, std::string filename, double timeOrStrain); void WriteAverageDislocationDensityGrainsCSV(PhaseField& Phase, std::string filename, double timeOrStrain);Raw / restart I/O — binary and HDF5:
cppbool Read (const Settings& locSettings, const BoundaryConditions& BC, const int tStep) override; bool Write(const Settings& locSettings, const int tStep) const override; bool ReadH5 (const BoundaryConditions& BC, H5Interface& H5, const int tStep); void WriteH5(int tStep, H5Interface& H5, bool legacy_format = false);
Example
See damage.md → Usage Example for Polycrystal Plasticity with Damage for a full cpp example combining ElasticProperties, ElasticitySolverSpectral, crystal-plasticity, and damage.
Dependencies
- Elastic Properties, Elasticity Solver (Spectral), Mechanical Loads, Fracture Field — the API surfaces this page describes.
- Damage — slip-system-level damage models that build on the crystal-plasticity machinery here.
- PhaseField, BoundaryConditions, Settings, Composition, Temperature — required for coupled problems.