|
# Atomic Model
**Stable orbits emerge — no electron shells, no quantum numbers.**
Particles collide and merge into stable bound structures that persist for thousands of ticks. There are no electron shells, no principal quantum numbers, no Bohr radius — only leaf Frames making local greedy choices and the single-occupancy collision rule.
**Why this is impossible (classically):** Stable atomic orbits require quantized energy levels — continuous mechanics predicts spiral decay (the classical electron should radiate and crash into the nucleus). Here the bound structures stay stable because the discrete 1-pixel-per-tick rule and emergent momentum conservation forbid the spiral.
The experiment setup is **real, editable user code**: the module cell `./setups/atomic-model.js` is a thin adapter over the CANONICAL setup factory (`lib/frqtl/objects/setup/setupAtomicModel.js`, the SAME construction the standalone Gallery exhibit and any experiment page drive) — it builds the proton/atom frame hierarchy and the orbiting electron from `Frame`/`Charge`/`Rectangle`. The **canvas cell** below DECLARES that module (`setup="./setups/atomic-model.js#setupAtomicModel"`) plus its config; the shim synthesizes and runs the builder boilerplate. Nothing runs on load — click **Run** on the canvas (or **Run All**).
*New to FRQTL? Start with **Hello, FRQTL** (`getting-started-hello-frqtl`) for the `caps.frqtl` setup-module + declarative-canvas basics this notebook assumes.*
**Edit the physics:** open the `./setups/atomic-model.js` tab and pass an option override to the canonical factory — e.g. change the adapter's `Object.assign({ canvasRect: universe.universe_rect }, options)` call to `Object.assign({ canvasRect: universe.universe_rect, quarksPerProton: 12, includeElectron: false }, options)` — then re-Run. The emergent bound structure changes because you edited the construction, not a label.
|
/* setupAtomicModel — THIN ADAPTER over the canonical setup factory
* (WS gym-controls-as-sugar Bite 0: this cell used to hand-copy the physics —
* a divergent fork of lib/frqtl/objects/setup/setupAtomicModel.js that had
* already drifted onto a stale `universe.init(...)` positional-argument call the
* engine now FAIL-LOUDs on, and was missing the canonical wave-walk
* init option (`brownianMotion: false`). The canonical factory is imported by BARE SPECIFIER (a relative
* path here would 404 — see lib/shim/notebook/frqtl-setups-importmap.js); this
* cell only bridges the notebook builder's `(frqtl, universe, options)` call
* shape to the factory's `(universe, options)` shape — ZERO physics here. The
* canonical factory reads `options.canvasRect`, not `universe.universe_rect`
* directly, so this adapter supplies it explicitly (matching the factory's own
* documented two-cell example).
*/
import { setupAtomicModel as _setupAtomicModel } from '@frqtl/setups/atomic-model';
export function setupAtomicModel(frqtl, universe, options) {
options = options || {};
return _setupAtomicModel(universe, Object.assign({ canvasRect: universe.universe_rect }, options));
}
|
|
## What you are seeing
A dense central structure (the "nucleus") forms as particles merge, with lighter quanta settling into persistent surrounding orbits rather than collapsing inward. The stability is emergent — no force law holds the orbit together.
The simulation runs live in your browser on the compiled FRQTL (WASM) engine. The same canonical sugar objects (`Frame`, `Charge`, `Rectangle`) and `FrqtlApp` drive the standalone Gallery exhibit and this notebook cell — the difference is only that here the *assembly* is editable user code in the `./setups/atomic-model.js` tab, not an opaque system fetch.
|