Skip to content

Permeability

Permeability is the benefit half of the project's one graded tradeoff — the cost half is displacement. It grades how easily every parcel in a region can reach a street once new roads are added.

The model

The model is an electrical one. Every parcel injects one unit of "escape current" into the network; the existing street is grounded at potential 0. A parcel with only a long, narrow connection back to the street needs a high potential to push its current through — the same way a narrow pipe needs more pressure to pass the same flow — so it dissipates more power getting that one unit out. Summed over every parcel, that gives one number for the whole region, the total dissipated power P = bᵀL⁻¹b, where L is the grounded graph Laplacian built from the mesh's edge conductances and b is the all-ones vector of per-parcel current injections.

That total, P, is reported as an improvement over doing nothing at all: permeability = 1 − P(roads)/P(no roads). Lower dissipated power means easier collective egress, so permeability rises as P falls.

Monotone by construction

Roads only ever add conductance. The mesh's nodes and edges are fixed by parcel geometry alone — adding a road never creates a new edge to route through, it only raises the conductance of edges that already exist — and a road-covered edge takes max(footpath, road) rather than replacing the footpath term outright. So for any edge, in any region, an upgrade can never lower that edge's conductance. That makes P monotone non-increasing as roads are added, and permeability therefore monotone non-decreasing — with no clamp needed anywhere to force it.

That property is load-bearing, not incidental. It is what makes the permeability curves on Results valid to read as a monotone climb rather than something that might dip and need explaining away, and it is what makes a target search well-defined: the least road that reaches a permeability target P*, trusting that once one prefix clears P*, every longer prefix stays clear too.

The graph

Nodes are parcel centroids. Two layers of edges connect them:

  • Footpath mesh edges join adjacent parcels — present whether or not any road exists — with conductance proportional to the clearance fraction, the share of the centroid-to-centroid line lying in neither building. That makes the estimate local rather than a single corridor width assumed for the whole block, so a tightly packed cluster and a loose one in the same block get their own, different, gap.
  • Ground edges attach every parcel within tolerance of the existing street straight to ground, folded directly into that parcel's own row of the Laplacian diagonal. Ground is eliminated algebraically — it is never a graph node you could route through.

The graph, drawn

Block ZAF.9.3.1_1_5810: 6619 parcels, 19443 footpath-mesh edges. Node colour is egress potential φ, on one scale shared across these panels, dark meaning a harder escape. Blue edges are the ones a road raised, and the pale-blue band is the road corridor itself, drawn at its own width; haloed nodes front the existing street and drain straight to ground.

egress graph, conductance, before roads
Grey edge width is conductance on the footpath mesh; the 1100 road-raised edges (blue) draw at a fixed width instead. No new roads.
egress graph, conductance, after roads
Grey edge width is conductance on the footpath mesh; the 1100 road-raised edges (blue) draw at a fixed width instead. Under Looped Tree's roads at the matched-permeability standard: 2,297 m of road, reaching 60.8% permeability.
egress graph, current, before roads
Grey edge width is current on the footpath mesh; the 1100 road-raised edges (blue) draw at a fixed width instead. No new roads.
egress graph, current, after roads
Grey edge width is current on the footpath mesh; the 1100 road-raised edges (blue) draw at a fixed width instead. Under Looped Tree's roads at the matched-permeability standard: 2,297 m of road, reaching 60.8% permeability.

Draw your own road

Draw a road on the block and the browser recomputes its permeability from scratch, using the exact solver this page describes rather than a reimplementation of it. The figure above replays answers computed in advance; elsewhere on this site a few figures do recompute as you drag them, but in the site's own JavaScript. This one downloads a Python runtime, installs this project into it, and asks the real thing. The block's geometry arrives with the page, but the runtime is tens of megabytes and is fetched only when you ask for it.

the egress graph on block ZAF.9.3.1_1_5810 with no roads, ready to draw on
Block ZAF.9.3.1_1_5810, 6619 parcels, drawn with no roads — the state the widget starts from. Other figures on this site either replay an answer baked in advance or recompute one in the site’s own TypeScript; this is the only one that installs this project into the browser and asks it directly, so the number it gives back comes from the same solver the rest of this page describes.