Weak Form and Finite Element Formulation
Learning objectives
By the end of this lesson, you should be able to:
- Write the weak forms for displacement and damage in phase-field fracture.
- Identify trial functions, test functions, and finite element spaces.
- Understand how boundary conditions enter the finite element equations.
- Translate the formulation into implementation-ready residual notation.
1. Starting point
A common brittle phase-field fracture energy is
The unknowns are:
- displacement \(u\),
- damage field \(d\in[0,1]\).
A common degradation function is
where \(k\ll1\) is a residual stiffness used to avoid singular stiffness matrices in fully damaged regions.
2. Function spaces
For a body \(\Omega\subset\mathbb{R}^m\), choose
with test functions
Typical choices are:
displacement: vector CG1 or CG2
damage: scalar CG1
If \(u=\bar u\) is prescribed on \(\Gamma_D\), then the displacement test function satisfies \(v=0\) on \(\Gamma_D\).
3. Kinematics and stress
For small strain,
For isotropic linear elasticity,
and
With isotropic degradation,
4. Weak form for displacement
Assume external work
The displacement weak form is
Equivalently, define the residual
The finite element problem is
5. Weak form for damage
Taking variation with respect to \(d\) gives
So the damage residual is
The damage problem is
For \(g(d)=(1-d)^2+k\),
6. Damage strong form and natural boundary condition
The damage weak form corresponds to
The natural damage boundary condition is
In FEM, this natural condition is automatically applied if no essential damage boundary condition is prescribed.
7. Tension-compression split
Degrading the full elastic energy may create damage under compression. To avoid this, many models split the energy:
Only the tensile part is degraded:
Then the damage residual becomes
8. Implementation-ready structure
In a finite element code, the core ingredients are:
def eps(u):
return sym(grad(u))
def psi_e(u):
return 0.5*lmbda*tr(eps(u))**2 + mu*inner(eps(u), eps(u))
def g(d):
return (1-d)**2 + k
def sigma(u,d):
return g(d)*(lmbda*tr(eps(u))*I + 2*mu*eps(u))
Ru = inner(sigma(u,d), eps(v))*dx - dot(b,v)*dx - dot(tbar,v)*ds
Rd = g_prime(d)*psi_e(u)*q*dx \
+ Gc*(d*q/ell + ell*dot(grad(d),grad(q)))*dx
This residual form is the bridge between the variational theory and the finite element implementation.