Heisenberg1D — Spin-1/2 AFM Heisenberg Chain

Status: Unstable (v0.18.x)

Heisenberg1D is a thin delegator over XXZ1D with $\Delta = 1$. The struct itself carries no fields; the exchange coupling $J$ is passed as a kwarg at fetch time. Method signatures may change in v0.19. There is also a known wrinkle in the ITensorModels.to_qatlas(::Heisenberg1D) bridge where $J$ can be lost in conversion — for non-unit $J$ prefer XXZ1D(; J, Δ=1.0) directly.

Hamiltonian

\[H = J \sum_{i} \mathbf{S}_i \cdot \mathbf{S}_{i+1}, \qquad \mathbf{S}_i = \tfrac{1}{2}\boldsymbol{\sigma}_i, \qquad J > 0\ \text{(antiferromagnetic)}.\]

The chain is gapless; the low-energy theory is a $c = 1$ Luttinger liquid (free compactified boson). The ground state is a singlet ($S_\text{tot} = 0$) for any finite even $N$ with AFM coupling.

Status: thin delegator over XXZ1D(Δ = 1)

Every OBC observable on Heisenberg1D is implemented by forwarding to XXZ1D(Δ=1.0, J=J):

QAtlas.fetch(Heisenberg1D(), Energy(), OBC(6); beta=1.0, J=1.5)
# == QAtlas.fetch(XXZ1D(J=1.5, Δ=1.0), Energy(), OBC(6); beta=1.0)

For $J = 1$ the kwarg can be omitted (default 1.0).

Coverage Matrix

All OBC rows delegate to XXZ1D(Δ=1) dense-ED ($N \le 12$). The infinite-chain ground-state energy density is the original Hulthén value.

QuantityOBCInfinite
Energy / FreeEnergy / ThermalEntropy / SpecificHeatvia XXZ1D
MagnetizationX / Y / Z (+ …Local)via XXZ1D
SusceptibilityXX / YY / ZZvia XXZ1D
XXCorrelation / YY / ZZ (:static, :connected)via XXZ1D
VonNeumannEntropy / RenyiEntropyvia XXZ1D
MassGapvia XXZ1D ED gap$0$ (gapless Luttinger)
CentralCharge$1$ (free boson)
GroundStateEnergyDensity$J(1/4 - \ln 2)$ (Hulthén 1938)
ExactSpectrum$N = 2$ OBC dimer + $N = 4$ PBC ring

The closed-form $N = 2$ dimer and $N = 4$ ring spectra are exposed through ExactSpectrum and used as harness anchors.

SU(2) Symmetry Identities

is_su2_symmetric(::Heisenberg1D) === true, so the SU(2) row of SYMMETRY_IDENTITIES (PR #133) is automatically applied by the test harness. The identities checked numerically are

\[\chi_{xx} = \chi_{yy} = \chi_{zz}, \qquad m_\alpha = 0\ \ (\alpha \in \{x, y, z\}).\]

These hold to ED precision because the dense-ED kernel diagonalises the full SU(2)-symmetric Hamiltonian without breaking the rotation.

Quick-look code

using QAtlas

m = Heisenberg1D()
β = 1.0
N = 6

QAtlas.fetch(m, Energy(),                OBC(N); beta=β, J=1.0)
QAtlas.fetch(m, SpecificHeat(),          OBC(N); beta=β, J=1.0)
QAtlas.fetch(m, MassGap(),               OBC(N);          J=1.0)
QAtlas.fetch(m, MassGap(),               Infinite();      J=1.0)   # 0
QAtlas.fetch(m, GroundStateEnergyDensity(), Infinite();   J=1.0)   # J(1/4 - ln 2)

# Closed-form spectra (used as test anchors)
QAtlas.fetch(m, ExactSpectrum(); N=2, J=1.0, bc=:OBC)   # dimer
QAtlas.fetch(m, ExactSpectrum(); N=4, J=1.0, bc=:PBC)   # 4-site ring

Closed-form anchors

Dimer ($N = 2$, OBC)

The two-site Hilbert space splits into a singlet and a triplet:

\[\text{Spec}(H) = \left\{-\tfrac{3J}{4},\; \tfrac{J}{4},\; \tfrac{J}{4},\; \tfrac{J}{4}\right\}\]

Singlet–triplet gap $\Delta = J$; full derivation in Heisenberg dimer: singlet–triplet.

4-site PBC ring

The 16-dimensional spectrum decomposes into a unique singlet ground state at $E_0 = -2J$, a triplet at $-J$, mixed states at $0$, and a quintet at $+J$. Used as a finite-size cross-check against the Bethe ansatz.

Thermodynamic-limit ground-state energy

\[e_0 = J\!\left(\tfrac{1}{4} - \ln 2\right) \approx -0.4431\,J\]

Full Bethe-ansatz derivation in Bethe ansatz: Heisenberg $e_0$.

References

  • H. Bethe, Z. Physik 71, 205 (1931) — original Bethe ansatz.
  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938) — $e_0 = J(1/4 - \ln 2)$.
  • A. Auerbach, Interacting Electrons and Quantum Magnetism (Springer, 1994).
  • T. Giamarchi, Quantum Physics in One Dimension (Oxford, 2004), Ch. 6.
  • XXZ1D — anisotropic generalisation; Heisenberg lives at $\Delta = 1$.
  • S1Heisenberg1D — spin-1 cousin in the Haldane phase (gapped, topologically non-trivial).
  • TFIM$c = 1/2$ Ising critical line for contrast.

<!– ATLAS:HUBS:START – auto-generated by docs/atlas/generate.jl. Do not edit by hand; edits between these markers are overwritten on next regen. –>

Verified hubs

In the Verified Atlas, these 5 models register 57 hubs (quantity / BC pair). The badge column shows the R1 assurance level; click a hub link to see the exact verify(...) calls, references, and corroboration mechanism.

ModelQuantityBCAssuranceCards
DMIHeisenberg1DEnergyInfinite🟢 corroborated-at-p6
Heisenberg1DConformalTowerPBC🟠 uncorroborated-but-feasible0
Heisenberg1DEnergyOBC🟢 corroborated-at-p42
Heisenberg1DEnergyLocalOBC🟠 uncorroborated-but-feasible0
Heisenberg1DFreeEnergyInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DFreeEnergyOBC🟢 corroborated-at-p36
Heisenberg1DGroundStateEnergyDensityInfinite🟢 corroborated-at-p6
Heisenberg1DLuttingerParameterInfinite🔵 coherent2
Heisenberg1DMagnetizationXOBC🔵 coherent18
Heisenberg1DMagnetizationXLocalOBC🟠 uncorroborated-but-feasible0
Heisenberg1DMagnetizationYOBC🔵 coherent18
Heisenberg1DMagnetizationYLocalOBC🟠 uncorroborated-but-feasible0
Heisenberg1DMagnetizationZOBC🔵 coherent18
Heisenberg1DMagnetizationZLocalOBC🟠 uncorroborated-but-feasible0
Heisenberg1DMassGapInfinite🟢 corroborated-at-p1
Heisenberg1DMassGapOBC🟢 corroborated-at-p9
Heisenberg1DRenyiEntropyInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DRenyiEntropyOBC🟢 corroborated-at-p72
Heisenberg1DSpecificHeatInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DSpecificHeatOBC🟢 corroborated-at-p45
Heisenberg1DSusceptibilityXXOBC🟢 corroborated-at-p9
Heisenberg1DSusceptibilityYYOBC🟢 corroborated-at-p9
Heisenberg1DSusceptibilityZZOBC🟢 corroborated-at-p9
Heisenberg1DThermalEntropyInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DThermalEntropyOBC🟢 corroborated-at-p45
Heisenberg1DUniversalityClassInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DVonNeumannEntropyInfinite🟠 uncorroborated-but-feasible0
Heisenberg1DVonNeumannEntropyOBC🟢 corroborated-at-p36
Heisenberg1DZZStructureFactorInfinite🟢 corroborated-at-p2
HeisenbergXYZCorrelationLengthInfinite🟠 uncorroborated-but-feasible0
HeisenbergXYZEnergyInfinite🟢 corroborated-at-p3
HeisenbergXYZGroundStateEnergyDensityInfinite🟠 uncorroborated-but-feasible0
HeisenbergXYZLuttingerParameterInfinite🔵 coherent1
HeisenbergXYZMassGapInfinite🟠 uncorroborated-but-feasible0
HeisenbergXYZSpontaneousMagnetizationInfinite🟠 uncorroborated-but-feasible0
J1J2Heisenberg1DEnergyInfinite🟢 corroborated-at-p6
S1Heisenberg1DEnergyInfinite🟢 corroborated-at-p3
S1Heisenberg1DEnergyOBC🟢 corroborated-at-p29
S1Heisenberg1DEnergyLocalOBC🟠 uncorroborated-but-feasible0
S1Heisenberg1DFreeEnergyOBC🟢 corroborated-at-p36
S1Heisenberg1DMagnetizationXOBC🔵 coherent24
S1Heisenberg1DMagnetizationXLocalOBC🟠 uncorroborated-but-feasible0
S1Heisenberg1DMagnetizationYOBC🔵 coherent24
S1Heisenberg1DMagnetizationZOBC🔵 coherent24
S1Heisenberg1DMagnetizationZLocalOBC🟠 uncorroborated-but-feasible0
S1Heisenberg1DMassGapInfinite⚪ cited-only2
S1Heisenberg1DMassGapOBC🟠 uncorroborated-but-feasible0
S1Heisenberg1DRenyiEntropyOBC🟢 corroborated-at-p54
S1Heisenberg1DSpecificHeatOBC🟢 corroborated-at-p36
S1Heisenberg1DSusceptibilityXXOBC🟢 corroborated-at-p6
S1Heisenberg1DSusceptibilityYYOBC🟢 corroborated-at-p6
S1Heisenberg1DSusceptibilityZZOBC🟢 corroborated-at-p6
S1Heisenberg1DThermalEntropyOBC🟢 corroborated-at-p45
S1Heisenberg1DVonNeumannEntropyOBC🟢 corroborated-at-p27
S1Heisenberg1DXXCorrelationOBC🟢 corroborated-at-p36
S1Heisenberg1DYYCorrelationOBC🟢 corroborated-at-p36
S1Heisenberg1DZZCorrelationOBC🟢 corroborated-at-p36

<!– ATLAS:HUBS:END –>


<!– ATLAS:DOCS:START – auto-generated by docs/atlas/generate.jl. Do not edit by hand; edits between these markers are overwritten on next regen. –>

API

Every fetch(::Model, …) method registered for these models — together with the model struct(s) and exported helpers — generated directly from the source (in lock-step with @register):

QAtlas.DMIHeisenberg1DType
DMIHeisenberg1D(; J::Real = 1.0, D::Real = 0.0) <: AbstractQAtlasModel

Spin-½ Heisenberg chain with Dzyaloshinskii-Moriya interaction along ẑ:

H = J Σ_i Sᵢ · Sᵢ₊₁ + D Σ_i (Sᵢˣ Sᵢ₊₁ʸ − Sᵢʸ Sᵢ₊₁ˣ),    J > 0,  D ∈ ℝ.

Phase 1 implements only the closed-form D = 0 point (pure Heisenberg), delegating to Heisenberg1D. Generic D ≠ 0 introduces a spiral ground state via a gauge mapping to a twisted XXZ chain (Affleck- Oshikawa 1999); closed-form energy is technically Bethe-ansatz-tractable on the gauged model but is deferred to Phase 2, raising DomainError from fetch(..., Energy{:per_site}(), Infinite()).

The default constructor DMIHeisenberg1D() lands on J = 1, D = 0 — the Bethe-Hulthén point, the only Phase-1 closed-form case.

Fields

  • J::Float64 — Heisenberg exchange (J > 0 antiferromagnetic).
  • D::Float64 — DM coupling along ẑ (any real).

References

  • H. Bethe, Z. Physik 71, 205 (1931).
  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938).
  • I. E. Dzyaloshinskii, J. Phys. Chem. Solids 4, 241 (1958).
  • T. Moriya, Phys. Rev. 120, 91 (1960).
  • I. Affleck, M. Oshikawa, Phys. Rev. B 60, 1038 (1999).
source
QAtlas.fetchMethod
fetch(::DMIHeisenberg1D, ::Energy{:per_site}, ::Infinite;
      J=m.J, D=m.D) -> Float64

Ground-state energy density of the spin-½ Heisenberg-DM chain in the thermodynamic limit. Phase 1 supports only the closed-form D = 0 point:

  • D = 0 → Bethe-Hulthén: E/N = J · (1/4 − ln 2). Delegates to fetch(Heisenberg1D(), GroundStateEnergyDensity(), Infinite(); J=J).

  • D ≠ 0DomainError: spiral order via gauge rotation to twisted XXZ (Affleck-Oshikawa 1999); closed-form Bethe-ansatz energy technically available but deferred to Phase 2.

Floating-point tolerance for the D = 0 match is atol = 1e-12.

Note on delegation: Heisenberg1D currently exposes its thermodynamic- limit energy density via the legacy GroundStateEnergyDensity quantity, not the modern Energy{:per_site} axis. This wrapper bridges to the modern axis on the public surface while keeping the closed-form constant single-source-of-truth in the Heisenberg1D delegate.

References

  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938) — Bethe-Hulthén ground-state energy density.
  • I. E. Dzyaloshinskii, J. Phys. Chem. Solids 4, 241 (1958).
  • T. Moriya, Phys. Rev. 120, 91 (1960).
  • I. Affleck, M. Oshikawa, Phys. Rev. B 60, 1038 (1999) — spiral / twisted-XXZ mapping (deferred to Phase 2).
source
QAtlas.Heisenberg1DType
Heisenberg1D

Dispatch tag for the spin-1/2 antiferromagnetic Heisenberg model on a 1D chain (or more generally any finite spin-1/2 cluster). Hamiltonian:

H = J Σ_{⟨i,j⟩} S_i · S_j,   spin-1/2, J > 0 antiferromagnetic
source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::Energy{:total}, ::OBC; beta, J=1.0) -> Float64

Total thermal energy ⟨H⟩_β for the spin-½ antiferromagnetic Heisenberg OBC chain at finite N (the isotropic point Δ = 1 of XXZ1D). Routes through fetch(::XXZ1D, ::Energy{:total}, ::OBC).

Since Heisenberg1D currently carries no J field, callers must pass J as a kwarg (default J = 1.0). Downstream bridges (e.g. ITensorModels to_qatlas(::Heisenberg1D)) lose J on conversion; use XXZ1D(; J, Δ=1) directly if you need a non-unit coupling.

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::ExactSpectrum; N, J=1.0) -> Vector{Float64}

Return the sorted exact spectrum of the spin-1/2 Heisenberg Hamiltonian on an N-site chain or ring with boundary condition bc.

Supported cases

  • N=2, bc=:OBC (dimer): [-3J/4, J/4, J/4, J/4] (singlet Es = -3J/4, triplet Et = J/4, three-fold degenerate).
  • N=4, bc=:PBC (4-site ring): [-2J, -J×3, 0×7, +J×5] Ground state E₀ = -2J (unique singlet). The ferromagnetic quintet sits at E = +J. The full degeneracy structure is: 1 singlet + 1 triplet + (1 singlet + 2 triplets at E=0) + 1 quintet.

Arguments

  • N::Int: number of spin-1/2 sites
  • J::Real: Heisenberg coupling constant (default 1.0; J > 0 AFM)
  • bc::Symbol: boundary condition, :OBC (default) or :PBC

References

A. Auerbach, "Interacting Electrons and Quantum Magnetism" (1994), §2.
H. Bethe, Z. Physik 71, 205 (1931).
source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::GroundStateEnergyDensity, ::Infinite; J=1.0) -> Float64

BC-explicit dispatch sister of the legacy fetch(::Heisenberg1D, ::GroundStateEnergyDensity; J=1.0) method. The thermodynamic-limit ground-state energy density is only meaningful at Infinite, so the two methods return the same Hulthén value e₀ = J(1/4 - ln 2). Provided so which(fetch, ::Heisenberg1D, ::GroundStateEnergyDensity, ::Infinite) resolves and the registry drift guard passes.

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::GroundStateEnergyDensity; J=1.0) -> Float64

Exact ground-state energy per site of the spin-1/2 antiferromagnetic Heisenberg chain in the thermodynamic limit (N → ∞, PBC):

e₀ = J (1/4 − ln 2) ≈ −0.4431 J

This is one of the earliest and most celebrated results of the Bethe ansatz. The derivation proceeds by solving the Bethe equations for the ground state of

H = J Σᵢ Sᵢ · Sᵢ₊₁

in the limit N → ∞, yielding a linear integral equation for the rapidity distribution whose solution gives the energy via integration.

Finite-size corrections

For a PBC chain of N sites, the ground-state energy density approaches e₀ with corrections of order 1/N² (logarithmic corrections also present):

E₀(N)/N = e₀ + O(1/N²)

See test/verification/test_universality_cross_check.jl for a finite-size extrapolation verification using ED at N = 4, 6, 8.

Arguments

  • J::Real: Heisenberg coupling constant (default 1.0; J > 0 AFM)

References

H. Bethe, "Zur Theorie der Metalle. I. Eigenwerte und Eigenfunktionen
  der linearen Atomkette", Z. Physik 71, 205–226 (1931) — original
  Bethe ansatz solution.
L. Hulthén, "Über das Austauschproblem eines Kristalles",
  Ark. Mat. Astron. Fys. 26A, No. 11, 1–106 (1938) — first
  evaluation of e₀ = 1/4 − ln 2 from the Bethe equations.
source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::LuttingerParameter, ::Infinite; J=1.0) -> Float64

Luttinger-liquid parameter K = 1/2 of the spin-½ Heisenberg antiferromagnetic chain at the SU(2)-symmetric point — the exact Luther–Peschel 1975 / Affleck 1989 result.

This is the Δ → 1 limit of the XXZ Luttinger parameter K_XXZ(Δ) = π / (2 arccos(−Δ)) (Haldane 1980); delegated to XXZ1D(Δ=1.0).

References

  • A. Luther, I. Peschel, Phys. Rev. B 12, 3908 (1975).
  • I. Affleck, J. Phys. A 22, 1003 (1989).
  • F. D. M. Haldane, Phys. Rev. Lett. 45, 1358 (1980).
source
QAtlas.fetchMethod
fetch(m::Heisenberg1D, ::EntanglementGrowthSlope, ::Infinite;
      beta_eff::Real, kwargs...) -> Float64

Calabrese-Cardy 2005 linear-growth slope of post-quench half-system entanglement entropy for the gapless Heisenberg chain (c = 1, v = pi J / 2):

dS_A / dt = pi c v / (3 beta_eff) = pi^2 J / (6 beta_eff).

Delegates to Universality(:Heisenberg).

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::EntanglementSaturationDensity, ::Infinite;
      beta_eff::Real, kwargs...) -> Float64

Long-time post-quench saturation of half-system entanglement entropy per unit length, delegated to Universality(:Heisenberg):

S_A(infty) / L = pi / (6 beta_eff).
source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::FreeEnergy, ::Infinite; beta, J=1.0)

Per-site free energy of the infinite spin-1/2 Heisenberg AF chain via leading-order c = 1 CFT. Returns e₀ - π T² / (6 v_s) for β > 5/J; otherwise NaN + warn. β ≤ 0 raises DomainError.

source
QAtlas.fetchMethod
fetch(m::Heisenberg1D, ::LiebRobinsonVelocity, ::Infinite;
      J = m.J, kwargs...) -> Float64

Maximum group velocity of the des Cloizeaux-Pearson spinon dispersion of the spin-1/2 Heisenberg chain. With epsilon(k) = (pi/2) |J sin k| the spinon velocity is

v_s = pi J / 2,

attained at k = 0 and k = pi. This is the standard CC quasi-particle velocity that enters the entanglement-spreading formulas.

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::LogarithmicNegativity, ::Infinite;
      ℓ_A::Real, ℓ_B::Real, kwargs...) -> Float64

Calabrese-Cardy-Tonni 2012 logarithmic negativity of two adjacent intervals, delegated to Universality(:Heisenberg):

E = (1/4) log[ℓ_A * ℓ_B / (ℓ_A + ℓ_B)].
source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::MutualInformation, ::Infinite;
      ℓ_A::Real, ℓ_B::Real, beta::Real=Inf, kwargs...) -> Float64

Calabrese-Cardy mutual information of two adjacent intervals, delegated to Universality(:Heisenberg) (c = 1). The chain is gapless SU(2)-invariant Luttinger liquid, so the Universality formula applies directly.

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::SpecificHeat, ::Infinite; beta, J=1.0)

Per-site heat capacity via leading-order c = 1 CFT: c_v = π T / (3 v_s) = 2T / (3J).

source
QAtlas.fetchMethod
fetch(::Heisenberg1D, ::ThermalEntropy, ::Infinite; beta, J=1.0)

Per-site entropy via leading-order c = 1 CFT: s = π T / (3 v_s) = 2T / (3J).

source
QAtlas.S1Heisenberg1DType
S1Heisenberg1D(; J::Real = 1.0) <: AbstractQAtlasModel

Spin-1 antiferromagnetic Heisenberg chain (Haldane chain),

H = J Σᵢ Sᵢ · Sᵢ₊₁,    spin = 1,  J > 0 antiferromagnetic.

Distinct from Heisenberg1D (spin-1/2) because the spin representation differs: spin-1 has local dimension 3 and a gapped, topologically non-trivial Haldane phase, while spin-1/2 is gapless and critical (Bethe ansatz).

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::Energy{:total}, ::OBC; beta) -> Float64

Total thermal energy ⟨H⟩_β of the spin-1 OBC Heisenberg chain at finite N ≤ 8, computed by dense ED.

    ⟨H⟩_β = Tr(H exp(-βH)) / Tr(exp(-βH))

Convention matches fetch(::TFIM, ::Energy{:total}, ::OBC): 1D finite-size boundary conditions return total energy natively.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::FreeEnergy, ::OBC; beta) -> Float64

Per-site Helmholtz free energy f(β) = -log Z / (Nβ) for the spin-1 OBC chain.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::SpecificHeat, ::OBC; beta) -> Float64

Per-site heat capacity c(β) = β² · Var(H) / N for the spin-1 OBC chain, computed exactly from the energy variance in the eigenbasis (no numerical differentiation).

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::ThermalEntropy, ::OBC; beta) -> Float64

Per-site Gibbs entropy s(β) = β · (ε - f) for the spin-1 OBC chain.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::EnergyLocal, ::OBC; beta) -> Vector{Float64}

Site-resolved local energy density ε_i of the OBC spin-1 Heisenberg chain such that Σᵢ ε_i = ⟨H⟩_β. Each bond contribution b_i = J ⟨Sᵢ · Sᵢ₊₁⟩_β is split symmetrically between its two endpoints, with the missing left/right bond at i = 1 / i = N set to zero — i.e.

ε_i = (1/2) (b_{i-1} + b_i),    b_0 ≡ b_N ≡ 0.
source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::Energy{:per_site}, ::Infinite) -> Float64

Ground-state energy per site of the spin-1 antiferromagnetic Heisenberg chain (Haldane chain) in the thermodynamic limit:

e₀ ≈ -1.40148403897 J

Numerical value from the high-precision DMRG study of S. R. White & D. A. Huse, Phys. Rev. B 48, 3844 (1993). No closed- form expression is known; reliability=:medium in the registry.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MagnetizationX, ::OBC; beta) -> Float64

Per-site bulk magnetisation ⟨Σᵢ S^x_i⟩_β / N of the spin-1 Heisenberg OBC chain at finite N ≤ 8, computed from the dense thermal density matrix.

Spin-1 convention: S^x carries eigenvalues ±1, 0 (off-diagonal 1/√2 for S^x); see file header. The SU(2)-symmetric AFM ground state has ⟨S^α⟩ = 0 in every direction at any temperature, so this is a non-trivial check only for symmetry- breaking finite-β samples (and for benchmarking sampler bias).

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MagnetizationXLocal, ::OBC; beta) -> Vector{Float64}

Site-resolved [⟨S^x_i⟩_β for i = 1:N] of the spin-1 OBC Heisenberg chain. Sums to N · MagnetizationX/Y/Z (per-site bulk average) by construction.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MagnetizationY, ::OBC; beta) -> Float64

Per-site bulk magnetisation ⟨Σᵢ S^y_i⟩_β / N of the spin-1 Heisenberg OBC chain at finite N ≤ 8, computed from the dense thermal density matrix.

Spin-1 convention: S^y carries eigenvalues ±1, 0 (off-diagonal 1/√2 for S^x); see file header. The SU(2)-symmetric AFM ground state has ⟨S^α⟩ = 0 in every direction at any temperature, so this is a non-trivial check only for symmetry- breaking finite-β samples (and for benchmarking sampler bias).

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MagnetizationZ, ::OBC; beta) -> Float64

Per-site bulk magnetisation ⟨Σᵢ S^z_i⟩_β / N of the spin-1 Heisenberg OBC chain at finite N ≤ 8, computed from the dense thermal density matrix.

Spin-1 convention: S^z carries eigenvalues ±1, 0 (off-diagonal 1/√2 for S^x); see file header. The SU(2)-symmetric AFM ground state has ⟨S^α⟩ = 0 in every direction at any temperature, so this is a non-trivial check only for symmetry- breaking finite-β samples (and for benchmarking sampler bias).

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MagnetizationZLocal, ::OBC; beta) -> Vector{Float64}

Site-resolved [⟨S^z_i⟩_β for i = 1:N] of the spin-1 OBC Heisenberg chain. Sums to N · MagnetizationX/Y/Z (per-site bulk average) by construction.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MassGap, ::Infinite) -> Float64

Bulk Haldane gap of the spin-1 antiferromagnetic Heisenberg chain,

Δ_∞ ≈ 0.41048 J

(literature value, S. R. White & D. A. Huse, Phys. Rev. B 48, 3844 (1993)). No closed form; reliability=:medium in the registry.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::MassGap, ::OBC) -> Float64

Single-particle gap of the spin-1 Heisenberg OBC chain at finite N ≤ 8,

Δ = E₁ - E₀

between the lowest two eigenvalues of the dense Hamiltonian. At fixed N this contains finite-size and edge-state corrections relative to the bulk Haldane gap Δ_∞ ≈ 0.41048 J.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, q::RenyiEntropy, ::OBC;
      ℓ::Int, beta::Real = Inf) -> Float64

Rényi entropy S_α = log Tr ρ_A^α / (1 - α) for the OBC spin-1 Heisenberg chain. See VonNeumannEntropy for the partial-trace convention.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::SusceptibilityXX, ::OBC; beta) -> Float64

Per-site uniform XX susceptibility χ_xx(β) = β · Var(M_x) / N of the spin-1 Heisenberg OBC chain via the dense thermal density matrix.

At infinite temperature each site contributes Tr((Sᵅ)²)/3 = 2/3 so χ_αα → 2β/3 for any axis.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::SusceptibilityYY, ::OBC; beta) -> Float64

Per-site uniform YY susceptibility χ_yy(β) = β · Var(M_y) / N of the spin-1 Heisenberg OBC chain via the dense thermal density matrix.

At infinite temperature each site contributes Tr((Sᵅ)²)/3 = 2/3 so χ_αα → 2β/3 for any axis.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::SusceptibilityZZ, ::OBC; beta) -> Float64

Per-site uniform ZZ susceptibility χ_zz(β) = β · Var(M_z) / N of the spin-1 Heisenberg OBC chain via the dense thermal density matrix.

At infinite temperature each site contributes Tr((Sᵅ)²)/3 = 2/3 so χ_αα → 2β/3 for any axis.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::VonNeumannEntropy{:equilibrium}, ::OBC;
      ℓ::Int, beta::Real = Inf) -> Float64

Von Neumann entanglement entropy S_vN = -Tr ρ_A log ρ_A of the first sites of the OBC spin-1 Heisenberg chain. The reduced density matrix ρ_A is the partial trace of the thermal density matrix ρ = exp(-βH) / Z (or the GS projector when beta = Inf) over sites ℓ+1 .. N.

Both and N = bc.N are bounded by _MAX_ED_SITES_S1 because the full 3^N × 3^N ρ is built explicitly.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::XXCorrelation{:connected}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Connected (cumulant) correlator ⟨S^x_i S^x_j⟩ - ⟨S^x_i⟩·⟨S^x_j⟩ for the spin-1 OBC Heisenberg chain.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::XXCorrelation{:static}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Static thermal correlator ⟨S^x_i S^x_j⟩_β of the spin-1 OBC Heisenberg chain. Caller passes both site indices 1 ≤ i, j ≤ N; equal sites give ⟨(S^α)²⟩_β.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::YYCorrelation{:connected}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Connected (cumulant) correlator ⟨S^y_i S^y_j⟩ - ⟨S^y_i⟩·⟨S^y_j⟩ for the spin-1 OBC Heisenberg chain.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::YYCorrelation{:static}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Static thermal correlator ⟨S^y_i S^y_j⟩_β of the spin-1 OBC Heisenberg chain. Caller passes both site indices 1 ≤ i, j ≤ N; equal sites give ⟨(S^α)²⟩_β.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::ZZCorrelation{:connected}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Connected (cumulant) correlator ⟨S^z_i S^z_j⟩ - ⟨S^z_i⟩·⟨S^z_j⟩ for the spin-1 OBC Heisenberg chain.

source
QAtlas.fetchMethod
fetch(model::S1Heisenberg1D, ::ZZCorrelation{:static}, ::OBC;
      beta, i::Int, j::Int) -> Float64

Static thermal correlator ⟨S^z_i S^z_j⟩_β of the spin-1 OBC Heisenberg chain. Caller passes both site indices 1 ≤ i, j ≤ N; equal sites give ⟨(S^α)²⟩_β.

source
QAtlas.heisenberg_spinon_dispersionMethod
heisenberg_spinon_dispersion(model::Heisenberg1D, k::Real; J::Real = 1.0)
    -> Float64

Single-spinon dispersion of the spin-½ antiferromagnetic Heisenberg chain in the thermodynamic limit (Faddeev–Takhtajan 1981):

ε(k) = (π J / 2) |sin k|,   k ∈ [0, π].

Spinons are massless half-odd-integer-spin excitations and the lower edge of the two-spinon continuum coincides with this dispersion, see heisenberg_two_spinon_lower_edge.

Special values:

  • ε(0) = 0 — gapless point.
  • ε(π/2) = π J / 2 — band centre maximum.
  • ε(π) = 0 — gapless Umklapp point.

J is passed by keyword because Heisenberg1D is parameterless in this codebase (every other quantity threads J through kwargs the same way).

References

L. D. Faddeev, L. A. Takhtajan, "What is the spin of a spin wave?",
  Phys. Lett. A 85, 375 (1981).
source
QAtlas.heisenberg_two_spinon_lower_edgeMethod
heisenberg_two_spinon_lower_edge(model::Heisenberg1D, q::Real;
                                 J::Real = 1.0) -> Float64

Lower edge of the two-spinon continuum at total momentum q for the spin-½ XXX AFM chain (des Cloizeaux–Pearson 1962):

ε_L(q) = (π J / 2) |sin q|.

By construction ε_L(q) ≡ ε(q) where ε is the single-spinon dispersion (heisenberg_spinon_dispersion) — this reflects the kinematic configuration in which one of the two spinons sits at zero energy, so the total energy equals the energy of the other.

Special values:

  • ε_L(0) = ε_L(π) = 0 — gapless points (Umklapp included).
  • ε_L(π/2) = π J / 2 — maximum of the lower edge.

References

J. des Cloizeaux, J. J. Pearson, "Spin-wave spectrum of the
  antiferromagnetic linear chain", Phys. Rev. 128, 2131 (1962).
source
QAtlas.heisenberg_two_spinon_upper_edgeMethod
heisenberg_two_spinon_upper_edge(model::Heisenberg1D, q::Real;
                                 J::Real = 1.0) -> Float64

Upper edge of the two-spinon continuum at total momentum q for the spin-½ XXX AFM chain (des Cloizeaux–Pearson 1962):

ε_U(q) = π J |sin(q/2)|.

Special values:

  • ε_U(0) = 0 — Goldstone-like vanishing of the support window at q = 0.
  • ε_U(π) = π J — top of the continuum at the Umklapp point.

For q ∈ (0, π] one has ε_U(q) ≥ ε_L(q) strictly except at the gapless points where the continuum collapses to a line.

References

J. des Cloizeaux, J. J. Pearson, "Spin-wave spectrum of the
  antiferromagnetic linear chain", Phys. Rev. 128, 2131 (1962).
source
QAtlas.HeisenbergXYZType
HeisenbergXYZ(; Jx::Real = 1.0, Jy::Real = 1.0, Jz::Real = 1.0)
    <: AbstractQAtlasModel

Spin-½ XYZ chain with three independent exchange couplings

H = Σ_i [ Jx Sˣᵢ Sˣᵢ₊₁ + Jy Sʸᵢ Sʸᵢ₊₁ + Jz Sᶻᵢ Sᶻᵢ₊₁ ].

Most-general 1-D nearest-neighbour spin-½ integrable model (Baxter 1972). This release exposes only the axis-aligned reductions Jx = Jy by delegating to the existing XXZ1D machinery:

HeisenbergXYZ(Jx = J, Jy = J, Jz)   ≡   XXZ1D(J = J, Δ = Jz / J).

General XYZ ground-state energy (Baxter elliptic Bethe ansatz) is tracked as a follow-up phase and raises DomainError here.

Quantities registered:

QuantityBCMethod
Energy (:per_site)Infinitedelegated to XXZ1D

References

  • R. J. Baxter, Annals Phys. 70, 193 (1972).
  • L. D. Faddeev, L. A. Takhtajan, J. Soviet Math. 24, 241 (1984).
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::CorrelationLength, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz) -> Float64

Asymptotic correlation length of the spin-1/2 XYZ chain at the thermodynamic limit.

RegimeMethod
Jx = Jy, abs(Jz/Jx) <= 1gapless critical XXZ: returns Inf
Jz = 0 (XY line, Jx != Jy)xi = 1/asinh(abs(Jx-Jy) / (2*sqrt(Jx*Jy))) (dispersion zero)
massive axial AFM (Jz/Jx > 1)DomainError
generic XYZDomainError (Baxter elliptic Phase 3)

References

  • E. Lieb, T. Schultz, D. Mattis, Ann. Phys. 16, 407 (1961).
  • B. M. McCoy, T. T. Wu, Phys. Rev. 174, 546 (1968).
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::Energy{:per_site}, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz, kwargs...) -> Float64

Ground-state energy per site of the spin-½ XYZ chain in the thermodynamic limit, restricted to the axis-aligned reduction Jx = Jy:

HeisenbergXYZ(Jx = J, Jy = J, Jz)   ⟶   fetch(XXZ1D(J = J, Δ = Jz/J), …).

This routes the call through the XXZ1D Yang-Yang single integral (general -1 < Δ < 1) and the three closed-form points Δ ∈ {-1, 0, 1} already implemented in XXZ1D. General (Jx ≠ Jy) triples require the Baxter elliptic Bethe ansatz and currently raise DomainError — Phase 2.

Jx > 0 is required (so Delta = Jz/Jx is well-defined and the delegation routes into the XXZ1D-tested domain; FM-exchange Jx < 0 is Phase 2).

References

  • C. N. Yang, C. P. Yang, Phys. Rev. 150, 327 (1966).
  • R. J. Baxter, Annals Phys. 70, 193 (1972).
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::GroundStateEnergyDensity, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz) -> Float64

Ground-state energy density (per site) of the spin-1/2 XYZ chain at the thermodynamic limit. Supported parameter regimes:

RegimeMethod
Jx = Jydelegated to XXZ1D(J=Jx, D=Jz/Jx) Energy(:per_site)
Jz = 0 (XY line)closed-form Lieb-Schultz-Mattis (1961) free-fermion
generic XYZDomainError (Baxter 1972 elliptic deferred to Phase 3)

References

  • E. Lieb, T. Schultz, D. Mattis, Ann. Phys. 16, 407 (1961).
  • C. N. Yang, C. P. Yang, Phys. Rev. 150, 327 (1966).
  • R. J. Baxter, Ann. Phys. 70, 193 (1972) – generic XYZ via elliptic Bethe ansatz.
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::LuttingerParameter, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz) -> Float64

Luttinger-liquid parameter at the isotropic Heisenberg point Jx = Jy = Jz, delegated to XXZ1D(Δ = 1):

K = 1/2          (SU(2)-symmetric AFM, Luther-Peschel 1975)

The delegation chain is HeisenbergXYZ → XXZ1D(Δ=1) (matching the Energy(:per_site) reduction). Once a dedicated fetch(::Heisenberg1D, ::LuttingerParameter, ::Infinite) lands on main (tracked separately), the intermediate Heisenberg1D hop can be reinstated; the final K is unchanged.

For Jx = Jy ≠ Jz (XXZ axial anisotropy), use XXZ1D directly. For generic XYZ (Baxter 1972 elliptic / theta-function regime), defer to a later phase — this Phase-2 path throws DomainError for non-isotropic couplings.

References

  • A. Luther, I. Peschel, Phys. Rev. B 12, 3908 (1975).
  • R. J. Baxter, Ann. Phys. 70, 193 (1972) — elliptic XYZ.
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::MassGap, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz) -> Float64

Single-particle mass gap (smallest excitation energy above the ground state) of the spin-1/2 XYZ chain at the thermodynamic limit.

RegimeMethod
Jx = Jy, abs(Jz/Jx) <= 1gapless critical XXZ: returns 0.0
Jz = 0 (XY line, Jx != Jy)LSM dispersion minimum: (1/4)*abs(Jx - Jy)
massive axial AFM (Jz/Jx > 1)DomainError (Yang-Yang gap deferred)
generic XYZ (Jx != Jy, Jz != 0)DomainError (Baxter elliptic Phase 3)

References

  • E. Lieb, T. Schultz, D. Mattis, Ann. Phys. 16, 407 (1961).
  • C. N. Yang, C. P. Yang, Phys. Rev. 150, 327 (1966).
  • A. Luther, I. Peschel, Phys. Rev. B 12, 3908 (1975).
  • R. J. Baxter, Ann. Phys. 70, 193 (1972).
source
QAtlas.fetchMethod
fetch(m::HeisenbergXYZ, ::SpontaneousMagnetization, ::Infinite;
      Jx=m.Jx, Jy=m.Jy, Jz=m.Jz) -> Float64

Spontaneous magnetization (sublattice order parameter) of the spin-1/2 XYZ chain at the thermodynamic limit.

RegimeMethod
Jx = Jy, abs(Jz/Jx) <= 1gapless critical XXZ, no LRO in 1D: returns 0.0
Jz = 0 (XY line, Jx != Jy)McCoy-Wu / Pfeuty 1/8: M = (1 - (Jmin/Jmax)^2)^(1/8)
massive axial AFM (Jz/Jx > 1)DomainError (Neel staggered M Baxter 1971 deferred)
generic XYZDomainError (Baxter 1973 PRL elliptic theta deferred)

References

  • B. M. McCoy, T. T. Wu, Phys. Rev. 174, 546 (1968).
  • P. Pfeuty, Ann. Phys. 57, 79 (1970).
  • R. J. Baxter, Phys. Rev. Lett. 31, 1294 (1973) – generic XYZ.
source
QAtlas.J1J2Heisenberg1DType
J1J2Heisenberg1D(; J1::Real = 1.0, J2::Real = 0.5) <: AbstractQAtlasModel

Spin-½ J₁-J₂ Heisenberg chain:

H = J₁ Σ_i Sᵢ · Sᵢ₊₁ + J₂ Σ_i Sᵢ · Sᵢ₊₂,    J₁ > 0,  J₂ ≥ 0.

Define the frustration ratio j = J₂ / J₁. Phase 1 implements only the two closed-form points:

  • j = 0 → Bethe-Hulthén E/N = J₁ (1/4 − ln 2),
  • j = 1/2 → Majumdar-Ghosh E/N = −3 J₁ / 8.

Generic j (0 < j < ∞, j ∉ {0, 1/2}) requires DMRG; deferred to Phase 2, raises DomainError from fetch(..., Energy{:per_site}(), Infinite()).

The default constructor J1J2Heisenberg1D() lands on J₁ = 1, J₂ = 1/2 — the Majumdar-Ghosh point, the most physically interesting closed-form case.

Fields

  • J1::Float64 — nearest-neighbour antiferromagnetic exchange (J₁ > 0).
  • J2::Float64 — next-nearest-neighbour exchange (J₂ ≥ 0).

References

  • H. Bethe, Z. Physik 71, 205 (1931).
  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938).
  • C. K. Majumdar, D. K. Ghosh, J. Math. Phys. 10, 1388 (1969).
  • S. R. White, I. Affleck, Phys. Rev. B 54, 9862 (1996).
source
QAtlas.fetchMethod
fetch(::J1J2Heisenberg1D, ::Energy{:per_site}, ::Infinite;
      J1=m.J1, J2=m.J2) -> Float64

Ground-state energy density of the spin-½ J₁-J₂ Heisenberg chain in the thermodynamic limit. Phase 1 supports only the two closed-form points:

  • j = J₂/J₁ = 0 → Bethe-Hulthén: E/N = J₁ · (1/4 − ln 2). Delegates to fetch(Heisenberg1D(), GroundStateEnergyDensity(), Infinite(); J=J1).

  • j = 1/2 → Majumdar-Ghosh dimer GS: E/N = −3 J₁ / 8. Delegates to fetch(MajumdarGhosh(; J=J1), GroundStateEnergyDensity(), Infinite()).

  • otherwise → DomainError: no closed form; numerical DMRG required, deferred to Phase 2.

Floating-point tolerance for the j = 0 and j = 1/2 matches is atol = 1e-12.

Note on delegation: Heisenberg1D and MajumdarGhosh currently expose their thermodynamic-limit energy density via the legacy GroundStateEnergyDensity quantity, not the modern Energy{:per_site} axis. This wrapper bridges to the modern axis on the public surface while keeping the closed-form constants in a single source-of-truth location (the delegate model).

References

  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938) — Bethe-Hulthén ground-state energy density.
  • C. K. Majumdar, D. K. Ghosh, J. Math. Phys. 10, 1388 (1969) — exact dimer ground state at j = 1/2.
  • S. R. White, I. Affleck, Phys. Rev. B 54, 9862 (1996) — DMRG study of generic j (deferred to Phase 2).
source

<!– ATLAS:DOCS:END –>