My Digital Garden

JPNAS.NET / Digital Garden

🌳 EvergreenLast updated:

Structural Statics

Why buildings stand: a short history of statics from Archimedes to the finite element method and the Eurocodes, the basic principles, and step-by-step calculations of a beam, a truss, a column and a continuous beam – by hand and in Python.

Open in the interactive Digital Garden

What You Need
Paper, a pencil and a calculator – most of statics starts with a simple sketch
School mathematics: multiplying, a little algebra and basic trigonometry (sine and cosine)
For Example 5: Python 3 with NumPy (pip install numpy)
Free software for checking and modelling – see my Structural Analysis resources
The standards: the Eurocodes with the national annexes of your country (in Slovenia, published as SIST EN by SIST)
For anything that will really be built: a licensed structural engineer. The examples here are for learning, not for construction.

Jump to Examples

Every building, bridge and shelf on the wall answers the same question: where do the forces go? The weight of the roof, the people on the floor, the snow and the wind all have to travel through the structure, from element to element, until they reach the ground. Statics is the part of mechanics that studies bodies that do not move – and a building that does not move is exactly what we want.

The basic idea is surprisingly simple: if something stands still, all forces on it are in balance. Everything else – beams, trusses, columns, standards and software – is a careful, systematic way of using that one idea, and of making sure that the materials are strong and stiff enough to carry the forces that result from it.

A Bit of History

For thousands of years, people built without calculations. The Egyptian pyramids, Roman aqueducts and Gothic cathedrals were designed with experience, geometric rules of thumb and, sometimes, collapse and repair. The Roman architect Vitruvius wrote that a building must have firmitas, utilitas, venustas – strength, usefulness and beauty – but he did not explain how to calculate the first one. The theory began much earlier, in the 3rd century BC, when Archimedes described the law of the lever and the centre of gravity – the idea of the moment that is still used in every calculation today.

The modern science started in the 16th and 17th centuries. In 1586 Simon Stevin showed how forces can be added with a triangle (or parallelogram) of forces. In 1638 Galileo Galilei studied the strength of beams – the first scientific attempt, although his result was not fully correct. Robert Hooke (1678) discovered that materials stretch in proportion to the force, and Isaac Newton (1687) gave the laws of motion – the first of which, applied to a body at rest, is statics. In the 18th century Leonhard Euler and the Bernoulli family developed the beam theory and Euler's formula for the buckling of columns, both still used today (see Example 4).

In 1826 Claude-Louis Navier published his lectures on the strength of materials, which are often seen as the start of modern structural analysis: for the first time, engineers could calculate stresses and deflections in a systematic way. Railways and iron bridges needed fast, reliable methods, and the 19th century produced many of them. Karl Culmann (1866) and Luigi Cremona developed graphic statics – solving structures by drawing forces to scale – and engineers such as James Clerk Maxwell, Otto Mohr and Alberto Castigliano gave methods for statically indeterminate structures. The Eiffel Tower (1889) is a famous example of a structure designed in that era.

The 20th century brought new materials and new methods. Reinforced concrete spread at the turn of the century, and in 1930 Hardy Cross published the moment distribution method, which let engineers solve continuous frames by hand, step by step – for decades, with a slide rule. Then came the computer. In the 1950s engineers in the aircraft industry developed the matrix stiffness method (Turner, Clough, Martin and Topp, 1956), and in 1960 Ray Clough named it the finite element method (FEM). Programs such as NASTRAN (late 1960s, NASA) and SAP from Berkeley (around 1970) brought it into practice, and with personal computers in the 1980s it moved to every design office.

In our part of Europe, earthquakes have shaped structural design. The 1895 Ljubljana earthquake led to the rebuilding of much of the city, and after the destructive 1963 Skopje earthquake, Yugoslavia introduced seismic building regulations. Today, earthquake design in Slovenia follows Eurocode 8 and, since 2024, a new seismic hazard map from 2021 with higher values in most of the country. The Eurocodes themselves were developed from the 1970s onwards, published as European standards in the 2000s, and replaced the national design codes around 2010. A second generation of Eurocodes is now being introduced: CEN made the texts available in March 2026, and the first generation is to be withdrawn by March 2028.

Today, structures are usually designed as 3D computer models that are shared between architects and engineers using BIM and the open IFC format. The software does the heavy arithmetic in seconds, but the principles have not changed since Archimedes and Navier – and the engineer still has to understand them, because a computer will calculate a wrong model just as quickly as a correct one.

A short timeline:

3rd century BC – Archimedes: the lever and the centre of gravity
1st century BC – Vitruvius: firmitas, utilitas, venustas
1586 – Stevin: the triangle of forces
1638 – Galileo: the first study of the strength of beams
1678–1687 – Hooke's law, Newton's laws
18th century – Euler and Bernoulli: beam theory and column buckling
1826 – Navier: the start of modern structural analysis
1860s–1880s – graphic statics (Culmann, Cremona), methods for indeterminate structures
1930 – Hardy Cross: moment distribution
1956–1960 – the stiffness method and the finite element method
1970s–1980s – structural software, from mainframes to personal computers
2000s–2010 – the Eurocodes replace national codes
2026–2028 – the second generation of Eurocodes

Some resources for history:

The Basics of Statics

The table below goes from the simplest ideas to the ones used in every real calculation. The units are those used in practice: forces in kilonewtons (kN), lengths in metres (m), stresses in megapascals (MPa = N/mm²).

The building blocks:

Force: a push or a pull, with a size and a direction, measured in newtons (N). In buildings we use kilonewtons: 1 kN is roughly the weight of 100 kg. Loads can act at a point (a column on a beam, in kN), along a line (a wall on a slab, in kN/m) or over an area (people on a floor, in kN/m²).
Moment: the turning effect of a force – force times the distance to the point of rotation (the lever arm), measured in kNm. A 1 kN force at the end of a 2 m lever gives a moment of 2 kNm. This is Archimedes' lever.
The three equilibrium equations: for a body in a plane that does not move, the sum of all horizontal forces is zero (ΣFx = 0), the sum of all vertical forces is zero (ΣFy = 0), and the sum of all moments about any point is zero (ΣM = 0). These three equations are the heart of statics.
Supports: where a structure meets the ground or another structure. A roller stops movement in one direction (1 reaction), a pin stops movement in two directions but allows rotation (2 reactions), and a fixed support stops movement and rotation (3 reactions). The forces that supports give back are called reactions.
The free body diagram: the most important drawing in statics. You "cut" a structure, or a part of it, free from everything around it and replace all connections with forces. Then you apply the three equations. Every example below starts this way.
Determinate or indeterminate: with three equations you can find three unknowns. A beam on a pin and a roller has exactly three reactions, so it is statically determinate and can be solved with equilibrium alone (Example 1). A beam on three supports has more unknowns than equations, so it is statically indeterminate: you also need to consider how it deforms (Example 5). Indeterminate structures are more robust, because the forces can find another path.
Internal forces: if you cut a beam at any point, the two parts must still be in balance. The forces at the cut are the internal forces: the axial force N (pulling or pushing along the member), the shear force V (sliding across it) and the bending moment M (bending it). Drawing them along the member gives the N, V and M diagrams that you see in every structural report.
Stress and strength: stress is force divided by area. A bending moment creates tension on one side of a beam and compression on the other; the stress is σ = M / W, where W is the section modulus – a number that describes how well the shape of the cross-section resists bending. This is why beams are tall rather than wide, and why steel beams have an I shape: material far from the middle works hardest.
Stiffness and deflection: strength is about not breaking; stiffness is about not bending too much. Deflection depends on the material (Young's modulus E – for steel about 210,000 MPa, for timber around 10,000 MPa) and on the shape (the second moment of area I). Their product, EI, is the bending stiffness. A beam can be strong enough and still bend so much that floors vibrate and walls crack (Example 1).
Stability: slender members under compression can suddenly bend sideways long before the material is overstressed. This is buckling, and Euler's formula gives the critical force: Ncr = π²EI / L². Doubling the length reduces the buckling force four times (Example 4).

Loads and safety – how the Eurocodes approach a calculation:

The Eurocode family: EN 1990 (basis of design), EN 1991 (actions: self-weight, imposed loads, snow, wind, fire and more), EN 1992 (concrete), EN 1993 (steel), EN 1994 (steel–concrete composite), EN 1995 (timber), EN 1996 (masonry), EN 1997 (geotechnics), EN 1998 (earthquakes) and EN 1999 (aluminium). Each country adds a national annex with its own values, for example snow and wind maps.
Permanent actions (G): loads that are always there – the self-weight of the structure, floors, finishes and fixed equipment. Typical unit weights: reinforced concrete about 25 kN/m³, steel about 78.5 kN/m³, timber roughly 4–6 kN/m³ depending on the type.
Variable actions (Q): loads that come and go – people and furniture (imposed loads – the Eurocode range for residential floors is 1.5–2.0 kN/m², and the national annex decides; see the comparison with Germany below), snow, wind and temperature. Snow and wind depend strongly on the location and altitude.
Accidental and seismic actions: fire, impact, explosions and earthquakes – designed for with their own rules (in Slovenia, earthquakes are an important part of almost every design).
Limit states: the ultimate limit state (ULS) checks that the structure does not fail – breaking, buckling, overturning. The serviceability limit state (SLS) checks that it works well in normal use – deflections, cracks, vibrations.
Partial safety factors: loads are made bigger and material strengths smaller, so that there is a safety margin on both sides. A common ULS combination is 1.35 × G + 1.5 × Q (the recommended values in EN 1990; check the national annex). When several variable loads act together, the others are reduced with combination factors ψ, because it is unlikely that all of them reach their maximum at the same time.

Slovenia and Germany: the same Eurocodes, different national annexes

The Eurocodes are the same in all EU countries, but each country chooses its own nationally determined parameters – values that depend on climate, geology, tradition and the level of safety the country wants. They are published in national annexes: in Slovenia as SIST EN … /A101 (for example SIST EN 1991-1-3:2004/A101 for snow), in Germany as DIN EN … /NA. In Slovenia, the Eurocodes and their national annexes are required by the Pravilnik o mehanski odpornosti in stabilnosti objektov (Official Gazette RS 101/2005); in Germany, they are introduced through the building authorities' list of technical rules (MVV TB).

The national annexes are paid documents. The values below come from publicly available sources – the Slovenian Environment Agency (ARSO), the Slovenian Chamber of Engineers (IZS), published Slovenian design reports and German technical literature – so treat them as an overview and always check the current SIST or DIN text before using them.

Selected differences (overview, check the current national annexes):

General approach: Slovenia mostly adopts the values recommended in the Eurocodes (the IZS handbook notes this explicitly for steel and composite structures). Germany's national annexes are much more extensive: they change many values and add "non-contradictory complementary information" (NCI) – extra German rules that continue the tradition of the former DIN standards.
Partial factors for loads (EN 1990): both countries use the recommended values for the design of members – γG = 1.35 for unfavourable permanent loads, 1.00 for favourable ones, and γQ = 1.50 for variable loads. The combination 1.35 × G + 1.5 × Q used in Example 1 is valid in both countries.
Imposed loads on residential floors (EN 1991-1-1): the Eurocode gives a range of 1.5–2.0 kN/m². Germany divides category A into subcategories: A1 (attics that are not habitable) 1.0 kN/m², A2 (floors with good transverse load distribution, such as concrete slabs) 1.5 kN/m², and A3 (floors without it, such as timber floors) 2.0 kN/m². Slovenian designs work with values from the national annex, and designers or clients may choose higher values – one published Slovenian design for a residential building uses 2.5 kN/m².
Snow (EN 1991-1-3): Slovenia uses the Alpine and Mediterranean formulas from Annex C of the Eurocode, with four Alpine zones (A1–A4) and a Mediterranean zone. For zone A2, which includes Ljubljana: sk = 1.293 × [1 + (A/728)²], where A is the altitude in metres – about 1.5 kN/m² at 300 m. Germany has its own formulas and zones 1, 1a, 2, 2a and 3; for zone 2, for example, sk = 0.25 + 1.91 × [(A + 140)/760]², at least 0.85 kN/m² – about 0.9 kN/m² at 300 m. A house in Ljubljana must therefore be designed for considerably more snow than a house at the same altitude in much of Germany.
Wind (EN 1991-1-4): Slovenia has three wind zones for the basic wind velocity vb,0: zone 1 (most of Slovenia) 20 m/s below 800 m, rising to 25, 30 and 40 m/s at higher altitudes; zone 2 (Trnovski gozd, Notranjska, Karavanke) 25 m/s; zone 3 (Primorje, Kras and part of the Vipava valley – the bora) 30 m/s. Germany has four wind zones with 22.5, 25, 27.5 and 30 m/s, the strongest on the North Sea coast. Because wind pressure grows with the square of the velocity, a building on the Kras gets more than twice the basic wind pressure of one in Ljubljana (0.56 kN/m² instead of 0.25 kN/m²).
Earthquakes (EN 1998): the biggest difference. Since 1 May 2024, the only valid basis for design in Slovenia is the 2021 seismic hazard map by ARSO, part of the national annex to Eurocode 8. It gives design ground accelerations for rock (return period 475 years) from 0.1 g to 0.325 g; Ljubljana and its surroundings have 0.275 g. Germany has low seismicity – large parts of the country need no seismic design at all, and even in its most active areas the design accelerations are several times lower. In Slovenia, the earthquake often decides the layout of a building; in most of Germany, wind and snow are the main horizontal and environmental actions.
Concrete (EN 1992-1-1): a well-known German deviation is the factor αcc for the compressive strength of concrete: Germany uses 0.85, while the Eurocode recommends 1.0. German concrete design is therefore somewhat more conservative.
Steel (EN 1993-1-1): Germany uses γM1 = 1.10 for buckling checks, while the recommended value is 1.00; γM0 = 1.00 is the same in both countries, so Example 1 is valid in both.
Deflections (EN 1990): the Eurocode itself leaves the limits to the national annexes and the project. Slovenian designs, following SIST EN 1990/A101, use for floors in general L/250 for the total deflection and L/300 for the part caused by variable loads (stricter values for floors carrying brittle partitions or columns), and limit the horizontal drift between storeys to H/300. In Germany, limits are mostly agreed per project or taken from the material Eurocodes (for concrete, for example, L/250 and L/500).

The lesson for a designer working across borders: the method is the same everywhere, but the numbers are not. Software usually contains the national annexes of many countries, and choosing the right one is one of the first settings in every new project.

How a structural calculation is made in practice:

1. The structural concept: together with the architect, decide how the loads will travel to the ground – which walls carry, where the columns are, what spans the floors – and which materials to use.
2. The model: simplify the real building into lines (beams, columns), surfaces (slabs, walls) and supports. This is the most important engineering decision: the result can never be better than the model.
3. Loads and combinations: collect all actions from the Eurocodes and the national annex, and combine them for ULS and SLS.
4. Analysis: calculate the reactions, internal forces and deformations – by hand for simple elements, with software for the whole building.
5. Design and checks: choose the sizes – cross-sections, reinforcement, connections – and check them against the material Eurocodes.
6. Details and drawings: connections, reinforcement drawings and steel details are often where real structures fail, not in the main members.
7. Checking: a quick hand calculation to see if the computer results make sense, and, for important structures, an independent check by a second engineer. In Slovenia, structural design is part of the project documentation and must be prepared by a licensed engineer, a member of the Slovenian Chamber of Engineers (IZS).

A few observations. First, a good engineer first estimates the answer, and only then calculates it. If the computer says a 5 m beam needs a moment capacity of 2000 kNm, something is wrong with the input. Second, the load path matters more than the numbers: a structure in which the forces cannot find a clear way to the ground will cause problems no matter how carefully it is calculated. Third, serviceability often governs – especially for steel and timber, the deflection limit, not the strength, often decides the size (Example 1).

Some resources for learning statics:

Examples: Calculating by Hand and with a Computer

The examples below go from a single beam to a small computer program. They are simplified on purpose: real designs need more checks (for example lateral-torsional buckling, connections, fire and earthquakes) and the values from the national annex. I checked all the numbers with a short Python script; the results are rounded.

Example 1 – A simply supported steel floor beam

A steel beam spans L = 5 m between two walls (a pin at one end, a roller at the other). From the floor area it carries, it gets a permanent load of g = 3.0 kN/m and an imposed load of q = 2.0 kN/m. Steel grade S235 (yield strength fy = 235 MPa). We assume that the floor holds the top of the beam sideways, so it cannot buckle sideways.

  1. Design load (ULS):
    q_Ed = 1.35 × 3.0 + 1.5 × 2.0 = 4.05 + 3.00 = 7.05 kN/m
  2. Reactions – the load is symmetric, so each support takes half:
    R = q_Ed × L / 2 = 7.05 × 5 / 2 = 17.6 kN
    This is also the largest shear force, at the supports.
  3. Maximum bending moment, in the middle of the span – a formula every engineer knows by heart:
    M_Ed = q_Ed × L² / 8 = 7.05 × 25 / 8 = 22.0 kNm
  4. Required section modulus (plastic design, partial factor γM0 = 1.0):
    W_pl,required = M_Ed / f_y = 22.0 × 10⁶ Nmm / 235 MPa = 93,750 mm³ = 93.8 cm³
    From a table of steel profiles: an IPE 140 has Wpl = 88.3 cm³ – not enough (106 % utilised). An IPE 160 has Wpl = 123.9 cm³, so its moment resistance is 123.9 × 235 / 1000 = 29.1 kNm – utilisation 76 %. Strength is fine.
  5. Deflection (SLS) – now with the loads without safety factors, g + q = 5.0 kN/m. For a simply supported beam with a uniform load:
    δ = 5 × q × L⁴ / (384 × E × I)
    IPE 160 (I = 869 cm⁴):  δ = 5 × 5.0 × 5000⁴ / (384 × 210,000 × 8,693,000) = 22.3 mm
    For floors in general, the Slovenian national annex to EN 1990 limits the total deflection to L/250 = 5000 / 250 = 20 mm. The IPE 160 is strong enough, but it bends too much.
  6. Choose a larger profile: an IPE 180 (I = 1317 cm⁴) gives δ = 14.7 mm < 20 mm, with a strength utilisation of 56 %. The second check, for the imposed load alone (q = 2.0 kN/m), gives 14.7 × 2 / 5 = 5.9 mm, well below L/300 = 16.7 mm. This is the beam we choose.

This small example shows something that surprises many people: the beam was not chosen by its strength, but by its stiffness. In real design we would also add the self-weight of the beam (about 0.19 kN/m for an IPE 180), check the shear and the supports, and use the deflection limits agreed for the project.

Example 2 – A simple roof truss, joint by joint

A triangular truss spans 6 m and is 2 m high. A point load of F = 10 kN acts at the top. The two sloping members are the rafters, the horizontal member at the bottom is the tie. In a truss, members carry only axial forces – tension or compression – if the loads act at the joints.

  1. Reactions: the truss and the load are symmetric, so each support takes F / 2 = 5 kN upwards.
  2. The angle of the rafters: tan α = 2 / 3, so α = 33.7°, sin α = 0.555 and cos α = 0.832.
  3. Cut out the left support joint (a free body diagram) and use the equilibrium equations. Vertically, only the reaction and the rafter act:
    ΣF_y = 0:   5 + N_rafter × sin α = 0   →   N_rafter = −5 / 0.555 = −9.0 kN  (compression)
    Horizontally, the tie must balance the horizontal part of the rafter force:
    ΣF_x = 0:   N_tie + N_rafter × cos α = 0   →   N_tie = 9.0 × 0.832 = +7.5 kN  (tension)
  4. Check with a quick formula: for this truss, the tie force is F × L / (4 × h) = 10 × 6 / 8 = 7.5 kN. ✔

This is the method of joints: go from joint to joint, and at each one use ΣFx = 0 and ΣFy = 0. Notice what happens if the truss is made flatter: with h = 1 m, the tie force doubles to 15 kN. A low roof pushes its walls apart much harder than a steep one – which is exactly why the tie is there.

Example 3 – Reading a bending moment diagram

Before the calculation of a column, a short exercise in "seeing" internal forces. For the beam in Example 1, the bending moment is zero at the supports and grows towards the middle in the shape of a parabola, reaching 22.0 kNm. The shear force is largest at the supports (±17.6 kN) and zero in the middle. Two rules help to draw such diagrams without any calculation:

  • Where the shear force is zero, the bending moment is at its maximum. That is why the largest moment is in the middle of a symmetric beam.
  • A uniform load gives a straight-line shear diagram and a curved (parabolic) moment diagram; a point load gives a jump in the shear diagram and a kink in the moment diagram.

In a cantilever – a balcony, for example – the picture is reversed: the moment is largest at the wall and zero at the free end. Its value is q × L² / 2, four times more than for a simply supported beam of the same length. That is why balconies need strong, well-anchored connections, and why the reinforcement in a concrete balcony slab is at the top, where the tension is.

Example 4 – Buckling of a timber column

A timber post of grade C24, 10 × 10 cm, 3 m high, is pinned at both ends. How much load can it carry before it buckles?

  1. Second moment of area of a square section:
    I = b⁴ / 12 = 100⁴ / 12 = 8,333,333 mm⁴
  2. Euler's critical force, with the mean modulus of elasticity of C24 (E = 11,000 MPa):
    N_cr = π² × E × I / L² = 9.87 × 11,000 × 8,333,333 / 3000² = 100,500 N ≈ 100 kN
  3. What it means: about 100 kN is the theoretical limit for a perfectly straight post. Real columns are never perfectly straight, and timber is not perfectly uniform, so the design rules in Eurocode 5 (and Eurocode 3 for steel) reduce this value with a buckling factor. For the same post at 6 m height, the critical force drops to a quarter – about 25 kN.

Example 5 – A continuous beam with the stiffness method, in Python

Now we let the same IPE beam continue over a middle support: two spans of 5 m each, three supports, the same design load of 7.05 kN/m. This beam is statically indeterminate – four unknown reactions, but only three equations – so equilibrium alone is not enough. Software solves such problems with the stiffness method, the basis of the finite element method:

  1. Split the structure into elements (here: two beam elements) connected at nodes.
  2. For each element, write a small stiffness matrix – how much force is needed to move or rotate its ends.
  3. Assemble all element matrices into one big matrix for the whole structure, and the loads into a load vector.
  4. Apply the supports (remove the movements that are blocked).
  5. Solve the system of equations K × u = F for the unknown displacements u.
  6. From the displacements, calculate the reactions and internal forces.

The program below does exactly these six steps. Every structural program – from free tools to the commercial ones used in design offices – does the same thing, only with thousands of elements and many more checks.

import numpy as np

# Continuous beam: two spans of 5 m, three supports, uniform load
spans = [5.0, 5.0]       # span lengths in m
q = 7.05                 # design load in kN/m (from Example 1)
EI = 1.0                 # stiffness; for forces in a uniform beam its value does not matter

n_nodes = len(spans) + 1
K = np.zeros((2 * n_nodes, 2 * n_nodes))   # global stiffness matrix
F = np.zeros(2 * n_nodes)                  # global load vector
# each node has 2 unknowns: vertical displacement (v) and rotation (theta)

for e, L in enumerate(spans):
    # stiffness matrix of one beam element (Euler-Bernoulli beam theory)
    k = EI / L**3 * np.array([
        [ 12,    6*L,   -12,    6*L  ],
        [ 6*L,   4*L*L, -6*L,   2*L*L],
        [-12,   -6*L,    12,   -6*L  ],
        [ 6*L,   2*L*L, -6*L,   4*L*L],
    ])
    # uniform load turned into equivalent forces and moments at the two ends
    f = q * np.array([-L/2, -L*L/12, -L/2, L*L/12])
    dofs = [2*e, 2*e + 1, 2*e + 2, 2*e + 3]
    K[np.ix_(dofs, dofs)] += k             # assembly: add the element into the big matrix
    F[dofs] += f

# boundary conditions: no vertical movement at the supports, rotations are free
fixed = [2*i for i in range(n_nodes)]
free = [d for d in range(2 * n_nodes) if d not in fixed]

u = np.zeros(2 * n_nodes)
u[free] = np.linalg.solve(K[np.ix_(free, free)], F[free])   # solve K * u = F

# support reactions: what the supports must push back
R = K @ u - F
for i in range(n_nodes):
    print(f"support {i + 1}: reaction = {R[2*i]:7.2f} kN")

# bending moment over the middle support, from the first element
L = spans[0]
k1 = EI / L**3 * np.array([[12, 6*L, -12, 6*L], [6*L, 4*L*L, -6*L, 2*L*L],
                           [-12, -6*L, 12, -6*L], [6*L, 2*L*L, -6*L, 4*L*L]])
f1 = q * np.array([-L/2, -L*L/12, -L/2, L*L/12])
end_forces = k1 @ u[0:4] - f1
print(f"moment over the middle support = {abs(end_forces[3]):.2f} kNm (tension at the top)")
print(f"check with the textbook formula q*L^2/8 = {q * L**2 / 8:.2f} kNm")

Output:

support 1: reaction =   13.22 kN
support 2: reaction =   44.06 kN
support 3: reaction =   13.22 kN
moment over the middle support = 22.03 kNm (tension at the top)
check with the textbook formula q*L^2/8 = 22.03 kNm

The results match the textbook formulas for a two-span beam: 3/8 × q × L at the end supports, 10/8 × q × L at the middle, and a moment of q × L² / 8 over the middle support. Two interesting things happen compared with Example 1. First, the middle support carries more than it would if the two spans were separate beams (44.1 kN instead of 2 × 17.6 = 35.3 kN). Second, the largest moment is now over the support, with tension at the top – so a concrete beam needs reinforcement at the top there, and a steel beam may need a check of its bottom flange in compression.

If you have read How AI Works, the code will look familiar: matrices, vectors and one big system of equations. Structural analysis was one of the first fields to use computers for large matrix calculations – many years before AI.

Checking with free software

To check the examples with a program, try the free 2D frame program Ftool (draw the beam, add supports and loads, and read the diagrams), or the Python library PyNite if you prefer code. For full finite element models, FreeCAD with its FEM workbench and the CalculiX solver is a good open-source start. More programs are listed in my Structural Analysis resources. In design offices, commercial programs are common – in Slovenia, for example, Dlubal RFEM, SCIA Engineer and Tower – but the principles behind them are the same as in Example 5.

Keeping It Safe

  • Learning is not designing. These examples are simplified. Anything that people will live in, walk on or stand under must be designed and signed by a licensed structural engineer.
  • Use the right standards. Always use the current Eurocodes together with the national annex of the country where the building stands – and keep in mind the change to the second generation.
  • Check the input, not only the output. Most errors in computer calculations come from wrong loads, wrong units or wrong supports in the model.
  • Make a hand estimate. A quick q × L² / 8 on paper catches surprisingly many mistakes in a large model.
  • Do not forget the ground. A perfect building on poor soil still fails – geotechnics (Eurocode 7) belongs to every design.
  • Think about earthquakes early. In Slovenia, with design ground accelerations up to 0.325 g (0.275 g in Ljubljana), the seismic design often decides the layout of walls and columns, so it cannot be added at the end.

A Few More Thoughts

Statics is one of the oldest branches of engineering, and one of the most honest: gravity does not negotiate. The three equilibrium equations that Stevin and Newton would recognise are still at the heart of every calculation, whether it is done on paper, with a slide rule or with software that models a whole building in 3D.

Computers have changed how fast we calculate, not what we calculate. Like in my notes on AI, the tool is powerful, but the responsibility stays with the person who uses it. A program will happily solve a wrong model, and only an engineer who understands where the forces go will notice. That is why it is still worth knowing how to calculate a simple beam by hand – it is the quickest way to know whether to trust the computer.

← All notes