Initializing 3D Canvas...

Thrust Network Analysis

3 min read•1 page

Maxwell-Cremona Duality:

1. Topological Duality: Nodes in Γ become closed polygons in Γ*; faces in Γ become nodes in Γ*. 2. Orthogonal Alignment: Corresponding edges are mutually perpendicular or parallel. 3. Force Proportionality: The length of segment e* directly measures the internal axial thrust force N_e.
python
1import numpy as np
2
3def solve_thrust_network_equilibrium(xy_coords, edges, force_densities, fixed_ids, z_fixed, pz_loads):
4 """
5 Thrust Network Analysis (Block & Ochsendorf 2007):
6 1. Checks horizontal reciprocal loop closure: sum_j q_ij * (xy_i - xy_j) = 0.
7 2. Solves vertical funicular heights z via Force Density Laplacian: L_q * z = pz_loads.
8 """
9 n = len(xy_coords)
10 L_q = np.zeros((n, n))
11 for (u, v), q in zip(edges, force_densities):
12 L_q[u, u] += q
13 L_q[v, v] += q
14 L_q[u, v] -= q
15 L_q[v, u] -= q
16
17 free_ids = [i for i in range(n) if i not in fixed_ids]
18 xy_residual = np.linalg.norm(L_q[free_ids] @ xy_coords)
19
20 L_ff = L_q[np.ix_(free_ids, free_ids)]
21 L_fc = L_q[np.ix_(free_ids, fixed_ids)]
22 rhs = pz_loads[free_ids] - L_fc @ z_fixed
23
24 z = np.zeros(n)
25 z[fixed_ids] = z_fixed
26 z[free_ids] = np.linalg.solve(L_ff, rhs)
27 return z, float(xy_residual)

Graphic Statics & Reciprocal Force Diagrams: Modern digital form-finding (Thrust Network Analysis - TNA) stems from James Clerk Maxwell's 1864 reciprocal figure theorem. A spatial form diagram representing structural bar geometry Γ has an exact dual reciprocal diagram Γ*. Every closed polygon of forces in Γ* corresponds to a node in equilibrium in Γ, allowing architects to sculpt compression-only vaults purely geometrically without finite element matrix inversion.

Central Point Load
1.50
2 min read•1 page

Heyman's Limit Theorem:

1. Zero-Tension Material: Masonry joints open freely under tensile forces. 2. Thrust Line Confinement: Compressive resultant must remain within the stone thickness (intrados to extrados). 3. Geometric Safety Factor: Measured by the maximum shrinkage of the arch thickness that still contains the thrust line.
python
1def is_thrust_line_safe(thrust_points, arch_intrados, arch_extrados):
2 """
3 Heyman's Safe Limit Analysis Theorem for unreinforced masonry arches (1966).
4 Assumptions: masonry has zero tensile capacity, infinite compressive strength, and no sliding.
5 An arch is 100% stable if and only if at least ONE equilibrium thrust line
6 can be contained entirely between the intrados (bottom) and extrados (top) boundaries.
7 """
8 for pt, bottom, top in zip(thrust_points, arch_intrados, arch_extrados):
9 if pt[1] < bottom[1] or pt[1] > top[1]:
10 return False # Thrust line escapes boundary -> hinge collapse
11 return True

Funicular Thrust Lines & Masonry Equilibrium: Stone and unreinforced concrete masonry cannot bear tension. Jacques Heyman proved the Lower-Bound Safe Theorem of limit analysis: a historical vault or arch cannot collapse under its dead weight if a funicular thrust line exists that lies wholly within the masonry envelope. If asymmetric point loads push the thrust line outside the boundary, cracks open and three-hinge collapse mechanisms trigger.

Asymmetric Load Shift
0.50

Related Concepts