Skip to content
This repository was archived by the owner on Sep 6, 2026. It is now read-only.

About

Can statics alone solve these three frames? One integer decides. Reproduces m + r - 2j from the geometry, cross-checked against a stiffness null space and an equilibrium-matrix rank.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

You Don't Need Software For This. One Number Says Otherwise.

Triangle vs Square vs Hexagon — Which Frame Is Strongest? compared three bracing patterns under a shared material budget: a fully triangulated frame, a plain square grid, and a honeycomb. The only technically substantive comment on it argued that the problem needs no FEA — that free body diagrams and a moment/matrix method would work it out.

It is a confident, reasonable-sounding claim. This script does it exactly that way, and it fails for all three frames, in two completely different ways.

python -m pip install -r requirements.txt
python reproduce.py            # ~2 seconds
python reproduce.py --no-plot  # numbers only

The arbiter

For a pin-jointed plane truss with m members, r reaction components and j joints:

m + r − 2j meaning
> 0 indeterminate — equilibrium alone is that many equations short. Closing it needs compatibility and member stiffness, which is a matrix/stiffness method.
= 0 determinate — solvable by joint equilibrium alone, and the member forces do not depend on E or A at all.
< 0 a mechanism — pin the joints and it folds under any load.

The result

joints members m + r − 2j verdict
TRIANGLE 20 43 +6 stands, but statics is 6 equations short
SQUARE 20 31 −6 folds, 6 different ways
HEXAGON 28 35 −18 folds, 18 different ways
WARREN (reference) 7 11 0 solve it by hand

Run the proposed method and the shape of the system says the same thing:

triangle   40 equations, 46 unknowns, rank 40  ->  6 equations short
square     40 equations, 34 unknowns, rank 34  ->  no solution exists
hexagon    56 equations, 38 unknowns, rank 38  ->  no solution exists
warren     14 equations, 14 unknowns, rank 14  ->  SOLVED

Two different failures

Two of the three are not structures at all on paper. A free-body-diagram treatment assumes pin joints. Pin the square and the honeycomb and they are mechanisms — they fold under any load whatsoever. They stand in that video only because their joints transmit moment. The hand method applied as stated does not give a slightly wrong answer; it predicts immediate collapse. That is also the physical reason those two came last.

Even the triangulated one cannot be solved by statics. It is the one that looks like a textbook truss and it is genuinely stable — but it has 6 redundant members. 40 equations, 46 unknowns.

The physical signature

In a determinate truss the member forces follow from equilibrium alone, so they cannot depend on E or A. Stiffen any member and nothing moves. That independence is exactly what makes hand calculation possible.

triangle   34 of 43 members change the force pattern   (worst 5.86%)
warren      0 of 11 members change the force pattern   (worst 2.1e-13%)

The sweep stiffens every member in turn, not one chosen by heuristic. That matters: probing only the member carrying the largest force on the triangle picks the one directly under the load, whose force is fixed by joint equilibrium alone. It reports zero movement — which looks exactly like a determinate structure and is the opposite of the truth. An indeterminate frame contains locally determinate members.

Where the comment is right

A Warren truss: m + r − 2j = 0, 14 equations and 14 unknowns, solved here by equilibrium alone with no material properties anywhere. The rule was fine. The structures weren't.

Validation

Three independent computations of the same integer, which must agree exactly:

check how
count vs null-space dimension integer arithmetic vs an eigenvalue decomposition
count vs equilibrium-matrix rank a third route, and the method the comment proposed
rigid-body modes an unsupported plane frame must have exactly 3
hand vs stiffness on the reference two solvers sharing no code, one using no material properties
determinate forces ignore stiffness swept over every member
mechanisms raise never a least-squares fit dressed up as an answer

The rigid-body check exists because that mistake was actually made while building this: a first pass reported "40 free DOF of 40" and three spurious zero modes on a frame that is not a mechanism. The supports had not been applied at all, and the rigid-body count is what exposed it.

The zero-eigenvalue tolerance is relative and the spectral gap is reported alongside, because a bare tolerance on a stiffness eigenvalue is not physical on its own — the evidence is the separation between the zero cluster and the first real mode.

Limitations

  • Pin-jointed, axial-only. That is the point — it is the assumption the proposed method makes — but it means these numbers are not the video's capacities, which come from a rigid-jointed frame analysis.
  • r = 3 (pin + roller). r is a convention, not a property of the frame: two pins give r = 4 and shift every count by one. The verdicts here happen to survive that change, but the convention is stated rather than assumed.
  • Linear elastic, small displacement. The fold amplitude in the plot is a drawing choice — a mechanism has no equilibrium amplitude, which is precisely why it is one.

Files

reproduce.py        everything, one file, no classes
requirements.txt
results/            written on run: results.json, statics.png

About

Can statics alone solve these three frames? One integer decides. Reproduces m + r - 2j from the geometry, cross-checked against a stiffness null space and an equilibrium-matrix rank.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages