Inputs.table(filteredRuns, {columns: ["runId","task","phase","latticeSize","dimension","betaRange","wallTimeMin","sweepsPerSec","betasDone","date","status","keyFinding" ],header: {runId:"Run ID",task:"Task",phase:"Phase",latticeSize:"L",dimension:"D",betaRange:"β Range",wallTimeMin:"Wall Time",sweepsPerSec:"Perf (sw/s)",betasDone:"βs",date:"Date",status:"Status",keyFinding:"Key Finding" },format: {runId: id => htl.html`<code class="small">${id}</code>`,status: s => s ==="complete"? htl.html`<span class="badge bg-success">${s}</span>`: htl.html`<span class="badge bg-warning">${s}</span>`,wallTimeMin: t => t ? htl.html`<span class="font-monospace">${t}m</span>`:"—",sweepsPerSec: p => p ? htl.html`<span class="font-monospace">${p.toLocaleString()}</span>`:"—",betasDone: b => htl.html`<span class="font-monospace">${b}</span>`,keyFinding: k => {const val = k ===undefined|| k ===null|| k ===""|| k ==="undefined"?"—":String(k);return val ==="—"? val : htl.html`<span style="white-space: normal; overflow-wrap: break-word; max-width: 250px; line-height: 1.3;">${val}</span>`; } },width: {runId:180,task:50,phase:70,latticeSize:40,dimension:40,betaRange:90,wallTimeMin:70,sweepsPerSec:80,betasDone:50,date:90,status:70,keyFinding:250 },rows:15})
Plot Gallery
Code
figureFiles = [// T20 Phase 3 (3D) plots {id:"t20-p3-plaquette-vs-beta",title:"Plaquette vs β (3D)",desc:"Plaquette expectation across β values"}, {id:"t20-p3-susceptibility-vs-beta",title:"Susceptibility (3D)",desc:"Magnetic susceptibility peak"}, {id:"t20-p3-specific-heat-vs-beta",title:"Specific Heat (3D)",desc:"Specific heat near critical region"}, {id:"t20-p3-binder-vs-beta",title:"Binder Cumulant (3D)",desc:"Binder cumulant convergence to 2/3"}, {id:"t20-p3-combined",title:"Combined Observables (3D)",desc:"All observables in 2×2 panel"}, {id:"t20-p3-wilson-loops",title:"Wilson Loops (3D)",desc:"Wilson loop expectation values"}, {id:"t20-p3-string-tension",title:"String Tension (3D)",desc:"String tension extraction"},// All-L comparisons {id:"t20-p3-plaquette-vs-beta-all-L",title:"Plaquette All L (3D)",desc:"Finite-size scaling comparison"}, {id:"t20-p3-binder-vs-beta-all-L",title:"Binder All L (3D)",desc:"Binder cumulant across lattice sizes"}, {id:"t20-p3-specific-heat-vs-beta-all-L",title:"Specific Heat All L",desc:"Specific heat finite-size scaling"}, {id:"t20-p3-susceptibility-vs-beta-all-L",title:"Susceptibility All L",desc:"Susceptibility scaling"}, {id:"t20-p3-combined-all-L",title:"Combined All L",desc:"All observables, all L sizes"},// T20 Phase 2 (2D) plots {id:"t20-plaquette-vs-beta",title:"Plaquette vs β (2D)",desc:"2D plaquette expectation"}, {id:"t20-susceptibility",title:"Susceptibility (2D)",desc:"2D magnetic susceptibility"},// T20d Ising FSS Reanalysis (T32-T20d, 2026-07-08) {id:"t20d-overview",title:"T20d: Combined Overview",desc:"Combined overview of L=16 and L=24 fine scans (3D Ising FSS)"}, {id:"t20d-chi-raw",title:"T20d: Susceptibility (Raw)",desc:"Susceptibility χ vs β for L=16 and L=24"}, {id:"t20d-bc-extrapolation",title:"T20d: β_c Extrapolation",desc:"Extrapolation of pseudo-critical β_c(L) to thermodynamic limit"}, {id:"t20d-chi-collapse-lit",title:"T20d: χ Collapse (lit β_c)",desc:"Scaling collapse using literature β_c = 0.76141"}, {id:"t20d-chi-collapse-fit",title:"T20d: χ Collapse (fit β_c)",desc:"Scaling collapse using fitted β_c(∞) = 0.76092"}, {id:"t20d-binder-collapse",title:"T20d: Binder Collapse",desc:"Binder cumulant vs scaling variable"}, {id:"t20d-plaquette-collapse",title:"T20d: Plaquette Collapse",desc:"Plaquette expectation scaling collapse"}, {id:"t20d-chi-max-scaling",title:"T20d: χ_max Scaling",desc:"Peak susceptibility scaling with L"},// Superseded T20 first-order figures are intentionally omitted from the dashboard.// They remain in git history and old artifacts only for provenance; see T32. {id:"t20-convergence-L16",title:"Convergence L16",desc:"Convergence at L=16"}, {id:"t20-error-bars",title:"Error Bars",desc:"Error bar analysis"}, {id:"t20-error-comparison-L16",title:"Error Comparison",desc:"Error comparison at L=16"}]// Group by categoryfigureCategories = [ {name:"T20d Ising FSS Reanalysis",filter: f => f.id&& f.id.startsWith("t20d-")}, {name:"3D Phase 3 (Core)",filter: f => f.id&& f.id.includes("p3-") &&!f.id.includes("all-L") &&!f.id.includes("multi")}, {name:"3D Finite-Size Scaling",filter: f => f.id&& f.id.includes("p3-") && (f.id.includes("all-L") || f.id.includes("multi"))}, {name:"2D Phase 2",filter: f => f.id&& f.id.includes("t20-") &&!f.id.includes("p3-") &&!f.id.includes("all-L") &&!f.id.includes("multi") &&!f.id.includes("scaling") &&!f.id.includes("critical") &&!f.id.includes("first-order") &&!f.id.includes("convergence") &&!f.id.includes("error")}, {name:"Scaling Analysis",filter: f => f.id&& (f.id.includes("scaling") || f.id.includes("collapse") || f.id.includes("critical") || f.id.includes("first-order") || f.id.includes("convergence") || f.id.includes("error"))}]viewof galleryCategory = Inputs.select(figureCategories.map(c => c.name), {label:"Category:",value:"T20d Ising FSS Reanalysis"})activeCategory = figureCategories.find(c => c.name=== galleryCategory)selectedFigures = activeCategory ? figureFiles.filter(activeCategory.filter) : figureFilesfigureGrid = htl.html`<div style="display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px;">${selectedFigures.map(f => htl.html` <div style="flex: 1 1 280px; max-width: 380px; min-width: 240px; border: 1px solid #dee2e6; border-radius: 8px; overflow: hidden;"> <a href="assets/${f.id}.svg" target="_blank" style="text-decoration: none; color: inherit;"> <div style="background: #f8f9fa; padding: 8px; text-align: center;"> <img src="assets/${f.id}.png" alt="${f.title}" style="max-width: 100%; height: 180px; object-fit: contain;" loading="lazy"> </div> <div style="padding: 12px;"> <div style="font-weight: 600; font-size: 0.9rem; margin-bottom: 4px;">${f.title}</div> <div style="font-size: 0.8rem; color: #6c757d;">${f.desc}</div> <div style="font-size: 0.75rem; color: #adb5bd; margin-top: 6px;"> 🔍 SVG | 📊 PNG </div> </div> </a> </div> `)}</div>`figureGrid