Method 01
What this tool is
A first-order linear elastic analysis of a plane frame, checked against limits you supply. It computes no resistance.
The calculator solves beams, frames and trusses that lie in one plane, under static loading, assuming the material stays elastic and the displacements stay small. That combination — equilibrium written on the undeformed geometry, linear material, linear kinematics — is linear analysis, LA in the taxonomy of EN 1993-1-14. It is the analysis type behind the vast majority of everyday frame design, and the one whose answers can be checked against closed forms, which is what makes the verification story on this page possible.
What it deliberately is not: a design code. The tool computes reactions, internal actions, deflections and elastic stresses, and compares them against allowables you enter. It applies no partial factor, no buckling reduction factor, no cross-section classification and no code resistance of any kind, and it claims conformity with no standard. Member verification to EN 1993, AISC 360 or an equivalent code remains your work; this page states exactly what the analysis feeding that work does.
17
closed-form benchmarks
5
solver identities
5
pack validation cases
2.8e-10
worst relative error
Method 02
Where it sits on the analysis ladder
EN 1993-1-14 names seven analysis types. This tool performs the first, and says so rather than blurring the line.
Design-by-FE standards organise analyses by which nonlinearities they include. In EN 1993-1-14's vocabulary the ladder runs LA (linear), LBA (linear bifurcation — elastic buckling modes), GNA (geometrically nonlinear), GNIA (geometrically nonlinear with imperfections), MNA (materially nonlinear), GMNA and GMNIA (both at once, the latter with imperfections). Each rung answers a question the previous one cannot: LBA asks at what load factor could this frame buckle elastically; GNA asks how much do the deflections amplify the moments; MNA asks what happens after first yield.
This tool is LA, deliberately. Everything above LA on the ladder is out of scope in this version — stated in full in section 17 — and two advisories watch the boundary from inside: when the peak transverse displacement of a member exceeds about 1/50 of its length, and when any member's axial compression exceeds a quarter of its own Euler load , the tool flags that a first-order analysis is no longer the right instrument, rather than letting the number stand unqualified.
The reference to EN 1993-1-14 is vocabulary, not conformity: the platform's source gate structurally prevents that document — or any documentation-only reference — from backing a computed number. Section 19 spells out the claim contract.
Method 03
Coordinates and sign conventions
Sign convention is the dominant defect class in structural FE software, so this solver defines its convention once, as data, and every consumer reads that one definition.
Global axes are the ones you draw in: X to the right, Y upward, rotation positive counter-clockwise, so gravity acts in −Y and a downward load is a negative . Each member additionally carries a local frame: local x runs from the member's I node to its J node, and local y is local x rotated 90° counter-clockwise. Which end is I matters — it is where “distance from the I end” is measured from — and it is simply the order the member was drawn in.
Scroll figure horizontally →
Internal actions follow the classical beam convention: axial force N positive in tension, bending moment M positive when sagging, and shear V defined so that the differential relations hold everywhere:
The relations the extremum finder relies on: M is stationary exactly where V = 0
Scroll figure horizontally →
The one that trips experienced engineers
The N, V, M and δ diagrams plot the signed value against distance from the I end, on a value axis with positive upward. A sagging moment therefore reads positive and is drawn above the axis. This is not the drafting-room practice of drawing the bending moment diagram on the tension face, where the same sagging moment appears below the beam. Both conventions are legitimate and widespread; each is only readable once it is stated. Read the sign, not the side.
Scroll figure horizontally →
The convention below is the exact text rendered as the permanent legend in the workspace and printed in every report's analysis-basis section. This page renders the same data rather than restating it, so the three surfaces cannot drift apart.
- Global axes
- is positive to the right, is positive upward, and rotation is positive counter-clockwise. Gravity acts in , so downward loads are entered as negative (the interface does this for you when you pick a downward direction).
- Member local axes
- Local runs from the member's I node to its J node; local is local rotated counter-clockwise. Member results are reported in this local frame.
- Axial force
- Axial force is positive in tension and negative in compression.
- Bending moment
- Bending moment is positive when sagging (tension on the local- face) and negative when hogging. The relations and hold throughout.
- Diagram plotting
- The , , and diagrams plot the signed value against distance from the member's I end, on a value axis with positive upward. A sagging moment therefore reads positive and is drawn above the zero line. This is the ordinate convention, not the drafting practice of drawing the bending-moment diagram on the tension face — read the sign, not the side.
- Reactions
- Support reactions are reported in the global frame as the forces the supports apply to the structure. For a structure carrying only downward load, vertical reactions are therefore positive.
- Internal units
- All calculations are performed in a consistent SI set — millimetres, newtons, and megapascals — and converted only for display. Switching the unit system never re-runs the analysis.
Method 04
The element
One two-node, six-DOF prismatic frame element, written once in shear-flexible form so that a single implementation serves both beam theories.
Every member is one element: two nodes, three degrees of freedom each — axial translation, transverse translation, rotation. The axial terms use linear interpolation; bending uses the Hermite cubics of section 7. Because internal actions are later recovered from statics rather than from the element field (section 9), one element per member is exact for the loading this tool accepts, and subdividing members is never required for accuracy.
Euler–Bernoulli form, Φ = 0. In the shear-flexible form every bending entry divides by (1+Φ) and the diagonal rotation terms become (4+Φ) and (2−Φ) — lib/fea/element.ts.
Timoshenko as the general case
The matrix is coded once, in the shear-flexible form, using the shear-deformation parameter
Φ compares bending stiffness against shear stiffness over the member length
With Φ present, the bending entries become and , and the rotational diagonal and coupling terms become and . Setting Φ = 0 recovers Euler–Bernoulli exactly — not approximately — so the beam-theory toggle selects a parameter value, not a second code path that could drift from the first. Φ is also forced to zero whenever the section has no effective shear area, so shear flexibility is only ever added when it can be computed from real inputs.
Scroll figure horizontally →
Euler–Bernoulli is the default because for ordinary proportions it is the right model, not because it is easier: shear deformation below the few-percent level is smaller than the uncertainty in any support condition. The tool watches the boundary for you — any member with a span-to-depth ratio under 10 raises an advisory suggesting the Timoshenko setting.
Method 05
Transformation, assembly, restraints and skew supports
Element matrices rotate into the global frame and assemble by degree of freedom. Two decisions here are worth understanding, because they shape how failures present.
c and s are the member's direction cosines from global +X
Restraints are eliminated, not penalised
Many solvers model a support by adding an enormous spring to the restrained degree of freedom. This one removes the DOF from the system entirely: the reduced matrix contains only free DOFs. That choice buys two things. Conditioning — no artificial 10¹² stiffness sits beside real member stiffnesses, so the factorisation's health reflects the structure, not the trick. And honest reactions — a reaction is recovered from the equilibrium equation at the restrained DOF, a real equilibrium quantity, rather than read off a stiff spring whose force is only approximately the reaction.
Skew supports rotate the nodal basis
An inclined roller restrains one direction that is neither X nor Y. Rather than approximating it, the solver rotates that node's basis by the skew angle and solves in the rotated frame, folding the rotation into the element transformation as one effective matrix:
One transform per member, so there is no second pass to keep in step
Method 06
End releases and static condensation
A pin, an axial slide or a shear release is an end through which the member transmits no such action. The solver removes it exactly, by condensation — not with a soft spring.
Partition the element's six DOFs into kept (K) and released (R) sets and impose that the released actions are zero. Solving the released rows and substituting back gives a condensed element that is exact, with no stiffness left on the released DOFs at all:
Both the stiffness AND the fixed-end forces are condensed
The alternative — a very soft rotational spring at the pin — is approximate, pollutes the conditioning, and leaks a small moment through every “pin”. Condensation matters most for a truss, where every member is pinned at both ends: after condensation no member contributes any rotational stiffness anywhere, which is exactly the physics, and the joint rotations are handled as described in section 8.
Scroll figure horizontally →
Method 07
Loads and fixed-end forces from Betti
A member load must become equivalent nodal loads. Most tools look those up in a table of standard cases. This one derives them from the element's own shape functions — and that is a better idea than it first sounds.
A load applied along a member — a UDL, a partial trapezoid, a point force between nodes — cannot enter the nodal equations directly. The classical bridge is the fixed-end force vector: the forces the member's ends would carry if both were fully fixed. By Betti's reciprocal theorem each component is the work-conjugate integral of the load against the element's own interpolation functions:
One integral, evaluated by 4-point Gauss quadrature, exact for the degree-4 integrand
The interpolation functions are the Hermite cubics (in shear-flexible form when Φ is active; at Φ = 0 they reduce to the classics):
ξ = x/L. These carry v_I, θ_I, v_J, θ_J respectively — figure 3 plots them from the implementation
Scroll figure horizontally →
Why derive instead of tabulate
For a full-span UDL the integral collapses to the numbers every engineer knows. Take the end-moment component, with the load acting downward at intensity w:
the worked line — ∫(ξ − 2ξ² + ξ³)dξ over [0,1] is 1/2 − 2/3 + 1/4 = 1/12
A table of standard cases reproduces that too. What the table cannot do is generalise: the same integral with different limits is a partial-span load; with a linearly varying intensity it is a trapezoid; with the Φ-modified shape functions it is the Timoshenko fixed-end force set, for which no common table exists. One code path, no transcription errors, and the benchmark suite asserts the classical values — wL²/12, Pab²/L² and the rest — are reproduced exactly.
Scroll figure horizontally →
The load vocabulary
The solver accepts nodal forces and moments, member point forces and moments at any position, linearly varying distributed loads over any sub-span, uniform and through-depth temperature changes, prescribed support displacements, and self weight computed from each member's own ρ·A·g. Two details are worth pausing on. A distributed load in a global direction on an inclined member can be measured per unit member length or per unit projected (plan) length — snow and plan-area loads are the latter — and on a 3-4-5 member the two readings differ by 20%. The tool never infers which you meant; the choice is an explicit part of every distributed load.
Scroll figure horizontally →
And temperature: a thermal load is a temperature difference, so it converts between °C and °F by ratio alone — the +32 of the absolute conversion belongs to the datum and cancels. The platform carries a distinct unit kind for temperature differences because applying the absolute formula turned a US user's 50 °C rise into 122 units and flipped cooling into heating. Thermal fixed-end forces are self-equilibrating: a restrained bar develops stress and no net reaction, a free bar develops strain and no stress, and benchmark B13 asserts both.
Method 08
Solving: elimination, LDLᵀ and conditioning
The global system factorises once — the stiffness does not depend on the loading — and every case and combination reuses that one factorisation.
Scroll figure horizontally →
The reduced stiffness matrix of a stable structure is symmetric positive definite, so it is factorised as without pivoting. That choice is not only about speed. When a model is a mechanism, the factorisation fails at a specific pivot, and that pivot maps back to a specific node and direction — so the tool can say “node B can rotate freely — add a support or connect another member” instead of surfacing a linear algebra error. For a user still learning frame behaviour, the named mechanism is the most valuable output the solver has.
Zero-stiffness DOFs, or: why a truss just works
In a pin-jointed truss no member resists rotation at any joint, so every joint-rotation DOF has an empty stiffness row. That is not a modelling error — it is the physics of a pin joint — so the solver constrains those DOFs automatically when they carry no load, reports that it did, and changes no result. The exception is deliberate: a load applied to a zero-stiffness DOF (a moment on a fully pinned joint) has genuinely nothing to carry it, and is refused as an error rather than absorbed.
The conditioning estimate
The factorisation's largest-to-smallest pivot ratio is reported with every solve as a cheap conditioning proxy — it is not a 2-norm condition number and is never described as one. A healthy frame sits around 10⁵, simply because axial stiffness EA/L and bending stiffness 12EI/L³ differ by that much in any ordinary member; the warning threshold sits at 10¹², where double precision genuinely starts to erode. A huge ratio means wildly mismatched stiffnesses, a near-mechanism, or a unit error — the results are still exact for the model as stated, but the model deserves a second look.
Method 09
Recovery: exact statics and the integrated deflected shape
Diagrams here are not differentiated shape functions. They are statics — which is why one element per member gives the same curve as fifty.
Internal actions from equilibrium of the cut
Once the member's end forces are known, N, V and M at any interior position follow from equilibrium of the free body between the I end and a cut at x — the member's own end actions plus whatever load acts on the segment. The load intensity is linear on each smooth interval, so V is quadratic, M cubic, and the polynomial coefficients are carried analytically; there is no numerical integration in the recovery path and no quadrature error.
The consequence is the headline verification property of this solver: the diagrams are mesh-independent. A tool that differentiates the element displacement field gets a mesh-dependent approximation — the cubic Hermite field can only produce linear moment between nodes — and needs the user to think about element counts. Here mesh density is purely a plotting resolution. Solver identity I1 asserts the one-element and fifty-element models agree to machine precision, and every solve re-measures the property on your actual model (section 15). Peak positions come from the same mathematics: M is stationary where V = 0, which is solved in closed form per segment, so a peak is reported at its true position — 5L/8 on a propped cantilever, L/√3 under a triangular load — rather than at the nearest plot station.
The deflected shape integrates the curvature
Integrated analytically per segment; θ is the integral of curvature and v follows, with the shear term entering through V's own sign convention
Integrating the recovered moment field picks up, for free, the three things nodal interpolation misses: the particular solution of the member's own load, the shear contribution when Φ is active, and thermal curvature. The classic web-FEA bug is to interpolate the two nodal displacements with the Hermite functions alone — the nodal values are right, so the curve looks plausible, and the midspan of a uniformly loaded single-element beam is simply wrong. Benchmark B4 exists to catch exactly this: a one-element simply supported beam has zero displacement at both nodes, so only a recovery that integrates the load's particular solution can produce 5wL⁴/384EI at midspan.
That cross-check runs on every solve, not only in the tests: integrating the curvature from the I end must reproduce the solved displacement and rotation at the J end, and the worst disagreement is reported as the recovery residual (section 15). Two independent routes to the same quantity — the global solve and the analytic integration — agreeing to machine precision is a stronger statement than either alone.
Method 10
Stress recovery
Elastic beam-theory stresses from the recovered actions and the section properties — reported with their sampling locations stated, including the one an I-section reader should know about.
Engineer's theory of bending, the shear-flow formula, and the distortion-energy criterion
The quantity Q/t — first moment of the area beyond the neutral axis, divided by the width of the cut there — is a section property, supplied per section and exact for the outline when the section is generated from one (section 11). That is a deliberate separation: the effective shear area is a convention with several defensible values, and it affects only the average shear stress and the optional Φ term. The governing peak shear stress comes from Q/t and is never contaminated by the choice of .
Von Mises stress is evaluated at three competing locations: the extreme fibre, where the normal stress peaks and the transverse shear is essentially zero; the neutral axis, where the bending stress vanishes and the shear peaks; and — on a section generated from a flanged outline — the step where the flange gives way to the web. All three are computed and the largest governs, because which one wins depends on the section and the action ratio.
The third one is the one a two-point tool misses, and it is not a small miss. At the step the first moment has barely fallen while the width of the cut has collapsed from the flange to the web, so the shear is close to its peak at the same time as the bending stress is still most of its extreme-fibre value. Over a band of M/V of roughly one to three times the section depth — a short way in from a support — that combination beats both of the obvious points. Sampling only the fibre and the neutral axis understates the equivalent stress across this tool's section catalogue by up to 22% (worst: UC 356×368×129; UB 20%, HEA 19%, IPE 17%, SHS 14%), and by around 26% on a sharp-cornered welded girder, whose lack of a root fillet puts the step closer to the flange.
Three points are enough, and that is a result rather than a hope. Within any run of constant thickness the equivalent stress can only peak at one of the run's ends — its interior stationary point is a minimum — and the ends of the runs are exactly these three positions. A solid or circular section has no step and no interior run to worry about, so for those two the first two points are provably sufficient. The engine asserts this against an exact evaluation at twenty thousand positions through the depth.
Method 11
Section properties, including the fillets
Catalogue sections store dimensions, not properties. Everything the solver needs is derived from the outline — including the root fillets most simple tools drop.
A section can be typed as raw properties or generated from a dimensioned outline — rectangle, I-section, RHS or CHS — in which case A, I, , Q/t and the fibre distances are derived by first principles. The catalogue of 194 standard profiles stores nominal dimensions only and goes through the identical derivation, so a catalogued IPE and a hand-typed outline can never disagree about the same shape. Editing any derived number releases the section from its outline rather than leaving the two to contradict each other.
Scroll figure horizontally →
The fillet mathematics
Each root fillet is a square minus a quarter disc: area per fillet, centroid from the sharp corner. The I-section's second moment is then
The fillet's own second moment about its centroid is five orders of magnitude down and is neglected
Omitting the fillets models a rolled beam as 4.3% more flexible than it is — the wrong direction for a deflection check to err in, and invisible because the answer merely comes out slightly low. A hollow section is handled as the difference of two rounded rectangles with , which is how the tube is actually formed; rounding only the outside overstates stiffness by roughly 3% on a typical cold-formed square, again unsafely.
The accuracy is measured rather than asserted: every catalogue entry stores its published nominal mass per metre — the one property quoted everywhere — and the derived area must reproduce it through ρ·A. Recomputed at this render, the worst deviation across the metric open sections and circular tubes (IPE, HEA, HEB, HEM, UB, UC, CHS) is 0.64%; across the AISC W shapes, whose dimensions and nominal masses are both rounded imperial values, 1.87%; and across the rectangular hollow sections 3.47%. Hollow sections are the weakest case by construction — their corner radius is a convention rather than part of the designation, so a specific mill's table can differ by a couple of percent, and a supplier's data governs. For the rolled European I-sections, the test suite additionally holds the derived area and second moment against published reference values for a spread of IPE, HEA and HEB sizes, where the agreement runs to hundredths of a percent.
Method 12
Materials: elastic constants only
The material picker offers typical elastic constants as a starting point. No strength value appears anywhere in it — a catalogue of resistances would quietly turn a stated assumption into an implied code check.
A material here is five numbers: E and G set stiffness, ν relates them, ρ sets self-weight, α sets thermal strain. For an isotropic material the constants are not independent — — which makes every isotropic entry self-checkable, and the test suite checks each one against its own identity.
Every value the picker offers is an editable default, reported in the output as the value actually used, beside the assumption that you confirmed it against the project specification. The concrete entries are short-term secant moduli on the gross uncracked section — cracking, creep and shrinkage are outside a linear elastic analysis, so a cracked or long-term stiffness is yours to enter as a reduced E.
Method 13
Load cases, combinations and envelopes
Combinations are factored sums of case solutions. That is exact here — and only here: it is a property of linear analysis, not of analysis in general.
Load cases group loads that act together; combinations scale and sum cases with factors like 1.35 and 1.50. Under linear analysis superposition is exact, so a combination's response is the factored sum of its cases' responses — to machine precision, asserted as solver identity I3. This is why combinations are computationally near-free: the stiffness never changes, so each one costs a back-substitution against the single factorisation. It is also a boundary worth naming: a second-order analysis could not combine this way, because amplification depends on the total load level. The cheapness of combinations is a fact about LA, and it leaves the ladder with the analysis type.
Scroll figure horizontally →
Envelopes answer the question a designer actually has — the worst value at every position, and which combination causes it. Every envelope bound carries its governing combination's name, at every station and for every peak, because an envelope value that cannot be attributed cannot be checked. Combinations marked serviceability drive the deflection check; strength combinations drive the stress checks; an unmarked combination counts for both. One honest limitation: envelopes are taken at matched station positions, and a case that has no station at a given x is dropped from that station's bounds — see section 18.
Method 14
Validation and diagnostics
The difference between a frame tool that teaches and one that frustrates is what it says when the model is not yet right.
Before anything is solved, the model is swept for the problems that produce wrong answers silently. Errors stop the solve: members referencing missing nodes, zero-length members, non-positive section or material values, loads placed beyond the end of their member, imposed displacements on unrestrained directions, groups of members connected to no support — each reported at the altitude the user works at (“these four members form a group with no support”), not as a matrix condition. Warnings let the solve run but flag meaning: duplicate nodes at one location, members that cross without sharing a node (the single most common real modelling mistake — they look connected and transmit nothing), springs made inert by a rigid restraint on the same DOF, distributed loads truncated at a member end.
Non-finite input gets its own sweep. A not-a-number value does not crash a solver — it propagates, defeats every downstream comparison, and once produced a model that reported itself stable while its moments were unrepresentable. A blank or unparseable spreadsheet cell now refuses the solve by name, before any arithmetic happens.
Method 15
The verification record — what every solve measures about itself
Five measurements accompany every analysis. Anything not measured says so rather than showing a zero — because zero is the best possible value for all of them.
1 · Factorisation
Did LDLᵀ complete with every pivot positive? If yes, the structure is stable under the stated restraints and the count of free DOFs is reported. If no, the failed pivot is attributed to its node and direction and nothing downstream pretends to be an analysis.
2 · Equilibrium residual
The applied loads plus the solved reactions must sum to zero. The applied resultant is integrated directly from the load definitions, independently of the fixed-end-force path used to solve — summing the equivalent nodal loads instead would test the solver against itself and silently assume the FEF derivation is right, which is precisely the part most worth testing. Agreement here therefore exercises the load derivation, the assembly and the solve at once.
The subtlety is the normalisation. A settlement on a statically determinate structure is a rigid-body movement: no load, no reaction, no strain — both sides of the balance are floating-point noise, and dividing noise by a near-zero scale once reported a residual of 9.2×10⁻³ against a model that is exactly in equilibrium. Components now only count once they exceed an absolute floor set five orders above machine noise and eleven below any real load, so the artefact is suppressed without any ability to hide a genuine disagreement.
3 · Recovery residual
Integrating the recovered curvature from the I end of each member must land on the solved displacement and rotation at the J end (section 9). The disagreement is normalised by the magnitude of the terms that had to cancel — normalising by the end value itself was a real bug, because a simply supported member's end displacement is exactly zero by construction, and dividing a last-bit cancellation error by nearly nothing declared a perfect analysis untrustworthy. A residual above 10⁻⁶ raises a warning that names the results unverified.
4 · Mesh independence
The model is re-solved with every member subdivided, and the relative change in peak displacement is reported. Exact statics recovery says this should be ~0, and rather than asserting that, the solver measures it on your actual model every time. The comparison is built carefully — shared nodes plus each member's analytically located transverse extremum, which is mesh-invariant, because refinement inserts interior nodes the coarse model cannot report and comparing against those would measure the mesh rather than the answer.
Above 600 free DOFs the study is skipped — the second solve costs about eight times the first — and it is then reported as not measured, never as zero. That distinction was a real defect: an unmeasured delta initialised to 0 rendered as a green pass captioned as though the study had run.
5 · Condition estimate
The pivot ratio of section 8, printed with its honest description: a proxy, around 10⁵ for a healthy frame, worth attention above 10¹².
Scroll figure horizontally →
Alongside the per-solve measurements stands the solver's own record: 17 closed-form benchmarks, 5 solver identities and 5 pack validation cases, every one solved live on the verification record with computed value, analytical value and measured error side by side. Expected values are signed — a register that compared magnitudes would wave a flipped convention straight through — and peak locations are asserted as quantities in their own right. Comparing a solver against closed-form solutions is code verification in the sense of ASME V&V 10: evidence the equations are solved correctly. It is not validation against physical experiment, and it is not a claim about any particular model you build.
The seven checks
Three checks interrogate the analysis itself and run whether or not you have entered a single allowable; four compare the output against limits you supply.
| Check | What it reports |
|---|---|
| fea.stabilityStability & solvability | Whether the stiffness matrix factorises, and where it does not, the degree of freedom the structure is still free to move in. |
| fea.equilibriumEquilibrium residual | Applied loads against solved reactions, integrated independently of the fixed-end forces used to solve, and reported as a relative residual. |
| fea.mesh-independenceMesh independence | How far the peak displacement moves when every member is subdivided and the model is re-solved — and, above the size limit where that study is skipped, that it was not measured. |
| fea.deflectionDeflection vs span limit | Peak transverse deflection against the span/limit ratio you supply. |
| fea.normal-stressCombined normal stress | Peak at the extreme fibres against the allowable you supply — and, where a section states no extreme-fibre distance, alone for a member carrying no bending stress measurable against this model's stress scale, or nothing at all for a member that does. |
| fea.shear-stressShear stress | Peak at the neutral axis against the allowable you supply. |
| fea.von-misesvon Mises equivalent stress | Peak at the extreme fibre, the neutral axis, and the web/flange step where the section has one, against the allowable you supply. |
Method 16
Worked examples
Three models you can check by hand, with the tool's numbers taken from live solves at this render — the same models ship as templates.
| Quantity | Closed form | By hand | This tool |
|---|---|---|---|
| Midspan deflection | 5.51 mm | 5.51 mm | |
| Midspan moment | 67.5 kN·m | 67.5 kN·m | |
| End shear | 45.0 kN | 45.0 kN | |
| Support reaction | 45.0 kN | 45.0 kN | |
| Bending stress at midspan | 61.7 MPa | 61.7 MPa | |
| Peak shear stress at the support | 14.8 MPa | 14.8 MPa |
The statics must recompose
The rafter behaves like a simply supported span whose free moment is redistributed by the knees: |M_knee| + M_mid must recover .
40.4 + 89.2 = 129.6 kN·m ↔ 1.35·wL²/8 = 129.6 kN·m
The knee joint balances
No external moment is applied at the knee, so the moment the rafter carries into the joint must be the moment the column carries out of it.
column top -40.4 kN·m ↔ rafter end -40.4 kN·m
Joint equilibrium at the support
At the left joint only the diagonal has a vertical component, so the reaction must equal the vertical component of its axial force: R_y = −N_diag · sin θ.
−(-12.02) × 0.8321 = 10.00 kN ↔ R_y = 10.00 kN
Pin-jointed means axial only
Every member is moment-released at both ends by static condensation, so no member can carry bending. The largest |M| anywhere in the solved model is 0.0e+0 N·mm — machine noise, asserted as zero in benchmark B10. The joint rotations carry no stiffness at all, so the solver constrains them automatically and says so in a diagnostic.
Method 17
Limits, measured performance, and scope
Free to use, and honest about capacity: there are hard caps, and the dense solver is slow well below them.
Models are accepted up to 600 nodes, 900 members and 600 loads per case. Every result is free and no account is needed to see them; only the PDF export asks for a free sign-in. Within those caps, performance is governed by the dense LDLᵀ factorisation — O(n³) in the free DOF count — and by the mesh-independence study's second solve:
| Nodes | Members | Free DOF | Solve | Solve + mesh study |
|---|---|---|---|---|
| 187 | 336 | 528 | 59 ms | 0.9 s |
| 273 | 500 | 780 | 119 ms | 7.5 s |
| 405 | 754 | 1170 | 1.6 s | 37.7 s |
| 465 | 854 | 1302 | 2.2 s | 55.6 s |
Measured on rectangular moment frames, July 2026, single browser thread. This is why the mesh study is bounded at 600 free DOFs: beyond it the study costs far more than the analysis it verifies, so it is skipped and reported as not measured. The analysis itself still runs to the caps — the largest accepted model solves in a couple of seconds without the study.
Out of scope in this version
The scope statements below are permanent and printed with every report — a reader must not have to infer the tool's boundary from the absence of a number. On the EN 1993-1-14 ladder of section 2, everything above LA is on this list.
- Second-order and stability analysis
- Equilibrium is formed on the undeformed geometry. and effects, notional loads, stiffness reduction and linear buckling (LBA) are not performed. Roadmap, not omitted silently.
- Material and geometric non-linearity
- The material model is linear elastic with no yield surface. Plastic hinges, plastic capacity, large displacements and contact are outside this analysis type.
- Dynamics, modal analysis and fatigue
- Static analysis only. Natural frequencies, mode shapes, response spectra, time history and fatigue life are not computed. For a fatigue assessment of a detail, use the Fatigue Spectrum Analyzer.
- Element library
- Two-node prismatic plane frame elements only. Plate, shell, solid, cable, spring-element and tension-only members are not available, and no through-thickness or local stress field is produced.
- Out-of-plane behaviour
- The model is planar: minor-axis bending, torsion, warping and lateral–torsional buckling are not represented. A member that is unrestrained out of plane needs a separate check.
- Code member and connection checks
- No design-code member check is performed — no cross-section classification, no buckling reduction factor, no partial factors, no connection or base-plate design. This tool produces analysis output and compares it against the limits you supply. Member and connection verification to EN 1993, AISC 360 or equivalent remains yours.
Method 18
Known limitations
What this tool does not do, and what it is known to do imperfectly. Every entry that could be closed has been: two review passes since launch cleared twelve of them, including three that turned out to be wrong numbers rather than the visible limitations they had been recorded as. What is left is four things that are genuinely bounded rather than merely unfixed, and each says what it costs you.
- Von Mises on a hand-typed section. The web/flange step is derived from the section's outline, so a section whose properties were typed in rather than generated is sampled at the extreme fibre and the neutral axis only — and if it is really flanged, its equivalent stress at the step can be about a fifth higher (section 10). The check says when this applies. Sections generated from an outline or taken from the catalogue evaluate all three points.
- Very large models cannot be shared as a link. A link carries the whole model, and a few hundred nodes makes a URL longer than the roughly 8,000 characters many servers and mail clients will pass on intact. The tool now checks before offering the link and warns you when it is that long, and a model outside what a link can encode at all is refused with the reason rather than minted and left to fail at the other end. Send the report instead when you see that warning.
- Large-model reports. A report plots at most 72 diagrams. Beyond that the diagrams are bounded — members are plotted worst-first by peak bending moment, every member's values still appear in full in the result tables, and each section states how many of its diagrams were left out. The cap is by design; what was fixed is that the notice used to disappear along with the diagrams it described.
- Browsers. Chrome is driven directly in testing. Firefox and Safari are not, and no amount of static checking is the same thing as opening the tool in them. What is checked automatically is the part that can be: the build fails if either of the two patterns that previously shipped Safari- and Firefox-only defects here reappears — a wheel handler bound through React, which is attached passively so it cannot cancel scrolling, and a pointer capture taken on an element a re-render can remove mid-drag — and if any of eleven runtime APIs with a support floor above the rest of the code is introduced.
Closed since launch, and named here because they were published on this page as accepted limitations: an empty combination that zeroed every envelope row, two members re-pointed onto the same pair of nodes, envelope stations that dropped a load case, a spring made inert by the releases around it, duplicate entity ids, a cleared field committing zero, pins outliving their load case, the empty-model report wording, a hardcoded benchmark count, von Mises sampled at two points where a flanged section needs three, and a share link that could be minted in a form its own reader rejects. Each now either produces the right number or refuses and says why, and each carries a regression test that fails against the code as it stood.
The pattern across the fixed defects is worth stating: almost none were physics; they were measures — a normalisation, a renderer, a unit conversion, a zero treated as a value. That is exactly why the verification record insists on measuring rather than asserting.
Method 19
References, and the claim contract
Metadata only — no standard text is reproduced anywhere in this product. Two kinds of reference, doing two different jobs.
Sources that back computed numbers
Every number this tool produces traces to public-domain mechanics, or to a value you supplied. These carry no code coefficients and no safety factors.
Matrix structural analysis — direct stiffness method
Public mechanicsAssembly of element stiffness matrices in a global frame, elimination of restrained degrees of freedom, and solution of by symmetric factorisation. Public-domain structural mechanics; no code coefficients are involved.
Euler–Bernoulli and Timoshenko beam theory
Public mechanicsTwo-node plane frame element with linear axial and Hermitian bending interpolation, written in shear-flexible form with . Setting recovers Euler–Bernoulli exactly, so one element formulation serves both theories.
Statics — equilibrium of a rigid body
Public mechanics, , . Used both to recover internal actions along a member from its end forces and to cross-check the solved reactions against the applied loading.
Engineer's theory of bending
Public mechanicsat the extreme fibres of a prismatic section that remains plane and elastic. Public-domain mechanics of materials.
Shear stress distribution in beams
Public mechanicsat the neutral axis, with reported alongside it. Public-domain mechanics of materials; is derived from the section outline, not tabulated.
Distortion-energy (von Mises) equivalent stress
Public mechanicsfor the plane stress state carried by a beam element. Evaluated at the extreme fibre and at the neutral axis, because the two locations are governed by different quantities.
User-supplied acceptance criteria
Engineer suppliedEvery limit this pack compares against — the deflection span ratio and the normal, shear and equivalent-stress allowables — is entered by the engineer and reported as theirs. Xarpis supplies no resistance value, partial factor or code limit of its own.
Standards referenced for framing only
These shape how the analysis is described, reported and verified. None of them backs a computed number, and the platform's verify:standards gate enforces that structurally: a documentation-only reference cannot justify an implemented check, so the restriction is a build failure, not a policy.
EN 1993-1-14 · 2025
Documentation onlyDesign of steel structures — design assisted by finite element analysis. Defines the analysis taxonomy (LA, LBA, GNA, GNIA, MNA, GMNA, GMNIA) and the content an analysis record is expected to carry. This tool performs a linear analysis, LA in that terminology, and reports the analysis record content that part describes. Referenced for vocabulary and reporting structure only — no clause is implemented and no compliance is claimed.
ASME V&V 10
Documentation onlyStandard for verification and validation in computational solid mechanics. Supplies the vocabulary for the distinction this pack relies on: comparing the solver against closed-form analytical solutions is code verification. Referenced for that framing only.
NAFEMS QSS001
Documentation onlyQuality system supplement to ISO 9001 for finite element analysis. Referenced as the framing for publishing a benchmark register and a per-analysis quality record rather than asserting correctness.
NAFEMS R0064
Documentation onlyQuality assurance procedures for engineering analysis. Referenced as the framing for the pre-solve model diagnostics and the equilibrium and mesh-independence records reported with every analysis.
AISC 360 Chapter C / Appendix 1
Documentation onlyDirect analysis and second-order elastic analysis. Named here only to state what this v1 does NOT do: no second-order analysis, no notional loads, no stiffness reduction. Roadmap reference, not an implemented basis.
DNV-RP-C208
Documentation onlyDetermination of structural capacity by non-linear finite element methods. Named here only to state what this v1 does NOT do: no material or geometric non-linearity. Roadmap reference, not an implemented basis.
All internal calculation runs in canonical SI — newtons, millimetres, megapascals — and converts only at the display boundary. Switching the unit toggle re-renders numbers; it never re-runs the analysis.