Skip to content

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:

(1)ψel=12 E:C:E,

(2)S=ψelE=C:E,

(3)E=12(FTFI),

where ψel is the elastic strain energy density, C is the elasticity tensor, S is the second Piola-Kirchhoff stress tensor, E is the Green-Lagrange strain tensor, I is the unit tensor and F is the deformation gradient tensor. The components of the deformation gradient tensor F are given by

(4)Fij=xiXj,

where xi are the spatial coordinates and Xj are the material coordinates (i,j=1,2,3). For further analysis it is convenient to introduce a displacement vector

(5)u(X)=x(X)X

and rewrite the deformation gradient tensor in the following form

(6)F=I+f,

with f given by

(7)f=Xu=[uxxuxyuxzuyxuyyuyzuzxuzyuzz]

where ui (i=x,y,z) are the components of the displacement vector u.

In the absence of external forces, the general form of the mechanical equilibrium condition reads

(8)P=0,

where P=FS is the first Piola-Kirchhoff stress tensor.

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:

(9)F=FelFplFtr,

where Fel is the elastic deformation gradient tensor, Fpl is the plastic deformation gradient tensor and Ftr is the transformation-induced deformation gradient tensor.

For further analysis, it is convenient to introduce the stress-free deformation gradient tensor

(10)Fsf=FplFtr,

and define the elastic deformation gradient tensor as follows

(11)Fel=FFsf1.

Using the Green-Lagrange strain definition and the elastic deformation gradient above, the elastic strain tensor gets the form

(12)Eel=12(FelTFelI),

and the elastic second Piola-Kirchhoff stress tensor in the intermediate configuration, obtained after the transformation induced and/or plastic deformation, has the form

(13)Sel=ψelEel=C:Eel.

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

(14)S=JsfFsf1SelFsfT,

where Jsf=det(Fsf) and T=(1)T.

Then, the updated mechanical equilibrium equation reads

(15)(JsfFFsf1SelFsfT)=0,

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:

(16)F=I+f¯+f^,

where f¯ and f^ are the homogeneous and inhomogeneous parts of the displacement gradient tensor, correspondingly.

The Fourier solution delivers the inhomogeneous displacement gradient tensor f^ while the homogeneous displacement gradient tensor component can be found using the following equation

(17)C¯:ε¯=S¯,

where ε¯ and S¯ are the average residual strain and average second Piola-Kirchhoff stress, correspondingly. The average stress is obtained by averaging the stress tensor over the entire simulation domain

(18)S¯=1VSel(r)r.

Solving the above with regards to ε¯ yields

(19)ε¯=C¯1:S¯,

which allows finding the components of the symmetrized homogeneous displacement gradient tensor

(20)f¯symε¯.

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

(21)Fn=I+f¯n+f^n,

where

(22)f¯n=f¯n1C¯1:S¯n1.

The updated deformation gradient tensor Fn is then fed back into the right-hand side of the next iteration.

Now, to consider the externally applied mechanical boundary conditions, the procedure described above can be modified as follows:

(23)f¯n=f¯n1C¯1:(S¯n1σext),

which considers the externally applied stress σext. Suppose an applied strain should be used instead of the applied stress. In that case, it is sufficient to use the corresponding applied displacement gradient tensor instead of the correction term $ \bar{\bf{f}}^\mathrm{n}$.

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

(24)(JsfFFsf1SelFsfT)=N,

where N is the local force density. Then the mechanical equilibrium solution given transforms into

(25)u~n=A~1:(2πiqσ~RHSn1+N~),

where N~ are the Fourier components of the force densities N.

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:

(26)EHencky=12ln(FTF).

Note that the stress obtained using the Hencky strain diverges to for the deformation gradients approaching zero, preventing infinite compression and inversion. While the Hencky strain is a desirable strain measure to represent large deformations, its use is associated with the computation of the logarithm of the Cauchy strain, which makes it impractical in real simulations. The most frequently used approach to approximate the Hencky strain behaviour is using rate equations where the deformation is accumulated in small steps, owing to the fact that Hencky strains are linearly additive (see, e.g. Borukhovich 2014, 2015). Bažant (1998) proposed sets of strain measures, some of which closely approach the Hencky strain behaviour without evaluating the computationally costly ln(FTF). The strain obtained from Bažant (1998) using the exponent 2 reads

(27)EBazant=14(FTF(FTF)1).

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 93.75% at a deformation gradient of 2.0 in stretch and 93.75% at 0.5 in compression. It thus offers easy interpretation, numerical evaluation, and correct physical behaviour at large deformations simultaneously (Neff 2016).

Using the Hencky strain model, the right-hand side of the mechanical equilibrium equation takes the form

(28)σRHSn1=C¯:εn1JsfFn1Fsf1(Cel1)n1(C:Eeln1)FsfT,

where Cel=FelTFel is the elastic Cauchy strain tensor.

Using the Bazant strain model, the equilibrium right-hand side becomes

(29)σRHSn1= C¯:εn112JsfFn1Fsf1(C:Eeln1)FsfT12JsfFn1Fsf1(Cel1)n1(C:Eeln1)(Cel1)n1FsfT.

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 F˙pl is based on the plastic velocity gradient tensor as follows:

(31)F˙pl=LpFp

(32)Lp=sγ˙sMs

where Ms is the non-symmetric Schmid tensor of slip system s.

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 τcs is introduced as a state variable for each slip system s, which is implemented in such a way that each phase has its own characteristic τcs and stores the hardening state of each slip system s. The resolved shear stress can be calculated by τs=S:Ms for slip system s, where S=12C[FTF1] is the second Piola-Kirchhoff stress tensor. where M is the symmetric Schmid tensor,

(33)M=12(msns+nsms)

with the slip direction vector ms and the slip plane normal vector ns. The rotation of the slip systems by the rotation of the grain is taken into account by multiplying the vectors with the rotation matrix R:

(34)MRs=12(RmsRns+RnsRms)

The shear rate in the slip system s is calculated from the resolved shear stress τs and the critical resolved shear stress τcs:

(35)γ˙s=γ˙0(τsτcs)nsgn(τs)

where γ˙0 and n are the reference shear rate and strain rate sensitivity parameter, respectively. The hardening of the slip system s due to the plastic deformation is incorporated by the evolution of the critical resolved shear stress τcs:

(36)τcs=β=0Nqsβ[h0(1τcβτs)m]|γ˙β|

This equation considers the increase in critical resolved shear stress through the interaction of slip system s with all the slip systems β, and consequently strain hardening of the material occurs. Here qsβ and τs are the estimates of the latent hardening and saturated critical resolved shear stress, respectively. h0 and m are the hardening parameters.

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 ρs and velocity of dislocations νs at the slip system s:

(37)γs˙=ρsbνs,

where b represents the length of the Burgers vector. The velocity ν of dislocation in a particular slip system s is controlled by the resolved shear stress τs and critical resolved shear stress τcs.

(38)νs=ν0(τsτcs)1n,

where ν0 is the reference dislocation velocity which corresponds to the dislocation velocity of the slip system when resolved shear stress is equal to the critical resolved shear stress. Further, strain rate sensitivity is controlled by the power n.

The resistance to dislocation slip τcs has material dependent initial value τ0, which is further increased by the evolution of dislocation density ρs at that particular slip system s.

(39)τcs=τ0+aGbρs,

where G denotes the shear modulus of the material and a corresponds to the geometrical factor. Dislocation density takes into account statistically stored dislocations ρSSDs and geometrically necessary dislocations ρGNDs:

(40)ρs=ρSSDs+ρGNDs.

Statistically stored dislocation density ρSSDs mainly exists in the bulk of the phases with a statistically equal amount of positive and negative dislocations, whereas geometrically necessary dislocation density ρGNDs is present at the regions where the spatial gradient of plastic deformation is relatively high and at interfacial regions where crystal compatibility is low.

The evolution of the ρSSDs of crystalline material is based on the balance between generation and annihilation rates. Here, the extension of the Kocks-Mecking law is used, where ρGNDs and ρSSDs are considered as follows:

(41)ρ˙SSDs=(k1ρSSDs+ρGNDsk2ρSSDs)γs˙.

The first part of Kocks-Mecking law describes the multiplication of the dislocations with the factor k1, while the second part describes the softening of the material by annihilation of the dislocations controlled by the factor k2.

The evolution of ρGNDs considers Nye's tensor \bmΛ˙, which describes the lattice rotation of the system and is calculated by the spatial gradient of the plastic strain rate or curl of the plastic deformation gradient. The Nye's dislocation density tensor reads:

(42)\bmΛ˙=(ejklϵ˙il,kp)Teiej,

where ejkl represents the third order permutation tensor with the value of 1, -1, or 0 based upon the order of the permutation indices. The transpose of the dot product of the negative permutation tensor and plastic strain rate gradient ϵ˙il,kp results in Nye's tensor. The evolution of ρGNDs for each slip system s reads:

(43)ρ˙GNDs=1b(|ds\bmΛ˙ls|+|ds\bmΛ˙ds|),

The evolution of ρGNDs considers the edge and screw part of the dislocation density. ds and ls are the slip direction vector and the dislocation line vector, respectively.

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@ElasticProperties block: homogenisation model ($EModel), the six-axis boundary-condition grid ($BCX$BCXY), per-phase moduli, transformation stretches, and chemo- / thermo-mechanical coupling.
  • Mechanical Loads@MechanicalLoads block: time-scheduled load list with $TriggerON/$TriggerOFF events.
  • Elasticity Solver (Spectral)@ElasticitySolverSpectral block: iterative-solver convergence parameters.
  • Damage@Damage block (creep / PEEQ models) and @CrystalPlasticity block 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, and WriteAverageDislocationDensityGrainsCSV:

    cpp
    void 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:

    cpp
    bool 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

Released under the GNU GPLv3 License.