In the phase field framework, fracture processes can be determined via the minimization of the following energy functional over displacement field
where
with
with
Miehe's model [1] of spectral decomposition of the strain tensor is adopted:
where
The governing equations and boundary conditions obtained by minimizing the total energy functional are:
where
The history variable prevents crack from healing itself during unloading:
For arbitrary test function
where we have
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].
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 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.
Run
python -m demos.phase_field_fracture.example
from the jax-fem/
directory.
Results can be visualized with ParaWiew.
Deformation (x10)
Loading history and tensile force
[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.