Skip to content

Files

phase_field_fracture

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Phase Field Fracture

Formulation

Minimization of Energy Functional

In the phase field framework, fracture processes can be determined via the minimization of the following energy functional over displacement field u and phase field variable d :

Π ( u , d ) = Ω ψ ( ε ( u ) , d )  d Ω + Ω g c γ ( d , d )  d Ω Ω b u  d Ω Γ N t u  d Γ ,

where g c is the Griffith-type critical energy release rate and γ is the regularized crack surface density function (per volume):

γ ( d , d ) = 1 2 l d 2 + l 2 | d | 2 ,

with l being the length-scale parameter. The bulk elastic energy ψ is assumed to take the following form:

ψ ( ε , d ) = g ( d ) ψ + ( ε ) + ψ ( ε ) ,

with g ( d ) = ( 1 d ) 2 being the degradation function that models partial loss of stiffness due to the presence of cracks.

Miehe's model [1] of spectral decomposition of the strain tensor is adopted:

ψ ± ( ε ) = λ 2 tr ( ε ) ± 2 + μ ε ± : ε ± ,

where ε ± := Σ a = 1 n ϵ a ± n a n a , with { ϵ a } a = 1 n and { n a } a = 1 n being the principal strains and principal directions of ε , respectively. We have x ± := 1 2 ( x ± | x | ) being the bracket operator. Miehe's model prevents crack generation in compression.

Strong Form

The governing equations and boundary conditions obtained by minimizing the total energy functional are:

σ + b = 0 in     Ω , g c l ( d l 2 Δ d ) = 2 ( 1 d ) H in     Ω , u = u D on     Γ D , σ n = t on     Γ N , d n = 0 on     Γ ,

where σ = ψ ε = g ( d ) σ + + σ , and we have

σ ± = ψ ± ε = λ tr ( ε ) ± I + 2 μ ε ± .

The history variable prevents crack from healing itself during unloading:

H ( x , t ) = max s [ 0 , t ] ψ + ( ε ( x , s ) ) .

Weak Form

For arbitrary test function ( δ u , δ d ) , we pose the following variational problem

a ( ( u , d ) , ( δ u , δ d ) ) = F ( ( δ u , δ d ) ) ,

where we have

a ( ( u , d ) , ( δ u , δ d ) ) = Ω σ ( ε , d ) : δ u  d Ω + g c Ω ( d l δ d + l d δ d )  d Ω + Ω 2 H d   δ d  d Ω , F ( ( δ u , δ d ) ) = Γ N t δ u  d Γ + Ω b δ u  d Ω + Ω 2 H δ d  d Ω .

There are two common schemes to solve this coupled nonlinear problem: monolithic and staggered schemes. In this example, we use the staggered scheme. More details can be found in our paper [2].

Eigenvalue/Eigenvector Derivative with Degeneracy

Before we move to the implementation section, caveats on computing the derivative of eigenvalues and eigenvectors (especially with degenerate eigenvalues) are briefly discussed here. One may tend to fully rely on JAX automatic differentiation to compute the derivative of eigenvalues and eigenvectors. However, when repeated eigenvalues occur, JAX native jax.grad may fail and return np.nan, as discussed in this post. The issue has its own complexity, and is not resolved yet.

One workaround is to add a small random noise to the matrix so that it always has distinct eigenvalues. This approach proves to be effective in our implementation of the phase field method.

The second approach is to define custom derivative rules with knowledge to handle repeated eigenvalues. In our example, JAX-FEM needs to computes σ ε , which further requires to compute ε + ε and ε ε . More generally, if a second order tensor A decompose as A = Σ a = 1 n λ a n a n a and we define tensor map F ( A ) := Σ a = 1 n f ( λ a ) n a n a , then we are interested in computing F A . The procedures are well presented in Miehe's paper [3], in particular, Eq. (19) is what we are concerned about. We implemented the algorithms in the file eigen.py. In this file, you will see how native AD of JAX fails on repeated eigenvalues, but once custom derivative rules are specified, the issues is resolved.

Finally, make sure your JAX version is up-to-date, since we have observed some possible unexpected behavior of the function np.linalg.eigh in older versions of JAX, e.g., 0.3.x version.

Execution

Run

python -m demos.phase_field_fracture.example

from the jax-fem/ directory.

Results

Results can be visualized with ParaWiew.

Deformation (x10)

Loading history and tensile force

References

[1] Miehe, Christian, Martina Hofacker, and Fabian Welschinger. "A phase field model for rate-independent crack propagation: Robust algorithmic implementation based on operator splits." Computer Methods in Applied Mechanics and Engineering 199.45-48 (2010): 2765-2778.

[2] Xue, Tianju, Sigrid Adriaenssens, and Sheng Mao. "Mapped phase field method for brittle fracture." Computer Methods in Applied Mechanics and Engineering 385 (2021): 114046.

[3] Miehe, Christian, and Matthias Lambrecht. "Algorithms for computation of stresses and elasticity moduli in terms of Seth–Hill's family of generalized strain tensors." Communications in numerical methods in engineering 17.5 (2001): 337-353.