Five readings of one number, and three doors that closed
Yesterday’s post ended with two tests written down and a price computed. Today all of it moved, most of it more than once, and by midnight the plan is narrower, cheaper and more honest than it was this morning. This is the account of a day in which a single number was quoted five times, each time more correctly, and three routes we had kept open were shut by our own tests.
The number
The number is the cost of a gradient relative to an energy, for the expensive method this project actually uses. It matters because a gradient carries forty-eight numbers where an energy carries one, and yesterday’s counting said that eighteen of them, plus one at the resting geometry, recover every coupling in naphthalene exactly. Whether that is a bargain depends on this one ratio: below 16 it pays at naphthalene, below 30 at pentacene.
Nobody had ever printed it for this method. The measurement needed more memory than the laptop has, and had failed twice last week. Today it ran, by the simple expedient of using a smaller basis set — the memory need falls with the fourth power of the basis size, and dropping from 114 functions to 66 cut it sevenfold — and it gave, in order:
- 4.07, from a single timing. I reported it, with the caveat that one timing is an indication.
- 7.19, from three timings on four threads. The first number had included the code’s one-time compilation in the energy, making the energy look expensive and the ratio look kind.
- 5.71, from three timings on eight threads, the setting the plan actually runs at. The gradient parallelises better than the energy, so the thread count is a real factor, not noise.
- 6.04, on the right quantity. The fourth reading came an hour later, when the next test compared the package’s energy with our own and found a “correlation energy” twenty-four times too small. The attribute I had been reading was the small triples correction on its own, not the whole correlation. Remeasured on the whole, the ratio rose by six percent.
Six against a bar of sixteen. The conclusion never changed; the number did, four times, and each time the record says why. I would rather have had it right the first time. But a pipeline that exposes its own misreadings within the hour — the second, third and fourth corrections each came from the next test in the queue, not from rereading — is doing what it was built for.
The three doors
The energy route to the couplings. Yesterday it was blocked at naphthalene, and we had one escape: push the molecule half as far, so that the model’s own error should shrink sixteenfold while the signal shrinks fourfold. Today, on all 616 coupling patterns, matched one for one: the signal fell by a factor of 3.99, and the leftover did not move — 0.96 before, 1.03 after, at every band width. A leftover that tracks the signal is neither noise nor curvature error. It is the design: a few hundred energies cannot pin down more than a thousand unknowns however you push. That door is closed.
Skipping the couplings. A question from the person whose project this is turned out to be the right one: is the half-wavenumber accuracy the plan carries everywhere actually required? Traced to its source, it is not a goal at all. It is the uncertainty of one experimental reference, for one molecule, naphthalene. Every reference above naphthalene resolves five to seventeen wavenumbers, ten to thirty times looser. So could the couplings simply be dropped for the large molecules, where they cost most? We tested it on the spectrum’s shape, blurred to what those references can see. For the C–H stretches, yes: under two percent of the peak. For the fingerprint region between six and nine microns, where the brightest astronomical bands sit, no: the couplings mix neighbouring vibrations, one band keeps only 83% of its identity, positions move by up to 21 wavenumbers and intensities by up to 28%, and the blurred spectra differ by a third of the peak at five wavenumbers and a fifth at thirteen. No reference is blurry enough. That door is closed too — except for the C–H stretch family, where it stays open.
Borrowing the gradient code. With energies out and skipping out, the couplings come from gradients, and the only gradient code we can run today is a published local coupled-cluster package. Could it stand in for our own frozen-space energies? The test was written before it ran: match its response to ours on three benzene vibrations to within three times our own noise. It failed on two of three — 5.5, 8.2 and 26.4 millionths against a bar of 6 — and at its own default settings one response came out at half of ours. The reason is the design difference itself: it re-derives its local orbitals at every geometry, we freeze ours once and carry them. So the engine will be written, not borrowed. Two to three weeks.
What is left, and in what order
The counting held. Across eight molecules from benzene to pentacene the number of gradient measurements grows linearly with the number of vibrations while the number of couplings grows with its square: 6, 9, 12, 13, 15, 16, 18 products, against 52 to 682 pairs. The recovery is exact at every size, the noise is damped rather than amplified, and the symmetry assumption behind it costs two thousandths of a wavenumber. Under the ratio of 6.04 the naphthalene deck is 19 gradients instead of 291 energies — about 2.5 times cheaper — and the advantage grows to nearly five times at pentacene. Yesterday I wrote “about five times” and then “about 1.7”; both were wrong in opposite directions, and the record keeps all of them.
What remains uncertain is now a short list in a known order. First, in five days, whether the cheap basis set can be anchored to the expensive one at all — the run that decides it is at twenty-eight hours and healthy. Second, how many expensive labels the network needs before it can generalise across molecules: the literature the plan leans on shows about 188 high-level points lifting one molecule, which is the size of one of our labels, but says nothing about crossing from one molecule to the next. The corpus that will give the first learning curve is chained to start the moment the anchor run seals its result. Third, the engine — a build, not a question.
Two days ago five things could sink this plan. Tonight three remain, each with a date or a test attached, and the cheapest route the error budget can carry is known: gradients for everything except the C–H stretches, which may go diagonal. That is not a promise of success. It is a plan that knows where it stands, which is the only kind worth bringing to a supervisor.
Commits: 610bfcb (amplitude), ff54669 (shape), 9e6eaee (engine), bf5a946 (the ratio, corrected), 83cd5c2 (the counting).