TFIM — Transverse-Field Ising Model
Overview
The one-dimensional transverse-field Ising model is the canonical exactly-solvable quantum many-body system with a quantum phase transition. QAtlas solves it via the Jordan-Wigner transformation followed by Bogoliubov-de Gennes (BdG) diagonalisation; PBC additionally requires parity-projected (NS+R) sectors.
Hamiltonian
\[H = -J \sum_{i} \sigma^z_i \sigma^z_{i+1} - h \sum_{i} \sigma^x_i\]
(σ-convention: eigenvalues ±1.) Parameters: Ising coupling $J$ (default 1.0), transverse field $h$.
Phase diagram:
\[h/J < 1\]
: ferromagnetic ordered phase ($\langle \sigma^z\rangle\neq0$)\[h/J = 1\]
: quantum critical point (Ising CFT, $c=1/2$)\[h/J > 1\]
: quantum paramagnetic phase ($\langle \sigma^z\rangle = 0$)
Universality: the critical point belongs to the 2D Ising universality class via the quantum-classical mapping (1+1D quantum ↔ 2D classical).
Coverage Matrix
The table below reflects TFIM_registry.jl @register entries. ✅ marks a native fetch method; "conversion" means routed through another granularity by core/registry.jl.
| Quantity | OBC | PBC | Infinite |
|---|---|---|---|
Energy {:total} | ✅ BdG | conversion | — |
Energy {:per_site} | conversion | ✅ BdG (NS+R) | ✅ closed-form |
FreeEnergy | ✅ | ✅ NS+R | ✅ |
ThermalEntropy | ✅ | ✅ NS+R | ✅ |
SpecificHeat | ✅ | ✅ NS+R | ✅ |
MagnetizationX | ✅ | ✅ NS+R | ✅ |
MagnetizationZ | 0 by Z₂ | — | ✅ Pfeuty $m_z = (1-(h/J)^2)^{1/8}$ |
SusceptibilityXX | ✅ variance | ✅ NS+R | ✅ Kubo (Calabrese-Mussardo) |
SusceptibilityZZ | ✅ Wick | — | ✅ N_proxy=80 |
CorrelationLength | — | — | ✅ $\xi = 1/(2\lvert h-J\rvert)$ |
MassGap | ✅ | ✅ | ✅ $\Delta = 2\lvert h-J\rvert$ |
XXCorrelation {:static} | ✅ Pfaffian | — | ✅ proxy |
XXCorrelation {:connected} | ✅ | — | ✅ |
XXCorrelation {:dynamic} | ✅ | — | — |
ZZCorrelation {:static} | ✅ | — | — |
ZZCorrelation {:connected} | ✅ (= static, Z₂) | — | — |
ZZCorrelation {:dynamic} | ✅ | — | — |
ZZCorrelation {:lightcone} | ✅ | — | — |
ZZStructureFactor | ✅ | — | ✅ static + dynamic (proxy) |
VonNeumannEntropy | ✅ Peschel | — | ✅ CC (T=0 crit/gapped + T>0 crit) |
RenyiEntropy(α) | ✅ Peschel | — | ✅ CC |
EnergyLocal | ✅ | — | — |
LocalMagnetization(:x) | ✅ | — | — |
QuenchLocalMagnetization(:x) | ✅ | — | ✅ closed-form k-integral (#145) |
LocalMagnetization(:z) | ✅ | — | — |
SpontaneousMagnetization | — | — | ✅ alias of MagnetizationZ |
CentralCharge | — | — | ✅ 1/2 (critical) / 0 |
YY observables (YYCorrelation, SusceptibilityYY, MagnetizationY) are intentionally not implemented — the σʸ JW string makes OBC contractions expensive; tracked as Tier 3 in issue #110.
Boundary Conditions
QAtlas supports three boundary conditions for the TFIM, each with different physical content:
| BC | fetch argument | BdG size | Physical setting |
|---|---|---|---|
| OBC | OBC(N) | $2N \times 2N$ (numerical) | Open chain, $N$ sites, $N-1$ bonds |
| PBC | PBC(N) | parity-projected NS+R | Ring of $N$ sites, $N$ bonds |
| Infinite | Infinite() | $k$-integral | Thermodynamic limit, PBC $N \to \infty$ |
OBC: the BdG matrix is diagonalised numerically. Boundary effects include the Z₂ tunneling splitting in the ordered phase and the $O(1/N)$ boundary correction at criticality. See gap analysis below.
PBC: the JW transformation produces a fermion parity factor that splits the partition function into Neveu-Schwarz (anti-periodic) and Ramond (periodic) sectors with both signs of the parity projector (LSM). QAtlas evaluates all four (NS±, R±). The Ramond k=0 zero mode at criticality is handled explicitly.
Infinite: the quasiparticle dispersion $\Lambda(k) = 2\sqrt{J^2 + h^2 - 2Jh\cos k}$ is integrated over the Brillouin zone using Gauss-Kronrod quadrature (QuadGK.jl).
v0.17 / v0.18 Highlights
The PBC thermodynamics, Z-axis Infinite surface, XX static / connected via Pfaffian, Calabrese-Cardy entanglement at Infinite, and dynamic structure-factor helpers are new in v0.17–v0.18. Method signatures, granularity conventions, and keyword-argument names (N_proxy, ω, ℓ, beta) may change in v0.19. Call sites should use the public QAtlas.fetch(model, quantity, bc; ...) interface and must not depend on internal helpers (the _tfim_* prefixed functions).
1. PBC free-fermion thermodynamics (v0.17)
Jordan-Wigner with a fermion parity factor splits $Z$ into Neveu-Schwarz and Ramond sectors with both parity-projector signs. QAtlas sums all four sectors (NS+, NS−, R+, R−); at the critical point the R-sector $k=0$ zero mode is handled explicitly.
m = TFIM(; J=1.0, h=0.5)
β = 1.0
QAtlas.fetch(m, FreeEnergy(), PBC(8); beta=β)
QAtlas.fetch(m, MagnetizationX(), PBC(8); beta=β)
QAtlas.fetch(m, SusceptibilityXX(), PBC(8); beta=β)
QAtlas.fetch(m, MassGap(), PBC(8))References: Lieb-Schultz-Mattis (1961); Sachdev §4.2. Source: TFIM_pbc_thermal.jl.
2. Z-axis Infinite — Pfeuty closed forms (v0.17)
| Quantity | Formula |
|---|---|
MagnetizationZ (= SpontaneousMagnetization) | $m_z = (1 - (h/J)^2)^{1/8}\;\;(h<J)$, else 0 |
CorrelationLength | $\xi = 1/(2\lvert h-J\rvert)$ (Inf at criticality) |
SusceptibilityZZ | OBC large-$N$ proxy via N_proxy kwarg |
ZZStructureFactor | static $S_{zz}(q)$ from Fourier of large-$N$ correlator |
QAtlas.fetch(TFIM(; J=1.0, h=0.5), MagnetizationZ(), Infinite()) # ≈ 0.985
QAtlas.fetch(TFIM(; J=1.0, h=0.7), CorrelationLength(), Infinite()) # 1/0.6 ≈ 1.667Source: TFIM_zaxis.jl.
3. XX static / connected via Pfaffian Wick (v0.18)
OBC static $\langle\sigma^x_i\sigma^x_j\rangle$ is the $t=0$ limit of the existing dynamic Wick contraction, evaluated as a real Pfaffian over the Majorana covariance block. The connected variant subtracts $\langle\sigma^x_i\rangle\langle\sigma^x_j\rangle$. Infinite uses the OBC large-$N$ proxy (N_proxy kwarg).
m = TFIM(; J=1.0, h=0.7)
QAtlas.fetch(m, XXCorrelation{:static}(), OBC(8); beta=Inf, i=3, j=5)
QAtlas.fetch(m, XXCorrelation{:connected}(), OBC(8); beta=Inf, i=3, j=5)
QAtlas.fetch(m, XXCorrelation{:static}(), Infinite(); i=3, j=5, N_proxy=80)YY OBC remains unimplemented (issue #110, Tier 3). Source: TFIM_xx_static.jl.
4. Calabrese-Cardy Infinite entanglement (v0.18)
The thermodynamic-limit von Neumann and Rényi entropies are evaluated in closed form via the Calabrese-Cardy formula. Coverage:
| Region | $T = 0$ | $T > 0$ |
|---|---|---|
| Critical (h = J) | $S = (c/3)\,\log(2\ell)$ | $S = (c/3)\,\log\!\left[(2\beta/\pi)\sinh(\pi\ell/\beta)\right]$ |
| Gapped (h ≠ J) | $S = (c/6)\,\log(2\xi\,\sinh(\ell/\xi))$ | error (deferred — see issue #110) |
with $c = 1/2$ for Ising. The Rényi $\alpha\neq 1$ prefactor is $(c/12)(1 + 1/\alpha)$.
QAtlas.fetch(TFIM(; J=1.0, h=1.0), VonNeumannEntropy(), Infinite(); ℓ=50)
# ≈ (1/6) log(100) — critical T=0
QAtlas.fetch(TFIM(; J=1.0, h=0.5), RenyiEntropy(2.0), Infinite(); ℓ=20)
# Rényi-2, gapped CC
QAtlas.fetch(TFIM(; J=1.0, h=1.0), VonNeumannEntropy(), Infinite();
ℓ=20, beta=4.0)
# critical T>0Source: TFIM_cft_entanglement.jl.
5. Dynamic structure factor at Infinite (v0.18, proxy)
ZZStructureFactor at Infinite() is router-dispatched on the optional ω keyword:
ω === nothing→ existing static proxy (Fourier of static correlator)ω::Real→ dynamic proxy (time-evolution + Fourier of dynamic correlator)
Two helpers are exported for analytic post-processing:
tfim_quasiparticle_dispersion(model, k) -> Float64— closed-form Bogoliubov dispersion $\Lambda(k)$.tfim_two_spinon_dos(model, ω; q_total = 0.0) -> Float64— two-spinon density of states at fixed total momentum, used to identify the continuum threshold.
m = TFIM(; J=1.0, h=1.0)
QAtlas.fetch(m, ZZStructureFactor(), Infinite(); q=π/2, ω=1.5)
tfim_quasiparticle_dispersion(m, π/2)
tfim_two_spinon_dos(m, 1.5; q_total=0.0)Closed-form form-factor expansion (Calabrese-Mussardo) is not yet implemented — issue #110. Source: TFIM_infinite_dynamics.jl.
Ground-State Energy
Statement
The ground-state energy of the OBC TFIM with $N$ sites is
\[E_0 = -\sum_{n=1}^{N} \frac{\Lambda_n}{2}\]
where $\{\Lambda_n\}$ are the positive eigenvalues of the $2N \times 2N$ BdG matrix. At finite temperature $\beta = 1/(k_B T)$:
\[\langle H \rangle(\beta) = -\sum_{n=1}^{N} \frac{\Lambda_n}{2} \tanh\!\left(\frac{\beta \Lambda_n}{2}\right)\]
Derivation
The TFIM is solved exactly via the Jordan-Wigner transformation, which maps the spin chain to free fermions after a Kramers-Wannier duality step. The full derivation — including why the duality is needed for the $\sigma^z\sigma^z$ convention and the explicit construction of the BdG matrix — is given in the calculation note JW-TFIM-BdG.
The result is a $2N \times 2N$ real symmetric BdG matrix whose eigenvalues come in $\pm\Lambda_n$ pairs. The positive eigenvalues $\Lambda_n > 0$ are the quasiparticle energies, and the total energy at inverse temperature $\beta$ is:
\[\langle H \rangle = -\sum_n \frac{\Lambda_n}{2} \tanh\!\left(\frac{\beta \Lambda_n}{2}\right)\]
For PBC in the $N \to \infty$ limit, the quasiparticle dispersion is $\Lambda(k) = 2\sqrt{J^2 + h^2 - 2Jh\cos k}$, and the energy per site becomes a $k$-integral evaluated by Gauss-Kronrod quadrature (QuadGK.jl).
References
- P. Pfeuty, "The one-dimensional Ising model with a transverse field", Ann. Phys. 57, 79 (1970) — exact solution of the 1D TFIM.
- E. Lieb, T. Schultz, D. Mattis, "Two Soluble Models of an Antiferromagnetic Chain", Ann. Phys. 16, 407 (1961) — JW transformation for spin chains.
- S. Sachdev, Quantum Phase Transitions, Cambridge University Press (2011), Ch. 5 — pedagogical treatment.
QAtlas API
m = TFIM(; J=1.0, h=0.5)
# Ground-state energy (β → ∞), OBC, N=16 — total
E₀ = QAtlas.fetch(m, Energy{:total}(), OBC(16))
# Finite-temperature total energy
Eβ = QAtlas.fetch(m, Energy{:total}(), OBC(16); beta=2.0)
# Thermodynamic limit (PBC, N→∞) — per site
ε = QAtlas.fetch(m, Energy{:per_site}(), Infinite(); beta=2.0)Verification
| Test file | Method | What is checked |
|---|---|---|
test_tfim_gap_closure.jl | Dense ED via build_tfim | $E_0^{\text{ED}} = E_0^{\text{BdG}}$ for $N = 4, 6, 8$ |
test_universality_cross_check.jl | BdG at $N = 200$ | $E_0/N \to -4J/\pi$ at $h = J$ |
Finite-Temperature Observables
Statement
At inverse temperature $\beta$ and for $N$ sites (OBC), the following quantities are computed from the BdG spectrum $\{\Lambda_n\}$:
| Quantity | Formula | Type |
|---|---|---|
| Free energy | $F = -\frac{1}{\beta}\sum_n \ln\!\left[2\cosh(\beta\Lambda_n/2)\right]$ | FreeEnergy |
| Entropy | $S = \beta(\langle H \rangle - F)$ | ThermalEntropy |
| Specific heat | $C_v = -\beta^2\,\partial \langle H \rangle / \partial \beta$ | SpecificHeat |
| Mag. (X) | $\langle\sigma^x\rangle$ from the Bogoliubov occupation | MagnetizationX |
| Susc. (XX) | Variance of $\sum_i \sigma^x_i$ (OBC); Kubo at Infinite | SusceptibilityXX |
PBC ⇒ all of the above with parity-projected NS+R sums (v0.17).
Derivation
All quantities follow from the free-fermion partition function. For independent modes with energies $\Lambda_n$:
\[\mathcal{Z} = \prod_n 2\cosh\!\left(\frac{\beta\Lambda_n}{2}\right)\]
The free energy is $F = -\beta^{-1}\ln\mathcal{Z}$, and all other thermodynamic quantities follow from $\beta$-derivatives.
References
- S. Sachdev, Quantum Phase Transitions (2011), Ch. 5.3.
- QAtlas:
src/models/quantum/TFIM/TFIM_thermal.jl,TFIM_pbc_thermal.jl— full implementation.
QAtlas API
m = TFIM(; J=1.0, h=0.5)
β = 2.0
F = QAtlas.fetch(m, FreeEnergy(), OBC(16); beta=β)
S = QAtlas.fetch(m, ThermalEntropy(), OBC(16); beta=β)
Cv = QAtlas.fetch(m, SpecificHeat(), OBC(16); beta=β)
Mx = QAtlas.fetch(m, MagnetizationX(), OBC(16); beta=β)
χ = QAtlas.fetch(m, SusceptibilityXX(), OBC(16); beta=β)
# PBC variants (NS+R) — v0.17
F_pbc = QAtlas.fetch(m, FreeEnergy(), PBC(16); beta=β)
Mx_pbc = QAtlas.fetch(m, MagnetizationX(), PBC(16); beta=β)
# Infinite — closed-form k-integrals
F_inf = QAtlas.fetch(m, FreeEnergy(), Infinite(); beta=β)
Mx_inf = QAtlas.fetch(m, MagnetizationX(), Infinite(); beta=β)Verification
| Test file | Method | What is checked |
|---|---|---|
test_TFIM_thermal.jl | Dense ED ($N \leq 10$) | Exact match of $F$, $S$, $C_v$, $M_x$ vs. ED |
test_TFIM_pbc_thermal.jl | NS+R vs. ED ($N\leq8$) | PBC parity-projected sums match exact ring partition |
Energy Gap and Quantum Phase Transition
Statement
The many-body energy gap $\Delta = E_1 - E_0$ equals the smallest BdG quasiparticle energy $\Lambda_{\min}$. In the thermodynamic limit:
\[\Delta = 2|J - h|\]
At the critical point $h = J$, the gap closes as $\Delta \sim N^{-z}$ with dynamic exponent $z = 1$.
Physical Context
- Ordered phase ($h < J$): for OBC with finite $N$, the "gap" seen by exact diagonalisation is actually the Z₂ tunneling splitting between $|\!\uparrow\cdots\uparrow\rangle$ and $|\!\downarrow\cdots\downarrow\rangle$, which is exponentially small in $N$. This is distinct from the physical excitation gap $\Delta \approx 2(J - h)$.
- Critical point ($h = J$): $\Delta \sim \pi/N$ (finite-size gap for OBC).
- Disordered phase ($h > J$): $\Delta \approx 2(h - J)$, the paramagnetic gap.
References
- P. Pfeuty, Ann. Phys. 57, 79 (1970), Eq. (3.6).
- S. Sachdev, Quantum Phase Transitions (2011), §5.5.
QAtlas API
# Infinite chain — closed form Δ = 2|h − J|
QAtlas.fetch(TFIM(; J=1.0, h=0.3), MassGap(), Infinite()) # 1.4
QAtlas.fetch(TFIM(; J=1.0, h=1.0), MassGap(), Infinite()) # 0.0 (critical)
# OBC finite-N — smallest positive BdG eigenvalue
QAtlas.fetch(TFIM(; J=1.0, h=1.0), MassGap(), OBC(32)) # ≈ π/N
# PBC finite-N — smallest excitation across NS / R sectors (v0.17)
QAtlas.fetch(TFIM(; J=1.0, h=1.0), MassGap(), PBC(16))Verification
| Test file | Method | What is checked |
|---|---|---|
test_tfim_gap_closure.jl | Dense ED ($N = 4$–$12$) | Gap shrinks with $N$ at $h = J$ |
test_tfim_gap_closure.jl | ED | Ordered-phase gap is Z₂ tunneling ($< 10^{-3}$ for $N=6$) |
test_universality_cross_check.jl | BdG ($N = 200$) | $\Delta \approx 2\lvert h-J\rvert$; $\nu z = 1$ from log-log regression |
Entanglement Entropy at OBC (Peschel)
Statement
At the critical point $h = J$, the entanglement entropy of a contiguous block of $\ell$ sites in an $N$-site OBC chain obeys the Calabrese-Cardy formula:
\[S(\ell) = \frac{c}{6}\ln\!\left[\frac{2N}{\pi}\sin\!\left(\frac{\pi \ell}{N}\right)\right] + s_1\]
with central charge $c = 1/2$ (Ising CFT). See the Calabrese-Cardy method page for OBC vs. PBC prefactors and extraction procedure.
Physical Context
The TFIM is a free-fermion system after Jordan-Wigner transformation, so the reduced density matrix on a contiguous block of $\ell$ spins is Gaussian and its von Neumann (or Rényi) entropy is computable in $O(\ell^3)$ from the Majorana covariance matrix restricted to that block (Peschel's correlation-matrix method). QAtlas exposes this directly via VonNeumannEntropy and RenyiEntropy at OBC — no Kramers-Wannier detour is needed, because the internal $\sigma^x$-string JW convention puts the Majorana pair $(\gamma_{2i-1}, \gamma_{2i})$ on spin site $i$ directly, and the JW transformation factorises across any contiguous bipartition up to a parity factor on $A$ that commutes with $\rho_A$ (Fagotti-Calabrese 2010).
Full derivation of the per-mode entropy formula $S_A = \sum_k s_2(\nu_k)$ from the Gaussian-preservation theorem, the Majorana-covariance canonical form, and the contiguous-block JW factorisation: Peschel correlation-matrix method.
References
- P. Calabrese, J. Cardy, J. Stat. Mech. 0406, P06002 (2004), Eq. (19).
- I. Peschel, J. Phys. A 36, L205 (2003), Eq. (9).
- G. Vidal, J. I. Latorre, E. Rico, A. Kitaev, Phys. Rev. Lett. 90, 227902 (2003).
- M. Fagotti, P. Calabrese, Phys. Rev. Lett. 104, 227203 (2010).
QAtlas API
# Ground-state von Neumann, ℓ = N/2 at criticality
QAtlas.fetch(TFIM(; J=1.0, h=1.0), VonNeumannEntropy(), OBC(100); ℓ=50)
# ≈ 0.7256 ((c/6) log((2N/π) sin(πℓ/N)) + s_1, c = 1/2)
# Thermal von Neumann at β = 1
QAtlas.fetch(TFIM(; J=1.0, h=1.0), VonNeumannEntropy(), OBC(100); ℓ=50, beta=1.0)
# Rényi α ≠ 1 (v0.18)
QAtlas.fetch(TFIM(; J=1.0, h=1.0), RenyiEntropy(2.0), OBC(100); ℓ=50)Verification
| Test file | Method | What is checked |
|---|---|---|
test_TFIM_entanglement.jl | Peschel vs. full ED SVD | Machine-precision agreement for every $\ell$ at $N = 10$, three $(J, h)$ points |
test_TFIM_entanglement.jl | Peschel ($N = 100$) | Extracted $c \approx 0.5$ within 5% at criticality |
test_TFIM_entanglement.jl | Peschel | Symmetric $S(\ell) = S(N-\ell)$, area law away from criticality |
test_TFIM_renyi.jl | Peschel α-trace | Rényi $\alpha = 2, 3$ matches small-$N$ ED |
test_TFIM_cft_entanglement.jl | CC at Infinite | Critical T=0/T>0 and gapped T=0 closed forms vs. analytic |
test_entanglement_central_charge.jl | ED ($N \le 14$) | $c_{\text{extracted}} \approx 0.5$ within 10% |
Coverage by Reference
Physical / methodological backing of each fetch surface:
- BdG (OBC ground / thermal): Pfeuty 1970.
- PBC parity projection (NS+R): Lieb-Schultz-Mattis 1961; Sachdev §4.2.
- Peschel correlation matrix (entanglement, OBC): Peschel 2003; Calabrese-Cardy 2004; Fagotti-Calabrese 2010.
- Calabrese-Cardy (entanglement, Infinite): Calabrese-Cardy 2004,
- Pfaffian Wick (XX static / connected): Wick 1950 + free-fermion Σ contraction.
- Pfeuty closed forms (Z-axis Infinite): Pfeuty 1970 (spontaneous magnetisation, correlation length).
- Two-spinon DOS / dispersion helpers: standard Bogoliubov dispersion + convolution; see Calabrese-Mussardo for the form-factor programme (not yet implemented).
Connections
- Universality: Ising universality class — $c = 1/2$, $\nu = 1$, $z = 1$.
- Classical counterpart: IsingSquare — the 1+1D TFIM maps to the 2D classical Ising model via the quantum-classical correspondence ($\beta_{\text{classical}} \leftrightarrow$ imaginary time).
- Disordered version: Random TFIM — the Fisher infinite-randomness fixed point at $[\ln J]_{\text{avg}} = [\ln h]_{\text{avg}}$.
- E8 spectrum: E8 universality — perturbing the critical TFIM at $h = J$ by a longitudinal field $\lambda \sigma^z$ is the $\Phi_{(1,2)} = \sigma$ magnetic perturbation of the Ising CFT. Zamolodchikov (1989) showed the resulting massive field theory remains integrable and its eight stable particles realise the $E_8$ mass spectrum.
API
Modules = [QAtlas] at the end of index.md already pulls docstrings for the exported observable types and TFIM helpers (tfim_quasiparticle_dispersion, tfim_two_spinon_dos); no @autodocs block is needed here.
<!– 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, this model registers 67 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.
| Quantity | BC | Assurance | Cards |
|---|---|---|---|
CentralCharge | Infinite | 🟢 corroborated-at-p | 5 |
ConformalTower | OBC | 🟠 uncorroborated-but-feasible | 0 |
ConformalTower | PBC | 🟠 uncorroborated-but-feasible | 0 |
ConnectedSpinCorrelation | Infinite | 🟠 uncorroborated-but-feasible | 0 |
ConnectedSpinCorrelation | OBC | 🟠 uncorroborated-but-feasible | 0 |
CorrelationLength | Infinite | 🟢 corroborated-at-p | 3 |
CriticalExponents | Infinite | 🟠 uncorroborated-but-feasible | 0 |
DynamicalCorrelation | OBC | 🟠 uncorroborated-but-feasible | 0 |
DynamicalSpinStructureFactor | Infinite | 🔵 coherent | 2 |
Energy | Infinite | 🟢 corroborated-at-p | 12 |
Energy | OBC | 🟢 corroborated-at-p | 58 |
Energy | PBC | 🟢 corroborated-at-p | 16 |
EnergyLocal | OBC | 🟠 uncorroborated-but-feasible | 0 |
FermionicEntanglementEntropy | OBC | 🟠 uncorroborated-but-feasible | 0 |
FidelitySusceptibility | Infinite | 🟢 corroborated-at-p | 2 |
FidelitySusceptibility | OBC | 🟢 corroborated-at-p | 9 |
FreeEnergy | Infinite | 🟢 corroborated-at-p | 9 |
FreeEnergy | OBC | 🟢 corroborated-at-p | 45 |
FreeEnergy | PBC | 🟢 corroborated-at-p | 30 |
GGEValue | Infinite | 🔵 coherent | 1 |
LiebRobinsonVelocity | Infinite | 🟠 uncorroborated-but-feasible | 0 |
LightconeSpinCorrelation | OBC | 🟠 uncorroborated-but-feasible | 0 |
LocalMagnetization | OBC | 🟠 uncorroborated-but-feasible | 0 |
LoschmidtAmplitude | OBC | 🟠 uncorroborated-but-feasible | 0 |
LoschmidtRateFunction | Infinite | 🟢 corroborated-at-p | 10 |
LoschmidtRateFunction | OBC | 🟢 corroborated-at-p | 12 |
MagnetizationX | Infinite | 🟢 corroborated-at-p | 6 |
MagnetizationX | OBC | 🟢 corroborated-at-p | 18 |
MagnetizationX | PBC | 🟢 corroborated-at-p | 18 |
MagnetizationY | OBC | 🟢 corroborated-at-p | 3 |
MagnetizationZ | Infinite | 🟢 corroborated-at-p | 5 |
MassGap | Infinite | 🟢 corroborated-at-p | 25 |
MassGap | OBC | 🟢 corroborated-at-p | 1 |
MassGap | PBC | 🟠 uncorroborated-but-feasible | 0 |
NMRRelaxationExponent | Infinite | 🟠 uncorroborated-but-feasible | 0 |
NMRSpinRelaxationRate | Infinite | 🟠 uncorroborated-but-feasible | 0 |
NMRSpinRelaxationRate | OBC | 🟠 uncorroborated-but-feasible | 0 |
QuenchEntanglementEntropy | OBC | 🔵 coherent | 1 |
QuenchLocalMagnetization | Infinite | 🔵 coherent | 2 |
QuenchLocalMagnetization | OBC | 🟠 uncorroborated-but-feasible | 0 |
RenyiEntropy | Infinite | 🟠 uncorroborated-but-feasible | 0 |
RenyiEntropy | OBC | 🟢 corroborated-at-p | 74 |
SpecificHeat | Infinite | 🔵 coherent | 7 |
SpecificHeat | OBC | 🟢 corroborated-at-p | 40 |
SpecificHeat | PBC | 🟢 corroborated-at-p | 18 |
SpinCorrelation | Infinite | 🟠 uncorroborated-but-feasible | 0 |
SpinCorrelation | OBC | 🟠 uncorroborated-but-feasible | 0 |
SpontaneousMagnetization | Infinite | 🟢 corroborated-at-p | 7 |
SurfaceMagnetization | OBC | 🟢 corroborated-at-p | 1 |
SusceptibilityXX | Infinite | 🟠 uncorroborated-but-feasible | 0 |
SusceptibilityXX | OBC | 🟢 corroborated-at-p | 18 |
SusceptibilityXX | PBC | 🟢 corroborated-at-p | 12 |
SusceptibilityYY | OBC | 🟢 corroborated-at-p | 18 |
SusceptibilityZZ | Infinite | 🟠 uncorroborated-but-feasible | 0 |
SusceptibilityZZ | OBC | 🟢 corroborated-at-p | 18 |
ThermalEntropy | Infinite | 🔵 coherent | 11 |
ThermalEntropy | OBC | 🟢 corroborated-at-p | 41 |
ThermalEntropy | PBC | 🟢 corroborated-at-p | 15 |
UniversalityClass | Infinite | 🟠 uncorroborated-but-feasible | 0 |
VonNeumannEntropy | Infinite | 🟠 uncorroborated-but-feasible | 0 |
VonNeumannEntropy | OBC | 🟢 corroborated-at-p | 41 |
XXStructureFactor | Infinite | 🔵 coherent | 14 |
XXStructureFactor | OBC | 🟢 corroborated-at-p | 27 |
YYStructureFactor | Infinite | 🔵 coherent | 14 |
YYStructureFactor | OBC | 🟢 corroborated-at-p | 27 |
ZZStructureFactor | Infinite | 🔵 coherent | 12 |
ZZStructureFactor | OBC | 🔵 coherent | 24 |
<!– 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 this model — together with the model struct(s) and exported helpers — generated directly from the source (in lock-step with @register):
QAtlas.TFIM — Type
TFIM(; J = 1.0, h = 1.0) <: AbstractQAtlasModelThe 1D transverse field Ising model with Hamiltonian
H = -J Σ_i σᶻ_i σᶻ_{i+1} - h Σ_i σˣ_iJ > 0 is ferromagnetic, h is the transverse field. The critical point sits at h = J.
Currently registered fetches:
| Quantity | BC | Coverage |
|---|---|---|
Energy | OBC / Infinite | Exact energy computed via BdG transformation |
SpecificHeat | Infinite | Specific heat at finite temperature |
FreeEnergy | Infinite | Free energy density at finite temperature |
ThermalEntropy | Infinite | Thermal entropy density at finite temperature |
UniversalityClass | Infinite | :Ising universality class at the critical point h = J (flows to :IsingSDRG under strong disorder) |
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SurfaceMagnetization, bc::OBC) -> Float64Surface magnetization of the N-site open chain with the far end fixed (h_N = 0), in closed form. Peschel's exact free-fermion result ([1]; [2] Eq. (4.4)) is a sum over products of h_j/J_j; on a uniform chain those are one ratio r = h/J and the sum is geometric:
m_s(N) = [1 + r²(1 − r^{2(N−1)})/(1 − r²)]^{-1/2}, m_s(N) = N^{-1/2} at r = 1.
The two limits are the exponents, not fitted: N → ∞ below the transition gives m_s = √(1−r²), so β_s = 1/2, and at r = 1 the N^{-1/2} is x_m^s = 1/2. Both are the surface entries of the 2D Ising table, and both are what a RANDOM chain also has for x_m^s by a different argument, which is why the average alone cannot tell the two apart and the typical value must.
Evaluated through log1p/expm1 so r > 1 neither overflows the numerator nor loses the answer: m_s is exponentially small there, not zero.
Size comes from bc.N (or kwargs[:N]), which is where a non-positive N is refused; there is no second check for it here.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::CentralCharge, ::Infinite) -> Float64Central charge of the TFIM:
c = 1/2at the critical pointh = J(Ising CFT)c = 0in either gapped phase (h ≠ J) — no low-energy CFT description
Criticality is detected by |h/J - 1| ≤ 1e-6.
Example
julia> QAtlas.fetch(TFIM(), CentralCharge(), Infinite())
0.5AbstractQAtlas.fetch — Method
fetch(::TFIM, ::CriticalExponents, ::Infinite; kwargs...) -> NamedTupleOnsager 2D-Ising critical exponents at the TFIM quantum critical point h = J, delegated to the existing Universality(:Ising) infrastructure at d = 2:
β = 1/8, γ = 7/4, δ = 15, ν = 1, α = 0, η = 1/4.The 1D TFIM is exactly equivalent to the 2D classical Ising model via the quantum-classical mapping (Pfeuty 1970), so the universal critical exponents are identical to Onsager's 1944 result.
References
- L. Onsager, Phys. Rev. 65, 117 (1944) — 2D classical Ising exact solution.
- P. Pfeuty, Ann. Phys. 57, 79 (1970) — TFIM ↔ 2D Ising equivalence.
- S. Sachdev, Quantum Phase Transitions (2nd ed., Cambridge 2011) — TFIM as canonical QPT example.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Energy{:per_site}, ::Infinite; beta, betas) -> Float64 or Vector{Float64}Energy per site ⟨H⟩/N in the thermodynamic limit (PBC, N → ∞). Native granularity at Infinite() (total energy diverges and has no defined value here).
ε(β) = -(1/π) ∫₀^π dk Λ(k)/2 · tanh(β Λ(k) / 2)where the PBC dispersion is Λ(k) = 2√(J² + h² - 2Jh cos k).
beta::Float64: return scalar ε(β)betas::AbstractVector{Float64}: return vector- no keyword: return ground-state energy per site (β → ∞)
Uses adaptive Gauss-Kronrod quadrature (QuadGK).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Energy{:total}, bc::OBC; beta, betas) -> Float64 or Vector{Float64}Total energy ⟨H⟩(β) for the OBC TFIM with N sites. Native granularity for finite-N TFIM (per-site is provided by the generic conversion fallback in src/core/quantities.jl).
Nis read frombc.N(OBC(N)/OBC(; N)) or fromkwargs[:N]as a legacy fallback.beta::Float64: return scalar ⟨H⟩(β)betas::AbstractVector{Float64}: return vector, reusing spectrum (O(N³) once)- no keyword: return ground-state energy E₀ = -Σₙ Λₙ/2 (β → ∞)
Uses the exact BdG formula: ⟨H⟩ = -Σₙ (Λₙ/2) tanh(β Λₙ / 2)
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::EntanglementGrowthSlope, ::Infinite;
beta_eff::Real, kwargs...) -> Float64Linear-growth slope of post-quench half-system entanglement entropy for the TFIM at the Ising critical point h = J. Wires together two universality-layer pieces
c = 1/2 (Universality(:Ising) CentralCharge)
v_LR = 2 |J| (TFIM LiebRobinsonVelocity at h = J critical)into the Calabrese-Cardy 2005 result
dS_A/dt = π c v_LR / (3 beta_eff) = π J / (3 beta_eff).For non-critical TFIM (h ≠ J, gapped) the CC linear-growth picture does not apply and DomainError is thrown.
Reference: Calabrese-Cardy J. Stat. Mech. P04010 (2005); combines universality-layer dispatches from PR #588 and the TFIM LiebRobinsonVelocity from PR #586 / fix #592.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::LiebRobinsonVelocity, ::Infinite;
J=m.J, h=m.h) -> Float64Lieb-Robinson velocity of the transverse-field Ising chain. Via the Jordan-Wigner mapping the TFIM is a free Bogoliubov-fermion system with dispersion Λ(k) = 2 sqrt(J^2 + h^2 - 2 J h cos k). The tight Lieb-Robinson velocity is the maximum single-particle group velocity saturating the bound: differentiating Λ(k) and locating the interior stationary point at cos k = min(|J|, |h|) / max(|J|, |h|) gives
v_LR = max_k |dΛ/dk| = 2 min(|J|, |h|).At criticality h = J this is 2J = 2h (Calabrese-Cardy 2006). The Hastings-Koma upper bound 2 max(|J|, |h|) is loose; the value returned here is the tight free-fermion saturated velocity that governs e.g. the linear-growth slope of post-quench entanglement (see PR #588 EntanglementGrowthSlope).
At h = 0 (classical Ising) or J = 0 (decoupled site spins) the chain has no quantum dynamics and v_LR = 0.
Reference: Lieb-Robinson 1972; Hastings-Koma 2006 (general bound); Calabrese-Cardy 2006 (free-fermion saturation in quench dynamics).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::MassGap, ::Infinite) -> Float64Mass gap of the infinite-chain TFIM: the lowest single-quasiparticle excitation energy
Δ = min_k Λ(k), Λ(k) = 2 √( J² + h² − 2 J h cos k ).Closed form:
Δ = 2 |h − J|.Canonical values:
- ordered (h < J):
Δ = 2(J − h) - disordered (h > J):
Δ = 2(h − J) - critical (h = J):
Δ = 0(Ising CFT, Δ ~ π v_F / N on finite chains)
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::MassGap, bc::OBC) -> Float64Single-quasiparticle gap of the N-site OBC TFIM read off the BdG spectrum as Λ_min, the smallest positive eigenvalue of the 2N×2N Bogoliubov-de Gennes Hamiltonian.
This is the one-particle excitation energy. Away from the critical point (|h − J| > O(1/N)) it converges to 2|h − J| exponentially in N. At the critical point h = J the OBC gap scales as Δ(N) ~ π J / N (Ising CFT).
Size is taken from bc.N (or kwargs[:N] as a legacy fallback).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::NMRRelaxationExponent, ::Infinite; kwargs...) -> Float64NMR spin-lattice relaxation rate temperature scaling exponent θ_{NMR} = -3/4 at the quantum critical point h = J. For non-critical h ≠ J, returns NaN with a warning.
AbstractQAtlas.fetch — Method
fetch(m::TFIM, ::BoundaryEntropy, ::Infinite;
h = m.h, J = m.J, boundary_state::Symbol, kwargs...) -> Float64Affleck-Ludwig boundary entropy log g of the critical TFIM at the quantum critical point h = J. Delegates to Universality(:Ising) with the same boundary_state, which is dimensionless (independent of the sound velocity).
Off-critical (h != J) is gapped and Affleck-Ludwig does not apply — this dispatch throws DomainError.
Reference: Affleck-Ludwig Phys. Rev. Lett. 67, 161 (1991).
AbstractQAtlas.fetch — Method
fetch(m::TFIM, ::EntanglementSaturationDensity, ::Infinite;
beta_eff::Real, h = m.h, J = m.J, kwargs...) -> Float64Long-time saturation S_A(infty)/L = pi c / (6 beta_eff) of the half-system entanglement entropy after a global quench at the critical TFIM point |h| = |J|. Delegates to Universality(:Ising) (c = 1/2).
AbstractQAtlas.fetch — Method
fetch(m::TFIM, ::LogarithmicNegativity, ::Infinite;
ℓ_A::Real, ℓ_B::Real, kwargs...) -> Float64Calabrese-Cardy-Tonni 2012 logarithmic negativity of two adjacent intervals at the critical TFIM point |h| = |J|:
E = (c/4) log[ℓ_A · ℓ_B / (ℓ_A + ℓ_B)], c = 1/2.Delegates to Universality(:Ising).
AbstractQAtlas.fetch — Method
fetch(m::TFIM, ::MutualInformation, ::Infinite;
ℓ_A::Real, ℓ_B::Real, beta::Real=Inf, kwargs...) -> Float64Calabrese-Cardy mutual information I(A:B) of two adjacent intervals at the critical TFIM point |h| = |J|, with the same lattice spacing convention a = 1/2 used by the VonNeumannEntropy / RenyiEntropy wrappers. The cutoff cancels in S(A) + S(B) - S(A union B), so the result is independent of a.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, q::RenyiEntropy, ::Infinite;
ℓ::Int, beta::Real = Inf, kwargs...) -> Float64Calabrese-Cardy Rényi-α entanglement entropy of a contiguous block of length ℓ in the infinite TFIM. Coefficient
P_α = (c / 6) · (1 + 1/α), c = 1/2.- T = 0, critical:
S_α = P_α · log(2 ℓ) - T = 0, gapped :
S_α = (P_α / 2) · log(2 ξ sinh(ℓ/ξ)),ξ = 1/(2|h - J|) - T > 0, critical:
S_α = P_α · log[(2 β/π) sinh(π ℓ / β)] - T > 0, gapped : not implemented (errors out).
The non-universal S_0 offset is dropped.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::VonNeumannEntropy, ::Infinite;
ℓ::Int, beta::Real = Inf, kwargs...) -> Float64Calabrese-Cardy von Neumann entanglement entropy of a contiguous block of length ℓ in the infinite TFIM (Ising CFT, c = 1/2). Returns the universal leading-log term; the non-universal S_0 offset is dropped.
beta = Inf(default): T = 0 ground state.beta < ∞: finite-temperature thermal state.
At criticality (h ≈ J) and T = 0 the result is (c/3) log(2 ℓ). In a gapped phase at T = 0 the result is (c/6) log(2 ξ sinh(ℓ/ξ)) with ξ = 1/(2|h - J|); this saturates at (c/6)(ℓ/ξ + log ξ + log 2) for ℓ ≫ ξ (area law set by ξ). At criticality + finite T the result is (c/3) log[(2 β/π) sinh(π ℓ / β)], consistent with the T = 0 form under β → ∞. The off-critical + finite-T case errors out (not yet implemented).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ConnectedSpinCorrelation{:z,:z}, bc::OBC;
beta::Float64, [i::Int, j::Int]) -> Matrix{Float64} or Float64Connected static thermal correlator C^c_{ij} = ⟨σᶻ_i σᶻ_j⟩_β − ⟨σᶻ_i⟩_β ⟨σᶻ_j⟩_β for the OBC TFIM.
In the OBC TFIM the Z₂ symmetry σᶻ → −σᶻ is unbroken at any finite N (Gaussian state of the JW fermions; odd-product expectation vanishes), so ⟨σᶻ_i⟩_β = 0 and the connected correlator coincides with the bare static one. This method therefore re-uses the :static routine and is provided as a separate dispatch for caller clarity / API completeness.
If at some point a TFIM variant breaks Z₂ explicitly (e.g. by adding a longitudinal field), the implementation will still be correct provided the per-site ⟨σᶻ_i⟩_β is taken from LocalMagnetization and subtracted off — see the comment in the source.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::DynamicalCorrelation{(:x, :x)}, bc::OBC;
i::Int, j::Int, t::Float64, beta::Float64 = Inf) -> ComplexF64Exact ⟨σˣ_i(t) σˣ_j(0)⟩_β for the OBC TFIM.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::DynamicalCorrelation{(:z, :z)}, bc::OBC;
i::Int, j::Int, t::Float64, beta::Float64 = Inf) -> ComplexF64Exact ⟨σᶻ_i(t) σᶻ_j(0)⟩_β for the OBC TFIM. beta = Inf (the default) gives the ground-state result. N comes from bc.N.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::LightconeSpinCorrelation{:z,:z}, bc::OBC;
center::Int, times::AbstractVector{<:Real}, beta::Float64 = Inf) -> Matrix{ComplexF64}Exact spreading correlation C[it, ix] = ⟨σᶻ_ix(t_it) σᶻ_center(0)⟩_β for all sites ix ∈ 1:N and t_it ∈ times.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpinCorrelation{:z,:z}, bc::OBC;
beta::Float64, [i::Int, j::Int]) -> Matrix{Float64} or Float64Static (equal-time) thermal correlator ⟨σᶻ_i σᶻ_j⟩_β for the OBC TFIM. With both i and j given returns a scalar; otherwise returns the full N×N matrix.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ZZStructureFactor, bc::OBC;
beta::Float64, q::Real) -> Float64Static structure factor S_zz(q, β) for the OBC TFIM at wave vector q.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SusceptibilityZZ, bc::OBC;
beta::Float64) -> Float64Static uniform longitudinal (q = 0) susceptibility per site,
χ_zz(β) = (β/N) Σ_{i,j} ⟨σᶻ_i σᶻ_j⟩_β.AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::FermionicEntanglementEntropy, bc::OBC;
region::Region, beta::Float64 = Inf, kwargs...) -> Float64
fetch(model::TFIM, ::FermionicEntanglementEntropy, bc::OBC;
ℓ::Int, beta::Float64 = Inf, kwargs...) -> Float64Von Neumann entropy of the state restricted to the fermionic algebra of the region — the same Peschel covariance restriction as the VonNeumannEntropy route, with no contiguity requirement.
This is the quantity the multi-interval closed form cft_region_entropy predicts, and it is what makes that formula checkable at all: the spin entropy of a disconnected region is a different number (the Jordan-Wigner string leaves the region), and no entropy inequality separates the two. See src/core/regions.jl.
On a single contiguous interval the two agree exactly, which is asserted rather than assumed — a route that quietly returned one for the other would otherwise be invisible on precisely the regions where both are defined.
Cost is O(|region|³), the same as the spin route; there is no ED fallback and no size cap, so L = 64 with fifteen blocks runs in about 0.09 s.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, q::RenyiEntropy, bc::OBC;
region::Region, beta::Float64 = Inf, kwargs...) -> Float64
fetch(model::TFIM, q::RenyiEntropy, bc::OBC;
ℓ::Int, beta::Float64 = Inf, kwargs...) -> Float64The block is named by region or by ℓ exactly as in the von Neumann method above, and carries the same single-interval restriction.
Rényi entropy of order α = q.α (α ≠ 1) for the first ℓ spins of the N-site OBC TFIM in the thermal state at inverse temperature beta (or the ground state when beta = Inf), via Peschel's correlation-matrix method — see equation (2) in the file header.
The Gaussian factorisation gives S_α = Σ_k s_α(ν_k), where the νk are the non-negative eigenvalues of `i ΣA`. As for the von Neumann case, the JW-factorisation argument (Fagotti–Calabrese 2010) means the fermion Rényi entropy equals the spin Rényi entropy for a contiguous block.
α = 1 is rejected at the RenyiEntropy constructor; use VonNeumannEntropy explicitly.
Cost is O(ℓ³) from the Hermitian eigendecomposition of i Σ_A, identical to the von Neumann path — and, like it, a disconnected region is answered rather than refused, by reconstructing the spin state with the Jordan-Wigner string reinstated (spin_rdm_from_covariance) and taking Tr ρ^α directly. That branch is exponential in the region size.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::VonNeumannEntropy, bc::OBC;
region::Region, beta::Float64 = Inf, kwargs...) -> Float64
fetch(model::TFIM, ::VonNeumannEntropy, bc::OBC;
ℓ::Int, beta::Float64 = Inf, kwargs...) -> Float64Von Neumann entanglement entropy of a block of the N-site OBC TFIM in the thermal state at inverse temperature beta (or the ground state when beta = Inf), computed by Peschel's correlation-matrix method — see equation (1) in the file header.
The block is named either by a Region or by the block length ℓ, which is sugar for Region(1:ℓ); give exactly one. A Region may sit anywhere in the chain — Region(3, 4) is the block on sites 3 and 4 — which is what lets the region entropy inequalities be instantiated on ADJACENT blocks (A = 1:2, B = 3:4, C = 5:6), where every union they need is again a single interval.
Two routes, chosen by the shape of the region and not by a keyword, because the choice is forced rather than preferred:
- contiguous — Peschel's correlation matrix,
O(ℓ³). The Jordan-Wigner string factorises across the boundary, so the spin and fermionic entropies coincide and the covariance restriction is already the answer. - disconnected — the string does not factorise, and the covariance restriction would give the FERMIONIC entropy, a genuinely different number that no entropy inequality would flag. The string is therefore reinstated explicitly (
spin_rdm_from_covariance), at a cost of4^|region|Pfaffians but still polynomial inN.
This used to throw. It answers now; ask for FermionicEntanglementEntropy if the fermionic number is what you want. Measured at N = 12, J = h = 1, the two differ by ~0.1–0.2 nats on regions like {1,3} or {1,2,5,6}.
N = _bc_size(bc, kwargs)(read fromOBC(N)or legacykwargs[:N]).- The region must lie in
1:Nand leave a non-empty complement. - Contiguous cost is
O(ℓ³);N = 200, ℓ = 100runs in a few milliseconds, whereas the full-ED SVD baseline scales asO(4^N). The disconnected route is exponential in the REGION and polynomial in the CHAIN — the opposite trade to dense ED, which is2^Nand capped atN = 12.
The result matches the full-ED reference at every small N (verified to 1e-10 in test/models/test_TFIM_entanglement.jl).
See full derivation in docs/src/calc/jw-tfim-bdg.md.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::FidelitySusceptibility, ::Infinite;
rtol::Float64=1e-10, kwargs...) -> Float64Per-site fidelity susceptibility χ_F / L of the infinite TFIM with respect to the transverse field h, computed by Gauss–Kronrod quadrature of the closed-form Bogoliubov-vacuum overlap integral.
Closed-form values (h ≠ J):
χ_F / L = 1 / (16 (J² − h²)) (ordered, h < J)
χ_F / L = J² / (16 h² (h² − J²)) (disordered, h > J)Both branches diverge as 1 / |J − h| at the critical point |h| = J — a DomainError is thrown if ||h| − |J|| is below 1e-14.
References: Gu, [3]; Damski, PRB 87, 165101 (2013).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::FidelitySusceptibility, bc::OBC;
per_site::Bool=false, kwargs...) -> Float64Ground-state fidelity susceptibility χ_F of the OBC TFIM with N = bc.N sites with respect to the transverse field h:
χ_F(h) = Σ_{n ≠ 0} |⟨n | ∂_h H | 0⟩|² / (E_n - E_0)²,evaluated in closed form via the Bogoliubov diagonalisation (no numerical differentiation). Cost O(N³).
per_site=true returns χ_F / N.
References: Gu, [3]; Damski, PRB 87, 165101 (2013).
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::GGEValue{Energy{:per_site}}, ::Infinite;
initial::TFIM, kwargs...) -> Float64Per-site Generalised Gibbs Ensemble (GGE) energy density of the infinite TFIM after a sudden quench (J, h_0) → (J, h_f), with model_f = TFIM(J = J, h = h_f) and initial = TFIM(J = J, h = h_0).
The closed form
ε_GGE = -(1/π) ∫₀^π dk · (Λ_k(h_f)/2) · (1 − 2 n_k(h_0, h_f))is the long-time average reached by the post-quench evolution; it also equals the (time-independent) energy expectation of the initial state |ψ0⟩ in the post-quench Hamiltonian Hf, which serves as the canonical energy-conservation cross-check.
Required kwarg
initial::TFIM— pre-quench TFIM whose ground state is the initial state. The Ising couplings must match (initial.J == model_f.J); a mismatch throwsDomainError.
Example
fetch(TFIM(J = 1.0, h = 0.5), GGEValue(Energy(:per_site)), Infinite();
initial = TFIM(J = 1.0, h = 2.0))References
- Rigol et al., Relaxation in a Completely Integrable Many-Body Quantum System, PRL 98, 050405 (2007).
- Calabrese, Essler, Fagotti, Quantum Quench in the Transverse Field Ising Chain, J. Stat. Mech. (2012) P07016, P07022.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::GGEValue{MagnetizationX}, ::Infinite;
initial::TFIM, kwargs...) -> Float64GGE stationary value of the transverse magnetisation ⟨σˣ⟩ of the infinite TFIM after a sudden quench (J, h_0) → (J, h_f):
⟨σˣ⟩_GGE = (2/π) ∫₀^π dk · (h_f − J cos k)/Λ_k(h_f) · (1 − 2 n_k)with n_k = sin²(θ_k(h_0) − θ_k(h_f)).
Required kwarg
initial::TFIM— pre-quench TFIM (must shareJ).
References
See [fetch(::TFIM, ::GGEValue{Energy{:per_site}}, ::Infinite; ...)].
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpinStructureFactor{:z,:z}, ::Infinite;
beta::Real, q::Real, N_proxy::Int = 80, kwargs...) -> Float64Static longitudinal structure factor S_zz(q; β) of the infinite TFIM, computed by the large-N OBC proxy _zz_static_structure_factor (default N_proxy = 80; same path as defined in TFIM_zaxis.jl). Passing an ω kwarg is an error — split #734 moved the dynamic S_zz(q, ω; β) onto the DynamicalSpinStructureFactor{:z,:z} method below.
fetch(model::TFIM, ::DynamicalSpinStructureFactor{:z,:z}, ::Infinite;
beta::Real, q::Real, ω::Real, N_proxy::Int = 64,
t_max::Real = 20.0, dt::Real = 0.1, kwargs...) -> Float64Dynamic S_zz(q, ω; β), computed as the OBC large-N proxy of the time- and space-Fourier transform of ⟨σᶻ_i(t) σᶻ_j(0)⟩_β,
S_zz(q, ω; β) = ∫dt e^{iωt} · (1/N_b) Σ_{i,j ∈ bulk}
e^{-iq(i-j)} ⟨σᶻ_i(t) σᶻ_j(0)⟩_β,with t ∈ [-t_max, t_max] discretised at spacing dt and (i, j) restricted to the central bulk window [N/4, 3N/4] of an N_proxy-site OBC chain.
Default N_proxy = 64, t_max = 20.0, dt = 0.1 is a balance of precision and cost; the dominant errors are (a) ω-resolution ~ π/t_max ≈ 0.157, (b) UV cutoff ~ π/dt ≈ 31.4, (c) finite-size finite-bulk corrections ~ exp(−(N_proxy − 4 ξ)/ξ). Raise the appropriate parameter to tighten any of these.
Performance: O(|ts| · N_b² · M³) Pfaffians per (q, ω) point, where M ≈ 2 (i + j) − 2. At default settings this is ~1 sec/point on a single core after the Majorana eigendecomposition is amortised. Multiple (q, ω) points should be batched by writing a custom loop that reuses Σ and the per-t evolution matrices R(t).
Static path remains the recommended one for any equilibrium sum-rule work; the dynamic path is intended primarily as a benchmark for TPQMPS / DMRG dynamic structure factor reference values.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SusceptibilityZZ, ::Infinite;
beta::Real, ω::Union{Real,Nothing} = nothing,
q::Union{Real,Nothing} = nothing,
N_proxy::Int = 64, t_max::Real = 20.0, dt::Real = 0.1, kwargs...)
-> Float64Longitudinal susceptibility of the infinite TFIM. This router dispatches on ω:
ω === nothing(default) → static uniform isothermal susceptibilityχ_zz(β)at q = 0, the same large-N OBC proxy_zz_uniform_susceptibilitypreviously exposed inTFIM_zaxis.jl(defaultN_proxy = 80).qis ignored on this branch.ω::Real→ dynamic imaginary partχ''_zz(q, ω; β)at finite momentum, computed via the Kubo commutator formulaχ''_zz(q, ω; β) = (1/2) ∫dt e^{iωt} · (1/N_b) Σ_{i,j ∈ bulk} e^{-iq(i-j)} ⟨[σᶻ_i(t), σᶻ_j(0)]⟩_β(Kubo 1957; Mahan, Many-Particle Physics, ch. 3) on the same
N_proxy-site OBC chain asZZStructureFactor's dynamic branch.qis required on this branch;ArgumentErroris raised if absent.Default
N_proxy = 64,t_max = 20.0,dt = 0.1mirror the dynamicZZStructureFactorproxy so the two are directly comparable (e.g. for fluctuation–dissipation cross-checks); the same ω-resolution~ π/t_max, UV cutoff~ π/dt, and finite-bulk exponential corrections apply.
The static and dynamic branches answer different physical questions: the static path returns the equilibrium thermodynamic susceptibility (integral of χ''(ω)/ω weighted by tanh(βω/2)), while the dynamic path returns the spectral function at a single (q, ω). The static branch is the recommended one for sum-rule / equation-of-state work.
The dynamic χ'' branch shares the OBC large-N Pfaffian / Majorana machinery (and (N_proxy, t_max, dt) discretisation) with the ZZStructureFactor dynamic branch. Asserting S = 2χ''/(1−e^{-βω}) therefore primarily verifies the commutator-vs-product structure is consistent — both spectral functions are computed from the same cached Σ_thermal and R(t) = exp(h_majorana · t), so their discretisation errors are correlated. Stronger independent anchors are: (i) the f-sum rule ∫₀^∞ ω χ''(q,ω) dω relates analytically to ½⟨[[H, σᶻq], σᶻ{-q}]⟩ (Hohenberg-Brinkman 1974); and (ii) at h = 0 the σᶻ operator commutes with H, so χ''_zz(q,ω) ≡ 0 — a trivial-but-strong test that fails fast on any sign error.
QAtlas.tfim_quasiparticle_dispersion — Method
tfim_quasiparticle_dispersion(model::TFIM, k::Real) -> Float64Single-quasiparticle Bogoliubov dispersion of the infinite TFIM,
Λ(k) = 2 √(J² + h² − 2 J h cos k),at momentum k ∈ [0, π]. Useful for plotting band structure and as the kinematic input to two-spinon density-of-states / structure factor calculations.
Special values:
Λ(0) = 2 |J − h|— equal to the gapΔin either phase.Λ(π) = 2 (J + h)— top of the band.- min over
k ∈ [0, π]is the mass gapMassGapatInfinite.
QAtlas.tfim_two_spinon_dos — Method
tfim_two_spinon_dos(model::TFIM, ω::Real; q_total::Real = 0.0) -> Float64Two-spinon density of states at total momentum q_total and frequency ω for the infinite TFIM:
ρ_2(ω; q_total) = (1/π) ∫₀^π dk δ(ω − Λ(k) − Λ(q_total − k)).For q_total = 0 the two-spinon continuum is supported on [2 Δ, Λ(0) + Λ(π)] = [2 |J − h|, 2 (J + h)]; outside this window the routine returns 0.0.
Computation: numerical root-finding for k* ∈ (0, π) where f(k) := Λ(k) + Λ(q_total − k) = ω, then
ρ_2(ω; q_total) = (1/π) Σ_{k*} 1 / |f'(k*)|.Roots are isolated by a brute-force scan with Nscan = 4096 samples followed by 50 bisection refinements per bracket — sufficient for ~12-digit precision in k* and ~1/Nscan precision in counting roots near van Hove singularities (where |f'| vanishes and ρ_2 diverges integrably). Right at a van Hove point the returned value is finite because the bisected k* is offset from the exact saddle.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::EnergyLocal, bc::OBC; beta::Float64, kwargs...)
-> Vector{Float64}Site-local energy density ε_i of the OBC TFIM at inverse temperature beta, defined so that Σᵢ ε_i = ⟨H⟩_β. Each bond is split symmetrically between its two endpoints:
ε_i = -(J/2) (⟨σᶻ_{i-1} σᶻ_i⟩_β + ⟨σᶻ_i σᶻ_{i+1}⟩_β) - h ⟨σˣ_i⟩_βwith the missing bonds at the i = 1 and i = N boundaries taken to be zero. Bond expectations are read off as Σ(β)[2i, 2i+1] from the Majorana thermal covariance (exact, O(N) after the single 2N×2N diagonalisation).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::LocalMagnetization{:x}, bc::OBC; beta::Float64, kwargs...)
-> Vector{Float64}Site-resolved transverse magnetisation [⟨σˣ_i⟩_β for i = 1:N] of the OBC TFIM at inverse temperature beta, read off from the Majorana thermal covariance as Σ[2i-1, 2i]. N is taken from bc.N.
beta = Inf falls back to the ground state.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::LocalMagnetization{:z}, bc::OBC; beta::Float64, kwargs...)
-> Vector{Float64}Site-resolved longitudinal magnetisation [⟨σᶻ_i⟩_β for i = 1:N]. Identically zero in the OBC TFIM by the Z₂ symmetry σᶻ → −σᶻ of the Hamiltonian (Gaussian state, odd product of Majoranas). Returned as an explicit zero vector so consumers can use it as an exact baseline against finite random-sample estimates that fluctuate around zero.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::LoschmidtAmplitude, bc::OBC;
initial::TFIM, t::Real, kwargs...) -> Float64Loschmidt echo L(t) = |⟨ψ_0|e^{-iH_f t}|ψ_0⟩|² for an OBC chain of size bc.N after a sudden quench H_0 = TFIM(J, h_0) → H_f = TFIM(J, h_f).
initial carries the pre-quench Hamiltonian (must share J with model_f; only h differs). Computed by diagonalising both BdG matrices and evaluating the per-mode Bogoliubov overlap product.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::LoschmidtRateFunction, ::Infinite;
initial::TFIM, t::Real, atol::Real=1e-10, rtol::Real=1e-8, kwargs...)
-> Float64Loschmidt rate function in the thermodynamic limit:
λ(t) = -(1/2π) ∫_0^π log| cos²(Δθ_k) + sin²(Δθ_k) e^{-2 i Λ_k^{(f)} t} |² dk,evaluated by QuadGK.quadgk. At a DQPT critical time the integrand has a log-divergence at k = k^*; QuadGK's adaptive subdivision handles the integrable singularity.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::LoschmidtRateFunction, bc::OBC;
initial::TFIM, t::Real, kwargs...) -> Float64Loschmidt rate function λ(t) = -log L(t) / N for the OBC TFIM quench h_0 → h_f. See LoschmidtRateFunction.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Energy{:per_site}, bc::PBC; beta::Real, kwargs...) -> Float64Per-site energy ε(β) = -∂_β log Z / N of the N-site PBC TFIM. Native granularity for PBC TFIM (the :total granularity is provided by the generic conversion fallback in src/core/quantities.jl).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::MassGap, bc::PBC; kwargs...) -> Float64Lowest excitation energy of the N-site PBC TFIM. See _tfim_pbc_mass_gap for sector handling.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::QuenchEntanglementEntropy, bc::OBC;
initial::TFIM, ℓ::Int, t::Real, kwargs...) -> Float64Post-quench von Neumann entanglement entropy of the first ℓ sites of the N-site OBC TFIM.
Prepare the chain in the ground state of initial::TFIM and quench instantly to model_f::TFIM; this method returns
S(ℓ, t) = -Tr ρ_A(t) log ρ_A(t)evaluated by Peschel's correlation-matrix method on the time-evolved Majorana covariance Σ(t) = R(t) Σ0 R(t)ᵀ. See the file header (`TFIMquench_entanglement.jl`) for the full derivation and the Calabrese–Cardy quasi-particle picture for the expected linear-growth behaviour.
Required keyword arguments
initial::TFIM— initial-Hamiltonian model whose ground state is the t = 0 state.ℓ::Int— subsystem length,1 ≤ ℓ ≤ N - 1.t::Real— post-quench time.
N is read from OBC(N) (or legacy kwargs[:N]). At t = 0 the result coincides with the equilibrium VonNeumannEntropy of the initial model — this is the back-compat sanity check exercised in test/standalone/test_tfim_quench_entanglement.jl.
Cost: O(N³) from the matrix exponential plus O(ℓ³) from the Peschel eigendecomposition.
References: Calabrese–Cardy J. Stat. Mech. P04010 (2005); Peschel J. Phys. A 36, L205 (2003).
QAtlas.RandomTFIM — Type
RandomTFIMDisordered{TFIM}: the 1D random transverse-field Ising chain,
H = -Σ_i J_i σᶻ_i σᶻ_{i+1} - Σ_i h_i σˣ_iwith J_i = J·λ_i and h_i = h·μ_i, the TFIM's own J and h being the SCALES and λ, μ drawn from the families named for :J and :h.
Criticality is [ln J]_av = [ln h]_av, which for equal families is J == h and in general is not. Distance from it is rtfim_delta.
| Quantity | BC | Coverage |
|---|---|---|
DynamicalExponent | Infinite | exact off criticality; throws at δ = 0 |
ActivatedExponent | Infinite | 1/2, at criticality only |
UniversalityClass | Infinite | :IsingSDRG, at criticality only |
Anything else is refused: a disordered chain does not inherit the clean one's answers.
QAtlas.RandomTFIM — Method
RandomTFIM(; J = 1.0, h = 1.0, D = 1.0)The symmetric PowerLawDisorder case, which is the default in the strong-disorder RG literature. Any other combination is built with Disordered directly.
AbstractQAtlas.fetch — Method
fetch(::RandomTFIM, ::SpatialDimension, ::Infinite) -> Int1. The chain's own spatial dimension, which is what quenched disorder lives in and what every infinite-randomness relation reads.
Worth answering rather than leaving to the caller: this atlas also hands out d = 2 for the same chain, under CriticalExponents, where it means the 2D classical image whose exponent table that is. The two are different numbers for one system, so the one the relations take is stated here instead of guessed (see AbstractQAtlas's SpatialDimension).
AbstractQAtlas.fetch — Method
fetch(::RandomTFIM, ::ActivatedExponent, ::Infinite) -> Rational{Int}ψ = 1/2 at the critical point, the exponent of ln t_r ∼ ξ^ψ ([2] Eq. (4.13), §4.1.3).
Refused away from criticality, where the chain is in a Griffiths phase with a finite DynamicalExponent instead. Returning 1/2 there would name the exponent of a fixed point the model is not at.
AbstractQAtlas.fetch — Method
fetch(m::RandomTFIM, ::DynamicalExponent, ::Infinite) -> Float64The Griffiths-phase dynamical exponent, exactly: the positive root of [(J/h)^{1/z}]_av = 1 ([2] Eq. (4.15), §4.1.3). It varies continuously with the distance from criticality and diverges as δ → 0; near criticality it reduces to the 1/z = 2|δ| the review quotes with Eq. (4.51).
Throws at δ = 0: at the infinite-randomness fixed point the equation has no root rather than a large one. Ask for ActivatedExponent instead.
AbstractQAtlas.fetch — Method
fetch(::RandomTFIM, ::UniversalityClass, ::Infinite) -> Universality{:IsingSDRG}At criticality the chain flows to the infinite-randomness fixed point, whose exact exponents are fetch(Universality(:IsingSDRG), CriticalExponents(); d=2). Refused off criticality, where the chain is not critical at all.
QAtlas.rtfim_delta — Method
rtfim_delta(m::RandomTFIM) -> Float64δ = ([ln h]_av − [ln J]_av) / (var[ln h] + var[ln J]). Zero exactly at the infinite-randomness critical point; positive in the disordered phase.
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::QuenchLocalMagnetization{:x}, ::Infinite;
initial::TFIM, t::Real, kwargs...) -> Float64Translationally-invariant ⟨σˣ⟩(t) for the infinite TFIM after a sudden quench from H(initial.h) to H(model_f.h) (initial.J == model_f.J required). Closed-form k-integral:
⟨σˣ⟩(t) = (1/π) ∫₀^π dk [ cos(2 θ_k^f) cos(2 Δθ_k)
+ sin(2 θ_k^f) sin(2 Δθ_k) cos(2 Λ_k^f t) ]with Δθk ≡ θk(hf) − θk(h_0), evaluated by adaptive Gauss–Kronrod quadrature.
References: Barouch–McCoy–Dresden, PRA 2 (1970); Calabrese–Essler– Fagotti, J. Stat. Mech. P07016 (2012).
AbstractQAtlas.fetch — Method
fetch(model_f::TFIM, ::QuenchLocalMagnetization{:x}, bc::OBC;
initial::TFIM, i::Int, t::Real, kwargs...) -> Float64Time-evolved local transverse magnetisation ⟨σˣ_i⟩(t) of the OBC TFIM after a sudden quench.
model_fis the post-quench model (setsh_f,J).initialis the pre-quench TFIM whose ground state|ψ_0⟩is the initial state. Both models must share the sameJ; mismatch raises anArgumentError(the quench is not defined for aJ → J'jump in the current implementation).i ∈ 1:N,t ∈ ℝ,Nfrombc.N(or kwargs).
Implementation: Majorana covariance evolution Σ(t) = R(t) Σ0 R(t)^T with Σ0 = GS covariance under H(h0) and R(t) = exp(hf · t). Cost per call: one 2N × 2N eigendecomposition + one matrix exponential.
Sanity checks (covered by test/standalone/test_tfim_sigma_x_quench.jl):
- t = 0 → equilibrium
⟨σˣ_i⟩of GS(h_0). - h0 = hf → time-independent (= equilibrium GS at h_0).
- Large-N central-site → matches the
Infinite()closed form.
References: Barouch–McCoy–Dresden, Phys. Rev. A 2 (1970) 1075; Calabrese–Essler–Fagotti, J. Stat. Mech. P07016 (2012).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::FreeEnergy, ::Infinite; beta::Real, kwargs...)Per-site free_energy of the TFIM in the thermodynamic limit at inverse temperature beta. Uses adaptive Gauss-Kronrod quadrature over the BdG dispersion Λ(k) = 2√(J² + h² − 2Jh cos k).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::FreeEnergy, bc::OBC; beta::Real, kwargs...)Per-site free_energy of the OBC TFIM with N = bc.N sites at inverse temperature beta. Computed exactly via the BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Magnetization{:x}, ::Infinite; beta::Real, kwargs...)Per-site transverse_magnetization of the TFIM in the thermodynamic limit at inverse temperature beta. Uses adaptive Gauss-Kronrod quadrature over the BdG dispersion Λ(k) = 2√(J² + h² − 2Jh cos k).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Magnetization{:x}, bc::OBC; beta::Real, kwargs...)Per-site transverse_magnetization of the OBC TFIM with N = bc.N sites at inverse temperature beta. Computed exactly via the BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::NMRSpinRelaxationRate, ::Infinite; beta::Real, eta::Real=0.1, kwargs...)Per-site NMR spin relaxation rate 1/T₁ of the TFIM in the thermodynamic limit, from the Lorentzian-broadened two-quasiparticle scattering integral.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::NMRSpinRelaxationRate, bc::OBC; beta::Real, eta::Real=0.1, kwargs...)Per-site NMR spin relaxation rate 1/T₁ of the OBC TFIM with N = bc.N sites, summed over the exact BdG quasiparticle spectrum.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpecificHeat, ::Infinite; beta::Real, kwargs...)Per-site specific_heat of the TFIM in the thermodynamic limit at inverse temperature beta. Uses adaptive Gauss-Kronrod quadrature over the BdG dispersion Λ(k) = 2√(J² + h² − 2Jh cos k).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpecificHeat, bc::OBC; beta::Real, kwargs...)Per-site specific_heat of the OBC TFIM with N = bc.N sites at inverse temperature beta. Computed exactly via the BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Susceptibility{(:x, :x)}, ::Infinite; beta::Real, kwargs...)Per-site transverse_susceptibility of the TFIM in the thermodynamic limit at inverse temperature beta. Uses adaptive Gauss-Kronrod quadrature over the BdG dispersion Λ(k) = 2√(J² + h² − 2Jh cos k).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::Susceptibility{(:x, :x)}, bc::OBC; beta::Real, kwargs...)Per-site transverse_susceptibility of the OBC TFIM with N = bc.N sites at inverse temperature beta. Computed exactly via the BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ThermalEntropy, ::Infinite; beta::Real, kwargs...)Per-site entropy of the TFIM in the thermodynamic limit at inverse temperature beta. Uses adaptive Gauss-Kronrod quadrature over the BdG dispersion Λ(k) = 2√(J² + h² − 2Jh cos k).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ThermalEntropy, bc::OBC; beta::Real, kwargs...)Per-site entropy of the OBC TFIM with N = bc.N sites at inverse temperature beta. Computed exactly via the BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ConnectedSpinCorrelation{:x,:x}, ::Infinite;
beta::Real = Inf, i::Int, j::Int,
N_proxy::Int = 80, kwargs...) -> Float64Connected static ⟨σˣ_i σˣ_j⟩_β,c in the thermodynamic limit, via the same OBC large-N proxy as SpinCorrelation{:x,:x}, Infinite().
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ConnectedSpinCorrelation{:x,:x}, bc::OBC;
beta::Real = Inf, i::Int, j::Int, kwargs...) -> Float64Connected static thermal transverse correlator ⟨σˣ_i σˣ_j⟩_β − ⟨σˣ_i⟩_β ⟨σˣ_j⟩_β for the OBC TFIM.
Unlike ConnectedSpinCorrelation{:z,:z} (where ⟨σᶻ⟩ = 0 by Z₂ on OBC and the connected and bare correlators coincide), ⟨σˣ⟩_β ≠ 0 in general — σˣ is the field-coupled order parameter and acquires a non-zero expectation Σ[2i-1, 2i] from the BdG-thermal covariance.
For i = j the on-site σˣ variance simplifies to 1 − ⟨σˣ_i⟩² since (σˣ)² = I.
Internals: a single 2N × 2N BdG diagonalisation gives both the σˣ expectation values (read off the covariance Σ) and, with the identity evolution R = I at t = 0, the 4×4 Pfaffian for ⟨σˣ_i σˣ_j⟩_β.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpinCorrelation{:x,:x}, ::Infinite;
beta::Real = Inf, i::Int, j::Int,
N_proxy::Int = 80, kwargs...) -> Float64Static ⟨σˣ_i σˣ_j⟩_β in the thermodynamic limit, delivered as the OBC value at proxy size N_proxy (default 80) — same compromise as SusceptibilityZZ/ZZStructureFactor at Infinite(), see TFIM_zaxis.jl for the rationale.
The caller is responsible for picking bulk-friendly indices, e.g. N_proxy / 4 ≤ i, j ≤ 3 N_proxy / 4. At those interior sites the boundary contamination decays exponentially with the distance to the nearest edge in the gapped phase, and as 1/distance at criticality.
Raise N_proxy if more accuracy is needed; the cost is the single 2 N_proxy × 2 N_proxy BdG diagonalisation.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpinCorrelation{:x,:x}, bc::OBC;
beta::Real = Inf, i::Int, j::Int, kwargs...) -> Float64Static (equal-time) thermal transverse correlator ⟨σˣ_i σˣ_j⟩_β for the OBC TFIM at inverse temperature beta. beta = Inf (the default) gives the ground-state value.
Implementation: re-uses _sx_sx_corr(N, J, h, i, j, 0.0; β=beta) from TFIM_dynamics.jl — a 4×4 Pfaffian over the four Majoranas (γ_{2i-1}, γ_{2i}, γ_{2j-1}, γ_{2j}). The result is real at equal time, so the imaginary residue (round-off) is dropped via real(...).
At i = j, ⟨(σˣ)²⟩ = ⟨I⟩ = 1 regardless of (β, J, h).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::XXStructureFactor, ::Infinite;
beta::Real, q::Real, N_proxy::Int = 80, kwargs...) -> Float64Static transverse structure factor S_xx(q, β) in the thermodynamic limit, computed as the OBC large-N proxy at N_proxy = 80 (default, ~3-digit accuracy at moderate β in the gapped phase; raise N_proxy to tighten). Same convention and proxy strategy as the existing SusceptibilityZZ / ZZStructureFactor Infinite methods in TFIM_zaxis.jl.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::XXStructureFactor, bc::OBC; beta::Real, q::Real, kwargs...)
-> Float64Static transverse structure factor S_xx(q, β) for the OBC TFIM with N sites. Defined as (1/N) Σ_{i,j} e^{-iq(i-j)} ⟨σˣ_i σˣ_j⟩_β with σˣ correlators from the t = 0 slice of the free-fermion Pfaffian formula.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::YYStructureFactor, ::Infinite;
beta::Real, q::Real, N_proxy::Int = 80, kwargs...) -> Float64Static σʸ structure factor in the thermodynamic limit; OBC large-N proxy at N_proxy.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::YYStructureFactor, bc::OBC; beta::Real, q::Real, kwargs...)
-> Float64Static σʸ structure factor for the OBC TFIM. Companion of XXStructureFactor.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::ConnectedSpinCorrelation{:y,:y}, bc::OBC;
beta=Inf, i, j) -> Float64Connected thermal correlator ⟨σʸ_i σʸ_j⟩_β − ⟨σʸ_i⟩ ⟨σʸ_j⟩. Since ⟨σʸ⟩ = 0 in any Gaussian state of the TFIM (odd-Majorana product), the connected and static values coincide off-diagonal; the diagonal returns 1 - 0² = 1.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::DynamicalCorrelation{(:y, :y)}, bc::OBC;
beta=Inf, i, j, t) -> ComplexF64Real-time correlator ⟨σʸ_i(t) σʸ_j(0)⟩_β. Returns ComplexF64; the imaginary part is non-zero in general (Re part is even in t, Im part is odd in t — see the time-domain identity tests in test/identities/test_TFIM_dynamic_symmetries.jl).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::MagnetizationY, bc::OBC; beta) -> Float64Per-site bulk magnetisation ⟨Σᵢ σʸᵢ⟩_β / N of the OBC TFIM. Identically zero in any Gaussian state because σʸ_i reduces to an odd product of Majoranas. Returned as exact 0.0 so callers can use it as a deterministic baseline against random-sample estimators that fluctuate around zero.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpinCorrelation{:y,:y}, bc::OBC;
beta=Inf, i, j) -> Float64Static thermal correlator ⟨σʸ_i σʸ_j⟩_β on the OBC TFIM. Equivalent to the t = 0 slice of DynamicalCorrelation(:y, :y), returned as Float64 (the imaginary part is round-off only at t = 0).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SusceptibilityYY, bc::OBC; beta) -> Float64Per-site equal-time fluctuation χ_yy(β) = (β / N) · Σ_{i,j} ⟨σʸ_i σʸ_j⟩_β of the OBC TFIM. ⟨σʸ⟩ = 0 in this Gaussian state, so the variance form simplifies to (β/N) · ⟨M_y²⟩.
Implementation: per pair (i, j) evaluate the Pfaffian of the static Majorana Wick matrix. Diagonal contribution ⟨(σʸᵢ)²⟩ = 1 (Pauli identity) is added directly, off-diagonal twice (symmetric). Cost is O(N² · M³) with M = 2 max(i, j) − 1; same scaling as SusceptibilityXX OBC and _xx_uniform_susceptibility in TFIM_thermal.jl.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::CorrelationLength, ::Infinite; kwargs...) -> Float64T = 0 correlation length of the infinite TFIM in the relativistic continuum convention (inverse mass gap),
ξ = 1 / (2|h - J|) (gapped phase)
ξ = Inf (critical point h = J)set by the lattice mass gap Δ = 2|h - J| via the universal IR relation ξ = 1/Δ (with v_F = 1 implicit; lattice units). Tracks MassGap at Infinite.
Convention note
Three legitimate conventions exist for the TFIM correlation length on the lattice; QAtlas exposes the first by default for consistency with MassGap:
| Convention | Formula | Origin |
|---|---|---|
| Inverse mass gap (this fetch) | `1 / (2 | h - J |
| Pfeuty 1970 longitudinal | 1 / log(max(J,h) / min(J,h)) | lattice JW-fermion <σᶻσᶻ> decay exact |
| Sachdev lattice relativistic | `min(J,h) / | h - J |
The three agree to leading order near criticality (|h - J| << max). For exact lattice decay of the longitudinal correlator at any (J, h), use the Pfeuty form externally.
In QAtlas convention ξ is dimensionless (in units of the lattice spacing).
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::MagnetizationZ, ::Infinite; kwargs...) -> Float64Spontaneous longitudinal magnetisation per site of the infinite TFIM at T = 0, m_z = (1 - (h/J)²)^{1/8} for h < J, else 0 (Pfeuty 1970). Returns the positive branch of the Z₂-broken doublet.
The result is the T = 0 order parameter; the function does not take a beta kwarg because m_z(T > 0) = 0 for any finite chain in the thermodynamic limit (Mermin-Wagner is irrelevant in 1D, but the broken phase requires explicit symmetry breaking; m_z(T,h) ≠ 0 only at T = 0). Pass beta = Inf if you want to be explicit; it is ignored.
AbstractQAtlas.fetch — Method
fetch(model::TFIM, ::SpontaneousMagnetization, ::Infinite; kwargs...) -> Float64Same value as fetch(::TFIM, ::MagnetizationZ, ::Infinite), exposed under the order-parameter name commonly used in the Pfeuty / 2D-Ising universality literature. The struct SpontaneousMagnetization is shared with IsingSquare (defined in src/models/classical/IsingSquare/IsingSquare.jl); this method adds the TFIM-at-Infinite branch.
<!– ATLAS:DOCS:END –>