Every atom in the lattice is a point mass, and every bond to its nearest and diagonal neighbors is a real Hookean spring, F = −k·(L − L₀). The left column of atoms is fixed; the right column is displaced by the applied strain, and the mass-spring network relaxes toward equilibrium every frame — nothing here is a scripted curve, the stress-strain response emerges from the lattice itself.
F = -k(L - L0) Hooke's law, per bond
if |ε_bond| > ε_yield: plastic slip (dislocation glide)
L0 += flowRate·excess·dt rest length creeps → permanent set
if |ε_bond| > ε_fracture: bond breaks permanently
- Elastic region — below the yield strain every bond's rest length is unchanged, so releasing the load would return the lattice to its original shape: linear Hooke's-law behaviour, σ = E·ε.
- Plastic region — once a bond's stretch exceeds its yield strain, its rest length creeps toward the current length, exactly like a dislocation gliding one lattice spacing and leaving permanent (irreversible) deformation behind.
- Fracture — a bond stretched past its fracture strain breaks outright; once every bond crossing the measured cross-section has snapped, the lattice separates and the stress reading drops to zero.
- Stress readout — measured the way real atomistic simulations do it: sum the axial component of every bond force crossing a cut plane through the middle of the lattice, divided by the cross-section's height.
Real-world relevance: this is the same three-stage story — elastic, plastic, fracture — that a tensile-test machine traces out on a real steel or ceramic coupon, just built up here from individual interatomic bonds instead of measured on bulk material.