Challenges in reproducing phase-field fracture benchmark: Unphysical crack trajectory and mesh refinement behavior

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.