All articles

Strain in Physics: the Criterion Behind the Code, With a Worked Check

Updated Sep 4, 202615 min read
#strain#strain-tensor#poisson-ratio#curvature#deflection-limits#AISC 360#EN 1993-1-1
Strain in Physics: the Criterion Behind the Code, With a Worked Check

In physics, strain is not movement. It is the gradient of movement: a ratio of lengths, with no unit, defined by geometry alone before any material, any force and any code enters the room. A solver returns displacements and moments, and it never prints a strain. Yet below yield every strength clause you apply is a strain criterion wearing a stress costume. This article defines strain the way mechanics defines it, then recovers it two independent ways from the real CalcSteel engine on an IPE 300, and lands the two routes 0.12 % apart.

Key takeaways

  • Strain is a derivative of the displacement field, not a displacement. Move a loaded model 144.55 m across the grid and the engine returns the same forces and the same 499.58 µε, because a translation has no gradient.
  • A ratio of lengths has no unit. The whole elastic range of structural steel fits inside 0.18 %, which is why the working unit is the microstrain, 1 µε = 0.000001.
  • At a point, strain is a symmetric tensor with six independent components, not one number. Engineering shear strain γ is exactly twice the tensor component ε, and mixing the two is the classic factor-of-two error.
  • Worked check on the shipping engine: an IPE 300 at 6 m under 12 kN/m deflects 12.504 mm. Strain from the shape of the beam gives 499.58 µε, strain from the stress gives 500.17 µε, a 0.12 % gap that is pure finite-difference truncation.
  • Below yield, σ = Eε is one to one, so checking stress and checking strain are the same act. The deflection clause is the one that is genuinely different: four beams all at δ = L/300 sit anywhere from 533 µε to 1065 µε, set only by depth over span.
A university student? With an academic email (.edu, .ac.uk…) CalcSteel is free for you.

The number the solver never prints

Run an IPE 300 over a 6 m simple span under 12 kN/m through the CalcSteel engine and you get two numbers on screen. The mid-span moment is 54.00 kNm. The mid-span deflection is 12.504 mm, which is L/480. Both are useful, both go into a report, and neither is what the steel is actually doing.

What the steel is doing is stretching by 500 parts per million at the bottom flange and shortening by the same amount at the top. That number, 500 µε, is the strain. The solver never printed it. No clause in AISC 360 or EN 1993-1-1 asks you to compare it against anything. And yet it is the quantity the material responds to, the quantity a strain gauge would read if you bonded one on, and the quantity that every yield check is secretly about.

This is a fundamentals article with a worked check attached. It defines strain the way physics defines it, which is stricter and stranger than the definition most engineers carry around, and then it recovers that definition from the shipping FEM engine two independent ways to prove the definition is not decorative.

Strain in physics: a definition with no force in it

Here is the definition, and the thing to notice is what is missing from it. Take a body. Every material point in it moves from where it was to where it now is. Call that displacement field u(x). Normal strain in the x direction is the derivative of that field:

εx = ∂ux / ∂x

No force. No stiffness. No material. No safety factor. Strain is a purely kinematic quantity: it describes how a body has changed shape, and it would be defined identically for steel, rubber, water or a galaxy. Force enters later, through a separate statement called a constitutive law, and the whole art of solid mechanics lies in keeping those two statements apart.

The engineering-strain version most people meet first, ε = ΔL/L, is this same definition with the derivative replaced by a finite ratio, valid when the stretch is uniform along the length. It is the definition in a special case, not a different definition.

What the derivative buys you is precision about a question the ratio cannot even ask: what happens when the whole body moves?

Two panels. On the left, a loaded bar translated bodily across the grid: every marked point moves by the same amount, the strain stays at 499.58 microstrain and the moment stays at 54.00 kNm, so the change in strain is zero. On the right, a bar held at one end and pulled: each marked point moves further than the one before it, and 2.7875 mm of end movement over 6000 mm is 464.6 microstrain.
Both bars moved. Only one of them strained. Strain reads the difference between neighbouring points, and a translation has no difference to read.

The rigid-body test, run on the real engine

If strain is a derivative of displacement, then a displacement field that is the same everywhere must produce exactly zero strain. Differentiate a constant and you get nothing. Physically: pick up a loaded beam and carry it across the room, and you have not stressed it further by one pascal.

That sounds obvious in words and is easy to get wrong in code, so it is worth testing on the thing that actually does your calculations. We took the same IPE 300 model, translated every node by 137 m in x, 42 m in y and 19 m in z, a bodily move of 144.55 m, and re-solved.

QuantityAt the origin144.55 m away
Mid-span deflection12.5042 mm12.5042 mm
Peak moment54.00 kNm54.00 kNm
Extreme-fibre strain499.58 µε499.58 µε
Every element end forceidentical to the last decimal the solver reports

Every node in that second run has completely different coordinates and completely different absolute displacements. Not one internal force moved. That is the definition doing its job: the engine measures relative motion between neighbouring points, and 144.55 m of common motion contributes none.

The same invariance is why a support settlement does nothing to a statically determinate structure. Drop one end of a simply supported beam by 30 mm and the beam rotates as a rigid body into its new position, with no curvature added anywhere and no moment anywhere. Do the same to a three-support continuous beam and you get real curvature, real strain and real moment, because that structure cannot absorb the movement without bending. The difference is not the size of the movement. It is whether the movement has a gradient.

At a point, strain is six numbers, not one

The displacement field has three components and there are three directions to differentiate in, which gives nine derivatives. Split each pair into a symmetric and an antisymmetric part, throw away the antisymmetric part (that is rigid rotation, which we just established is not strain), and what survives is the small-strain tensor:

εij = ½ ( ∂ui/∂xj + ∂uj/∂xi )

It is symmetric, so nine entries collapse to six independent numbers: three normal strains that change lengths, and three shear strains that change angles. A right angle scribed on the surface of a loaded web does not stay a right angle, and the amount by which it opens or closes is the shear strain.

Here is the trap that has cost more marks and more debugging hours than any other item on this page. There are two conventions in circulation:

  • Engineering shear strain γxy is the total change in the right angle, in radians. This is what a strain gauge reports, what γ = τ/G returns, and what design standards mean.
  • Tensor shear strain εxy is exactly half of it. This is what belongs in the matrix above, and the only version for which the rotation and transformation formulas, including Mohr's circle, are correct.

γ = 2ε. Feed a gauge reading straight into a transformation formula written for the tensor and every principal value you get out is wrong by a factor related to two. It is not a subtle error, but it is a quiet one, because the answer still looks like a strain.

The symmetric three by three small-strain tensor with normal strains on the diagonal and half the engineering shear strains off the diagonal, beside two unit squares: one stretched, showing a change of length, and one sheared, showing the right angle opening by gamma.
Six independent components. The diagonal changes lengths, the off-diagonal changes angles, and the off-diagonal entries are half the engineering values.

A ratio has no unit, which is why the microstrain exists

Strain is a length divided by a length. Metres over metres, millimetres over millimetres, it cancels. Strain is dimensionless, and any unit you see attached to it is a bookkeeping device rather than a physical unit.

Structural steel strains are inconveniently small, so four notations circulate for the same quantity:

NotationThe worked beam belowWhere you meet it
Pure ratio0.000500formulas, solver internals
Microstrain, µε500 µεgauges, test reports, FEA output
Percent0.0500 %material certificates, elongation at rupture
mm/m0.500 mm/msite measurement, camber, fabrication

The microstrain wins in practice for the same reason the millimetre wins over the metre on a drawing: it puts the working numbers in the range 100 to 2000 where a human can compare them at a glance. One µε is one part per million.

Put the whole range on one axis and the proportions are startling. Yield arrives at 1250 µε for fy = 250 MPa and 1725 µε for fy = 345 MPa. Rupture elongation on a tension coupon is around 20 %, which is 200 000 µε. The entire elastic range, the part every design calculation argues about, is the first 0.18 % of a journey that runs to 20 %. Everything after it is the reserve we call ductility, and it is roughly two orders of magnitude larger than the part we design in.

A two-tier strain scale. The top tier is logarithmic from 100 to 300 000 microstrain, showing the elastic band, the end of the yield plateau near 20 000 and rupture near 200 000. The bottom tier zooms linearly into the first 2000 microstrain, where the 500 kN tie sits at 464.6, the worked beam at 500.2, the beams at the L over 300 limit span 533 to 1065, and yield arrives at 1250 and 1725.
Two tiers, because the design conversation happens inside a sliver of the range. The unit is a bookkeeping choice: the quantity is a pure ratio.

Where the material finally enters

Nothing so far has mentioned steel. Strain would be defined the same way for a rubber band. The material enters through a second, entirely separate statement: the constitutive law, which says what stress a given strain produces. For steel below yield that statement is Hooke's law.

σ = E · ε

E, Young's modulus, is a measured property. The CalcSteel engine carries E = 200 GPa and G = 76.92 GPa for hot-rolled steel, and those two together fix Poisson's ratio at ν = E/2G − 1 = 0.30.

We did not have to take the engine's word for E. Pull an IPE 300 tie, A = 5381 mm², with 500 kN and the engine reports the free end moving 2.7875 mm over a 6000 mm length. That is a strain of 464.6 µε against a stress of 92.92 MPa, and 92.92 / 0.0004646 = 200 000 MPa. Young's modulus recovered from the displacement field, not assumed.

Two things about that constant are worth carrying forward. First, it is identical for every structural grade: A36, A572-50, S355 and MR250 all have the same E. Changing grade moves where yield happens, never how stiff the steel is. Second, the value is a convention as much as a measurement. AISC 360 uses 29 000 ksi, about 199.9 GPa. Eurocode 3 §3.2.6 uses 210 000 MPa. Same steel, a 5 % difference in every strain you compute from a stress, which matters the moment you compare a gauge reading against a calculated value.

Worked check, part 1: the beam, and proving the engine first

The worked example is deliberately ordinary: an IPE 300 in MR250 steel, fy = 250 MPa, simply supported over 6.00 m, carrying a uniform 12 kN/m. Section depth 300 mm, so c = 150 mm from the neutral axis to the extreme fibre. Ix = 8097 cm⁴ and Sx = Ix/c = 539.8 cm³, both from the shipping catalogue. The model is meshed into 24 elements, giving a node every 250 mm, for reasons that matter in part 2.

Before trusting anything the engine says about strain, it has to reproduce the two closed-form answers everyone knows:

QuantityClosed formEngineError
Peak moment, wL²/854.000 kNm54.000 kNm0.00 %
Mid-span deflection, 5wL⁴/384EI12.5042 mm12.5042 mm0.00 %

The deflection is L/480, comfortably inside a typical L/300 limit, and the bending stress will turn out to be 100 MPa against a 250 MPa yield. This beam passes everything. That is the point: we are not looking at a failure, we are looking at what a perfectly healthy beam is physically doing.

Worked check, part 2: strain read off the shape of the beam

The first route to strain uses no material property at all. It is pure kinematics, exactly as the definition demands.

Bending a beam bends its axis into a curve. Euler-Bernoulli kinematics says plane sections stay plane and normal to that curve, from which the strain at a distance y from the neutral axis is

ε(y) = −y · κ, where κ = 1/R = v''

κ is the curvature, R the radius of curvature, and v'' the second derivative of the deflected shape. Notice that the only inputs are a shape and a distance. Nothing here knows the beam is steel.

The engine gives us the shape directly: 25 nodal deflections, 250 mm apart. Taking the central second difference of the three deflections around mid-span gives

κ = 0.003331 1/m, that is R = 300.2 m

A 6 m beam bent to a radius of 300 metres. It is worth pausing on that: the sag you would notice, 12.5 mm, comes from an arc so gentle that its radius is fifty times the span. Multiply the curvature by c = 150 mm and the extreme fibre strain is

ε = κ · c = 0.003331 × 0.150 = 499.58 µε

The bottom fibre is in tension at that value, the top fibre in compression at the same magnitude, and the neutral axis is at zero. And the totals are small in a way that is easy to underestimate: integrating the strain along the whole bottom flange, that fibre ends up 2.0 mm longer than it started, while the beam itself dropped 12.5 mm. The visible movement is six times the actual stretch, because most of the deflection is accumulated rotation, not material extension.

The deflected IPE 300 with its 25 nodes, dropping 12.504 mm and curving to a radius of 300.2 metres, beside the cross-section and its linear strain diagram with compression above the neutral axis and tension below. Two result cards: the kinematic route, strain equals c times the second derivative of the deflection, gives 499.58 microstrain; the constitutive route, strain equals stress over E, gives 500.17 microstrain, a gap of 0.12 percent.
Two independent routes from the same solved model to the same strain. The engine was never told what a strain is.

Worked check, part 3: strain read off the stress, and the 0.12 % gap

The second route ignores the shape entirely and goes through the material. Take the moment from the element forces, convert to stress with the section modulus, divide by E:

σ = M / Sx = 54.00 kNm / 539.8 cm³ = 100.03 MPa
ε = σ / E = 100.03 / 200 000 = 500.17 µε

Two routes, one from a shape and one from a force, meeting at:

RouteWhat it usedStrain
Kinematic, ε = c·v''nodal deflections only499.58 µε
Constitutive, ε = σ/Eelement forces and E500.17 µε
Gap0.12 %

The gap is not a modelling error and it is not physics. It is arithmetic. A central second difference approximates v'' with a truncation term of h²/12 × v'''', and for this beam with h = 250 mm that term is 0.116 % of the curvature. It is the finite difference, not the engine, that is 0.12 % off. Halve the node spacing and the gap falls by a factor of four.

The agreement is the real result. The engine was asked for deflections and moments and nothing else. The word strain appears nowhere in its output. Yet the shape it returned and the forces it returned carry the same strain, to three digits, because both are consequences of one displacement field. That is what internal consistency in a solver looks like, and it is the check worth running whenever you are unsure whether a model is telling you something real.

See it yourself: read a stress, get a strain

The calculator below is the shipping CalcSteel beam tool. Put your own span, load and section into it and it returns the maximum moment, the maximum deflection with its L/x ratio, and the bending stress σ = M/Sx.

To turn its output into the physics of this article, do one division:

ε [µε] = σ [MPa] / 200 000 × 1 000 000 = σ × 5

At E = 200 GPa the conversion is that clean: five microstrain per megapascal. A stress of 100 MPa is 500 µε. A stress of 160 MPa is 800 µε. Set the span to 6 m and the section to an IPE 300 with 12 kN/m and you should land on the 100.03 MPa and 12.5 mm from the worked check above.

Then try the comparison that makes the last section of this article concrete. Keep loading the beam until the deflection reads L/300, note the stress, multiply by five. Now stretch the span to 9 m and load it back to L/300 again. Same deflection verdict, and a strain that is a third lower.

Interactive calculatorOpen full tool

Max moment

45 kN·m

Max shear

30 kN

Max deflection

10.55 mm

= L/569

Bending stress σ

84.4 MPa

σ = M/Sx

Utilization

44.0%

NBR 8800 · δ ≤ L/250

Design code — side by sideδ 44% — serviceability, code-independent
Plastic capacity — compact section · Lb ≤ LpMp = Zx·fy = 150.5 kN·mNBR 8800 Mp/1.10 = 136.8 kN·m → 32.9% PASSAISC 360 φb·Mp = 135.5 kN·m → 33.2% PASSvalid with continuous lateral restraint — check the real Lb (FLT) in the 3D editor

Geometry & supports

m

Section

Ix 7999 cm⁴ · Sx 533 cm³ · 42.2 kg/m

Point loads (↓ positive)

None — add as many as you need.

Distributed loads (uniform or trapezoidal)

w₁kN/mw₂x₁→x₂m

Model sketch

w = 10.0 kN/mIPE 300 · Ix = 7999 cm⁴R_A = 30 kNR_B = 30 kNL = 6 m

Diagrams — free PNG / SVG / CSV export, no watermark

SHEAR FORCE DIAGRAM — VV = 30 kNVmax = -30 kNx = 6 mBENDING MOMENT DIAGRAM — M (tension side)Mmax = 45 kN·mx = 3 mDEFLECTED SHAPE — δδmax = 10.55 mmx = 3 m

Step-by-step — the calculation memory of YOUR beam

IPE 300 · L = 6 m · fy = 250 MPa

  1. 1. Reactions (equilibrium of the solved FEM model)

    ΣFy = 0 · ΣM = 0

    R_A = 30 kN · R_B = 30 kN

  2. 2. Peak shear (read from the SFD)

    Vmax = |V(x)|max

    Vmax = -30 kN @ x = 6 m

  3. 3. Peak moment (read from the BMD)

    Mmax = |M(x)|max

    Mmax = 45 kN·m @ x = 3 m

  4. 4. Peak deflection

    EI = 15998 kN·m² (E = 200 GPa)

    δmax = 10.55 mm @ x = 3 m = L/569

  5. 5. Elastic bending stress

    σ = Mmax / Sx = 45.00 × 10³ / 533.3

    σ = 84.4 MPa

  6. 6. Bending check — both codes, side by side

    NBR 8800: σ ≤ fy/1.10 = 227.3 MPa · AISC 360: σ ≤ 0.90·fy = 225 MPa

    NBR 37.1% PASS · AISC 37.5% PASS

  7. 7. Deflection check (serviceability — code-independent)

    δ ≤ L/250 = 24 mm

    10.55 mm / 24 mm = 44.0% PASS

Recomputed live from the current inputs by the direct-stiffness FEM engine — change any load and every step updates. Reproduce it by hand with the formulas in the sections below.

Lightest catalog profiles that pass (974 flexural candidates · NBR 8800)

ProfileStdWeightTotal steelσ utilδ util
W310x21AISC21 kg/m126 kg83%98%
VS 300x23BR22.6 kg/m136 kg71%84%
U 300x90x6.3BR23.1 kg/m139 kg82%98%
U 300x100x6.3BR24.1 kg/m145 kg77%91%
VS 250x25BR24.6 kg/m148 kg70%100%

Elastic bending (σ = M/Sx vs fy/γa1, γa1 = 1.10 — NBR 8800) + deflection screening of the full flexural catalog. Lateral-torsional buckling, shear and local buckling are NOT checked here — run the full NBR 8800 / AISC 360 verification in the 3D editor.

The two strains you did not ask for

Pull a bar along one axis and it does not only get longer. It gets thinner. That coupling is Poisson's ratio, and it is why strain at a point is a tensor even when the loading is as one-dimensional as loading gets.

Back to the 500 kN tie. The axial strain was 464.6 µε. The two transverse strains are each

εt = −ν · εa = −0.30 × 464.6 = −139.4 µε

On an IPE 300 that means the 150 mm flange gets 20.91 µm narrower and the 300 mm depth loses 41.81 µm, while the member gains 2.7875 mm of length. Nobody will ever measure those two numbers on site, and they are still real, and they are why a wide plate in tension behaves differently at its centre than at its free edges.

Add the three together and you get the volumetric strain:

ΔV/V = εx + εy + εz = εa(1 − 2ν) = 464.6 × 0.40 = +185.8 µε

The bar gains 0.0186 % in volume. Steel is not incompressible. Only a material with ν = 0.50, like rubber near its limit, keeps its volume constant when you stretch it, and the fact that steel does not is precisely why hydrostatic pressure alone will not yield it. That observation is the seed of the von Mises criterion, which throws away the volumetric part of the strain and judges failure on the distortional part alone.

An IPE 300 tie 6 m long under 500 kN, elongating from 6000 to 6002.7875 mm while contracting transversely, with three cards: axial strain plus 464.6 microstrain, transverse strain minus 139.4 microstrain, and volumetric strain plus 185.8 microstrain, which is a volume gain of 0.0186 percent.
One force, three strains. The two you did not ask for come from Poisson's ratio, and their sum with the axial one is the change in volume.

Why every strength clause is a strain criterion in disguise

Open any steel standard and you will not find a strain limit for ordinary member design. AISC 360 and NBR 8800 compare stresses and forces. EN 1993-1-1 compares design effects against design resistances. Strain is not in the inequality.

It does not have to be, because below yield σ = Eε is a one-to-one map with a single constant in it. Divide both sides of a stress check by E and you have a strain check with identical content:

σ ≤ fy  ⟺  ε ≤ fy/E = εy

Our beam at 500 µε against fy = 250 MPa, which is εy = 1250 µε, is at 40.0 % of yield strain and at 40.0 % of yield stress. The same fraction, necessarily. Codes chose stress because it is what a testing machine reports and what a resistance formula naturally produces, not because stress is the more fundamental quantity. Physically, strain is upstream: the material deforms, and the stress is its response.

The disguise slips the moment the map stops being one to one, which is exactly at yield. Past that point one stress corresponds to a whole plateau of strains, and standards that need to talk about behaviour beyond yield are forced back into strain language:

  • Section classification. EN 1993-1-1 Class 1 to 4 is a statement about how much rotation, meaning how much strain, a cross-section can deliver before it buckles locally. Class 1 sections are the ones allowed to reach large plastic strains.
  • Plastic design. A plastic hinge is a region asked to strain far past εy while its moment stays at Mp. Only strain can describe what is happening there.
  • Seismic detailing. Ductility ratios, rotation demands and the AISC 341 requirements are strain demands with different names.
  • Elongation on the mill certificate. The percentage on the material certificate is a strain, and it is the only strain most engineers ever read off a document.

Same deflection limit, twice the strain

There is one clause that is genuinely not a strain criterion, and it is the one people most often assume is a proxy for one: the deflection limit.

We tuned four beams so the engine reports exactly δ = L/300, then read the strain at mid-span from each:

Beamh/LLoadδσεFraction of εy at fy = 250
IPE 300, 9 m1/305.687 kN/m30.0 mm106.7 MPa533 µε42.6 %
IPE 400, 9 m1/22.515.608 kN/m30.0 mm142.2 MPa710 µε56.8 %
IPE 300, 6 m1/2019.193 kN/m20.0 mm160.0 MPa799 µε63.9 %
IPE 400, 6 m1/1552.675 kN/m20.0 mm213.3 MPa1065 µε85.2 %

All four are equally acceptable to the serviceability clause. One of them is working its steel twice as hard as another. The loads differ by a factor of nine and the strains do not follow them, which is the tell that something simpler is in charge.

It is. Set 5wL⁴/384EI = L/k, substitute into ε = Mc/EI, and the load, the modulus and the second moment of area all cancel:

ε = 48c / (5kL) = 9.6 c / (kL), so at k = 300, ε = 0.016 · h/L

Strain at the deflection limit depends on the depth-to-span ratio and on nothing else. Not the section, not the load, not the grade. The engine agrees with that formula to better than 0.12 % on all four beams, which is the same finite-difference truncation as before.

The practical consequences are worth stating plainly. A deep, short beam taken to L/300 sits at 85 % of yield strain for fy = 250 steel and will be governed by strength long before serviceability. A shallow, long-span beam taken to the same L/300 sits at 43 % and is squarely serviceability-governed. If you have ever wondered why deflection sizes some of your beams and stress sizes others, this single ratio is most of the answer. And it is why upgrading the grade rescues the first beam and does nothing at all for the second: a higher fy moves εy, and the deflection criterion never looked at εy.

Bar chart of four beams all tuned to a deflection of span over 300, with strains of 533, 710, 799 and 1065 microstrain, against dashed lines marking yield strain at 1250 microstrain for fy 250 MPa and 1725 microstrain for fy 345 MPa, with each bar labelled by its depth-to-span ratio.
The same serviceability verdict covers a two-to-one range of strain. Depth over span decides where in that range a beam lands.

Seven ways this goes wrong in practice

  • Treating a displacement as a strain. A 30 mm deflection tells you almost nothing about how hard the material is working until you know the span and the depth. Our 9 m beam moves 50 % further than the 6 m one and strains 33 % less.
  • The factor of two on shear. γ = 2ε. Gauges and codes report γ; the tensor and every transformation formula want ε. Mixing them silently halves or doubles the answer.
  • Using the wrong E for the conversion. 200 GPa, 210 GPa and 29 000 ksi are all in daily use. A strain computed from a stress inherits a 5 % spread from that choice alone, which is more than most people's tolerance when they compare a gauge against a model.
  • Assuming a stronger steel strains less. Grade does not change E. An A572-50 beam and an A36 beam of the same section under the same load deflect identically and strain identically. Only the distance to yield changes.
  • Forgetting that linear strain does not tolerate large rotation. The small-strain tensor discards rotation to first order, which is correct only while rotations stay small. Push a slender member into large-displacement territory and the linear measure reports strain that is not there. That is the moment to switch to a geometrically nonlinear analysis.
  • Confusing engineering and true strain in the wrong regime. At 500 µε they differ by 0.025 % and nobody cares. At 20 % elongation they differ by about 9 % and the distinction decides whether a number means anything.
  • Reading a strain field that no displacement field could produce. Strain components are not independent: they are six derivatives of three functions, and they must satisfy the compatibility conditions. In two dimensions that is ∂²εx/∂y² + ∂²εy/∂x² = ∂²γxy/∂x∂y. Interpolated or hand-assembled strain fields that violate it correspond to a body that has torn itself apart.

Try CalcSteel for free

Model, analyze and design steel structures in your browser. No install, no signup.

Open the 3D editor