Plate with a circular hole under uniaxial tension — Kirsch#

Kirsch’s 1898 analytical solution gives the canonical stress- concentration factor K_t = 3 for an infinite plate under uniaxial tension σ_∞ containing a circular hole. The stress peaks at the hole edge at the points perpendicular to the applied tension (θ = ±π/2):

\[\sigma_{\theta\theta}^{\text{max}} = 3 \, \sigma_\infty.\]

In Cartesian coordinates, at the hole top (x=0, y=a) the local tangential direction is -x, so the peak stress shows up as σ_xx = 3σ_∞. Traction-free hole edge: σ_rr = 0, which in the same basis is σ_yy = 0 at the hole top.

The factor of 3 is the stress-concentration benchmark used across every structural FEA verification manual.

Problem#

Parameter

Value

Hole radius a

0.1 m

Plate half-width W

1.0 m (a / W = 0.1)

Out-of-plane thickness

0.01 m (plane stress)

Young’s modulus E

210 GPa

Poisson’s ratio ν

0.30

Remote tension σ_∞

10 MPa (in +x)

Expected σ_xx at hole top

30 MPa (K_t = 3)

femorph-solver result#

Ran by tests/validation/test_plate_with_hole.py using the QUAD4_PLANE plane-stress kernel on a quarter-symmetry mesh. Parametric grid: radial-graded mapping from the hole boundary to the square outer boundary, with a geometric stretch (q = 1.25) that concentrates nodes near the hole where the stress gradient is steep.

Refinement

n_θ × n_r

σ_xx at hole top (MPa)

Δ vs K_t = 3 σ_∞

Coarse

16 × 8

30.70

+2.32 %

Medium

32 × 12

31.50

+5.00 %

Reference

64 × 20

30.98

+3.25 %

Converges to within ~3 % of K_t = 3 σ_∞ at the reference mesh — inside the 10 % engineering tolerance that accommodates the finite-width correction at a / W = 0.1 (Peterson gives \(K_t \approx 3.04\) for this ratio).

σ_xx is recovered from forward-difference strain estimates on the parametric grid: ε_xx = u_x(θ_idx) / x(θ_idx) (y- axis symmetry forces u_x(0, y) = 0; the next θ-node has x > 0) and ε_yy = (u_y(rad_idx) - u_y(hole_top)) / Δy. The framework’s compute_nodal_stress helper doesn’t yet cover plane-element kernels (tracked as VERIFY-BLOCKED task #177); this benchmark uses the local FD extraction pending that fix.

Cross-references#

Source

Reported σ_xx at hole top (MPa)

Problem ID / location

Closed form (Kirsch 1898)

30.00

K_t = 3 infinite plate

Timoshenko & Goodier (1970)

30.00

Theory of Elasticity §35

Peterson (2008) — finite width

≈ 30.4

K_t(a/W = 0.1) 3.04

femorph-solver (reference mesh)

30.98

test_plate_with_hole.py

MAPDL Verification Manual

≈ 30.0

VM-74 Stress concentration around a hole

Abaqus Verification Manual

≈ 30.0

AVM 1.3.6 plate-with-hole family

NAFEMS

≈ 30.0

NL2 plate-with-hole (linear-elastic limit)

Source#

Problem class: femorph_solver.validation.problems.PlateWithHole.

Backing regression test: tests/validation/test_plate_with_hole.py.