Skip to content

[peps] ybli: criticality in open quantum matter - #182

Open
Yu-BinLi wants to merge 5 commits into
QuantumBFS:mainfrom
Yu-BinLi:challenge/peps-open-criticality
Open

[peps] ybli: criticality in open quantum matter#182
Yu-BinLi wants to merge 5 commits into
QuantumBFS:mainfrom
Yu-BinLi:challenge/peps-open-criticality

Conversation

@Yu-BinLi

@Yu-BinLi Yu-BinLi commented Jul 27, 2026

Copy link
Copy Markdown

Team

Team name ybli
Members ybli

Challenge

Row
Challenge Reproduce effective central charges at the Nishimori and weak self-dual critical points in open quantum matter, with a finite-size Lyapunov-spectrum analysis.
Catalog issue Addresses #122 — released by Guo-Yi Zhu, Hong Kong University of Science and Technology (Guangzhou).
Track peps, chosen by the team because the issue explicitly includes tensor-network contraction.

Results

Clean 2D Ising (validation, c = 1/2)

Quantity Our result Exact Error
c_eff (Model C) 0.4999 0.5 0.02%
Delta_1 0.124 1/8 = 0.125 0.8%
Delta_2 0.996 1.0 0.4%

Nishimori RBIM (p = 0.8899, beta_N = 1.0449)

Quantity Our result Literature
c_eff (Model A) 0.49 ± 0.04 0.464(4)
c_eff(6,10) pair 0.466 0.464(4)
Delta_1 0.055 ± 0.001
Delta_2 1.632 ± 0.005

Data: 3150 samples across L = 4, 6, 8, 10, 12 (two independent runs).

Weak self-dual point of measured toric code (theta = pi/4, c_eff ~ 0.447)

Born-weight sampling via Walsh-Hadamard Transform (WHT) optimized sampler. Transfer matrix amplitude spectrum via dense SVD.

Quantity Our result Literature
c_eff (pair c(4,6), Ly=20) 0.446 0.447
c_eff (Ly=10 pairs) 0.43 - 0.48 0.447
Delta_1 0.164
Delta_2 0.270
Delta_3 0.271

c_eff = 0.45 +/- 0.05. The pair estimator c(4,6) = 0.446 from Ly=20 data matches the literature value 0.447 to within 0.2%. The 3-param fits are unstable due to non-standard finite-Ly corrections in the Born-correlated disorder; pair estimates partially cancel these corrections and are more reliable.

Delta_1 is remarkably stable (0.163-0.165 across L = 4, 6, 8, 10). Delta_2 and Delta_3 are nearly degenerate, suggesting multiplet structure consistent with the class-D Majorana network description. L = 12 is excluded from scaling dimensions due to SVD convergence failure on the 4096 x 4096 transfer matrix product.

Convention: Phi = -gamma_0 (amplitude / single-layer), matching the Ising convention where Phi = -log(Z)/Ly gives c = 1/2.

Data: two datasets at Ly = 10L (200/100/100/50/12 samples for L = 4-12) and Ly = 20L (50 samples per L, 30 for L = 12).

Cross-model comparison

Quantity Ising (exact) Nishimori Self-dual Lit. (self-dual)
c_eff 0.500 0.49(4) 0.45(5) 0.447
Delta_1 0.125 0.055(1) 0.164 -
Delta_2 1.000 1.63(5) 0.270 -

Method

Born-weighted random transfer-matrix products with Lyapunov spectrum extraction:

  1. For each disorder realization m, build row transfer matrices T_y
  2. Compute Lyapunov spectrum via Householder QR (no translation invariance needed)
  3. Leading exponent gamma_0 gives free energy per row; gaps gamma_0 - gamma_m give scaling dimensions
  4. Finite-size scaling: Phi_L = aL - pialphac/(6L) + corrections

For the self-dual point, the Born sampling uses a Walsh-Hadamard Transform (WHT) to achieve O(N log N) per-row cost instead of O(N^2), enabling exact Born sampling up to L = 12.

How to reproduce

Run tests (49 tests, all pass)

julia -e 'include("tracks/peps/solutions/ybli/test/runtests.jl")'

Clean Ising benchmark

julia tracks/peps/solutions/ybli/scripts/benchmark_ising.jl

Nishimori RBIM (using included cluster data)

The raw CSV data for 3150 samples is in scripts/results/. To re-run the fit:

julia -e '
include("tracks/peps/solutions/ybli/src/OpenCriticality.jl")
using .OpenCriticality
using Printf, Statistics

Ls = [4, 6, 8, 10, 12]
results_dir = "tracks/peps/solutions/ybli/scripts/results"
mean_neg_g0 = Float64[]
for L in Ls
    neg_g0s = Float64[]
    for suffix in ["", "_run2"]
        f = "$results_dir/nishimori_dense_L$(L)$(suffix).csv"
        isfile(f) || continue
        for line in readlines(f)[2:end]
            push!(neg_g0s, -parse(Float64, split(line, ",")[2]))
        end
    end
    push!(mean_neg_g0, mean(neg_g0s))
end
c = fit_central_charge(Ls, mean_neg_g0, 1.0; model=:A)[1]
println("c_eff = ", c)
'

Generate fresh cluster data

# Slurm submission
julia tracks/peps/solutions/ybli/scripts/nishimori_cluster.jl --generate
sbatch slurm/array_job.sh

# Or run locally for small L
julia tracks/peps/solutions/ybli/scripts/nishimori_cluster.jl

Weak self-dual point

# Run sampling + SVD analysis (Ly = 10*L by default)
julia tracks/peps/solutions/ybli/scripts/self_dual_optimized.jl 4 200

# For larger L, use Julia 1.12+ and longer Ly
julia tracks/peps/solutions/ybli/scripts/self_dual_optimized.jl 8 50 10

# Run the full analysis (reads both Ly=10 and Ly=20 datasets)
julia tracks/peps/solutions/ybli/scripts/analyze_self_dual_final.jl

Full details in RESULTS.md.

References

Yu-BinLi and others added 5 commits July 27, 2026 16:09
- Full Julia implementation (OpenCriticality module):
  - Models: ClassicalIsing, NishimoriRBIM, MeasuredToricCode
  - Dense + boundary-MPS contraction backends
  - Householder QR Lyapunov spectrum extraction
  - Direct iid + Metropolis samplers
  - Finite-size scaling: c_eff fits, bootstrap, pair estimators

- Benchmark results:
  - Clean Ising: c_eff=0.500, Delta_1=0.124, Delta_2=0.996
  - Nishimori RBIM (p=0.8899): c_eff=0.49(4), 3150 samples, L=4-12
  - Scaling dimensions Delta_1..5 with bootstrap errors

- Cluster data (3150 raw samples in CSV format)

- Weak self-dual point: Born-weighted toric code sampler implemented
  (exact for L<=4, MCMC for larger L), pending full scaling analysis

- All 49 tests pass
- Results report (RESULTS.md) with reproduction instructions
- Two-stage exact Born sampler for measured toric code (L <= 7)
  - Exploits factorization: sum_mv D_v^2 = I at theta=pi/4
  - Reduces per-row enumeration from 2^(2L) to 2*2^L
- Toric code amplitude transfer matrix builder
- Lyapunov spectrum extraction for scaling dimensions
- Data collected for L=4 (200 samples), L=6 (100), L=7 (5)
- Key finding: amplitude eigenvalues all |lambda|<1, so Born weight
  decays. Standard Casimir formula does not directly apply to
  Born-averaged free energy. Scaling dimensions from Lyapunov gaps
  are valid (depend on eigenvalue ratios).
- c_eff extraction requires Majorana network (Merz-Chalker) approach:
  next implementation step
Final Nishimori results with all cluster data:
  c_eff = 0.497 +/- 0.033 (Model A bootstrap)
  Delta_1 = 0.055, Delta_2 = 1.632
  Literature: c_eff = 0.464(4)

Self-dual Born sampler also committed:
  Two-stage exact sampler (L <= 7)
  Scaling dimensions from Lyapunov spectrum
  c_eff requires Majorana network approach (next step)
…164)

- Fix Phi convention: Phi = -gamma_0 (amplitude/single-layer), matching
  Ising convention where Phi=-log(Z)/Ly gives c=1/2
- L=12 SVD data (Ly=10*L, 10 samples) completed
- Comprehensive analysis: Ly=10 (SVD) and Ly=20 (eigenvalue+SVD) datasets
- c_eff = 0.45 +/- 0.05 (pair c(4,6)=0.446 from Ly=20, lit 0.447)
- Delta_1 = 0.164 (Ly=20, L=4-10, very stable)
- Delta_2 = 0.270, Delta_3 = 0.271 (nearly degenerate, Ly=20)
- L=12 excluded from scaling dimensions (SVD convergence issue)
- Updated RESULTS.md Section 3 with actual self-dual results
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants