Hi, every FEniCSx uesrs. I’m implementing an adaptive phase-field fracture model in FEniCSx (dolfinx), closely following the approach in Giri et al. (2025, Finite Elements in Analysis and Design). The benchmark is a 1×1 mm edge-cracked domain under uniaxial tension (Mode I). Despite matching the paper’s AMR criterion (φ ≥ 0.25, h ≥ l0/2), I observe two persistent issues:
1. Non-straight crack path — the crack deviates from the expected horizontal trajectory, producing a visibly jagged path with local wiggles.
2. Over-refinement — the refinement band is much wider than the crack itself, and the final mesh (~32,000 elements) is larger than the paper’s (~28,000), even though the initial mesh (3,700 triangles, lc = 0.025) matches.
What I’ve ruled out so far:
- Mesh anisotropy from gmsh Delaunay (tried Frontal-Delaunay with Mesh.Algorithm = 6, identical results)
- Convergence tolerance (tol = 1e-5, standard)
- History variable projection after refinement (using interpolate_nonmatching)
Related details:
# Material & model
E = 210.0, nu = 0.3, Gc = 2.7e-3, l0 = 0.01 # kN/mm², mm
# AMR criterion (from the paper)
if max(phi_per_cell) >= 0.25 and h_cell > l0 / 2.0:
refine cell
# BCs: bottom fully fixed (u_x = u_y = 0), top prescribed u_y
# Staggered scheme, P1 elements, ATS sub-stepping
About Load-displacement :
Peak load ~720 N at u ≈ 0.0061 mm, roughly consistent with the paper, but the post-peak softening is noisy with frequent ATS rejections.
Suspicions:
- Bottom BC: fully fixed (u_x = 0) prevents Poisson contraction. Could this distort the stress field near the crack tip?
- Edge-bisection refinement creating anisotropic refinement patterns?
- Something else in the staggered scheme or history variable update?
Has anyone encountered similar issues with jagged crack paths in dolfinx phase-field simulations? Any advice on debugging or fixing this would be greatly appreciated. I’m happy to share the full code.