True Stress vs Engineering Stress: the Necking Criterion and a Worked Check
Engineering stress is the number the code hands you: force over the original area, the value written as fy and fu. True stress is the number your steel actually carries and the number a nonlinear solver actually needs: force over the real, shrinking area. This is the companion to the design-range question of why the code keeps the engineering value. Here we go the other way: the conversion σtrue = σeng(1 + ε), the Considère criterion that predicts exactly where a tension bar necks, how to build a true stress-strain curve for finite-element work, and a worked check on a real A572-50 round tie rod where the CalcSteel engine anchors the elastic end to the third decimal.
Key takeaways
- Engineering stress is P/A0 (original area); true stress is P/Ai (the instantaneous, real area). While deformation stays uniform they are linked by σtrue = σeng(1 + ε) and εtrue = ln(1 + ε).
- The conversion is pure geometry, so its size is fixed by strain alone: +0.09% at a service tie, +0.17% at first yield, but +10% at 10% strain and +17% at the onset of necking.
- The Considère criterion locates necking: a tension bar necks when dσtrue/dεtrue = σtrue. For a power-law (Hollomon) steel σtrue = K εtrue^n, that is simply εtrue = n, so the uniform elongation is about e^n − 1.
- Worked A572-50 round tie rod (Ø 45.1 mm, A = 16.0 cm2, L = 6 m): at N = 276 kN the engine returns a 5.175 mm stretch (= NL/AE), so σ = 172.5 MPa and σtrue = 172.65 MPa; push to N = 552 kN and σ = 345.0 MPa = fy at a 10.350 mm stretch, true stress 345.60 MPa.
- A nonlinear FE model must be fed true stress vs true (or plastic) strain, never the engineering curve; feeding it the engineering curve tells the solver the steel softens after fu, which it never does.
The number the code hands you, and the number your solver needs
One tension test produces two stress-strain curves, and structural work uses them in two different rooms. The engineering curve divides the measured force by the original cross-section, σeng = P/A0. It is the curve the code lives in: fy and fu are points on it, and a companion article makes the case for why every design clause deliberately keeps that engineering value. The true curve divides the same force by the real cross-section at that instant, σtrue = P/Ai, the area that has already thinned under load. That is the curve the material lives in, and the curve you must hand a nonlinear solver, a forming simulation or a fracture model.
This article is about the second curve: how it relates to the first, the one-line conversion between them, the criterion that predicts exactly where the two part company, and how to build a usable true stress-strain curve for analysis. We anchor it with a worked check on a real A572-50 round tie rod, using the CalcSteel FEM engine to pin the elastic end to the fourth decimal before we walk the curve out to necking by hand. The theme is the opposite of the companion post: not why the gap is safe to ignore in a code check, but what to do the moment you leave the code behind.
Engineering and true, defined from one force reading
Both curves are built from the same measured force P, original length L0 and original area A0. Four definitions:
- Engineering stress, σeng = P / A0: the load over every square millimetre the bar started with.
- Engineering strain, εeng = ΔL / L0: the stretch as a fraction of the original length.
- True stress, σtrue = P / Ai: the load over the instantaneous area Ai, which shrinks as the bar stretches (Poisson contraction elastically, then constant-volume plastic flow).
- True strain, εtrue = ln(Li / L0) = ln(1 + εeng): the sum of every incremental stretch dL/L integrated over the deformation.
In tension Ai is smaller than A0, so true stress is always the larger of the two, and true strain is always the smaller (because ln(1 + x) < x). The distinction is invisible while the bar barely moves and grows as it deforms. Engineering measures are anchored to the geometry you can put a caliper on before the test; true measures track the geometry that is actually there at each instant.
The conversion is pure geometry
The two curves are not independent. As long as deformation is uniform along the bar (before any neck forms) and plastic flow conserves volume, AiLi = A0L0. That gives Ai = A0 / (1 + εeng), and therefore:
σtrue = σeng (1 + εeng) and εtrue = ln(1 + εeng)
Read what that means: the conversion factor (1 + ε) depends only on the strain, not on the material or the stress level. So the size of the gap is decided entirely by how far the bar has stretched. That single fact is the whole story of when true and engineering stress matter, laid out across the full range below.
| εeng | εtrue = ln(1 + ε) | factor (1 + ε) | σtrue gap |
|---|---|---|---|
| 0.1% | 0.100% | 1.001 | +0.1% |
| 0.5% | 0.499% | 1.005 | +0.5% |
| 1% | 0.995% | 1.010 | +1.0% |
| 2% | 1.980% | 1.020 | +2.0% |
| 5% | 4.879% | 1.050 | +5.0% |
| 10% | 9.531% | 1.100 | +10.0% |
| 17.35% (necking) | 16.00% | 1.174 | +17.4% |
The top rows are why the code keeps engineering stress: at design strains the gap is a rounding error, and its exact value is set by strain alone. The bottom rows are why materials and forming engineers never use anything but true stress: out where steel is deliberately taken, the two numbers differ by tens of percent. Two conditions ride on the formula, and they are the fine print people forget. It holds only while the section stays uniform, so it dies the instant the bar necks, and only while volume is conserved, which is a good model for plastic flow (Poisson's ratio effectively 0.5) but not for the elastic range (about 0.3, where the bar does change volume slightly). In the elastic range the constant-volume form therefore mildly overstates the gap, which makes it the safe one to quote.
The necking criterion: where the two curves part
Everything above assumed uniform deformation. The criterion that says exactly when that assumption breaks is Considère's, and it is the sharpest idea in this whole subject. A ductile bar in tension is a race between two effects: strain hardening makes the steel stronger as it deforms, while the thinning section makes it carry less load for a given stress. Early on, hardening wins and the load rises. Necking begins at the instant the section loses that race, the point of maximum load, which is also the engineering ultimate strength fu.
Writing dP = 0 with P = σtrueAi and constant volume gives the criterion in true measures:
dσtrue / dεtrue = σtrue
Necking starts where the slope of the true stress-strain curve equals its own height. If you model the strain-hardening region with a power law (the Hollomon form) σtrue = K εtruen, the criterion collapses to a one-liner: dσtrue/dεtrue = nK εtruen−1, and setting that equal to K εtruen gives εtrue = n at the onset of necking. The strain-hardening exponent n is the true strain at which the bar starts to neck. Converting back, the uniform (engineering) elongation is en − 1. For a ductile structural steel with n around 0.16, that is a uniform strain of about 17%, which is why coupon tests of structural grades report uniform elongations in that range. This is the criterion the article's title points at: not a clause in the code, but the material law that decides where the code's engineering curve is allowed to turn downhill.
Building a true stress-strain curve for a solver
The reason to care about all of this in practice is that a nonlinear finite-element model of steel needs a true stress versus true (or plastic) strain curve as input, and the data you have is an engineering coupon curve. Here is how to turn one into the other.
- Elastic branch. Up to yield, keep the elastic line σ = Eε with E = 200 GPa. The true correction here is under 0.2% (see the worked rod below), so it changes nothing; most solvers take E and fy directly.
- Uniform plastic branch. From yield up to the ultimate point, convert every engineering pair with σtrue = σeng(1 + ε) and εtrue = ln(1 + ε). Then split off the plastic strain the solver wants: εpl = εtrue − σtrue/E. This branch is exact and is the workhorse of the model.
- Past necking. The tidy conversion is invalid beyond fu because deformation is no longer uniform and the stress state at the neck is triaxial. If your analysis goes that far you either measure the neck area directly, apply a Bridgman correction, or extrapolate the power law σtrue = K εtruen and accept it as a model, not a measurement.
Skip this conversion and feed the raw engineering curve to the solver, and you tell it the material softens after fu. It does not: the engineering downturn is an artefact of dividing a falling load by a fixed original area. A solver handed that curve will either predict spurious softening and localization or fail to converge. The single most common serious error in nonlinear steel modelling is exactly this one.
Worked check, part 1: a real A572-50 round tie rod
Now measure rather than assert. The most honest object for a pure axial stress is a round tie rod, which is both a real structural member (sag rods, cross-bracing rods, canopy hangers) and the exact geometry of an ASTM E8 round tension coupon. Take a Ø 45.1 mm rod, A = 16.0 cm2, 6 m long, in A572-50 (fy = 345 MPa).
We model it in the CalcSteel FEM engine, the same solver behind the calculators. Under a service tension of N = 276 kN the engine returns the axial force in the member as 276.0 kN (equilibrium, as it must), the section area as A = 16.0 cm2, and the elongation of the loaded end as 5.175 mm. That last number is the check on the engine itself: closed-form N L / (A E) = 276 × 600 / (16.0 × 20000) = 0.5175 cm = 5.175 mm, matching to the third decimal. The stiffness is right, so the stress and strain we pull from it are trustworthy, and everything past this point is arithmetic the material actually obeys.
Worked check, part 2: from service to necking
Turn the analysis into the two stresses and then walk the curve out. At the service load, engineering stress is the force over the original area: σeng = 276 kN / 16.0 cm2 = 17.25 kN/cm2 = 172.5 MPa. The strain is that stress over the modulus, ε = 172.5 / 200000 = 0.000863, the same value the engine's 5.175 mm over 6000 mm gives directly. True stress applies the conversion: σtrue = 172.5 × 1.000863 = 172.65 MPa. The material carries 172.65 MPa; your model, your code check and your calculator all say 172.5 MPa. The gap is 0.15 MPa, or 0.086%.
Push the rod to first yield. σ = fy = 345 MPa needs N = 34.5 kN/cm2 × 16.0 cm2 = 552 kN. Re-run the engine at N = 552 kN and it returns σ = 345.0 MPa, an elongation of 10.350 mm (so ε = 10.350 / 6000 = 0.001725, exactly A572-50's yield strain), and the axial force back as 552.0 kN. Convert: σtrue = 345.0 × 1.001725 = 345.60 MPa, εtrue = ln(1.001725) = 0.001724. At the one point the code cares about, first yield, the true stress is 0.60 MPa above the tabulated fy, three tenths of one percent, and in the safe direction.
Now leave the code behind, which is the whole point of this post. Carry the same rod's A572-50 out along its true curve with n around 0.16. Considère puts the onset of necking at εtrue = 0.16, an engineering strain of e0.16 − 1 = 17.4%, at the engineering ultimate fu = 450 MPa. The true stress there is σtrue = 450 × 1.174 = 528 MPa, already 17% above the engineering value. Past that the rod necks: engineering stress divides a falling load by the fixed original 16.0 cm2 and slides down to fracture, while true stress divides that same load by the collapsing neck area and keeps climbing well past 600 MPa. Same rod, same test, three regimes: identical to three decimals at service, a rounding error at yield, and two completely different numbers at failure.
See it yourself: read a stress, convert it
Reproduce the exercise. In the calculator below, pick a grade (try A572-50, the rod's grade), set a section and a load, and read the stress it reports. Divide that stress by 200,000 MPa to get the strain ε, then multiply the stress by (1 + ε) for the true stress. You will watch the correction sit in the third or fourth decimal for anything short of yield.
One twist worth trying: this is a column in compression, and there the sign of the correction flips. The section fattens under compression, so the real area grows, Ai > A0, and true stress sits just below the engineering value, σtrue = σeng(1 − ε) to first order. At design strains it is again negligible, and compression is governed by buckling long before it could matter, which is exactly what this tool computes.
End conditions (buckling case)
Pinned – Pinned
Cross-section
Slenderness KL/r
134.7
limit 200 · OK
Euler Pcr (elastic)
310.7 kN
Fe = 108.9 MPa
AISC 360 φcPn
245.2 kN
Fcr = 95.5 MPa · elastic
NBR 8800 Nc,Rd
247.7 kN
χ = 0.382 · λ₀ = 1.52
Code vs code — same column
Nc,Rd / φcPn = 1.010
Both codes share the 0.658 / 0.877 buckling curve — the ~1% gap is purely φc = 0.90 (AISC) vs 1/γa1 = 0.909 (NBR).
Demand check — Nd = 150 kN
Step-by-step derivation — live for YOUR column
IPE 200 · L = 3 m · K = 1 · fy = 250 MPa
- 1
Slenderness ratio
λ = K·L/r = 1 × 3000 / 22.28 mm
λ = 134.7 (≤ 200 ✓)
- 2
Euler elastic buckling stress and load
Fe = π²E/λ² = π² × 200,000 / 134.7² · Pcr = Fe·A = Fe × 2854 mm²
Fe = 108.9 MPa · Pcr = 310.7 kN
- 3
Buckling regime (AISC E3)
4.71·√(E/fy) = 4.71·√(200,000/250) = 133.2 < λ = 134.7
elastic buckling → use E3-3 (0.877·Fe)
Elastic range: capacity no longer depends on fy — only geometry (r, K, L) helps.
- 4
AISC 360 critical stress and design capacity
Fcr = 0.877 · Fe = 0.877 × 108.9 = 95.5 MPa · φcPn = 0.9 × Fcr × A
Pn = 272.5 kN · φcPn = 245.2 kN
- 5
NBR 8800 reduction factor and design capacity
λ₀ = √(fy/Fe) = 1.515 > 1.5 → χ = 0.877/λ₀² = 0.382 · Nc,Rd = χ·A·fy/1.1
Nc,Rk = 272.5 kN · Nc,Rd = 247.7 kN
Same 0.658/0.877 curve as AISC — the ~1% difference is φc = 0.90 vs 1/γa1 = 0.909.
Sections that work — 3 lightest of 612 catalog profiles carrying Nd = 150 kN at L = 3 m, K = 1
| Section | kg/m | φcPn (kN) | Nc,Rd (kN) | Util. | |
|---|---|---|---|---|---|
| lightestSHS 80x4 | 9.2 | 164 | 166 | 91% | |
| HSS 76x76x4.8 | 9.9 | 165 | 167 | 91% | |
| CHS 88.9x5 | 10.3 | 172 | 174 | 87% |
Pass criterion: φcPn ≥ Nd (AISC 360 LRFD) AND Nc,Rd ≥ Nd (NBR 8800) AND KL/r ≤ 200, using each section's tabulated-mass area and minimum radius of gyration.
Buckling curve — IPE 200, fy = 250 MPa
Capacity of IPE 200 by unbraced length — K = 1, fy = 250 MPa
| L (m) | KL/r | Pcr Euler (kN) | φcPn AISC (kN) | Nc,Rd NBR (kN) | Regime |
|---|---|---|---|---|---|
| 1 | 45 | 2,796 | 577 | 583 | inelastic |
| 2 | 90 | 699 | 419 | 423 | inelastic |
| 3◀ yours | 135 | 311 | 245 | 248 | elastic |
| 4 | 180 | 175 | 138 | 139 | elastic |
| 5 | 224 ⚠ | 112 | 88 | 89 | elastic |
| 6 | 269 ⚠ | 78 | 61 | 62 | elastic |
| 7 | 314 ⚠ | 57 | 45 | 45 | elastic |
| 8 | 359 ⚠ | 44 | 34 | 35 | elastic |
| 9 | 404 ⚠ | 35 | 27 | 28 | elastic |
| 10 | 449 ⚠ | 28 | 22 | 22 | elastic |
Where the true curve is mandatory
None of this shows up in a member strength check, and the companion post explains why it should not. But the moment steel is deliberately taken into large plastic strain, the true curve is the only correct description, and reaching for the engineering curve is a real error:
- Nonlinear finite-element analysis. Any run that follows steel past yield, connection ductility, seismic fuses, plastic collapse, blast, crash, must be fed true stress versus true (or plastic) strain, built as in the section above. The engineering curve makes the model soften artificially after fu.
- Cold forming. Press-braking a plate or roll-forming a cold-formed section drives 10% to 30% strain at the bend. Forming force, springback and residual stress all depend on the flow (true) stress there; the engineering curve, already falling, would mislead badly.
- Fracture and low-cycle fatigue. Reduction of area, true fracture strain and the strain-life relations behind seismic detailing are all written in true measures, because that is where the material's real state lives.
There is one place the two worlds meet inside the code, and it is worth naming. The minimum fu/fy ratio and the minimum elongation every structural grade must pass are engineering-stress requirements whose whole purpose is to guarantee a long plastic runway, the very region where the true curve does its work. The code checks strength in engineering stress and buys ductility, measured the same way, to protect a plastic reserve it will describe in true stress the day it has to model that reserve being spent.
Common mistakes and FAQ
Feeding an engineering curve to a nonlinear solver. The signature error. Material models expect true stress versus true (or plastic) strain; the engineering curve tells the solver the steel weakens past fu, which it never does.
Applying σtrue = σeng(1 + ε) after necking. The conversion assumes uniform deformation and dies at the neck. Beyond it the state is triaxial and localized; true stress needs a measured neck area or a Bridgman correction, not the tidy formula.
Thinking fu is the highest stress the steel ever reaches. fu is the peak of the engineering curve. True stress at fracture is far higher, often 1.5 to 2 times fu, because the real neck area is a fraction of the original.
Reading the post-ultimate drop as the material weakening. The engineering curve falls after fu only because it divides a shrinking load by a fixed original area. The material strain-hardens right to fracture; true stress never decreases.
Which stress does my calculator report? Engineering stress, always, because it computes force over the modelled (original) section, which is the right number to compare against a code fy or fu. To get true stress, multiply by (1 + ε).
How is this different from the engineering-first companion post? That one answers the design-range question: why the code keeps the engineering value and loses almost nothing. This one answers the opposite question: what the true curve is, where Considère says it diverges, and how to build it for analysis. Same subject, two rooms.
Key takeaways
True stress is what the steel carries and what an analysis past yield needs; engineering stress is what the code and the test report. Keep both, and know which room you are in.
- σeng = P/A0, σtrue = P/Ai; before necking, σtrue = σeng(1 + ε) and εtrue = ln(1 + ε). The factor depends on strain alone.
- The Considère criterion dσtrue/dεtrue = σtrue locates necking; for a power-law steel it is εtrue = n, uniform elongation en − 1.
- Worked A572-50 rod (Ø 45.1 mm, A = 16.0 cm2, 6 m): the engine gives 5.175 mm at N = 276 kN, so σ = 172.5 MPa and σtrue = 172.65 MPa (+0.086%).
- At N = 552 kN the engine returns σ = 345.0 MPa = fy with a 10.350 mm stretch; true stress 345.60 MPa (+0.17%).
- Out at necking (17.4% strain, fu = 450 MPa) true stress is 528 MPa and climbing; feed a solver the true curve, never the engineering one.
Sources
- 1.ASTM A370 / ASTM E8-E8M, Standard Test Methods for Tension Testing of Metallic Materials (strengths on the original cross-section)
- 2.ISO 6892-1, Metallic materials, Tensile testing at room temperature
- 3.AISC 360-16, Specification for Structural Steel Buildings (fy, fu and material properties)
- 4.Eurocode 3 (EN 1993-1-5, Annex C), material modelling for FE analysis of steel
- 5.ABNT NBR 8800, Projeto de estruturas de aco e de estruturas mistas de aco e concreto
- 6.Dieter, Mechanical Metallurgy (true stress-strain, the Considere construction, necking and the Bridgman correction)
Try CalcSteel for free
Model, analyze and design steel structures in your browser. No install, no signup.
Open the 3D editor