Notebook 02: mesh-resolution diagnostic for \(h/\ell_0\)¶
This notebook samples the one-dimensional AT2 crack profile to show why a diffuse crack requires several elements across its width. It is an educational resolution diagnostic, not a solved mesh-convergence or fracture-validation study. Keep \(\ell_0\) fixed when assessing mesh convergence; changing \(\ell_0\) changes the regularized model.
import numpy as np
import matplotlib.pyplot as plt
ell_0 = 0.015 # regularization length; mm
ratios = [1.0, 0.5, 0.25] # h / ell_0
For an isolated AT2 crack in one dimension, a commonly used reference profile is \(d(x)=\exp(-|x|/\ell_0)\). The plot compares nodal sampling at three values of \(h/\ell_0\).
x_exact = np.linspace(-4 * ell_0, 4 * ell_0, 801)
d_exact = np.exp(-np.abs(x_exact) / ell_0)
fig, axes = plt.subplots(1, 3, figsize=(12, 3.2), sharey=True)
for axis, ratio in zip(axes, ratios):
h = ratio * ell_0
x_nodes = np.arange(-4 * ell_0, 4 * ell_0 + 0.5 * h, h)
d_nodes = np.exp(-np.abs(x_nodes) / ell_0)
axis.plot(x_exact / ell_0, d_exact, color='0.35', label='continuous profile')
axis.plot(x_nodes / ell_0, d_nodes, 'o-', color='#287271', label='nodal sampling')
axis.set_title(f'h / ell_0 = {ratio:g}')
axis.set_xlabel('x / ell_0')
axis.grid(alpha=0.25)
axes[0].set_ylabel('damage d')
axes[-1].legend(frameon=False, fontsize=8)
fig.tight_layout()
print('Resolution table at fixed ell_0')
for ratio in ratios:
h = ratio * ell_0
print(f'h/ell_0={ratio:4.2f} h={h:.6f} mm elements across 2*ell_0~{2/ratio:.0f}')
print('Starting criterion: h <= ell_0/2. This is not a convergence guarantee.')
Resolution table at fixed ell_0
h/ell_0=1.00 h=0.015000 mm elements across 2*ell_0~2
h/ell_0=0.50 h=0.007500 mm elements across 2*ell_0~4
h/ell_0=0.25 h=0.003750 mm elements across 2*ell_0~8
Starting criterion: h <= ell_0/2. This is not a convergence guarantee.
What a research study must add¶
A numerical study should refine \(h\) at fixed \(\ell_0\) and compare load-displacement response, dissipated fracture energy, crack path, and solver convergence. A separate \(\ell_0\) sensitivity study addresses model regularization. Do not combine those two questions into one claimed convergence result.