P(h) = min( D·h , D·[C1·√R + C2·K·√(H − C1·√R)] ), where h is depth below the top of the pour and K = 36/(T+16) is a temperature correction (K≈1.0 at 20 °C). Each vertical MK2 soldier carries a distributed load w(y) = P(y)·Sx and is analysed as a continuous beam using the direct stiffness method (2-DOF-per-node Euler beam elements), with tie rods as point supports.
Tie layout is solved, not just inserted. The soldier runs the full wall height, but ties can only be placed within a tie zone set back from each edge —
1st tie from bottom and last tie from top — reflecting that a real tie can't sit right at the panel edge. The overhang beyond each end tie still carries pressure and transmits it into that tie, the way a real cantilevered soldier end does. For a trial tie count N, the solver fixes the two end ties at the edges of the tie zone and iteratively reshapes the spacing of every tie in between until all interior reactions converge to the same value — genuine dynamic Y-spacing rather than a fixed grid with extra rows bolted on. It repeats this for N = 2, 3, 4… and keeps the smallest N whose reactions clear the allowable tie load, stopping only if the minimum spacing limit is reached first. The end ties often carry more load than the equalized interior ties, not less — they're picking up the overhang's cantilever load on top of their own span, which is real continuous-beam-with-overhang behaviour and is still checked against capacity like every other tie.
S150 secondary spacing comes straight from your spacing-vs-pressure table (no interpolation) and is applied as a single uniform pitch from bottom to top: the governing pressure — at the very bottom of the pour, where it's highest — picks one spacing value, and every row from the first (38 mm up from the bottom, half the S150's own 75 mm width) to the top is spaced that same distance apart. Every secondary run spans cant + Xspacing + Xspacing + … + cant — a full cantilever overhang beyond the outermost soldier on both ends, feeding load back into that soldier. In the degenerate case of only 2 soldiers (cant + Xspacing + cant, a single bay), each soldier's tributary width isn't the X spacing — it's half the secondary's own total length, since each end soldier now picks up its whole cantilever plus half the one bay.
Bill of materials. Wall length is built from standard panel widths (1.2–6.0 m in 0.3 m steps), largest panels first. Soldier length is spliced from your priority-ordered length list the same way, itemised by piece length. Everything that exists on one face of the form (soldiers, secondaries, brackets, clamps, panels) is doubled for a double-sided wall; tie rods are not (one tie already spans both faces) but get 2 washer plates each. Hop-up brackets attach directly to a soldier, so they're capped at 1 per soldier line — never more than the number of soldiers. Push-pull props and turnbuckles follow the sides selector instead of the automatic doubling. Soldier spacing (X spacing) is treated as independent of panel width — soldier positions aren't forced to land on panel joints.
Tie dead zones. A tie can't be placed wherever the soldier is physically obstructed: at each S150 crossing (75 mm), at each splice joint between soldier pieces (two 8 mm end plates, 16 mm total), and at each stiffener plate (35 mm, position varies by piece length — currently only known for a 3.6 m piece). Spliced pieces are assumed to stack bottom-to-top in the same order they're listed for the height splice, so a piece's stiffener positions (given from its own bottom) get offset by however much soldier sits beneath it. The solver nudges any tie that would land in one of these zones to the nearest clear edge, left to right, keeping the minimum spacing against its already-placed neighbour — so a tie's final position can shift slightly off the ideal equalized value or off your exact 1st-tie/last-tie offset. If a piece length has no stiffener data yet, it's only checked against S150 and joint zones.