The 1D tolerance stackup: what the vector-loop method keeps when every dimension lies on one axis, derived rather than asserted, with one chain worked through every step. No software is mentioned; the arithmetic is the same the application runs.
1. Scope
This paper describes the 1D tolerance stackup, vector-loop tolerance analysis restricted to one dimension: an assembly whose critical dimension can be followed along a single straight axis, face to face, through parts that touch on planes perpendicular to that axis. It states the model, derives the arithmetic from the general method rather than asserting it, and works one example through every step so that each formula has a number beside it.
It is written for a design or quality engineer who knows GD&T and has to defend a stackup to a customer. It is not about any particular software. The general two- and three-dimensional method is described only far enough to show what the 1D case keeps and what it drops (section 4, section 11).
2. Where the method comes from
The vector-loop method was developed at Brigham Young University by Kenneth W. Chase and his students from 1988 onward, under the ADCATS consortium (Association for the Development of Computer-Aided Tolerancing Software), sponsored by aerospace, automotive and electronics companies. Its full name is the Direct Linearization Method. Chase, Gao and Magleby published the two-dimensional form in 1995 and the three-dimensional form in 1998; Chase wrote the tutorial version as chapter 13 of Drake's Dimensioning and Tolerancing Handbook (1999). It is the engine of the commercial tools TI/TOL and CETOL 6σ.
The idea is older than the name. A dimension is a vector: a length and a direction. An assembly is a set of vectors laid tip to tail. The dimension you want to verify is the vector left over when you have gone all the way round. Tolerance analysis is the question of how that closing vector moves when every other vector is allowed to wander within its tolerance.
In the general method the vectors point in any direction, parts settle against each other at assembly (Chase's "small kinematic adjustments"), and the answer comes from a sensitivity matrix obtained by linearizing the loop equations. Restrict every vector to one axis and all of that collapses into the loop diagram that Fischer's Mechanical Tolerance Stackup and Analysis and chapter 9 of Drake teach: a chain of + and − terms. This paper is about that collapse and what survives it.
3. The model
Choose the axis. Choose a starting face. Walk through the assembly along the axis, one drawing dimension per step, always from a face you can name to the next face you can name, until you are back where you started. Every step is a vector: its length is a dimension on a drawing, its direction is the direction you walked.
Closed loop, open loop
Because you returned to the start, the vectors sum to zero. That is the closed-loop equation, and in 1D it is a single line:
One of the terms is the dimension you are verifying. Move it to the other side and the closed loop becomes the open loop: the gap, written as a function of everything else.
For the housing: H − G − C − B − A = 0, hence G = H − A − B − C. The gap grows with the housing and shrinks with every block. Nothing about that needed a calculation; it fell out of the walk.
The sign convention
The literature offers two conventions and they give the same result. The walk convention (Fischer): fix the positive direction as the direction from the first face of the gap toward the second, and give every vector the sign of the direction you walked it. The absolute convention (Drake): a dimension followed left to right is +, right to left is −; bottom to top +, top to bottom −, regardless of where the gap is.
With the absolute convention the sign of the result may come out reversed for a gap that opens to the left; the magnitude is identical, and a negative gap still means interference once you know which way you walked it. What matters is that the convention is applied to every vector without exception, and that the requirement's limits are stated in the same sense as the walk.
Loop rules
Chase's rules for valid loops exist because in two and three dimensions an invalid loop is easy to draw and hard to notice. In one dimension they reduce to four checks, and each one catches a real mistake:
- Every step is a controlled dimension. A step must run between two faces that a drawing dimension, basic dimension or geometric tolerance actually relates. If you cannot point at the callout, you have not modelled that step; you have guessed it.
- Every part on the path is crossed, and crossed once. The loop enters a part at a contact face and leaves it at another; it does not double back inside a part.
- A dimension that appears twice in opposite directions is redundant. Drop both occurrences; they cancel in the nominal and would double-count in the tolerance.
- The loop closes. Walk it with nominal values and the signed sum must be zero to within the rounding of the drawing. If it is not, a step is missing or a sign is wrong, and no tolerance arithmetic will repair it.
The number of independent closed loops in an assembly is L = J − P + 1 (J joints, P parts). In a 1D stack the parts touch in a single chain, J = P − 1 along that chain, and L = 0: there is no closed loop other than the one the gap itself closes. That is why a 1D stack never needs the closed loop to be solved separately from the open one. The first time an assembly needs two loops is the first time it has stopped being 1D.
4. Sensitivity in 1D
From cos θ to ±1
In the general two-dimensional method a closed loop gives two equations of projection and one of rotation:
where θᵢ is the absolute direction of vector i and φⱼ the relative rotation between consecutive vectors. For small variations the equations are linearized: the change of the gap is a linear combination of the changes of the drawing dimensions, and the coefficients are partial derivatives. The derivative of the x-projection with respect to a length is simply cos θᵢ; with respect to an angle it is the lever arm of every vector after it. Where parts settle at assembly, the kinematic adjustments are solved from the closed loops and substituted, and the coefficients pick up extra terms.
Now put every vector on one axis. Every θᵢ is 0° or 180°, every cosine is +1 or −1, every sine is zero, and there are no angles to differentiate. The sensitivity of the gap to each dimension is:
The sensitivity matrix of the general method is a row of signs, and it is exactly the row of signs the walk produced in section 3. Every accumulation rule in the rest of this paper is the general rule with aᵢ = ±1 substituted. Nothing is linearized, because nothing was nonlinear: a sum of signed lengths is its own first-order expansion, and worst case, RSS and every other rule below are exact for the model, not approximations of it.
When 1D is enough
The collapse is legitimate when, and only when, three things hold along the whole loop:
- Every contact is a plane perpendicular to the axis (or a feature whose location along the axis is what the drawing controls). A contact on an incline, a cylinder resting on a plane, a pin in a slot, all introduce a direction other than the axis.
- No part settles. Nothing slides or rotates at assembly to accommodate the variation of something else. If it does, that motion is a term the drawing does not carry and the 1D loop cannot see.
- Angular variation does not reach the gap. A tilt of one part carries everything stacked on it. If the loop is long enough, and the perpendicularity loose enough, for a tilt to move the gap by an amount comparable with the size tolerances, the loop has a rotation term and is not 1D.
A great many assemblies satisfy all three: shafts with shoulders, spacers, bearings and circlips; stacked plates; housings and covers; hole patterns along a line. Those are the assemblies this paper is about. For the others, the 1D loop can still be written, but the coefficient of the offending term is not ±1, and section 11 says what to do.
5. One contributor's numbers
A drawing states a dimension in one of several forms: a nominal with a bilateral tolerance, a nominal with an unequal tolerance, two limits, a basic dimension with a geometric zone. Before any accumulation every term is brought to one canonical form: a mean and an equal-bilateral half-width.
| Drawing | nominal | mean | half | Note |
|---|---|---|---|---|
| 20 ±0.05 | 20.000 | 20.000 | 0.050 | already canonical |
| 20 +0.10 / 0 | 20.000 | 20.050 | 0.050 | the band is re-centred, never re-sized |
| 19.95 / 20.05 (limits) | — | 20.000 | 0.050 | no nominal stated; the mean is the nominal |
| Ø12 h7 (0 / −0.018) | 12.000 | 11.991 | 0.009 | unilateral fits shift the mean |
| basic 60, position Ø0.3 | 60.000 | 60.000 | 0.150 | a zone entered from the axis: ÷2, see §9 |
The physical meaning of the mean shift is easy to lose and expensive to lose. A dimension written 20 +0.10/0 does not vary about 20. It varies about 20.05, because that is the middle of the band the part is allowed to occupy, and a process centred in its tolerance will centre there. Adding the drawing's nominal instead puts the centre of the gap somewhere no assembly can be.
A loop therefore has two centres: the nominal gap, the signed sum of drawing nominals, which is what the drawing says and what worst-case limits are usually stated against; and the mean gap, the signed sum of means, which is where the population sits and what every statistical statement is centred on. On a chain of symmetric tolerances they coincide. On any other chain they do not, and a report that shows one without the other is hiding a number.
6. Worst case
The worst case asks: can any legal combination of parts violate the requirement? Every dimension is placed at whichever limit hurts, all at once. Signs do not enter the tolerance sum, since a minus-sense dimension can push the gap either way just as a plus-sense one can:
For the example: Σ half = 0.10 + 0.05 + 0.05 + 0.05 = 0.250, so G = 0.100 ± 0.250, that is −0.150 … 0.350. Both limits are violated: a legal set of parts can bind by 0.15 and another can rattle by 0.05 past the allowance.
That is the whole of worst case, and it is exact. What it costs is stated in the next section; what it means is this: worst case is a statement about legality, not about production. It is the correct standard when the consequence of one failure is unacceptable, when the customer's acceptance criterion is stated that way, when the number of contributors is small, or when the parts are not made by independent processes and could conspire. It is the wrong standard when it drives tolerances tighter than any process needs to prevent a failure no one will ever build.
Contribution
The share of the band each term owns is its half-width over the sum:
H contributes 40 %, each block 20 %. Contribution is the first thing to read after the verdict, because it says where a change would pay: tightening the housing by 0.02 buys twice what tightening a block by 0.02 buys.
7. Statistical accumulation
RSS, derived
The gap is a linear combination of the dimensions, and the dimensions are random variables. If they are independent, the variance of the sum is the sum of the variances, each scaled by the square of its coefficient:
This is the only place the derivation uses probability, and it uses one theorem. Everything else is a convention about what a tolerance means. The usual one is that a tolerance band is a ±3σ band: a process centred in its tolerance and just capable, so that 99.73 % of parts are inside. Then σᵢ = halfᵢ / 3, and multiplying the equation above by three:
For the example: √(0.10² + 3 × 0.05²) = √0.0175 = 0.132288. So G = 0.100 ± 0.132 at ±3σ, that is −0.032 … 0.232, and σ_G = 0.044096. The band is 1.9 times narrower than worst case on four terms; on n equal terms the ratio is √n.
The per-term contribution in RSS is the share of the variance:
Here H owns 57 % and each block 14 %. The square changes the ranking's weight, not its order: the largest tolerance dominates more strongly than in worst case, which is why one loose term is worth attacking before three tight ones.
From a band to a reject rate
A band is not a yield. To turn σ_G into a fraction of assemblies outside the limits, assume the gap is normally distributed (it is a sum of several terms, and the central limit theorem makes this a fair assumption even when the terms are not normal) and measure the distance to each limit in standard deviations:
| Limit | distance | Z | fraction outside |
|---|---|---|---|
| lower, G ≥ 0 | 0.100 | 2.268 | 1.17 % |
| upper, G ≤ 0.30 | 0.200 | 4.536 | 3 ppm |
| total | 1.17 % (11 674 ppm) |
The same chain that worst case rejects outright is expected to bind in about one assembly in eighty-six, and to rattle almost never. That is a different verdict, and a more useful one, because it can be weighed against the cost of the fix.
The capability indices are the same numbers in another dress: Cp = (G_upper − G_lower) / 6σ_G and Cpk = min(Z_low, Z_high) / 3. Here Cpk = 0.76. A target of Cpk ≥ 1.33 means Z ≥ 4 on the nearer side, 32 ppm; Cpk ≥ 1.67 means Z ≥ 5, 0.3 ppm. Cpk exists to catch a distribution that sits almost entirely inside the limits while hugging one of them, which a yield figure alone can hide.
Corrections between RSS and worst case
Between "everything at its limit" and "everything independent and centred" the literature offers three ways to hedge. All three are the RSS formula with an admission that processes drift.
The mean-shift model (attributed to Chase and Greenwood) is the one that says what it assumes: with mᵢ = 0 it is RSS, with mᵢ = 1 it is worst case, and any value between is a statement that a process is allowed to sit off-centre by that fraction of its tolerance and still be accepted. For the example, Bender's factor gives ±0.198; a mean shift of 20 % on every term gives ±0.156. Which to use is a policy, not a calculation, and it should be written down once per company rather than chosen per stackup.
8. Monte Carlo on a loop
Everything in section 7 assumed the gap is normal and the terms are described by a σ. Monte Carlo drops both assumptions and pays in computation. Build many virtual assemblies: for each, draw a realised value for every term from a distribution you assign to it, add the loop up, record the gap. Then count.
| Distribution assigned to a term | Meaning | σ from half h |
|---|---|---|
| Normal, σ = h/3, untruncated | a capable, centred process; 0.27 % of parts outside the band, as in life | h / 3 = 0.333 h |
| Uniform on [−h, +h] | a hard limit with no preference inside it: a sorted part, a shim, a setting | h / √3 = 0.577 h |
| Triangular on [−h, +h] | between the two: a process trimmed toward centre but not capable | h / √6 = 0.408 h |
| Normal with an offset mean | a process known to run high or low | h / 3 about the offset |
On the example, with normal terms and one million samples, the simulated gap has mean 0.1000, σ 0.0441, 11 587 assemblies below zero and 2 above 0.30: a yield of 98.84 %, agreeing with the closed form of section 7 to the third digit. That agreement is not a coincidence and not a check of anything; the model is linear and the terms are normal, so the sum is normal and Monte Carlo can only reproduce the formula. Monte Carlo earns its cost in three other situations:
- Non-normal terms. Make the same four terms uniform and σ_G becomes 0.0764, 1.7 times larger; the simulated interference rate rises from 1.2 % to 10.2 %. A tolerance that is a hard sorting limit, not a process, is a uniform term, and RSS on the ±3σ convention understates it badly.
- Correlated terms. A bonus tolerance that depends on a size already in the loop (section 9) is a function of a number the simulation has already drawn. Monte Carlo can compute it per sample; RSS has to be told.
- Limits that are not symmetric about the mean, or one-sided. The count needs no assumption about the shape of the tail.
The price is sample size. The standard deviation of a simulation settles quickly (a few thousand samples for 1 % accuracy), but a reject rate is estimated from the samples in the tail, and there are few of them. To estimate a 0.27 % rate to ±10 % needs about 100 000 samples; a 0.01 % rate, several million. A Monte Carlo yield quoted to four digits from ten thousand samples is noise dressed as precision.
9. Geometric tolerances as zero-length vectors
A geometric tolerance is a tolerance without a dimension. It has no nominal length to add to the loop; it has only a zone within which something is allowed to be. In the vector model it enters as a zero-length vector: a term with mean 0 and a half-width taken from the zone. Where it enters is decided by the same walk as everything else: at the step where the loop passes from the feature's true position, or its datum, to where the feature actually is.
Position and the ÷2
A position tolerance of Ø0.3 says the axis of the hole may lie anywhere in a cylinder 0.3 across, centred on true position. A loop that walks from true position to the axis, along one axis, has a term of mean 0 and half-width 0.15: the zone is a diameter, and a walk from centre to edge crosses a radius. The same holds for any diametral zone. A zone stated as a width (a profile of 0.2 on a surface, a flatness of 0.05) is already a total band; a walk from the nominal surface to the actual one crosses half of it, 0.1 or 0.025.
A basic dimension between the true positions of two holes is a term with a half-width of zero. It carries length into the loop and no variation; the variation is in the two position terms that bracket it.
The material bonus and the virtual condition
A position tolerance with Ⓜ applies its stated zone at maximum material. Make the hole larger than MMC and the zone grows by exactly the departure. In the loop that is a term whose half-width is not a constant but a function of another term's realised value: the bonus. Two treatments exist, and for worst case they agree to the last digit.
The explicit loop. Two plates, each with a hole Ø6.5 +0.2/0 at a position of Ø0.4 Ⓜ, fastened by a bolt Ø6 0/−0.1 that floats in both. The loop for the clearance runs from the left wall of hole 1 to its axis (radius, mean 3.30 ±0.05), from that axis to true position (position, 0 ±0.20), from true position to the axis of hole 2 (position, 0 ±0.20), to its right wall (radius, 3.30 ±0.05), and back through the bolt (−5.95 ±0.05):
The bonus has not been added. It need not be, and adding it would be wrong: take the hole to its largest size (radius 3.35, the ±0.05 spent) and the zone grows to Ø0.6 (±0.30), and the minimum gap is 3.35 + 3.35 − 0.30 − 0.30 − 6.0 = 0.100, unchanged. The extra position freedom is paid for, unit for unit, by the extra hole size. A bonus is not extra variation; it is the same variation, permitted to appear in another place.
The boundary. The other school collapses the hole into the one envelope it can never cross, the virtual condition: VC = MMC − position = 6.5 − 0.4 = 6.1, a single term, and compares it with the bolt's MMC, 6.0. Margin 0.100. The same number, from one subtraction, which is why the boundary school is used for the fit/no-fit question and the explicit loop for everything else.
Form and orientation in 1D
A form or orientation tolerance enters a 1D loop only where the loop crosses a contact whose location along the axis depends on the imperfect surface. Two cases cover almost everything:
- The loop crosses a feature of size through its two size faces. A parallelism or flatness refinement on those faces adds nothing: the local size is already bounded by the size tolerance, and the refinement is inside it. Adding it double-counts.
- The loop crosses a contact between a surface and a part seated on it. The part sits on the high points; the loop measures to a nominal surface. The seated part may stand off by up to the flatness (or profile) value, and the term is a zero-length vector of half-width equal to half the zone, entered once per such contact.
Orientation tolerances (perpendicularity, angularity) in a stack along the axis are rotational, and their effect on the gap grows with the distance from the contact to the point where the gap is measured. When that lever arm is short the term is negligible; when it is long the loop has ceased to be 1D, and section 11 applies.
10. What the numbers are for
The example fails worst case on both sides and is expected to bind 1.2 % of the time. Three things could be done, and the arithmetic ranks them.
| Change | nominal gap | σ_G | Z, nearer limit | rejects | Cost |
|---|---|---|---|---|---|
| as drawn | 0.100 | 0.0441 | 2.27 | 11 674 ppm | — |
| re-centre: C = 24.85 | 0.150 | 0.0441 | 3.40 | 670 ppm | one nominal on one drawing |
| tighten: H ±0.07, blocks ±0.04 | 0.100 | 0.0328 | 3.05 | 1 160 ppm | four processes, every part, forever |
| both | 0.150 | 0.0328 | 4.57 | 5 ppm | as above |
Moving one nominal by 0.05 does more than tightening every tolerance by a third, and costs nothing. This is the general lesson of the two centres in section 5: the position of the mean gap relative to its limits is a design choice, made once on a drawing, and it is the cheapest variable in the whole analysis. The tolerance band is the second variable, and every tenth of it is paid for on every part. Read the contribution table before touching it; the term that owns 57 % of the variance is the one to negotiate.
A worst-case failure that is a statistical pass is a decision, not an error. It says: the design as drawn can, in a legal but improbable combination, fail; here is how improbable. Whether that is acceptable depends on what a failure costs, and that is not a number the stackup has. What the stackup has is the honest statement of both, and a reader who is shown only one of them has been told what to think instead of what is true.
11. Where 1D ends
A 1D loop stops being valid the moment a coefficient other than ±1 appears. Three signs that it has:
- A contact that is not perpendicular to the axis. A block on a 17° incline moves the gap by tan 17° = 0.31 of its own variation, not by 1.0. The general method computes that coefficient as cos θ of the relevant vector, with the kinematic slide solved from the closed loop. Entering the term at ±1 in a 1D loop overstates it three-fold.
- A part that settles. A pin in a clearance hole, a ball in a groove, a cylinder against two planes: the assembled position depends on the variation of the mating parts, and the loop has a term the drawing does not carry.
- An angular tolerance with a lever arm. A perpendicularity of 0.05 over a 20 mm face is a tilt of 2.5 mrad; over a 200 mm stack it moves the end by 0.5, ten times the callout. The coefficient is the distance, in millimetres per radian, and it is not ±1.
In all three cases the remedy is the same: the loop is still a loop, the vectors are still vectors, but the coefficients must be computed, by projection and by solving for the settling, rather than read off as signs. That is the two-dimensional method of section 4, and its first-order accuracy on well-behaved assemblies is within a tenth of a percent of a full simulation. What this paper adds to it is only this: for the assemblies that are genuinely 1D, which is most of them, there is nothing to approximate, and the arithmetic above is exact.
12. Sources
- Chase, K. W., Gao, J., Magleby, S. P. (1997). "Tolerance Analysis of 2-D and 3-D Mechanical Assemblies with Small Kinematic Adjustments." In Advanced Tolerancing Techniques, Wiley. ADCATS Report 97-5.
- Gao, J., Chase, K. W., Magleby, S. P. (1998). "Generalized 3-D tolerance analysis of mechanical assemblies with small kinematic adjustments." IIE Transactions 30(4), 367–377.
- Gao, J., Chase, K. W., Magleby, S. P. (1995). "Comparison of Assembly Tolerance Analysis by the Direct Linearization and Modified Monte Carlo Simulation Methods." Proc. ASME Design Engineering Technical Conferences, DE-Vol. 82-1, 353–360.
- Chase, K. W. (1999). "Multi-Dimensional Tolerance Analysis (Automated Method)." Ch. 13 in Drake, P. J. (ed.), Dimensioning and Tolerancing Handbook, McGraw-Hill. Also Drake, ch. 9 "Traditional Approaches to Analyzing Mechanical Tolerance Stacks", and Van Wyk, D., ch. 12 "Multi-Dimensional Tolerance Analysis (Manual Method)".
- Chase, K. W., Parkinson, A. R. (1991). "A survey of research in the application of tolerance analysis to the design of mechanical assemblies." Research in Engineering Design 3(1), 23–37.
- Greenwood, W. H., Chase, K. W. (1988). "Worst Case Tolerance Analysis with Nonlinear Problems." ASME J. Engineering for Industry 110(3), 232–235.
- Bender, A. (1968). "Statistical Tolerancing as it Relates to Quality Control and the Designer." SAE paper 680490.
- Fischer, B. R. (2011). Mechanical Tolerance Stackup and Analysis, 2nd ed., CRC Press.
- Shen, Z., Ameta, G., Shah, J. J., Davidson, J. K. (2005). "A Comparative Study of Tolerance Analysis Methods." J. Computing and Information Science in Engineering 5(3), 247–256.
- ASME Y14.5-2018, Dimensioning and Tolerancing; ASME Y14.5.1-2019, Mathematical Definition of Dimensioning and Tolerancing Principles.