XXZ1D — Spin-1/2 XXZ Chain

Status: Unstable (v0.18.x)

The XXZ1D OBC dense-ED full observable surface was introduced in v0.17. Method signatures and kwarg names (beta, i, j, , …) may change in v0.19. The infinite-system finite-temperature surface is currently restricted to the XX point (Δ = 0) via the free-fermion (Jordan-Wigner) integrals; general-Δ TBA / NLIE is tracked in issue #108.

Hamiltonian

\[H = J \sum_{i} \bigl[\, S^x_i S^x_{i+1} + S^y_i S^y_{i+1} + \Delta\, S^z_i S^z_{i+1} \,\bigr]\]

with $\mathbf{S}_i = \tfrac{1}{2}\boldsymbol{\sigma}_i$, exchange coupling $J$ (default 1.0), and anisotropy $\Delta$ (default 0.0, the XX point).

Phases

RegimePhaseClosed form on the GS energy
$\Delta < -1$Gapped ferromagnet (Ising-like FM)— (TBA, deferred)
$\Delta = -1$Saturated ferromagnet$e_0/J = -1/4$
$-1 < \Delta < 1$Luttinger liquid, $c = 1$— (general $\Delta$ TBA)
$\Delta = 0$XX / free fermion$e_0/J = -1/\pi$
$\Delta = 1$Isotropic AF Heisenberg$e_0/J = 1/4 - \ln 2$ (Hulthén 1938)
$\Delta > 1$Gapped Néel AFM— (TBA, deferred)

Coverage Matrix

OBC rows are dense-ED (Hilbert dim $2^N$, cap $N \le 12$). Infinite rows are analytic / Bethe-ansatz closed forms.

QuantityOBCInfinite
Energy{:total} (any $\Delta$)dense-ED
Energy{:per_site}conversion via $E/N$GS at $\Delta \in \{-1, 0, 1\}$; finite-T at Δ = 0 (issue #108 for general Δ)
FreeEnergy / ThermalEntropy / SpecificHeatdense-EDΔ = 0 free-fermion (QuadGK); other Δ NaN+warn (issue #108)
MagnetizationX / Y / Z (+ …Local)dense-ED
SusceptibilityXX / YY / ZZvariance
XXCorrelation / YY / ZZ (:static, :connected)dense-ED
VonNeumannEntropy / RenyiEntropypartial trace
MassGapdense-ED ($E_1 - E_0$)$0$ on $-1 < \Delta \le 1$, NaN otherwise
CentralCharge$1$ on critical regime, NaN otherwise
LuttingerParameter$K = \pi / (2(\pi - \gamma))$, $\gamma = \arccos\Delta$
LuttingerVelocity$u = (\pi J / 2)\,\sin\gamma / \gamma$
EnergyLocaldense-ED (symmetric bond split)

SpinWaveVelocity is a type-level alias of LuttingerVelocity.

XX Point (Δ = 0) — Free-Fermion Thermo at Infinite()

After Jordan-Wigner the XX chain is non-interacting; the single-particle dispersion (in the spin convention Sᵅ = σᵅ/2) is

\[\varepsilon(k) = -J \cos k, \quad k \in [-\pi, \pi].\]

QAtlas exposes per-site FreeEnergy, Energy{:per_site}, ThermalEntropy, and SpecificHeat at Infinite() for Δ = 0 via adaptive Gauss-Kronrod quadrature on [0, π]:

\[\begin{aligned} f(\beta) &= -\frac{1}{\pi\beta} \int_0^\pi \log\!\left(2\cosh\tfrac{\beta\varepsilon(k)}{2}\right) dk, \ e(\beta) &= -\frac{1}{2\pi} \int_0^\pi \varepsilon(k)\,\tanh\tfrac{\beta\varepsilon(k)}{2}\,dk, \ s(\beta) &= \beta\,\bigl(e(\beta) - f(\beta)\bigr), \ C(\beta) &= \frac{1}{\pi} \int_0^\pi \bigl(\tfrac{\beta\varepsilon}{2}\bigr)^2 \operatorname{sech}^2\!\tfrac{\beta\varepsilon}{2}\,dk. \end{aligned}\]

m = XXZ1D(J=1.0, Δ=0.0)
QAtlas.fetch(m, Energy(),         Infinite(); beta=10.0)   # → ≈ -1/π = -0.3183
QAtlas.fetch(m, FreeEnergy(),     Infinite(); beta=1.0)
QAtlas.fetch(m, ThermalEntropy(), Infinite(); beta=0.01)   # → ≈ log 2
QAtlas.fetch(m, SpecificHeat(),   Infinite(); beta=1.0)    # → > 0

For any Δ ≠ 0 these four calls emit a @warn and return NaN — the general-Δ thermal Bethe ansatz / NLIE is tracked in issue #108.

v0.17 Highlights — Dense-ED Full Suite

A single _xxz1d_thermal_kernel(model, N, β) performs one eigendecomposition of the $2^N \times 2^N$ Hamiltonian and reuses the spectrum / eigenvectors across every observable on the OBC row. The hard cap is N ≤ 12 (Hilbert dimension 2^12 = 4096).

using QAtlas

m = XXZ1D(J=1.0, Δ=0.5)
β = 1.0

QAtlas.fetch(m, FreeEnergy(),         OBC(6); beta=β)
QAtlas.fetch(m, SpecificHeat(),       OBC(6); beta=β)
QAtlas.fetch(m, MagnetizationZ(),     OBC(6); beta=β)         # = 0  (U(1) conservation)
QAtlas.fetch(m, ZZCorrelation{:static}(), OBC(6); beta=β, i=2, j=4)
QAtlas.fetch(m, RenyiEntropy(2.0),    OBC(6); ℓ=3, beta=Inf)

Δ = 1 isotropic point: SU(2) symmetry identities

At $\Delta = 1$ the chain is SU(2)-symmetric, so every observable satisfies the harness-checked identities

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

m_iso = XXZ1D(J=1.0, Δ=1.0)
QAtlas.fetch(m_iso, SusceptibilityXX(), OBC(6); beta=1.0)  # =
QAtlas.fetch(m_iso, SusceptibilityYY(), OBC(6); beta=1.0)  # =
QAtlas.fetch(m_iso, SusceptibilityZZ(), OBC(6); beta=1.0)

These three calls return the same value to ED precision, and are checked by the SU(2) row of SYMMETRY_IDENTITIES (PR #133).

Critical-regime CFT data

For $-1 < \Delta < 1$ the chain flows to a $c = 1$ compactified-boson CFT with continuously varying compactification radius. QAtlas exposes the standard triplet:

QAtlas.fetch(XXZ1D(; Δ=0.3), CentralCharge(),     Infinite())  # → 1.0
QAtlas.fetch(XXZ1D(; Δ=0.0), LuttingerParameter(), Infinite())  # → 1.0
QAtlas.fetch(XXZ1D(; Δ=1.0), LuttingerVelocity(),  Infinite())  # → π/2
QAtlas.fetch(XXZ1D(; Δ=1.5), CentralCharge(),     Infinite())  # → NaN (+ warn)

Full derivation: XXZ Luttinger parameters from Bethe ansatz.

References

  • H. Bethe, Z. Physik 71, 205 (1931).
  • L. Hulthén, Ark. Mat. Astron. Fys. 26A, No. 11 (1938) — $\Delta = 1$ value.
  • C. N. Yang, C. P. Yang, Phys. Rev. 150, 321 (1966) — general-$\Delta$ Bethe-ansatz integral equation.
  • M. Takahashi, Thermodynamics of One-Dimensional Solvable Models (Cambridge UP, 1999), Ch. 4.
  • T. Giamarchi, Quantum Physics in One Dimension (Oxford, 2004), Ch. 6.
  • Heisenberg1D — isotropic SU(2) point ($\Delta = 1$); a thin delegator to XXZ1D(Δ=1.0).
  • S1Heisenberg1D — spin-1 generalisation; gapped Haldane phase, distinct universality.
  • TFIM$c = 1/2$ Ising chain for contrast with the $c = 1$ XXZ critical line.

<!– 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 2 models register 34 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
S1XXZ1DEnergyInfinite🔵 coherent4
S1XXZ1DMassGapInfinite🔵 coherent3
XXZ1DCentralChargeInfinite🟢 corroborated-at-p1
XXZ1DEnergyInfinite🟢 corroborated-at-p12
XXZ1DEnergyOBC🟢 corroborated-at-p15
XXZ1DEnergyLocalOBC🟠 uncorroborated-but-feasible0
XXZ1DFreeEnergyInfinite🔵 coherent1
XXZ1DFreeEnergyOBC🟢 corroborated-at-p21
XXZ1DGroundStateEnergyDensityInfinite🟢 corroborated-at-p3
XXZ1DLoschmidtEchoInfinite🟢 corroborated-at-p2
XXZ1DLuttingerParameterInfinite🟢 corroborated-at-p9
XXZ1DLuttingerVelocityInfinite🟢 corroborated-at-p2
XXZ1DMagnetizationXOBC🔵 coherent24
XXZ1DMagnetizationXLocalOBC🟠 uncorroborated-but-feasible0
XXZ1DMagnetizationYOBC🔵 coherent24
XXZ1DMagnetizationYLocalOBC🟠 uncorroborated-but-feasible0
XXZ1DMagnetizationZOBC🔵 coherent24
XXZ1DMagnetizationZLocalOBC🟠 uncorroborated-but-feasible0
XXZ1DMassGapInfinite🟢 corroborated-at-p1
XXZ1DMassGapOBC🟢 corroborated-at-p15
XXZ1DNMRRelaxationExponentInfinite🟢 corroborated-at-p1
XXZ1DRenyiEntropyInfinite🟠 uncorroborated-but-feasible0
XXZ1DRenyiEntropyOBC🟢 corroborated-at-p96
XXZ1DSpecificHeatInfinite🟠 uncorroborated-but-feasible0
XXZ1DSpecificHeatOBC🟢 corroborated-at-p30
XXZ1DSusceptibilityXXOBC🟢 corroborated-at-p12
XXZ1DSusceptibilityYYOBC🟢 corroborated-at-p12
XXZ1DSusceptibilityZZOBC🟢 corroborated-at-p31
XXZ1DThermalEntropyInfinite🔵 coherent1
XXZ1DThermalEntropyOBC🟢 corroborated-at-p30
XXZ1DUniversalityClassInfinite🟠 uncorroborated-but-feasible0
XXZ1DVonNeumannEntropyInfinite🟠 uncorroborated-but-feasible0
XXZ1DVonNeumannEntropyOBC🟢 corroborated-at-p48
XXZ1DZZStructureFactorInfinite🟠 uncorroborated-but-feasible0

<!– 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.S1XXZ1DType
S1XXZ1D(; J::Real = 1.0, Δ::Real = 1.0) <: AbstractQAtlasModel

Spin-1 antiferromagnetic XXZ chain,

H = J Σᵢ [Sˣᵢ Sˣᵢ₊₁ + Sʸᵢ Sʸᵢ₊₁ + Δ Sᶻᵢ Sᶻᵢ₊₁],   S = 1, J > 0.

The default Δ = 1.0 places the model at the SU(2)-symmetric Haldane point, where Phase-1 closed-form MassGap is available by delegation to S1Heisenberg1D.

source
QAtlas.fetchMethod
fetch(model::S1XXZ1D, ::Energy{:per_site}, ::Infinite; J, Δ, kwargs...) -> Float64

Ground-state energy per site of the spin-1 XXZ chain.

Phase 1: supported only at the Heisenberg point Δ = 1, where the result is delegated to S1Heisenberg1D,

e₀ ≈ -1.40148403897 J   (White-Huse 1993 DMRG).

For Δ ≠ 1 no closed-form literature constant is available (XY1 / large-Δ Néel phase diagram, Schulz 1986; Tzeng-Yang-Hsu 2017); a DomainError is raised — Phase 2 will plug in DMRG / TLL.

source
QAtlas.fetchMethod
fetch(model::S1XXZ1D, ::MassGap, ::Infinite; J, Δ, kwargs...) -> Float64

Bulk mass gap of the spin-1 XXZ chain.

Phase 1: supported only at the Heisenberg point Δ = 1, where the Haldane gap is delegated to S1Heisenberg1D,

Δ_∞ ≈ 0.41048 J   (White-Huse 1993 DMRG).

For Δ ≠ 1 the result is not a closed-form literature constant (XY1 / large-Δ Néel phase diagram, Schulz 1986; Tzeng-Yang-Hsu 2017) and a DomainError is raised — Phase 2 will plug in DMRG / TLL.

source
QAtlas.XXZ1DType
XXZ1D(; J::Real = 1.0, Δ::Real = 0.0) <: AbstractQAtlasModel

Spin-1/2 XXZ chain

H = J Σ_i [ S^x_i S^x_{i+1} + S^y_i S^y_{i+1} + Δ S^z_i S^z_{i+1} ]

Convention: J > 0 is antiferromagnetic. Δ = 1 is the isotropic Heisenberg AF point, Δ = 0 is the XX (free-fermion) point, Δ = -1 is the isotropic ferromagnet. For |Δ| < 1 the chain is critical (Luttinger liquid, central charge c = 1).

Currently registered fetches:

QuantityBCCoverage
EnergyInfiniteExact ground-state energy density via Yang-Yang Bethe ansatz integral
UniversalityClassInfinite:XY in critical phase -1 < Δ < 1, and :Heisenberg at Δ = 1
source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::CentralCharge, ::Infinite) -> Float64

Central charge of the XXZ chain:

  • -1 < Δ < 1c = 1 (Luttinger liquid)
  • otherwise → NaN (non-critical)
source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::Energy{:total}, ::OBC; beta) -> Float64

Total thermal energy ⟨H⟩_β for the spin-½ OBC chain at finite size, computed by dense ED. Works for any Δ and any N ≤ 12. Intended as a reference for MPS thermal methods (TPQMPS / Purification / METTS).

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

Convention matches fetch(::TFIM, ::Energy, ::OBC): finite-size boundary conditions return total energy; only Infinite() returns per-site (⟨H⟩/N, the only finite quantity in the thermodynamic limit).

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::GroundStateEnergyDensity, ::Infinite) -> Float64

Alias for fetch(::XXZ1D, ::Energy, ::Infinite) kept so that the GroundStateEnergyDensity quantity — already exported by Heisenberg.jl — works uniformly across 1D Bethe-ansatz chains.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::LuttingerParameter, ::Infinite) -> Float64

Luttinger-liquid parameter K = π / (2(π − γ)), with γ = arccos(Δ), valid for -1 < Δ ≤ 1.

Canonical values:

  • Δ = 0 (XX free fermion) → K = 1
  • Δ = 1 (AF Heisenberg) → K = 1/2
  • Δ → -1 (FM boundary) → K → ∞
source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::LuttingerVelocity, ::Infinite) -> Float64
fetch(model::XXZ1D, ::SpinWaveVelocity,   ::Infinite) -> Float64

Sound velocity of the low-energy Luttinger-liquid mode,

u(Δ) = J · (π/2) · sin(γ)/γ,   γ = arccos(Δ).

Canonical values:

  • Δ = 0 (XX) → u = J (= free-fermion v_F)
  • Δ = 1 (AF) → u = (π/2) J (des Cloizeaux-Pearson)

SpinWaveVelocity dispatches here via the const SpinWaveVelocity = LuttingerVelocity type alias (both are the same physical quantity for 1D critical spin chains).

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::NMRRelaxationExponent, ::Infinite; kwargs...) -> Float64

Leading low-temperature NMR spin-lattice relaxation exponent θ_NMR = 1/(2K) − 1 for the critical Luttinger-liquid phase (-1 < Δ ≤ 1), where K is the Luttinger parameter (K = 1 at Δ = 0, K = 1/2 at the Heisenberg point Δ = 1).

This is the contact-hyperfine result probing the dominant transverse staggered susceptibility, whose operator has scaling dimension Δ_op = 1/(4K), so θ_NMR = 2Δ_op − 1 = 1/(2K) − 1 (Chitra & Giamarchi 1997, Eq. 27: leading A⊥ T^{1/(2K)−1} term, dominant over the subdominant longitudinal A∥ T^{2K−1} for K > 1/2). Checks: T^{−1/2} at the XX point (K = 1) and T^0 (constant, up to logs) at the Heisenberg point (K = 1/2).

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::ZZStructureFactor, ::Infinite;
      q::Real, ω::Real, J::Real = model.J, method::Symbol = :exact_2spinon,
      kwargs...) -> Float64

Exact two-spinon longitudinal dynamical structure factor S^{zz}(q, ω) of the spin-1/2 antiferromagnetic XXZ chain in the massive regime Δ > 1.

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

Site-local energy density ε_i of the OBC XXZ chain at inverse temperature beta, defined so that Σᵢ ε_i = ⟨H⟩_β. Each bond b_{i,i+1} = (J/4)(σˣσˣ + σʸσʸ + Δ σᶻσᶻ) is split symmetrically between its two endpoints:

ε_i = ½ ⟨b_{i-1,i}⟩_β + ½ ⟨b_{i,i+1}⟩_β

with the missing bonds at i = 1 / i = N taken to be zero.

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

Per-site Helmholtz free energy f(β) = -log Z / (Nβ) of the spin-½ OBC XXZ chain at finite N ≤ 12, computed by dense ED.

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

CC-Tonni 2012 logarithmic negativity of two adjacent intervals in the critical Luttinger-liquid regime -1 < Δ <= 1. Delegates to Universality(:XY) for -1 < Δ < 1 and Universality(:Heisenberg) at Δ = 1.

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

Per-site bulk magnetisation ⟨Σᵢ σˣᵢ⟩_β / N of the OBC XXZ chain.

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

Site-resolved [⟨σˣ_i⟩_β for i = 1:N]. Identically zero up to dense-ED round-off because σˣ_i flips a single Sᶻ and the XXZ Hamiltonian conserves total Sᶻ.

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

Per-site bulk magnetisation ⟨Σᵢ σʸᵢ⟩_β / N. Identically zero for the XXZ Hamiltonian (the eigenvectors of a real-symmetric H — the XXZ matrix in the σᶻ-product basis is real symmetric — give purely imaginary expectations of σʸ that cancel mode-by-mode). Returned by explicit calculation rather than hard-coded zero so the caller still sees the dense-ED noise floor.

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

Site-resolved [⟨σʸ_i⟩_β for i = 1:N]. Identically zero by the same U(1) argument as MagnetizationXLocal plus parity (σʸ_i is purely imaginary in the σᶻ basis).

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

Per-site bulk magnetisation ⟨Σᵢ σᶻᵢ⟩_β / N. Σᵢ σᶻᵢ commutes with H (U(1) symmetry), so the thermal average is Tr(M_z exp(-βH))/Z; for even N and any real β the σᶻ-product basis groups symmetrically between sectors of opposite total Sᶻ and the average is zero. For odd N the unique smallest-Sᶻ-magnitude sector is half-filled ±½ (still S_z = ±½), so the average is again zero up to round-off.

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

Site-resolved [⟨σᶻ_i⟩_β for i = 1:N]. Each ⟨σᶻi⟩ is identically zero up to round-off in the canonical Boltzmann ensemble (sectors of opposite Sz come in equal weight pairs).

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

Mass gap of the spin-½ XXZ chain in the thermodynamic limit:

  • Critical regime -1 < Δ ≤ 1: gapless Luttinger liquid, returns 0.0.
  • Gapped regimes (Δ > 1 antiferromagnetic Ising-like, Δ < -1 ferromagnetic Ising-like): closed-form gap is non-trivial (Bethe ansatz integrals), not yet implemented; returns NaN with a warning.
source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::MassGap, ::OBC) -> Float64

Energy gap E₁ - E₀ between the two lowest eigenvalues of the OBC XXZ Hamiltonian at finite N ≤ 12.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::MutualInformation, ::Infinite;
      ℓ_A::Real, ℓ_B::Real, beta::Real=Inf, kwargs...) -> Float64

Calabrese-Cardy mutual information of two adjacent intervals in the critical Luttinger-liquid regime -1 < Δ <= 1 of the XXZ chain. Delegates to Universality(:XY) for -1 < Δ < 1 and to Universality(:Heisenberg) at Δ = 1.

Throws DomainError outside the critical regime.

source
QAtlas.fetchMethod
fetch(::XXZ1D, q::RenyiEntropy, ::Infinite; ℓ, beta=Inf, kwargs...) -> Float64

Single-interval Renyi-α entanglement entropy. Same critical-regime guard as the VN case; delegates to Universality(:XY) (or Universality(:Heisenberg) at Δ = 1).

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

Rényi entropy of order α = q.α for the first sites,

S_α = log(Tr ρ_A^α) / (1 - α).

α = 1 is rejected at the RenyiEntropy constructor; use VonNeumannEntropy() for that limit.

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

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

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

Static transverse Kubo susceptibility per site (response-derivative convention) χ_xx(β) = ∂⟨M_x⟩/∂h_x at h_x = 0, with M_x = Σᵢ σˣᵢ. Equivalent to β·Var(M_x)/N only when [H, M_x] = 0, which the XXZ Hamiltonian does not satisfy on the x-axis; see issue #576.

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

Static y-axis Kubo susceptibility per site (response-derivative convention) χ_yy(β) = ∂⟨M_y⟩/∂h_y at h_y = 0. Equivalent to β·Var(M_y)/N only when [H, M_y] = 0; the XXZ Hamiltonian does not satisfy this on the y-axis. See issue #576.

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

Static longitudinal susceptibility per site, χ_zz(β) = (β/N) Var(M_z). At Δ = 1 (Heisenberg) this equals χ_xx = χ_yy by SU(2) symmetry.

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

Per-site Gibbs entropy s(β) = β · (ε - f) of the OBC XXZ chain.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::VonNeumannEntropy, ::OBC; ℓ, beta=Inf) -> Float64

Von Neumann entanglement entropy S = -Tr ρ_A log ρ_A of the first sites of the OBC XXZ chain at inverse temperature beta (or the ground state when beta = Inf).

Computed by exact ED + partial trace; cost O(2^{2N}) memory and O(2^{3ℓ}) for the eigen of ρ_A. Capped by _MAX_ED_SITES.

source
QAtlas.fetchMethod
fetch(::XXZ1D, ::VonNeumannEntropy{:equilibrium}, ::Infinite;
      ℓ::Int, beta::Real = Inf, kwargs...) -> Float64

Single-interval von Neumann entanglement entropy of the XXZ chain in the thermodynamic limit, valid in the critical Luttinger-liquid regime -1 < Δ < 1 (and at the Δ = 1 SU(2) Heisenberg point). Delegates to the c = 1 Calabrese-Cardy form via Universality(:XY) (or Universality(:Heisenberg) at Δ = 1 for symmetry).

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::Energy{:per_site}, ::Infinite; [beta]) -> Float64

Per-site energy of the infinite XXZ chain.

  • Without beta: ground-state energy density. Closed-form values at the three canonical points Δ ∈ {-1, 0, 1}; warns and returns NaN otherwise (general-Δ Bethe ansatz is a follow-up).

  • With beta: thermal energy density ⟨H⟩_β / N. At Δ = 0 evaluated by Gauss-Kronrod quadrature of the free-fermion integral

    e(β) = -(1/(2π)) ∫₀^π ε(k) tanh(β ε(k) / 2) dk,   ε(k) = -J cos k.

    The β → ∞ limit reproduces -J/π (matching XXZ.jl's _xxz1d_energy_free_fermion). At general Δ the thermal Bethe ansatz (issue #108) is required; a warning is emitted and NaN returned.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::FreeEnergy, ::Infinite; beta::Real, kwargs...)

Per-site Helmholtz free energy of the infinite XXZ chain. Currently only Δ = 0 (XX / free fermion) is implemented:

f(β) = -(1/(πβ)) ∫₀^π log(2 cosh(β ε(k) / 2)) dk,   ε(k) = -J cos k.

For other Δ the thermal Bethe ansatz (issue #108) is required; this method emits a warning and returns NaN.

References: Mahan, Many-Particle Physics, §1.3; Coleman, Introduction to Many-Body Physics, §2.4; Takahashi (1999), §4.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::SpecificHeat, ::Infinite; beta::Real, kwargs...)

Per-site heat capacity of the infinite XXZ chain. At Δ = 0,

C(β) = (1/π) ∫₀^π (β ε / 2)² sech²(β ε / 2) dk,   ε(k) = -J cos k.

For -1 < Δ < 1 (Δ ≠ 0) routes through the Klümper NLIE (issue #521). See _xxz_klumper_specific_heat for the finite-difference details.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::ThermalEntropy, ::Infinite; beta::Real, kwargs...)

Per-site Gibbs entropy of the infinite XXZ chain. Implemented at Δ = 0 only via

s(β) = (1/π) ∫₀^π [ log(2 cosh(βε/2)) - (βε/2) tanh(βε/2) ] dk,
ε(k) = -J cos k,

equivalent to s(β) = β (e(β) - f(β)). In the high-T limit (β → 0) this saturates to log 2 per site. Returns NaN (with a warning) for general Δ pending issue #108.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::EntanglementGrowthSlope, ::Infinite;
      beta_eff::Real, kwargs...) -> Float64

Calabrese-Cardy 2005 linear-growth slope of half-system entanglement after a quench at the XX point of the XXZ chain. The chain is gapless with central charge c = 1 and LR velocity v = 2 |J|, so

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

Delegates to Universality(:XY) (c = 1).

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

Long-time saturation of post-quench half-system entanglement entropy at the XX point (Delta = 0). The XX chain is gapless with c = 1, so delegates to Universality(:XY) returning pi / (6 beta_eff).

Off-XX (Delta != 0) throws DomainError – interacting regime deferred.

source
QAtlas.fetchMethod
fetch(model::XXZ1D, ::LiebRobinsonVelocity, ::Infinite;
      J = model.J, Delta = model.Δ, kwargs...) -> Float64

Maximum group velocity of the free-fermion XX chain (Delta = 0). The single-particle dispersion is epsilon(k) = -2 J cos k, and its group-velocity maximum is

v_LR = 2 |J|,

attained at k = pi / 2. For Delta != 0 the LR bound is more involved (interacting regime) and is deferred — this dispatch throws DomainError.

source
QAtlas.fetchMethod
fetch(model_f::XXZ1D, ::LoschmidtEcho{:rate}, ::Infinite;
      initial::XXZ1D, t::Real) -> Float64

Loschmidt rate function

λ(t) = - lim_{N→∞} (1/N) log |⟨ψ₀ | e^{-iH_f t} | ψ₀⟩|²

for the XX → XX quench H_XX(J₀) → H_XX(J_f) of the infinite Δ = 0 chain (Calabrese-Essler-Fagotti, J. Stat. Mech. (2012) P07016, specialised to the Gaussian-state-to-Gaussian-state, no-pairing sub-case).

Because H_XX(J) Jordan–Wigner-transforms to a tight-binding fermion chain without pairing, both H_XX(J₀) and H_XX(J_f) are diagonalised in the same plane-wave basis c(k). The Loschmidt amplitude therefore factorises into single-mode phases,

⟨ψ₀ | e^{-iH_f t} | ψ₀⟩
  = ∏_k exp{ -i ε_{J_f}(k) t · (n_k(J₀) - 1/2) },

whose modulus is identically 1 (each factor is a pure phase). Equivalently, |ψ₀⟩ = |GS(J₀)⟩ is a number eigenstate of H_f because both Hamiltonians are diagonal in the same {n̂_k}, so e^{-iH_f t}|ψ₀⟩ = e^{-iE_f^{(J₀)} t}|ψ₀⟩ is a pure phase. Hence

λ(t) ≡ 0          for every (J₀, J_f), including sgn J₀ ≠ sgn J_f.

The static overlap |⟨GS(J₀)|GS(J_f)⟩| does vanish at sign-flip (Anderson orthogonality of complementary Fermi seas), but that is a different quantity from the Loschmidt autocorrelation and does not enter λ(t).

This trivial result holds because the only XX → XX quench expressible in the current XXZ1D model class is GS-to-GS without any Bogoliubov-rotation knob. A non-trivial Loschmidt rate appears in quenches from non-Gaussian initial states (Néel / dimer; CEF 2012) or under XY-pairing dynamics, both of which are Phase-2 follow-ups (see issues #143, #146).

Arguments

  • model_f::XXZ1D — final Hamiltonian. Must have Δ = 0 (otherwise DomainError); a follow-up issue (#108 / #143) covers Δ ≠ 0.
  • initial::XXZ1D — initial Hamiltonian whose ground state is the pre-quench state |ψ₀⟩. Must also have Δ = 0.
  • t::Real — real evolution time.

Returns

0.0 (the trivial Phase-1 value, valid for every t ≥ 0 and every sign combination of (initial.J, model_f.J)).

Examples

julia> m = XXZ1D(; J=1.0, Δ=0.0);

julia> fetch(m, LoschmidtEcho(; mode=:rate), Infinite(); initial=m, t=1.0)
0.0

julia> fetch(m, LoschmidtEcho(; mode=:rate), Infinite();
             initial=XXZ1D(; J=0.5, Δ=0.0), t=1.0)
0.0

julia> fetch(m, LoschmidtEcho(; mode=:rate), Infinite();
             initial=XXZ1D(; J=-1.0, Δ=0.0), t=1.0)   # sign-flip — also 0
0.0

References

  • P. Calabrese, F.H.L. Essler, M. Fagotti, J. Stat. Mech. (2012) P07016 — XX-quench dynamics, Loschmidt amplitude.
  • M. Heyl, A. Polkovnikov, S. Kehrein, Phys. Rev. Lett. 110, 135704 (2013) — definition of the dynamical Loschmidt rate λ(t).
  • F.H.L. Essler, M. Fagotti, J. Stat. Mech. (2016) 064002.
source

<!– ATLAS:DOCS:END –>