Animated groups · reports · clockwork orbits

How to find a time-symmetric animation

A walkthrough: first on three coupled cells you can hold in your head, then on the real problem — g227, orbifold 333, clockwork symbol r33₁3₂, the Brusselator on a triangular mesh of 36 × 36 nodes. Three searches run live in this page. If you know what a reaction–diffusion simulation is you have everything you need; Floquet multipliers and Newton–Krylov are explained where they are used.

The goal, in one picture#

The finished animation in the site's ember palette — 48 frames, exactly one period of 6.390159918584649 time units. Every frame is produced afterwards, by a single forward integration from the one state the solver found.

Two sentences describe that animation completely. The symmetry: turn the picture by 120° about one of its 3₁ centres and you get the same film a third of a period later — and nine such relations hold at once, three that cost no time, three that cost a third of a period and three that cost two thirds. The local rule: two chemicals spread and react by the Brusselator, with aa = 1, bb = 2.3 and equal diffusion — and nothing in that rule knows anything about the symmetry.

This page is about how you get from those two sentences to the film. The period is not something you choose: it comes out as TT = 6.390159918584649, and it is the one extra unknown the time symmetry introduces.

u(gx, t+τgT)=u(x,t)u(g x,\ t + \tau_g T) = u(x, t)

for every symmetry gg, every point, every instant.

Each symmetry gg carries a fraction of the period, τg\tau_g. The ones with τ=0\tau = 0 hold frame by frame. The rest hold only of the movie as a whole, and that is the whole difficulty: a constraint that relates different instants is not a constraint on any single frame, so there is nothing for a step-by-step simulation to enforce.

The method in six steps. Each one is a section of the walkthrough below, done twice: once on three cells, once on the real mesh.

  1. Write the time offsets down. They form a character — one complex phase per symmetry.
  2. Check that running the simulation forward cannot work, and see why.
  3. Draw the seed with a pencil: the one wave the character admits, times the oscillatory eigenvector of a 2 × 2 matrix.
  4. Solve one equation in one frame and one number, by Newton's method.
  5. Or: glue the domain to its own past, and simulate after all.
  6. Ask why step 4 works and step 2 does not. The answer is the same in both sizes.

The same problem with six numbers#

The real problem's unknown is 2 592 numbers and a period. Everything about the method, including the part that is surprising, survives shrinking that to six numbers and a period — and at six numbers every claim can be checked by eye. So: the whole recipe on a toy first, then the same six steps on the real mesh.

2.1 · Three cells on a ring

Take three identical Brusselator cells, j=0,1,2j = 0, 1, 2, arranged in a ring so each has the other two as neighbours, with the same reaction parameters as the real example — aa = 1, bb = 2.3 — and diffusive coupling of strength DD = 0.02:

u˙j=a−(b+1)uj+uj2vj+D(uj+1+uj−1−2uj),v˙j=b uj−uj2vj+D(vj+1+vj−1−2vj)\begin{aligned} \dot u_j &= a - (b+1)u_j + u_j^2 v_j + D(u_{j+1} + u_{j-1} - 2u_j), \\ \dot v_j &= b\,u_j - u_j^2 v_j + D(v_{j+1} + v_{j-1} - 2v_j) \end{aligned}

The symmetry group is rotation of the ring, cyclic of order 3 — the same order as g227's time symmetry. Give its generator the offset τ\tau = 1/3, and the clockwork constraint reads

qj+1(t+T/3)=qj(t),equivalentlyq(t+T/3)=S q(t),\begin{gathered} q_{j+1}(t + T/3) = q_j(t), \\ \text{equivalently} \quad q(t + T/3) = S\,q(t), \end{gathered}

where SS hands every cell's state to the next cell round the ring. Move one step round the ring = wait a third of a period. Apply it three times and you get q(t+T)=q(t)q(t + T) = q(t), so TT really is the period. That is the whole idea in miniature: a spatial symmetry that costs time.

Three panels. Left: three coloured discs labelled 0, 1 and 2 on a circle, with a curved arrow and the caption move one cell equals wait T over 3. Middle: three time traces of u, identical in shape, each shifted a third of a period from the last, with dotted lines at the thirds and an arrow marking the offset. Right: a single closed loop in the u-v plane with three coloured dots spaced round it.
The clockwork constraint on three cells. The symmetry is rotation of the ring, its generator carries the time offset one third, and the constraint q(t+T/3)=S q(t)q(t + T/3) = S\,q(t) says that handing every cell's state to its neighbour is the same as waiting a third of a period. Three cells then carry one trace between them, each a third of a period behind the last, and at any instant they sit at three points a third of a lap apart on one loop. Applying the relation three times gives back the identity, so the period comes out as 6.3661055591 — a number nobody chose. This is the miniature of g227's r33₁3₂, with three cells in place of 2 592 mesh values.

One difference from the real problem, and it makes the toy harder rather than easier: the ring's instantaneous symmetry group — the τ=0\tau = 0 part — is trivial, so there is nothing at all a step-by-step simulation could impose. On the real mesh a third of the group does act frame by frame, and it is still not enough, as the next step shows in both sizes.

Why that coupling strength. DD = 0.02 is chosen, and it is the only quantity on this page that was. The pattern the symmetry asks for is born at b=1+a2+6Db = 1 + a^2 + 6D = 2.12, because the ring's Laplacian has eigenvalue −3 on it, so the coupling has to be under 0.05 for the pattern to exist at b=2.3b = 2.3 at all. The choice does not rig the interesting part: for every positive DD the in-phase state attracts and the clockwork orbit is a saddle — step 2.6 shows why in one line — so it sets only how far above onset the ring sits, not which route works.

2.2 · Why running the simulation forward does not work

The obvious method: start somewhere, integrate, wait. Do it 5 times from random starts near the uniform equilibrium, for 400 time units — about 62 periods.

Three panels. Top left: the first forty time units of three traces, clearly out of phase. Bottom left: the last forty time units, the three traces exactly on top of one another. Right: a logarithmic plot of pattern amplitude against time for five runs, all straight lines falling from about 0.2 to about 1e-11, with a dashed horizontal line high above them marking where the clockwork orbit sits.
Why running the simulation forward does not work, measured rather than asserted. 5 random starts near the uniform equilibrium, integrated for 400 time units. Every one ends in the in-phase state, with all three cells oscillating in unison and the coupling term vanishing identically; the component of the state on the pattern the symmetry asks for falls by a factor 0.6808 per period, and the largest surviving amplitude of the five is 1.44e−10, against a clockwork orbit whose own pattern amplitude never goes below 0.241 anywhere in its period. The decay rate is predictable exactly: with equal diffusion the coupling is a multiple of the identity, so a pattern perturbation of the in-phase cycle decays like e−3DTe^{-3DT}, which is 0.6800.

Every run ends in the same place and it is not the answer. The three cells drift into step with each other and end up oscillating in unison — the in-phase state, in which the coupling term vanishes identically and the ring behaves like a single cell. The component of the state on the pattern the symmetry asks for decays by a factor 0.6808 per period, and after 400 time units the largest surviving pattern amplitude across the 5 runs is 1.44e−10. The clockwork orbit never goes below 0.241 anywhere in its period. No run gets within eight decades of it.

That decay factor is not an accident and can be predicted exactly. Because the two species diffuse at the same rate, the coupling term is a multiple of the identity, so a pattern perturbation of the in-phase cycle obeys the same linear equation as a perturbation of a single cell, multiplied by e−3DTe^{-3DT}. That predicts 0.6800 per period; the measured Floquet multiplier of the in-phase cycle in the pattern direction is 0.6800. The in-phase state is an attractor and the clockwork orbit is not — step 2.6 measures how badly.

2.3 · The seed you can draw with a pencil

Now the construction. Nothing here needs the differential equation solved even once: two small pieces of linear algebra do all of it.

Which pattern the symmetry allows. Look for a solution just above the uniform equilibrium, of the form qj=q∗+A Re⁡(zj eiωt e)q_j = q^* + A\,\operatorname{Re}(z_j\, e^{i\omega t}\, \mathbf{e}), with one complex number zjz_j per cell. Put that into the constraint. Waiting T/3T/3 multiplies by e2πi/3e^{2\pi i/3}, the ring shift moves the index, and the two can only agree if

zj−1=e2πi/3 zj,that iszj=e−2πij/3.z_{j-1} = e^{2\pi i/3}\, z_j, \qquad \text{that is} \qquad z_j = e^{-2\pi i j/3}.

There are exactly three patterns available on a three-cell ring, and that rules out two of them. Averaging a pattern against the character weights — the toy's copy of projecting a plane wave onto the clockwork character — reads 1 on the survivor and exactly 0 on the other two:

The selection rule on three cells, computed in code/ring/ring.py. The two zeros are zero to round-off, which is what "exactly" means on a computer.
patternphases projectionverdict
all three cells in phase1, 1, 10 (1.66e−16)cancels
one way round the ring1, e2πi/3, e4πi/31,\ e^{2\pi i/3},\ e^{4\pi i/3}0 (2.48e−16)cancels
the other way round1, e−2πi/3, e−4πi/31,\ e^{-2\pi i/3},\ e^{-4\pi i/3}1survives — the only seed the symmetry allows

What oscillates, and how fast. Linearise the reaction terms about the uniform equilibrium (a, b/a)(a,\ b/a) = (1, 2.3). That is one 2 × 2 matrix — the same matrix as in the real problem, because the reaction is the same — with eigenvalues 0.15 ± 0.988686ii. Its oscillatory eigenvector e\mathbf{e} says how uu and vv move together, and its imaginary part gives the period estimate T0=2π/ωT_0 = 2\pi/\omega = 6.3550868, the only guess at the period anyone has to make.

The amplitude. One number is still free. Take the root-mean-square amplitude of the spatially uniform Brusselator limit cycle — a two-variable problem with no ring and no symmetry in it, period 6.4276 — which measures 0.5604, and use that. Newton converges from every seed amplitude in the range 0.20 to 0.70 here, so the rule sits comfortably inside the window rather than balanced on its edge.

Three panels. Left: a logarithmic bar chart with two bars at 1e-16 labelled 0 and one bar at 1 labelled 1. Middle: three arrows from a common origin at 120 degrees to one another on a unit circle, labelled 0, 1 and 2. Right: the three time traces of the seed over one period, smooth and offset by a third of a period each.
The seed, drawn before a single step of the equation. Only one of the three patterns available on a three-cell ring survives the clockwork character; the other two project to exactly zero, which on a computer means round-off, 1.66e−16 and 2.48e−16. The survivor's phases are 11, e−2πi/3e^{-2\pi i/3} and e−4πi/3e^{-4\pi i/3} — the ring's copy of the three plane waves at 120° that the real problem's character admits. Multiplying it by the oscillatory eigenvector of the 2 × 2 reaction Jacobian, whose eigenvalues are 0.15±0.988685997 i0.15 \pm 0.988685997\,i, gives a complete initial state and the period estimate T0=2π/ωT_0 = 2\pi/\omega = 6.3550868. The amplitude 0.5604 is the root-mean-square of the spatially uniform Brusselator limit cycle — a two-variable problem with no ring and no symmetry in it. What comes out is 1.72e−01 away from solving the problem.

The seed is now completely determined by the group and one 2 × 2 eigenproblem, and its twisted residual — how far it is from solving the problem — is 1.72e−01.

2.4 · Newton on one state and one number

Here is the equation. Take a candidate state q0q_0 and a candidate period TT. Integrate for T/3T/3. Rotate the ring back by one cell. Demand that you are exactly where you started:

F(q0,T):=S−1 ΦT/3(q0)−q0=0F(q_0, T) := S^{-1}\, \Phi_{T/3}(q_0) - q_0 = 0

Φs\Phi_s means "integrate forward by ss". A third of a period and not a whole one, because the offset is 1/3: the threefold time symmetry then holds by construction, and the integration is three times cheaper. That is six equations in seven unknowns — the six state values and TT — so one more condition is needed, and it is a phase condition: a solution can be slid along itself in time, and the extra equation simply pins where t=0t = 0 is, exactly as a normalisation pins a wavefunction. Seven equations, seven unknowns, Newton's method:

Newton on the ring, from the pencil seed at amplitude 0.5604 (python3 code/ring/run_all.py).
stepresidual (rms) period reached
seed1.72e−016.3550867802
11.20e−016.3876941379
26.26e−036.3698172042
32.59e−046.3661931508
44.30e−076.3661050626
59.02e−136.3661055591

5 steps, twelve decades, and a period of 6.3661055591 — the same step count the real problem takes. That period is quoted to the precision it has been verified to: halving the time step four times over, from 3.5e−03 down to 4.4e−04, moves it by less than 8e−12. Two checks on the answer, neither of them the equation that was solved: integrating the converged state for a whole period returns it to 2.23e−12, and cell 1 a third of a period later really is cell 0 now, to 1.11e−12. The answer is genuinely the clockwork state and not the synchronised one: its pattern amplitude runs between 0.241 and 0.346 over the period, where any in-phase state reads exactly 0, and the three cells trace one loop a third of a lap from each other.

Three panels. Left: the twisted shooting residual against Newton step on a logarithmic axis, falling from about 0.17 to about 1e-12 in five steps. Middle: the period against Newton step, overshooting once and settling on a dashed line. Right: one closed loop in the u-v plane with three coloured dots on it and a cross marking the equilibrium.
Newton on one state and one number. The unknowns are the six state values and the period; the equations are the six components of S−1ΦT/3(q0)−q0S^{-1}\Phi_{T/3}(q_0) - q_0 and one phase condition that pins the time origin. 5 steps take the residual from 1.72e−01 to 9.02e−13 and the period from the Hopf estimate to 6.3661055591. The converged state is the clockwork one and not the synchronised one: its pattern amplitude runs between 0.241 and 0.346 over the period, where any in-phase state reads exactly 0, and the three cells sit spread round one loop. The real problem's table has the same shape and the same step count; the only difference is that its Jacobian is 869 × 869 and is never built.

Two things are worth noticing, because they are exactly what changes on the real problem and nothing else does. First, the Jacobian here is 7 × 7, so it can simply be built by finite differences; on the real mesh it is 869 × 869 and is never built at all — it is reached only through directional derivatives, one extra third-of-a-period integration each. That is what Newton–Krylov means, and it is the only difference between the two solvers. Second, nothing in this calculation ever asks whether the solution is stable. F=0F = 0 has no opinion about that, which is precisely why the method works where simulation cannot.

2.5 · Or: simulate one cell that remembers

There is a second route, and it looks like cheating. Read the constraint the other way round: from qj+1(t+T/3)=qj(t)q_{j+1}(t + T/3) = q_j(t),

q1(t)=q0(t−T/3),q2(t)=q0(t−2T/3).q_1(t) = q_0(t - T/3), \qquad q_2(t) = q_0(t - 2T/3).

The neighbours are the cell's own past. So throw two of the three cells away and simulate one, reading its two neighbours out of a history buffer. What was an ordinary differential equation in six variables becomes a delay differential equation in two, and the only new parameter is the delay — which is the period we are trying to find. Start it at the Hopf estimate 6.3550868 and correct it once per period by one Newton step on a phase condition:

δT=⟨ q(t−T)−q(t), q˙(t) ⟩⟨ q˙(t), q˙(t) ⟩,T←T+δT\delta T = \frac{\langle\, q(t - T) - q(t),\ \dot q(t) \,\rangle} {\langle\, \dot q(t),\ \dot q(t) \,\rangle}, \qquad T \leftarrow T + \delta T
Three panels. Left: a diagram of one filled disc labelled q of t with two faint discs above it labelled q of t minus T over 3 and q of t minus 2T over 3, each with an arrow pointing into the filled one. Middle: the delay against periods of simulation, starting at the Hopf period, swinging low and high, and settling on a dashed line. Right: the shape error against periods for four seeds on a logarithmic axis, all four falling as parallel straight lines.
The delayed glue: the second route, which needs no Newton solve at all. Reading the constraint the other way round makes cell 1 the history of cell 0 delayed by T/3T/3 and cell 2 its history delayed by 2T/32T/3, so two of the three cells can be thrown away and the ordinary differential equation in six variables becomes a delay differential equation in two. The delay starts at the Hopf period and is corrected once per period by a single Newton step on a phase condition. From white noise — no amplitude, no pattern and no sign to choose — 23 periods bring it to 6.3661055591, a relative 7.73e−13 from the answer Newton found, and the shape error falls by a factor 0.257 per period, geometrically, because in this setting the orbit is an attractor. Four seeds, three of noise and one analytic, behave identically.

Start from white noise — no amplitude to pick, no pattern to pick, no sign to pick — and after 23 periods it has settled on 6.3661055591, a relative 7.73e−13 from the answer Newton found, with the field agreeing to 2.19e−08 rms. The shape error falls by a factor 0.257 per period — geometrically, like an ordinary attractor, because in this setting it is one. Four different seeds, three of noise and one analytic, land at relative period errors between −3.97e−13 and 8.51e−13, every one of them in 23 periods.

2.6 · Why simulation fails and the delay works

This is the one part of the story that is genuinely about stability, and on the ring it can be computed exactly rather than argued. Linearise about the clockwork orbit and integrate the linearisation once round the period: that gives a 6 × 6 matrix, the monodromy, whose eigenvalues — the Floquet multipliers — say what a small perturbation does per period. Modulus above 1 and it grows; below and it decays. One of them is always exactly 1, because sliding along the orbit is a perturbation that goes nowhere.

Three panels. Left and middle: the Floquet multipliers of two orbits plotted in the complex plane against a dashed unit circle; the left has every point inside, the middle has a pair just outside on the positive real axis. Right: a horizontal bar chart of three growth factors per period against a vertical line at one, two bars short of it and one past it.
Why plain simulation fails and the delay works, computed exactly on six numbers. A Floquet multiplier is an eigenvalue of the monodromy — linearise about the orbit, integrate the linearisation once round the period, and read the eigenvalues. One is always exactly 1, because sliding along the orbit goes nowhere. The in-phase oscillation has everything else inside the unit circle, 0.6800 in the pattern direction, so it attracts and forward simulation ends there. The clockwork orbit has a pair at 1.2549 outside it: a saddle, which no amount of accuracy lets a simulation sit on. Inside the delayed glue the same orbit's shape error contracts by 0.257 per period. The delay changes the stability without touching the orbit, because the feedback it amounts to is built from q(t)−q(t−T)q(t) - q(t - T) and vanishes identically on the answer. On the real problem the same three numbers are a perturbation that grows 1.150 per period on the torus, a leading Floquet multiplier of 1.1608154, and a decay of 0.692 per period inside the glue.
0.6800
the in-phase oscillation, in the pattern direction: decays, so plain simulation ends there
1.2549
the clockwork orbit on the ring: grows, so it is a saddle and plain simulation leaves it
0.257
the same orbit inside the delayed glue: decays, so simulation falls into it

The clockwork orbit is a saddle: leading multiplier 1.2549 per period, so a simulation started near it leaves, no matter how accurate. The delay changes that without touching the orbit at all, because the feedback it amounts to is built out of q(t)−q(t−T)q(t) - q(t - T) and vanishes identically on the answer. That is Pyragas's construction for stabilising an unstable periodic orbit — except that here the feedback is not added to the equation, it is carried by the neighbours, and the neighbours were going to be read anyway. Deleting the directions that break the clockwork symmetry costs nothing.

Try the three cells here

The same equation as above, integrated in this page. Random start is step 2.2: watch the three traces slide together and the pattern amplitude fall to zero. Clockwork orbit starts on the answer Newton found, nudged by one part in a thousand, and the readout shows that nudge growing by 1.2549 per period until the picture falls apart — which is what a saddle looks like. Delayed glue is step 2.5: one cell, two delayed neighbours, white noise to begin with, and the delay converging on the period.

Starting…

2.7 · The six steps, side by side

Every step of the toy is the same step of the real problem with a bigger index set. The table scrolls sideways on a narrow screen.

stepthree cells on a ring g227 on the triangular mesh
the grouprotation of the ring, cyclic of order 3 a wallpaper group, 9 operations on the box, cyclic of order 3 once the τ=0\tau = 0 part is divided out
the characteroffsets 0, 1/3, 2/3, one operation each offsets 0, 1/3, 2/3, three operations each
the selection rule1 of the 3 ring patterns survives, 2 cancel 3 of the 6 shortest plane waves survive, 3 cancel; the whole next shell cancels too
the seedthe surviving pattern × the 2 × 2 Hopf eigenvector a three-wave star × the same 2 × 2 Hopf eigenvector
the unknown6 numbers + TT; dense 7 × 7 Jacobian 868 numbers + TT; Jacobian never built, reached by Krylov
Newton5 steps, residual 9.02e−13 5 steps, residual 2.43e−13
the delayed glue1 cell, neighbours at t−T/3t - T/3 and t−2T/3t - 2T/3 146 representatives; 430 nodes read at t−T/3t - T/3, 430 at t−2T/3t - 2T/3
stabilitysaddle at 1.2549 per period; 0.257 inside the glue saddle at 1.1608154 per period; 0.692 inside the glue

Everything in the ring column comes from code/ring/run_all.py, which writes code/ring/results.json; this page reads its numbers out of that file rather than quoting them by hand. The one place the toy is not a faithful miniature is the companion report's theorem: with three cells there is no plane for phase to wind in, so the forced vortices have no counterpart. Everything else transfers.

The same recipe on the real problem#

3.1 · The constraint, in a simulator's language

A simulator like SymSim draws a wallpaper pattern by integrating a reaction–diffusion equation on one fundamental domain and gluing that domain's edges to copies of itself. Every symmetry of the group is then true of every frame separately. A clockwork group asks for something weaker and much more interesting: the symmetry is allowed to cost time, and the offsets τg\tau_g record how much. Applying the defining relation to a composition shows that τ\tau is a homomorphism to R/Z\mathbb{R}/\mathbb{Z}, so — granted that its image is finite, which is what the catalogue encodes and what a rotation forces — the quotient by the τ=0\tau = 0 kernel is cyclic. For g227 it is cyclic of order 3. That is the same data as a colour group whose colour permutation is cyclic, with colours replaced by time offsets, which is why every entry appears on the correspondence pages in exactly that form: correspondence-p3.html#g227.

Dividing the plane by g227 gives Conway's 333 orbifold: a turnover, a sphere with three cone points of order three. The clockwork symbol r33₁3₂ decorates those cone points with their offsets — one turn costs nothing, one costs a third of a period, one costs two thirds. That decorated orbifold, plus the choice of equation, is the entire specification.

Diagram of the 333 orbifold of g227 drawn as a curved triangle with a dashed second face behind it. Each corner carries a coloured rotation marker and a label: 3 with time offset zero, 3 sub 1 with offset one third, 3 sub 2 with offset two thirds, and beside each the winding it forces: 0, minus 1, plus 1. To the right, three short equations for the Conway cost, the temporal residue and the index budget.

Shown at its own size here: drag the diagram sideways to read its labels.

The clockwork symbol, read as a decorated orbifold. Dividing the plane by g227 gives Conway's 333 turnover; the symbol r33₁3₂ then decorates each cone point with a time offset. Conway's magic theorem balances the geometry — the three costs sum to exactly 2, so the symbol tiles the plane. Applying the offset τ\tau, which is a homomorphism, to the orbifold relation balances the choreography: 0/3+1/3+2/3=10/3 + 1/3 + 2/3 = 1, an integer, and the same sum is an integer for all 68 catalogue entries (values 0, 1 and 2). The offsets then force the windings 0, −1 and +1, which sum to zero over one primitive p3 cell when each is weighted by 1/31/3. Drawn on the simulation box, which is three p3 cells, that is six pinned vortices, three of each sign.

Two words, used consistently from here on. The p3 cell is g227's own primitive cell: three threefold centres. The box is the simulation cell on the screen, which has to be three p3 cells, because the field is invariant under the kernel and no more, and the kernel meets the translation lattice in a sublattice of index 3. So the drawn cell — 36 × 36 nodes on a side of 40 — carries nine threefold centres in three classes of three, and nine operations where the orbifold shows three. Two pinned vortices per p3 cell; six on the screen.

3.2 · Why running the simulation forward does not work

Exactly as on the ring, and measured the same way. Take the published orbit itself — the exact answer — perturb it only by the round-off of writing it to single precision, and integrate forward on the g227 torus with the τ=0\tau = 0 part of the symmetry imposed at every step, which is what a fundamental-domain simulator does. The orbit leaves.

Why you cannot simply run the simulation. This starts on the exact published orbit — perturbed only by float32 round-off — and integrates forward on the g227 torus with the part of the symmetry that acts on a single state imposed at every step, which is what a fundamental-domain simulator with glued edges does. One frame per period, 313 periods. The spirals fade and every cell ends oscillating in unison; the first period with no vortices left is 135. The orbit is a saddle, leading Floquet multiplier 1.1608154 per period.
1.1608154
leading Floquet multiplier per period — the orbit is a saddle, as on the ring
135
first period with no vortices left
9 618 359
right-hand-side evaluations spent simulating; orbits found: 0

The killer detail is not that the orbit is unstable but which way. The leading unstable eigenvector is itself symmetric under the τ=0\tau = 0 operations, so confining the simulation to the fundamental domain does not delete the growing direction — it lives inside that domain's own subspace. The simulation ends on the spatially uniform limit cycle: every cell oscillating in unison, no spirals, no screws. That is the ring's in-phase state, in two dimensions.

And as on the ring, there is a reason it must be so. The uniform state loses stability at bb = 2; the g227 pattern is not born until bcb_c = 2.065630506987. A branch that bifurcates from an already unstable equilibrium inherits that instability, and the direction it inherits is the spatially uniform one — invariant under every operation of the group, hence inside the kernel. That is exactly the measured leading eigenvector, and exactly the state the simulation ends on. Every published Brusselator record sits above b=1+a2b = 1 + a^2, where the uniform cycle already exists, and every one of them is a saddle.

One sentence worth keeping: Newton's method works here not because it is cleverer, but because F(q0,T)=0F(q_0, T) = 0 never asks whether its solution attracts.

3.3 · The seed, with a pencil

Three steps, none of which touches the partial differential equation. Together they cost 12 evaluations of a two-variable problem, about 0.17 seconds — and with an analytic 2 × 2 Jacobian, none at all. That number is the pedagogy: the group supplies essentially all of the structure.

Read the character off the group. Nine operations act on the box: the three rotations of the p3 point group, each composed with one of the three translation cosets of the p3 lattice inside the box. The rotations contribute nothing to τ\tau; the three cosets contribute 0, 1/3 and 2/3. That split is the character g↦e2πiτgg \mapsto e^{2\pi i\tau_g}, and everything below is the projection onto it, (Pf)(x)=(1/9)∑ge2πiτgf(gx)(Pf)(x) = (1/9) \sum_g e^{2\pi i\tau_g} f(gx) — the step the ring did with three phases instead of nine.

Test the waves; most of them cancel. Project each plane wave eik⋅xe^{i k \cdot x} onto the character. For g227 the translation by (1/3, 2/3) carries τ\tau = 2/3, and the projection survives only when h+2ℓ≡1(mod3)h + 2\ell \equiv 1 \pmod 3 for a wave with reciprocal-lattice indices (h,ℓ)(h, \ell). Of the six shortest reciprocal vectors exactly three pass — (1, 0), (0, −1) and (−1, 1) — and (−1, 0) does not. This is the step that is easiest to get wrong by hand: taking the first shell vector without testing gives exactly zero half the time. The whole of the second shell cancels identically, projection norm 2.1e−16.

The six shortest reciprocal vectors of the triangular lattice drawn as arrows from a common origin. Three of them — (1,0), (0,−1) and (−1,1), at 120 degrees to one another — are solid and orange and labelled with projection norm 0.5774; the other three are dashed grey and labelled 0.0000. A fainter outer ring of six small circles marks the next shell, all of which cancel.

Shown at its own size here: drag the diagram sideways to read its labels.

Which waves the clockwork character lets through. Every member of a reciprocal shell has to be tested: g227's translation by (1/3, 2/3)(1/3,\ 2/3) carries τ=2/3\tau = 2/3, so the twisted star of a wave with reciprocal indices (h,ℓ)(h, \ell) cancels identically unless h+2ℓ≡1(mod3)h + 2\ell \equiv 1 \pmod 3. Of the six shortest vectors exactly three survive — (1,0)(1,0), (0,−1)(0,-1), (−1,1)(-1,1), each with projection norm 0.5774, the others exactly 0.0000 — and they sit at 120° to one another. The whole of the next shell cancels, projection norm 2.1e−16, so taking "the first shell vector" naively gives exactly zero. The shell after that survives again at ∣k∣2|k|^2 = 0.1303 against 0.0328, and seeding from it converges to a genuine, unpublished g227 orbit with 24 cores in the box instead of 6, at TT = 6.3513842322.

Symmetrise. Average the nine character-weighted images of one surviving wave. The result has exactly three Fourier components: three plane waves at 120° to one another, a honeycomb of vortices and antivortices. It satisfies the character law to 7.0e−16, its modulus already has exact zeros at the six screw centres with windings ∓1, and the three τ=0\tau = 0 centres sit at maxima. Everything the companion report's theorem predicts is already drawn, before a single step of the equation.

Three panels of the seed field over two lattice cells: the real part in the ember palette showing bright hexagonal blobs, the modulus in greyscale showing dark points on a honeycomb, and the phase in hue with black and white diamonds marking vortices of opposite sign.
The seed, built from the clockwork symbol alone and before a single step of the reaction–diffusion equation. Symmetrising the three surviving waves gives a star with exactly three Fourier components — three plane waves at 120°, ∣k∣2|k|^2 = 0.032815 — that satisfies the character law to 7.0e−16. Its modulus already has exact zeros at the six 3₁ and 3₂ screw centres of the box with windings ∓1\mp 1, and the three τ=0\tau = 0 centres sit at maxima. The picture is right before any computation of the dynamics.

Lift through the Hopf eigenvector, and choose the amplitude by the ring's rule. The star is a scalar field and the equation has two species, so multiply by the oscillatory eigenvector e of the 2 × 2 reaction Jacobian — eigenvalues 0.15 ± 0.988686ii, the same matrix the ring used — and set q=q∗+A Re⁡(ψ e)q = q^* + A\,\operatorname{Re}(\psi\, \mathbf{e}), with T0=2π/ωT_0 = 2\pi/\omega = 6.355088. For AA, the uniform-limit-cycle rule gives 0.558 at b=2.3b = 2.3 and the verified window is 0.30 to 0.60 — a narrower margin than the ring's, and the one real knob in the construction.

3.4 · Newton on one frame and one number

The same equation, with SgS_g the node permutation of a generator carrying τ=1/3\tau = 1/3:

F(q0,T):=Sg ΦT/3(q0)−q0=0F(q_0, T) := S_g\, \Phi_{T/3}(q_0) - q_0 = 0

plus one phase condition.

The unknowns are the initial frame reduced by the instantaneous kernel — 434 values per species rather than 1296 — plus log⁡T\log T. Note what is not imposed: only the τ=0\tau = 0 operations ever touch the state, and the τ≠0\tau \ne 0 relations are never enforced. They are the equation. In the equivariant-dynamics literature these solutions are called relative periodic orbits.

The direct construction at b=2.3b = 2.3, seed amplitude 0.558 — the real problem's copy of the ring table in step 2.4.
stepresidual period reached
seed1.90e−016.355088
15.57e−026.379610
25.40e−036.367806
36.01e−046.389757
43.47e−076.390160
52.43e−136.390159918585
published record— 6.390159918584649

The period agrees with the published record to a relative 7.5e−14 and the fields to rms 5.05e−08, which is 1.10× the single-precision round-off floor of the stored bytes, 4.64e−08. In other words the two orbits are the same to the accuracy at which the published one is stored. The whole search costs 38 904 right-hand-side evaluations against the original pipeline's 293 095.

A strip of eight square panels of the same hexagonal pattern in the ember palette, labelled seed, iterate 0 through iterate 4, final, and published record. All eight look nearly identical; the later panels are slightly crisper.
The hand-drawn seed, the Newton iterates, and the published record — all visibly the same picture. The group draws it; the solver only sharpens it. Five Newton–Krylov steps on the twisted shooting equation take the residual from 1.90e−01 to 2.43e−13 and the period from the Hopf estimate 6.355088 to 6.390159918585126, against the published 6.390159918584649 — a relative difference of 7.5e−14. The fields agree to rms 5.05e−08, which is 1.10× the float32 floor of the stored bytes (4.64e−08). The whole search costs 38 904 right-hand-side evaluations against the original pipeline's 293 095, a factor of 7.53.

Live demonstration 1 · run the search here

Steps 3.3 and 3.4 on the real mesh, in this browser: the symbol with the winding each centre forces, the shell table in which three projections read 0.00 and three read 0.58, the three-wave seed, the live residual, and a verification table re-checked centre by centre on the orbit the page has just computed. About 1.6 seconds, and nothing is fetched from a stored answer. The panel's amplitude control is the one knob: it runs at 0.5, the predicted 0.558 is also on its menu, and both take 6 steps here — one more than the reference implementation's 5, because the two solvers stop on slightly different criteria. Set it to 0.25 and watch Newton fail honestly.

Loads a self-contained panel of about 70 kB and starts the search. Nothing runs until you press it.

3.5 · A fundamental domain that remembers

The ring's second route, in two dimensions. Read the clockwork convention node-wise, with y=gxy = gx:

q(y,t)=q(g−1y, t−τgT)q(y, t) = q(g^{-1}y,\ t - \tau_g T)

The neighbour across a glued edge is the domain's own past. For g227 the two non-trivial classes of edge read the domain as it was T/3T/3 and 2T/32T/3 ago — the ring's two delays, on 430 nodes each instead of one cell each. Nothing else changes: the same Laplacian, the same reaction terms, the same time stepper. A simulator that already glues edges needs exactly one new object, a history buffer, plus four-point Lagrange interpolation so the midpoint stages of the stepper can ask for the field between stored samples.

Two panels. On the left, a parallelogram drawn over a triangular dot mesh, divided into nine identical rhombi; a hexagon of three of them is tinted, one rhombus is filled, and nine rotation centres are marked in three colours. On the right, that single rhombus enlarged, its four edges drawn in three colours, its corners labelled 3, 3 sub 1 twice and 3 sub 2, with curved arrows showing which edges are glued to which.

Shown at its own size here: drag the diagram sideways to read its labels.

The fundamental domain of the 333 orbifold on the triangular mesh, and what each glued edge reads. One simulation cell of 36 × 36 nodes is exactly nine copies of the domain, so the 1296 nodes per channel reduce to 146 representatives — a factor of 8.877. Two edges are glued by the turn about the τ=0\tau = 0 centre and read the domain as it is now; the other two are glued by the turn about the 3₂ centre and by its inverse, which is why one reads the domain as it was T/3T/3 ago and the other as it was 2T/32T/3 ago. Of the non-representative nodes, 290 are copied instantaneously, 430 from t−T/3t - T/3 and 430 from t−2T/3t - 2T/3. The panel counts edge stubs, which is a different quantity from the node counts here.
146
representatives integrated, out of 1296 nodes per species — a factor of 8.877
290
nodes copied at the same instant
430 + 430
nodes read from t−T/3t - T/3 and t−2T/3t - 2T/3

The direction of the delay is not a convention. Reading from the past reproduces the published record bitwise — maximum error exactly 0.0. Reading from the future is wrong by 1.042 on a field whose whole span is 2.546. It is a one-line test, and it settles the sign of every offset in the catalogue.

Start from white noise on the 146 representatives, with the delay at the Hopf period 6.355088 and the same once-per-period correction the ring used. After 47 periods, 300 time units of ordinary forward integration: relative period error +2.6e−06, field agreeing with the published record to 3.8e−06 relative, and the comparison already reporting the same orbit — before any Newton step at all. Two Newton iterations then give TT = 6.390159918584616 and the repository's acceptance audit passes. There is no amplitude to choose, no shell to choose and no sign to choose; four seeds, one picked by an independent verifier, all land within about 1e−06.

Six square stills in a row, labelled from t = 0 to t = 300. The first is fine-grained noise, the next two are almost featureless, and the last three show blobs sharpening into the finished spiral lattice.
White noise at t=0t = 0, the published spiral lattice at tt = 300 — and nothing in between but forward simulation on a fundamental domain whose edges read the past. The delay starts at the Hopf period and is updated once per period by a phase-shift feedback; after 47 periods the relative period error is +2.6e−06 and the field agrees with the published record to 3.8e−06 relative, before any Newton step. Three further seeds, one of them chosen by an independent check, all land at about 1e−06.
The same self-assembly as a movie, 300 time units of the delayed-glue simulation on the 146-node domain. The six vortices nucleate out of the grey oscillation, drift, and lock onto the screw centres the symbol names.

And the reason is the ring's reason: the same perturbation grows by a factor 1.150 per period on the torus and decays by 0.692 per period inside the delayed glue. (The 1.1608154 quoted earlier is the same instability measured properly, by Arnoldi on the monodromy operator; 1.150 is what a finite-time forward run in this discretisation reads.) The delay does not merely shrink the domain by 8.877×; it converts a saddle into an attractor by deleting every direction that breaks the clockwork symmetry. On the ring the same two numbers are 1.2549 and 0.257.

Why it contracts is worth stating carefully, because the tempting sentence claims too much. The delayed system is not the torus system restricted to an invariant subspace: its state is a history segment of length 2T/32T/3, so it is infinite-dimensional and has a spectrum of its own, including modes that live entirely in the history. The contraction factors 0.692 and 0.257 were measured, not proved.

One relation the glue never imposes confirms the companion report's theorem for free. The six screw-centre nodes are asked to repeat after a third of a period, and they obey by barely moving: amplitude 0.0013 against 1.415 at the τ=0\tau = 0 centres, a factor of about 1100. That is the forced zero at a screw centre, measured rather than assumed.

Live demonstration 2 · watch it assemble

The delayed glue running in this page, on the same 146 representatives: the drawn cell coloured by how each node is fed, the pattern rebuilt through the glue, the delay converging on the published period, and the residual on a logarithmic axis. From white noise to "period found" takes about 13 seconds — the arithmetic itself takes 0.46 seconds, and the rest is deliberate pacing so the assembly is watchable. The in-page run stops at its own tolerance rather than running the full 47 periods: with the first seed it settles after 31 periods at a delay of 6.390172673334256, a relative 2.00e−06 from the published period, and the two Newton steps that follow take it to 6.390159918584547. The other three seeds land between +2.25e−06 and +2.86e−06 in 25 to 32 periods.

Loads the delayed-glue modules and starts on the first seed at normal speed. Seed, speed and the final Newton polish lock while it runs — press Stop to change them and start again. The panel's interim symmetry error, printed before any Newton step, is 5.80e−5; the two Newton steps at the end drive the shooting residual it prints to 3.7e−14, and the symmetry error of the replayed movie to 2.5e−09.

This is the version worth adding to a fundamental-domain simulator. The domain is the one SymSim already builds; the edges are the ones it already glues; the only new object is a ring buffer of past states, and the delay update is two inner products. The honest caveat: this was demonstrated for g227 at 36 and 48 nodes across, with offsets 0, 1/3 and 2/3. Mirrors and glides, where the offsets are 0 and 1/2, change the structure of the glue and are untested — which is the most valuable next experiment this page can name.

Questions people asked#

Is this like solving a stationary Schrödinger equation?

At the orbit's birth, yes — literally, and not by analogy. Linearise the Brusselator about its uniform state. A spatial mode with Laplacian eigenvalue −∣k∣2-|k|^2 is governed by a 2 × 2 matrix J−∣k∣2DJ - |k|^2 D, and it goes Hopf — a pair of eigenvalues crossing the imaginary axis — at

bc(∣k∣2)=1+a2+(Du+Dv)∣k∣2,ωc=a2−∣k∣4.\begin{aligned} b_c(|k|^2) &= 1 + a^2 + (D_u + D_v)|k|^2, \\ \omega_c &= \sqrt{a^2 - |k|^4}. \end{aligned}

For g227's surviving shell (∣k∣|k| = 0.18114981 on the mesh; the continuum value 4π/(3 L)4\pi/(\sqrt3\,L) is 0.18137994) that gives bcb_c = 2.065630506987, frequency 0.999461434543 and period 6.286571037185. At that value of bb the orbit is the eigenfunction of J+D∇2J + D\nabla^2 with eigenvalue iωci\omega_c, restricted to the one character sector the clockwork symbol allows. Measured along a branch of 44 converged points from b−bcb - b_c = 1.3e−4 up to bb = 8.0: the amplitude grows like the square root of the distance from onset, fitted exponent 0.5027 against the predicted 0.5; bcb_c read back from the measured amplitudes agrees to 9.3e−06; and the shape match of the near-onset orbit to the analytic eigenfunction is 1.0000 — of the published orbit at b=2.3b = 2.3, still 0.9664.

Six panels in two rows. The top row shows the phase of the first harmonic as hue for a near-onset orbit, the published orbit and the analytic eigenfunction; the bottom row shows the corresponding magnitudes in greyscale. The three columns look almost identical.
At birth the orbit really is an eigenfunction. Linearising the Brusselator about its uniform state, a mode with wavenumber ∣k∣|k| goes Hopf at b=1+a2+(Du+Dv)∣k∣2b = 1 + a^2 + (D_u + D_v)|k|^2, which for g227's surviving shell is bb = 2.065630506987 with frequency 0.999461434543 and period 6.286571037185. At that point the orbit is the eigenfunction of the linear operator, restricted to the one character sector the clockwork symbol allows: the shape match of the near-onset orbit to the analytic eigenfunction is 1.0000, and of the published orbit at bb = 2.3 it is still 0.9664. Everything above onset is the nonlinear term bending an eigenfunction, with amplitude growing like the square root of the distance from onset — measured exponent 0.5027 against the predicted 0.5.

Above onset the eigen-structure does not disappear; it becomes nonlinear. In the shooting formulation the unknowns are a state and a number, and they play exactly the roles of an eigenvector and an eigenvalue: the state is determined only up to the time origin, which the phase condition fixes the way a normalisation ⟨ψ∣ψ⟩=1\langle\psi|\psi\rangle = 1 fixes a wavefunction, and the period is the number the equation determines along with it. The solver is the matrix-free machinery one would use on a large sparse eigenproblem. Three honest limits: the operator is not self-adjoint, so the eigenvalues are complex and there is no variational principle to minimise; away from onset the amplitude is not free but fixed by the nonlinearity at ∝b−bc\propto \sqrt{b - b_c}, which is why the seed needs an amplitude at all; and the eigenproblem determines the pattern only at onset, which is the 3 % between 0.9664 and 1.

The equivariant point does the real work, and it is the cleanest statement of what symmetry buys. The uniform mode, ∣k∣=0|k| = 0, goes unstable first, at bb = 2 — before any pattern. But it is not in the twisted sector, so it makes no clockwork; it is exactly the state plain simulation collapsed onto, in both sizes. Symmetry is a selection principle, not a description. One more consequence of equal diffusion is worth making explicit, because it is easy to assume the opposite: there is no Turing instability here at all. The growth rate falls monotonically with ∣k∣|k|, so the equation supplies no length scale; the scale of the picture is set by the lattice and by which shell the character admits, which is also why the shell index behaves as a dial for new orbits rather than as a tuning error.

Growth-rate curves against wavenumber for three values of b, with numbered markers on the b = 2.3 curve. Filled markers label the shells whose star survives the symmetry; hollow markers label the shells that cancel. An annotation marks the point where the growth rate of the first surviving shell is exactly zero.
Symmetry as a selection principle, not a description. The uniform mode goes unstable first, at b=2b = 2 — but it is not in the twisted sector, so it makes no clockwork, and the first pattern the symbol admits is the lowest shell that survives the character. With equal diffusion the diffusion term is a multiple of the identity, so it moves only the real part of the eigenvalues: at a given bb every mode oscillates at the same frequency, 0.988686 at bb = 2.3, which is why one 2 × 2 matrix supplies a usable period estimate T0T_0 = 6.355088 for any shell. The frequency at onset does depend on the shell, because the onset value of bb does — ω=1\omega = 1 at ∣k∣=0|k| = 0 against 0.999461434543 at g227's shell.

Is there a fifth dimension — are all the frames solved at once?

A precise question, with a different answer for each of the three solvers here.

  1. The published method has no extra axis. The unknown is one frame and one number. The remaining frames are not unknowns at all; they are produced afterwards by a single forward integration once the frame and the period are known. If you want an extra axis, the only one is Newton's iteration count.
  2. The delayed glue needs none either. Time runs forward, once, and the glue carries the clock.
  3. The project's first solver did make the whole movie its unknown, and it failed. Every frame at once plus the period, frames tied together by a trapezoidal defect, the space–time symmetry imposed as a hard constraint, and the whole block slid downhill by a quasi-Newton descent. It never produced an accepted orbit, for two separate reasons: a trapezoidal defect on MM frames is only second-order accurate, so a perfectly converged trapezoidal solution still fails an independent fourth-order replay by 1.53e−03 against a gate of 1e−05; and least squares on a bare space–time residual has a trivial minimum, the uniform state, which a descent method walks into — the iterate ends at 0.0038 % of the published amplitude.

And yet the idea is right, which is the interesting part. Solving all the frames at once works well provided time is represented spectrally and the loop is moved by Newton rather than by descent: harmonic balance reaches an orbit in 16 992 field evaluations, about 2.3× under a correctly seeded shooting run. It converges to a different orbit, TT = 6.351384224091878 — the same unpublished second-shell orbit the pencil construction reaches from the other direction. But the descent route, taken literally, produced zero admissible orbits for about 1e6 evaluations, and that is the honest headline.

Three panels: a tangle of closed loops in a projected coordinate plane coloured by a fictitious time, a log-scale plot of residual against fictitious time showing straight exponential decay, and a cost comparison of two solvers against right-hand-side evaluations.
The fifth-dimension question, taken literally: the whole movie as a single point tracing a path in a fictitious extra time, with the residual decaying like e−se^{-s} — and a step of one in that time is exactly Newton's method. Solving all the frames at once is real and can be cheaper: harmonic balance costs 16 992 field evaluations, about 2.3× under a correctly seeded twisted shooting run. It is also where the honest failure lives: plain gradient descent on a space–time least-squares functional produced no admissible orbit at all for about a million evaluations, collapsing towards the uniform state; with the nontriviality barrier the original browser solver actually carried, it stalls at 9.8 % of the right amplitude instead of blanking the screen.

How it was actually done, and what changed#

None of the above is how the published animation was found. The real pipeline ran on 7 September 2026 as one job in one batch of 204, and it had four stages: solve for the uniform equilibrium; build a complex Ginzburg–Landau problem on the same mesh — near the Hopf point the Brusselator reduces to it — integrate it from seeded random noise inside the character subspace for 600 time units and polish the result to a rotating wave, trying both signs of the frequency and keeping the first whose audit passes; lift that complex profile through the same 2 × 2 Hopf eigenvector at amplitude 0.25 or 0.50; then Newton–Krylov on the same twisted shooting equation, followed by replay, audit and a second solve at a finer mesh.

It cost 53.750973 seconds of function time on a two-core container — about $0.0023 as this orbit's share of a $0.200731 processor batch. No graphics processor was used on this path at all. The original was neither slow nor expensive. What the newer routes remove is the random seed, the Ginzburg–Landau stage and the infrastructure: the seed becomes deterministic and drawable by hand, the search costs 7.53× fewer evaluations, it runs in a browser tab in about 1.6 seconds — or, with the delayed glue, there is no Newton solve to run at all.

The same orbit, found five ways. Costs in full-field right-hand-side evaluations, the only currency that survives a shared machine. The table scrolls sideways on a narrow screen.

routeevaluationsNewton steps period reachedsame orbit?wall
original pipeline, Ginzburg–Landau seed293 095 436.390159918584649 it is the record53.75 s
direct construction: symbol → star → Hopf lift → Newton 38 90456.390159918585126 yes, rms 5.05e−0810.1 s
the same algorithm in a browser41 0286 6.390159918584618 yes, 6.9e−08 after a 0.211-frame shift1.59 s
delayed glue from white noise, then 2 Newton steps88 967 26.390159918584616 yes, rms 5.36e−08≈ 99 s
delayed glue, 4-period warm start51 564 56.390159918584609yes —
continuation from onset, 44 branch points438 326 3–6 eachpasses through it yes, 1.20e−081 421 s

Like for like — orbit-finding only, direct construction against the original pipeline — that is 7.53× fewer right-hand-side evaluations, 7.53× fewer time steps, 5.34× fewer trajectory integrations and 7.54× fewer grid-point evaluations. The tempting comparison — 1.6 seconds in a page against 53.75 seconds of container time, a factor of 33.8 — is not a fair one, and is quoted here only to be disowned: that job also produced a 96-frame movie, two audits and a finer-mesh refinement, on a different machine. Evaluations are the only currency that survives a change of hardware, which is why every cost on this page is quoted in them.

Further details#

Footnotes to the walkthrough: the knobs, the failures, the reach of the method across the catalogue, and how to run any of it yourself.

The one knob, the chirality, and the shell dial

Everything in the construction is fixed by the group except the seed amplitude AA. On the real problem the verified window at b=2.3b = 2.3 is 0.30 to 0.60: at 0.30 Newton converges in 35 iterations, at 0.25 it still stalls after 150, and at 0.80 after 60. The uniform-limit-cycle rule gives 0.558 and works at every bb tested — 7 iterations at b=2.1b = 2.1, 5 at 2.3, 5 at 2.5. Honestly stated: 0.558 lands mid-window by construction plus luck, not by a proof that it must. On the ring the window is wider, 0.20 to 0.70, and the same rule reads 0.5604.

Log-scale scatter plot of the final Newton residual against seed amplitude. Points between 0.30 and 0.60 sit at about 1e−15 and are marked as converged; points at 0.05, 0.10, 0.25, 0.70, 0.80 and 1.00 sit between 1e−3 and 1e−1 and are marked as not converged. A shaded band marks the window and a dotted line marks the amplitude 0.558.
The one free knob in the construction, and where it works. The verified window at bb = 2.3 is 0.30 to 0.60: at 0.30 Newton converges in 35 iterations, and at 0.25, the lower of the two amplitudes the original pipeline tried, it still stalls at 1.01e−02 after 150 iterations — though the original lifted a Ginzburg–Landau profile rather than this star, and converged from it. The knob can be removed: the amplitude is predictable in advance as the rms of the spatially uniform Brusselator limit cycle, a two-variable ordinary differential equation with no space and no group in it, which gives 0.558 at bb = 2.3 and works at every bb tested. Honestly stated: 0.558 lands mid-window by construction plus luck, not by a proof that it must.

Chirality is the sign of the character. Building the star with e−2πiτe^{-2\pi i\tau} instead of e+2πiτe^{+2\pi i\tau} produces the mirror image of the star, to 5.1e−16, and lands in the conjugate character sector: every vortex charge flips, and the resulting orbit fails against the catalogue's generator (residual 0.662) while satisfying the inverse generator to 4.7e−08. The ring shows the same thing with no geometry at all: seeding the forbidden ring pattern leaves a twisted residual of 8.99e−01 against the generator and 1.72e−01 against its inverse. The honest limit: that the wrong sign can never be rescued is an inference from the runs, not a proof — the Newton unknowns are kernel-projected only, so the conjugate sector is not an invariant subspace of the iteration.

The shell index is a dial for new orbits. Seeding from the next allowed shell converges in 8 iterations to TT = 6.3513842322 — not the published orbit (relative rms 0.171) but a genuine, audit-passing g227 clockwork orbit with 24 cores in the box instead of 6, as the exactly doubled wavevector demands, total charge still 0, all nine centre charges as predicted. An entirely independent harmonic-balance solver found the same unpublished orbit at 6.351384224091878 — agreement to eight digits.

Stability numbers, and what "saddle" is measured with

A Floquet multiplier is an eigenvalue of the monodromy: linearise about the orbit, integrate the linearisation once round the period, and read the eigenvalues of the resulting map. On the ring that map is 6 × 6 and can be formed by finite differences, which is what the figure in step 2.6 plots. On the real problem it is 2592 × 2592 and only its leading eigenvalues are computed, by Arnoldi.

Scatter plot of the leading Floquet multiplier for fifty-one published orbits, all above one, ranging from about 1.04 to about 2.17, with one point annotated as the main experiment at 1.1608. Below, a bar chart showing the kernel-symmetric fraction of the leading mode is 1.0 for every entry.
Every published clockwork Brusselator orbit is a saddle: all 51 records have a leading Floquet multiplier above 1, between 1.0395 and 2.1721, and in every case the unstable direction lies inside the symmetric subspace that a fundamental-domain simulation preserves. Two honest denominators: those 51 records are only 25 distinct fields, each confirmed one to four times, and for 16 of those records the zero-offset part of the group is trivial, so the symmetry half of the statement has content for 35 records covering 20 fields.
How far the deterministic recipe reaches across the catalogue, and where it trips

Run the same construction across the whole catalogue, with no noise and no random numbers. It is admitted for 29 of the 51 entries with a nonzero offset, for 8 702 seconds of ordinary processor time and $0, against a strictly harder gate than the repository's own 204-job batch, which scored the same 29 for 9 309 core-seconds and $0.200731. Not the same 29: twenty-five overlap, four go each way, and 18 entries — mostly mirror groups — are found by neither. Three deductions belong in the same breath, because each shrinks the claim: the 29 are only 16 distinct orbits; the literal recipe reaches 15, the rest needing a best-of-five adaptive procedure, so the knob count went up where the method was advertised as knob-free; and all 29 clear the phase gate only after the site's export projection, raw single precision scoring 2.384e−07 against a limit of 2e−07.

A grid of twenty-nine square thumbnails on a dark background, each a different periodic pattern in orange on violet, labelled with a group identifier, an orbifold symbol and a period.
The periodic table of what a deterministic seed reaches: 29 of the 51 clockwork Brusselator entries, with no noise, no Ginzburg–Landau stage and no random numbers, for 8 702 seconds of ordinary processor time and no money at all — against the repository's own batch, which scored the same 29 for 9 309 core-seconds and $0.200731. Three honest deductions: it is not the same 29 (25 overlap, four each way, and 18 entries are found by neither); the 29 entries are only 16 distinct orbits; and the literal recipe alone reaches 15, while the 29 needed a five-stage adaptive procedure, so the knob count went up where the method was advertised as knob-free.

The most instructive number in that sweep is a rejection statistic. Of 302 attempts, 100 solved the shooting equation to 1e−8 or better and the audit rejected 71 of those — 68 by one gate, the contrast floor. The deterministic seed's default failure is the standing-wave branch: a perfectly valid solution of the equation whose pattern nearly coincides with its own half-period image, so the picture briefly goes blank and there is nothing to watch. Solving the equation and getting an animation worth watching are different achievements. The fix is a quadrature seed, ψ=e1+ie2\psi = e_1 + i e_2 from two independent stars of the same character; 14 of the 29 needed it, and it was found by trial.

Four small field images on the left, two nearly flat and two strongly patterned, each beside its image under a half-period operation. On the right, a contrast-against-time plot in which one curve stays flat and high while the other plunges below a dashed floor four times.
The default failure mode, anatomised on one entry. The deterministic recipe solves the shooting equation to 3e−13 and is still rejected, because the orbit it lands on nearly coincides with its own half-period image: minimum contrast 0.0022, against 0.518 for the published record and a floor of 0.05. Across the whole sweep, of 302 attempts 100 solved the equation to 1e−8 or better and the audit rejected 71 of them — 68 by this single gate.
Two rows. Each has a contrast-against-time plot on the left and a square field image on the right. The top row's contrast dips twice below a dashed floor line and its field is almost featureless; the bottom row's contrast is a flat line well above the floor and its field is a bright spotted pattern.
Solving the equation and getting an animation worth watching are different achievements. When the lowest character star is real, Newton converges to a standing wave: a perfectly valid solution whose contrast against its own shifted image drops to 0.0203, below the site's 5 % visibility floor, twice a period — so the picture briefly goes blank and the audit refuses it. When the star is complex the pattern travels, the contrast never falls below 0.4866, and the orbit is admitted. The fix is a quadrature seed built from two independent stars of the same character, which 14 of the 29 admitted entries needed.
Honest failures, in one list

The first thing a sceptic should attack, answered in advance: no symmetry is smuggled in anywhere. Only the τ=0\tau = 0 kernel is ever projected onto a state; every τ≠0\tau \ne 0 relation is an output. That was checked twice independently — the repository's own unprojected twisted residual on the browser's state reads 7.2e−16, and a double-precision movie from the delayed glue satisfies all nine space–time relations at 1.09e−09 with no projection applied. On the ring the τ=0\tau = 0 kernel is trivial, so there is nothing to project and the point is moot by construction.

What is still open
  1. Is the amplitude rule a theorem or a coincidence? The uniform limit-cycle amplitude lands inside the verified window at every bb tested, and nothing here proves it must. A normal-form estimate of the basin would settle it.
  2. Can the wrong-chirality claim be proved? Empirically the conjugate sign never reaches the catalogue generator's orbit, but the Newton unknowns are kernel-projected only, so nothing structurally forbids the iterates from leaving the sector.
  3. Why do 18 of 51 entries resist both routes? The theorem gives an exceptionless necessary condition and no cause. Its significance levels are uncorrected for having chosen the predicate after seeing which one worked, and one predicate with no theorem content at all scores nearly as well. The decisive experiment — run the solver on the missing entries and diagnose each failure — has not been done.
  4. Does the standing-wave trap have a principled fix? Is there a criterion that says in advance when the character star is real times a global phase, so the quadrature seed is mandatory rather than a fallback?
  5. Does the delayed glue generalise past order three? Mirrors and glides change the glue's structure, and the 18 entries neither route finds are mostly mirror groups. This is the most valuable next experiment on the list, and the most easily done.
  6. Is the 8.877× domain reduction real at scale? It is arithmetically exact and bitwise verified, but at 36 nodes across the array overhead eats it. It is a promise about larger meshes, untested there.
  7. What is the shell dial's reach? The second surviving shell produced a genuine unpublished 24-vortex orbit, confirmed independently by a second method. How many admissible orbits does each entry have, and does the shell index enumerate them?
Reproduce it

Everything on this page is in code/ next to it, with a README that explains what each script does and what to expect.

The scripts for the real problem deliberately do not re-implement the equations. They import the repository's own numerics through docs/scott-gray/research/equations/rdlab.py — its Laplacians, its Brusselator, its time stepper, its residual, its audit — because the point was to measure the published pipeline rather than a lookalike of it. Point them at a checkout with the AGF_REPO environment variable, or leave them where they are published and they find it by walking up the tree. Python 3.10 or later; no graphics processor, and no cost.

The two live demonstrations are equally readable: live/newton/ is the search in about 70 kB over the wire, and live/glue/ is the delayed glue, whose reduced right-hand side is checked against the full-torus one on every load and agrees bitwise. Each folder has its own README with the verified numbers.

Screenshot of a dark web page shown at desktop width beside a narrow phone-width thumbnail of the same page. Sections are numbered: the clockwork symbol, the field, the seed with a shell table, a residual plot with an iteration table, and a verification table of predicted and measured windings.
The whole construction as one page that runs in the browser: the symbol with the winding each centre forces, the shell table in which three projections read 0.00 and three read 0.58, the three-wave seed, the live residual, and a verification table re-checked centre by centre on the orbit the page has just computed. It reaches TT = 6.390159918584618 in 6 Newton iterations and 41 028 right-hand-side evaluations — 1.59 s at 1280 × 900 and 1.58 s at 390 × 844, so there is no mobile penalty. It is the real computation, not a lookalike: the ported arithmetic matches the reference implementation to double round-off, and the reference check of the twisted residual on the page's own unprojected state reads 7.2e−16, so no symmetry is smuggled into the trajectory.
Where this sits
The same orbit in monochrome. The structure that matters is the geometry of the zeros and the direction they turn, not the colour.