Massive XXZ two-spinon spectral intensity¶
XXZ family · Spinon dispersion · Output and files
bethe-xxz-structure-factor-thermo calculates the zero-temperature, zero-field
transverse two-spinon contribution for the infinite antiferromagnetic XXZ
chain with \(\Delta\gt 1\). It adds operator-dependent intensity to the continuum
kinematics supplied by bethe-xxz-dispersion.
The result is unbroadened and keeps its physical normalization. Four and higher spinons are omitted; the two-spinon result is never rescaled to exhaust a sum rule. The longitudinal response is a different calculation at finite anisotropy.
Calculate a cut or grid¶
bethe-xxz-structure-factor-thermo --delta 1.5 --momentum 1.5 --omega 2
bethe-xxz-structure-factor-thermo --delta 1.5 --momentum 1.5 --points 501 --csv cut.csv
bethe-xxz-structure-factor-thermo --delta 2 --momentum-points 129 --points 501 --threads 4 --json grid.json
bethe-xxz-structure-factor-thermo --delta 1.5 --momentum 1.5 --points 501 --tsv-table continuum=bounds.tsv
bethe-xxz-structure-factor-thermo --references
The first command gives approximately 4.15974928658 for the spectral density.
Momenta are in radians per site, in [0,2π]. --momentum requests a single
momentum; otherwise --momentum-points samples the full interval, including both
periodic endpoints. Count that seam once when integrating or plotting a periodic
grid. Frequencies are excitation energies above the ground state.
--omega requests one frequency. Otherwise --points, --omega-min and
--omega-max define a uniform frequency grid; the default upper endpoint is
twice the maximum single-spinon energy. A rectangular grid has at most one
million points. Uniform grids are useful for plots, but endpoint-aware quadrature
is preferable for integrated sum rules.
The frontend declares two tables:
| Table | Columns and purpose |
|---|---|
spectrum (primary) |
k, omega, density, estimated_error, evaluations, status |
continuum |
k, sheet, present, lower, upper; the two spectral sheets separately |
--csv-table continuum=FILE writes those bounds independently of the screen
selection. Unknown table names are errors. JSON/CSV/TSV, metadata, streaming,
--no-retain, overwrite protection and screen selection follow the
common output contract. --threads uses the shared scheduler for
bounded, ordered blocks of independent points; it does not change their weights.
The caller collects rows in momentum-major order. CPU time covers the spectral
grid and ordered row output.
Momentum, channel and normalization¶
The response is \(S^{-+}_2(k,\omega)\), with the raising operator on the ground state. In finite-volume notation before taking the thermodynamic limit,
The density column is S itself, so frequency integrals use \(d\omega/(2\pi)\). The complete transverse response, averaged over a full Brillouin zone, has zeroth moment 1/2. The two-spinon part is smaller:
The massive-chain expression uses the translation-symmetric average of the two Néel vacua. Its physical momentum is \(k=\pi-Q\) relative to the convention in Caux–Mossel–Pérez Castillo. Both spectral sheets contribute with unequal weights. Folding their energy supports into a two-site Brillouin zone does not make the spectral intensity π-periodic. The implementation retains the full physical momentum convention.
Only in the isotropic limit does SU(2) relate this transverse response to the XXX longitudinal two-spinon result by a factor of two. Do not apply that conversion at general Δ. Exchange scaling is \(S_J(k,\omega)=S_1(k,\omega/J)/J\).
Numerical status and precision¶
| Status | Meaning |
|---|---|
converged |
Interior density and an estimated numerical error are available |
outside_continuum |
Exactly zero contribution from both sheets at the supplied point |
threshold |
The supplied frequency equals a sheet endpoint at working precision; density and error are absent |
numerical_failure |
Budget or arithmetic resolution is insufficient; density and error are absent |
An exact endpoint is not assigned a finite value, even when a one-sided limit
exists. An internal sheet endpoint also receives threshold: the other sheet
may be regular there, but the complete point value is deliberately left absent.
Thresholds and outside-support points are valid output statuses. Numerical
failures retain their rows and make the frontend exit with status 2.
Native fp64, long-double and configured fp128 are supported. With MPFR,
--precision bits-N or digits-N constructs all continuous inputs at the
requested precision; no ambient precision is changed. MPLAPACK is not needed
for this scalar kernel. For example:
bethe-xxz-structure-factor-thermo --delta 1.001 --momentum 1.5 --omega 1.8 --precision bits-160
--tolerance controls the log-kernel series tail, with a default of 4096
machine epsilons and a minimum of 64 epsilons. --max-terms bounds that series
separately for each contributing sheet. Neither is a promise of a relative
error in the final density. The exported error combines its tail estimate with
an arithmetic-conditioning estimate; it is not a rigorous enclosure, an input
uncertainty estimate, or an estimate of omitted spinon sectors.
Near an edge, subtraction in the inverse dispersion amplifies roundoff. Near Δ=1, the mass becomes exponentially small. Use more precision when those scales matter. An unrepresentable mass or bandwidth is rejected during preparation; unresolved interior arithmetic is not silently turned into zero density.
C++ interface¶
#include <bethe/xxz_thermodynamic_structure_factor.hpp>
bethe::xxz::ThermodynamicTwoSpinonStructureFactor<double> spectrum(1.5);
auto point = spectrum(1.5, 2.0);
auto sheets = spectrum.sheets(1.5);
if (point.value) {
// Use *point.value, with *point.error and point.status.
}
The immutable preparation can be shared among independent queries. For MPFR,
construct Δ, finite exchange and query coordinates at the same explicit
precision. The default exact exchange 1 is accepted. Optional controls use
TwoSpinonStructureFactorOptions<uni20::mpreal>(precision) and a tolerance at
that precision. converged() on a returned point means there was no numerical
failure; inspect value as well, because a threshold deliberately has none.
The observable-grid API composes queries with Async and
waits on the final result; no scheduler-wide drain is required.
Implementation and independent checks¶
The spectral sheets and weights follow published Eqs. (44), (51), (56) of Caux–Mossel–Pérez Castillo (2008). The implementation rationalizes cancelling Jacobian factors, inverts the elliptic map with a restricted Carlson RF helper, and uses Uni20's scaled theta constants/jets. It sums the nondecaying harmonic part of the transition kernel analytically and bounds the remaining geometrically decaying series tail.
At a sheet's closing momentum its width vanishes quadratically. Independently rounding the upper and lower bounds can invert that narrow interval. On the branch with lower angular bound \(\ell=(1+k')sc\), the code instead uses \(u=\sqrt{\ell^2+(s^2-k'c^2)^2}\), where \(s^2+c^2=1\) and \(k'\) is the single-spinon gap divided by its maximum energy. Both bounds are then scaled by twice that maximum energy. This keeps the interval ordered; a width below the chosen precision may round to zero. Increase precision to resolve it.
The standalone scripts/reference_xxz_two_spinon.py provides a direct mpmath
elliptic/theta implementation and a separate original q-product vertex route
from Abada–Bougourzi–Si-Lakhal,
Eqs. (2.6)–(2.7) restricted to two spinons. The latter searches momentum roots
and computes the Jacobian directly. Its mesh is an interior-point control,
not a general threshold root finder. A NumPy integral over the complete
spectral-angle domain checks the two-vacuum measure before resolving k and ω.
It is restricted to Δ≥1.2 and has explicit product/grid controls.
With mpmath and NumPy installed, run from the source directory:
python3 scripts/reference_xxz_two_spinon.py --delta 1.5 --momentum 1.5 --omega 2 --digits 120
python3 -m unittest discover -s scripts -p test_reference_xxz_two_spinon.py -v
Regression tests include independent point values, near-edge references down to relative offsets of 10^-24 in wider arithmetic, both sheets, exchange and momentum symmetries, explicit failures, and MPFR precision ownership. Integrated checks compare the resolved density against the original vertex measure, approach the independent XXX result from Δ>1, and test saturation towards the Ising limit. These controls do not certify arbitrary points or replace the reported numerical diagnostics. Validation provenance records the tested configurations and source correspondence.