Low-energy real-root scattering windows¶
Biquadratic/TL family · Supported models · Ferromagnetic overview · Bound pairs · Three-defect droplets
The bound branches are only part of the excitation structure. Two singlet defects can also scatter rather than bind; three can scatter independently, or form a pair plus a separate defect. The positive finite-real-root family describes the unbound branch. A separate pair-plus-real-root library API uses the complex-string equations; it is not included in the real-root CLI scan.
The existing --excitations scan handles the full supported real family.
For a few defects on a long chain, the number of label combinations can be
large even though each Bethe solve is small. --real-window WIDTH restricts
that same scan to high labels, near the ferromagnetic low-energy edge:
# Two defects: ell=N-4. Scan choose(8,2)=28 candidates; retain the first ten.
bethe-biquadratic-obc 128 --ferromagnetic --through-lines 124 \
--excitations 10 --real-window 8
# Odd chain, every combination in the selected window:
bethe-biquadratic-obc 129 --ferromagnetic --through-lines 125 \
--excitations all --real-window 8 --roots
# Three unbound defects: ell=N-6; choose(6,3)=20 candidates.
bethe-biquadratic-obc 100000 --ferromagnetic --through-lines 99994 \
--excitations all --real-window 6 --precision long-double \
--json scattering.json --csv scattering.csv
The exact definition is
--through-lines must have the same parity as N. Without it, ferro scans
still default to the one-defect module ell=N-2. The window option requires
--ferromagnetic --excitations COUNT|all; it is not a new Hamiltonian or
solver. Without --real-window, the full real-family scan is unchanged.
WIDTH=N-M reproduces that full scan. Explicit --quantum-numbers and
ferro real scans now support odd and even chains; AF ground/sector helpers
and Q-system searches retain their even-chain restriction.
What ordering and all mean¶
Every candidate in the window is solved before retaining the lowest COUNT
converged levels. all means all real-root combinations in that window,
not all physical excitations, not all real-root states of the module unless
the window spans the full label range, and not a count of bound-string modes.
The row metadata reports the first/last allowed I, width, candidate count
and convergence count. A converged window is not a certificate that the
lowest COUNT states outside it have been excluded.
Increase WIDTH and compare overlapping levels to check window coverage.
--max-candidates (default 10000) checks choose(WIDTH,M) before allocating
roots or solving a state. At fixed M and WIDTH, the number of solves does
not grow with N. Each Newton update uses O(M^2) storage and O(M^3) work.
For N=128, M=2, the first three returned gaps with WIDTH=6 are
| Integer labels | E-E0 |
|---|---|
| 125,126 | 2.003157340076926308... |
| 124,126 | 2.006312443850519769... |
| 124,125 | 2.008205709376788139... |
The low unbound two-defect branch approaches 2, whereas the bound-pair edge approaches 5/3. Three unbound defects approach 3, while the three-defect droplet approaches 2. The pair-plus-one-defect scattering threshold is 8/3; its finite-size mixed-string states are not supplied by a purely real-root scan. These comparisons refer to TL singlet insertions, not physical spin flips. Neither these labels nor the OBC rapidities are physical lattice momentum, and no operator spectral weights are inferred.
Direct gaps, shared equations¶
The shared quantum-group XXZ solver uses the same logarithmic equations described in the TL guide, equivalently Bajnok et al., Eq. (5.12). Nothing in those equations requires even N for a selected admissible real state. The odd-chain extension is checked against the original complex equations and independent highest-weight-module ED, not inferred solely by removing an input check.
At Delta=3/2, in the existing angle coordinate x, evaluate directly
This keeps small gaps and their ordering independent of the extensive total-energy offset. For instance, the four lowest one-defect levels at N=100000000 have distinct fp64 gaps even though their total energies round to the same value. Sorting total energies would incorrectly break these ties by labels. The common combination scanner now accepts an energy projection; other models keep their existing default, while ferro uses the direct shift. The generic TL adapter also uses that shift rather than subtracting extensive XXZ energies.
The root solver, bounded-combination enumeration, heap selection, TL mapping, and all state/root/export tables are reused. There is no separate scattering Newton implementation. Native and explicit MPFR arithmetic use the same path; see biquadratic precision controls. Roots that cannot be resolved as distinct interior points at the selected precision are rejected, rather than reported as converged endpoint states.
Diagnostics and library use¶
Failed candidates are excluded from the ranked list, counted, and represented
by an example in failed; the process exits with status 2. An all-failed
window can have an empty states table but still a valid exact ground
reference. Tables and JSON/CSV/TSV exports use the existing shared
output contract, including state_id links to roots and labels.
#include <bethe/biquadratic_ferromagnetic.hpp>
auto scan = bethe::biquadratic::ferromagnetic::real_excitations_window<long double>(
129, 125, 8, {.count=10, .max_candidates=10000});
if (scan.converged()) {
// Sorted only within the selected window; not the full module.
auto gap = scan.levels.front().gap;
}
Validation checks full/windowed agreement, direct native-precision gaps, original complex equations, and every odd-chain real family through N=9 against module ED. For N=4,...,10, the union of the full two-real-root family and the targeted bound-pair family reproduces the entire two-defect module, eigenvalue by eigenvalue. This finite validation is not a proof of arbitrary-N Bethe completeness. Three defects also need the mixed pair-plus-defect family; including it reproduces the complete three-defect module in tests for N=6,...,10.