Engineering & Materials
📅 Лис 2025 ⏱️ ~12 хв читання 🎓 Advanced

Fracture Mechanics — When Materials Fail

Why does a cracked windshield grow catastrophically while a scratch in steel stays put? Fracture mechanics answers this with energy arguments, stress intensity factors and the Paris law — giving engineers quantitative tools to predict when a crack will propagate.

▶ Open Fracture Simulation

1. Griffith's Energy Criterion

In 1921, Alan Griffith observed that real materials fracture at stresses far below their theoretical strength. His insight: a crack introduces a stress concentration but also releases elastic strain energy. A crack grows when the energy released exceeds the energy needed to create new fracture surfaces.

For a through-crack of half-length a in an infinite plate under remote stress σ, the strain energy release rate is:

G = πσ²a / E (plane stress)

The surface energy per unit area is γ (J/m²). The crack propagates when G ≥ Gc, where Gc = 2γ is the critical energy release rate:

σf = √(2Eγ / πa)

This Griffith criterion reveals the key insight: fracture stress scales as 1/√a. Double the crack length → fracture at 71% of the original stress.

2. Stress Intensity Factor K

Griffith's energy approach works globally, but we need a local description of the stress field near a crack tip. Irwin (1957) showed that for any crack geometry, the singular stress field has the form:

σij = K / √(2πr) · fij(θ)

where r is the distance from the crack tip, θ is the angle, and fij(θ) are dimensionless angular functions. The stress intensity factor K captures everything about the loading and geometry:

K = Y · σ · √(πa)

Here Y is a dimensionless geometry factor (Y = 1 for an infinite plate, tabulated for other geometries). The singular 1/√r stress field is universal — only its amplitude K changes.

3. Crack Opening Modes

There are three fundamental ways a crack can open, each with its own K:

Real cracks are usually mixed-mode. The effective K is written as an equivalent Keff = √(KI² + KII² + KIII²/(1-ν)).

4. Irwin's Plastic Zone

The K-based stress field predicts infinite stress at r = 0 — physically impossible. In ductile materials, yielding limits the stress. Irwin estimated the plastic zone radius by setting σyy = σyield:

rp = (1/2π) · (KI / σys

For plane strain (thick specimens), the plastic zone is smaller by a factor of ~3: rp,plane strain = rp/3. The condition for valid K-based LEFM (linear elastic fracture mechanics) is that the plastic zone is much smaller than other dimensions — specimen size requirements drive standard fracture toughness tests.

5. Fracture Toughness KIc

The material property that resists fracture is the critical stress intensity factor KIc (plane strain fracture toughness). A crack propagates when:

KI ≥ KIc

KIc has units of MPa·√m. The relationship to Griffith's Gc is:

Gc = KIc² / E (plane stress)    or    Gc = KIc² (1-ν²) / E (plane strain)

6. Fatigue Crack Growth — Paris Law

Under cyclic loading, cracks grow at stress levels well below KIc. Paris and Erdogan (1963) found empirically that crack growth per cycle follows a power law:

da/dN = C · (ΔK)m

where ΔK = Kmax − Kmin = Y · Δσ · √(πa) is the stress intensity range, and C, m are material constants (typically m ≈ 2–4 for metals).

The Paris law gives three regimes on a log(da/dN) vs log(ΔK) plot:

Integrating the Paris law from initial crack size a0 to critical crack size ac = (KIc/Yσ)²/π gives the number of cycles to failure:

Nf = ∫[a₀ → a_c] da / (C · (Y·Δσ·√(πa))m)

For m ≠ 2, this integral has a closed form:

Nf = [a01-m/2 − ac1-m/2] / [C · (1-m/2) · (Y·Δσ·√π)m]

7. 2D Implementation

A simple 2D fracture simulation can use a spring-lattice model: particles on a grid connected by springs. Each spring breaks when its strain exceeds a threshold εc = σy/E.

// Spring-lattice fracture (2D, canvas)
const N = 64;
const springs = buildLatticeConnections(particles, N);

function update(dt) {
  // Verlet integration
  for (const p of particles) {
    const acc = computeForces(p, springs) / p.mass;
    p.vel.add(acc.scale(dt));
    p.pos.add(p.vel.scale(dt));
  }

  // Break springs that exceed strain threshold
  for (const s of springs) {
    const currentLen = dist(s.a.pos, s.b.pos);
    const strain = (currentLen - s.restLen) / s.restLen;
    if (Math.abs(strain) > STRAIN_THRESHOLD) {
      s.broken = true;
    }
  }
}

function computeForces(p, springs) {
  const f = new Vec2(0, 0);
  for (const s of springs) {
    if (s.broken) continue;
    const other = s.a === p ? s.b : s.a;
    const delta = other.pos.sub(p.pos);
    const len = delta.length();
    const extension = len - s.restLen;
    f.add(delta.normalized().scale(s.stiffness * extension));
  }
  return f;
}

For more physically accurate fracture, XFEM (Extended FEM) enriches standard finite element shape functions with discontinuous functions across crack surfaces and singular crack-tip functions — avoiding re-meshing as cracks grow.

8. Material Comparison

Material KIc (MPa√m) Paris m Fracture type
Soda-lime glass 0.7–0.8 Brittle (Griffith)
Alumina (Al₂O₃) 3–5 ~15 Brittle
Aluminium 2024-T3 26–35 3.0 Ductile
Structural steel (A36) 40–100 3.3 Ductile
Ti-6Al-4V 44–66 3 Mixed
Polycarbonate 1–2.5 ~5 Quasi-brittle

Key insight: Crack length a appears under a square root in K = Yσ√(πa). This means doubling the crack length only increases K by ~41%, but once KIc is exceeded, fracture is instantaneous — giving brittle materials their characteristic sudden failure.

💥 Open Fracture Simulation →