← AI-pair numerics

Manifold routing: multi-net Steiner with components attached

Several inlets, more outlets, one bonded plate. Each inlet owns a circuit — six inlets feeding twelve outlets is the case this opens on — and each circuit is a rectilinear Steiner tree in its own colour. Drop a valve onto a leg and that circuit's pressure budget responds; cross another circuit's leg and the no-crossings rung fails until you flip on multi-layer.

1. The brief

A bonded plate has to carry K supply inlets through internal channels to N outlets, with each outlet owned by exactly one inlet (six inlets feeding twelve outlets, on average two per circuit, is the canonical case). On each circuit, a few valves switch the legs you need to control; sensors tap where you need to measure. The pumps are fixed; every outlet has to receive its share of flow; the worst-case path's pressure drop has to stay under the pump's head with margin; and no two circuits' channels can physically share a point on the same plate layer. Three coupled problems: a topology per circuit, the sizing on every leg, and the geometric question of whether the circuits fit side-by-side or need a second layer.

2. Why this is an afternoon, not a week

The per-circuit topology is a rectilinear Steiner tree — one inlet, its outlets, minimise total length — and a Hanan-grid + 1-Steiner heuristic solves it in milliseconds. Multi-net just means “solve K of them and check for crossings.” The sizing on each leg is conservation + Darcy–Weisbach + the catalog's K-factors and Cv values. Claude can wire all of that into a live board for you. What it can't pick are the pump curves, which outlet belongs to which inlet (the process owns that), and whether the deepest leg actually carries the flow it's spec'd for — those decisions are yours.

3. The board

Each circuit is a colour. Drag any port along its edge; click + inlet to add another circuit, + outlet to add an outlet to the nearest inlet, cycle group on an outlet to move it between circuits. Drop valves and sensors on segments; toggle layer to allow crossings via a second plate layer with vias. The critical leg per circuit thickens, and the worst across all circuits is the budget the pump has to clear.

 

The router is doing one Steiner heuristic per circuit (Hanan candidate junctions, 1-Steiner improvement) plus a pairwise crossing check across every segment from every other circuit. The cost on each leg is Darcy–Weisbach friction integrated along its length plus the minor losses you've placed: one K=1 per elbow, K=0.5 at every wye it crosses, and (Q/Cv)2 for every valve on it. The worst-of-N outlet sums per circuit is that circuit's critical leg; the worst across all circuits is the budget the pump has to clear.

4. Verification — the budget & the plate reconcile

Rung 1 — continuity at every wye. Flow in equals sum of flows out at every Steiner point. (With equal-share outlets it's automatic; with metered branches you balance restrictors against it.)
Pass: every junction reconciles. A missing branch or double-count is the first thing this catches.
Rung 2 — connectivity per circuit. Every outlet reaches its inlet through its circuit's tree.
Pass: each circuit's tree spans its terminals. A disconnected outlet means an outlet got assigned to a circuit it can't be physically reached from — reassign it.
Rung 3 — the pump clears the worst leg. Max over all circuits of (ΣΔP on the critical path) ≤ pump head, with margin.
Pass: the worst across all circuits is under the head with margin. The offending leg lights up — on the right circuit.
Fail here: you can't shrink it with the chart. Bigger-Cv valve on the worst leg, fewer bends, or step the pump up.
Rung 4 — no crossings on a layer. Two circuits' channels can't share a point on the same plate layer.
Pass: in single-layer mode, the crossing count is zero. Or you've flipped on multi-layer/vias and accepted the manufacturing cost of cross-overs.
Fail here: the count is non-zero and you're still on single-layer — either re-route a circuit (cycle outlets so groups own contiguous Y-bands) or commit to a second layer.

5. Components — verified parts shortlist

Three categories, all fetch-verified on supplier or distributor pages. Verified 2026-05-30 — specs and links drift; re-open before you spec a build.

Miniature solenoid valves

parttype / orificeCvpressure / voltage
Clippard EV-2M-122/2 NC, manifold-mount~0.45 (17 L/min @ 100 psig)0–105 psig / 12 VDC, 0.67 W
Lee LHD series2/2 NC, 7 mm body, plug-in0.013–0.044 (1500/450 Lohm)vac–45 psig / 12 or 24 VDC spike-hold
Parker X-Valve 9122/2 NC, 8 mm, 0.045″ orifice~0.060–25 psig / 12 VDC, EPDM

Pumps

parttypeflow / headvoltage
KNF NF 1.5micro diaphragm, liquid60 mL/min · 6 bar (~87 psi)10–26.4 VDC, self-priming, runs dry
Schwarzer SP 270 EC-LC-Leccentric diaphragm100 mL/min · 1 bar (~15 psi)12 VDC, 25 g
TCS M200S-Vcentrifugal impeller700 mL/min · 0.23 bar (~3.3 psi)1.5–3 V (needs PWM/buck)

Sensors

partmeasurementinterfaceaccuracy
Honeywell ABPMANN030PG2A30–30 psi gaugeI²C 12-bit, 3.3 V±0.25% FS · $33.82@100
TE 4515-DS5B002DP0–0.07 psi differentialanalog 0.25–4.75 V±0.25% FS · for flow-restrictor Δp
Sensirion SLF3S-1300Fliquid flow 0–40 mL/minI²C, 3.3 V±5% · H₂O / IPA
Sensirion SFM3000-200Cgas flow 0–200 SLMI²C, 5 V±1.5% · NRND, replace with SFM3003/3013

† supplier page blocks automated fetching; specs & link confirmed via the listed distributor. ‡ Not Recommended for New Designs — page still resolves, but design-in should target the successor.

6. Hints

Hint 1 — assign by Y, not by name

Outlets land on a circuit by nearest inlet by default, and that's almost always right: circuits own contiguous Y-bands and don't cross. The moment you assign by “outlet 1 belongs to inlet A because the schematic says so” you can drive crossings into the plate that didn't have to be there. If the process forces an out-of-band assignment, accept the second layer rather than fighting it.

Hint 2 — pick the pump first

The pump's pressure–flow curve is the budget the whole board lives inside. Sizing valves and channels before knowing the head you have to work with is how you end up routing a manifold the pump can't actually drive.

Hint 3 — the worst leg isn't always the longest

It's the highest sum: length × friction + bends + valve Cv terms. A short leg with a tight valve will eat more head than a long leg with a wide one. Watch the readout, not the picture.

Hint 4 — wyes have a cost too

Every Steiner junction adds a small minor loss (K_wye ≈ 0.5) to each branch passing through it. A tree that minimises length isn't necessarily the one that minimises worst-case ΔP; some manifolds are better with one extra mm of channel and one fewer junction.

Hint 5 — what to ask for
PromptGiven K inlets, N outlets (each owned by one inlet), a plate envelope, and a pump curve (Q_max, ΔP_max): solve a rectilinear Steiner tree per circuit, compute Darcy–Weisbach + minor losses (K=1 elbow per L-bend, K=0.5 per wye, (Q/Cv)² per valve, small K per sensor tap) along every inlet→outlet leg, report each circuit's worst-leg ΔP and the worst-of-all vs the pump head with 20% margin. Then count pairwise crossings between circuits' segments on a single layer, and flag any that would force a second-layer route.

7. Where to draw the line

Let Claude run the Steiner heuristic per circuit, the friction integrals, the K-sum on every leg, and the pairwise crossing scan — tireless arithmetic on a network is exactly what it's good at. But you pick the pump curve, the valve at duty, which outlet belongs to which inlet, and whether “within margin” means 20% or 50% for this fluid and this application. The math tells you which leg busts. Only you can tell it the assignment and the budget are honest in the first place.

8. One worked solution

What good looks like

The 6×12 default opens with the canonical layout: six inlets evenly spaced on the left edge, twelve outlets evenly spaced on the right, each outlet assigned to its nearest-Y inlet (so each circuit owns two outlets in a contiguous Y-band). The Steiner heuristic gives each circuit a small T; the trees stack vertically and don't cross. With KNF NF 1.5 (~87 psi) the worst-leg ΔP across all six circuits sits well under budget, and the crossing count is zero on a single layer.

Cycle one of the inlet 0 outlets to inlet 5 and the colour crosses the whole plate — the crossing count jumps, and Rung 4 fails. Flip layer to multi and it passes again (at the cost of a via). Switch to the TCS pump and the budget rung fails immediately: flow without head is the wrong tool for a head-loss-dominated plate.

9. Going further

Ship it

Same two moves — see explore in HTML, deliver in PDF.