coupling_anchor.py โ€” src/28-flavour

The file src/28-flavour/coupling_anchor.py of the validation package of the paper 28-flav, rendered with an anchor per line; the file itself is beside this page.

28-flavour ledgersrc/28-flavour/coupling_anchor.py ยท 3.6 KBcoupling_anchor.py
1#!/usr/bin/env python32# -*- coding: utf-8 -*-3"""4The coupling anchor (ledger A7/A8): the lattice->continuum matching of the bare alpha=1/4pi.5The bare coupling alpha_bare=1/4pi is EXACT (channel unity) -- but it is a per-link LATTICE6coupling at the substrate spacing a~ell_P, not the continuum renormalised coupling.  The two7differ by a finite matching Z, computed in lattice perturbation theory.  This resolves the8'too strong' puzzle (1/4pi = alpha^-1 12.6 is stronger than the continuum unified coupling9~42) -- the bare lattice coupling is ALWAYS stronger than the continuum, the standard10lattice-continuum offset.  The matching is ONE object that, with the derived spectrum, fixes11all the IR couplings (alpha, alpha_s -> Lambda_QCD) and through them the EW exponent c: it12consolidates the three residuals (the alpha digit, Lambda_QCD, v) into one.13Continuum/data computation (RG running, perturbative matching) -- a labelled demonstration.14"""15import numpy as np16pi=np.pi17MZ=91.1876; MP=1.220890e191819# couplings at M_Z (GUT-normalised a1)20aem_inv=127.951; s2w=0.23121; a3=0.118121a2_inv=aem_inv*s2w; aY_inv=aem_inv*(1-s2w); a1_inv=(3/5)*aY_inv; a3_inv=1/a322b=np.array([41/10,-19/6,-7])                          # SM one-loop (GUT norm)23abare_inv=4*pi24t=np.log(MP/MZ)25def run(inv0,bi,tt): return inv0-(bi/(2*pi))*tt2627print(f"alpha_bare^-1 = 4pi = {abare_inv:.3f}   (the EXACT bare LATTICE coupling, channel unity)")28print(f"at M_Z: a1^-1={a1_inv:.2f} a2^-1={a2_inv:.2f} a3^-1={a3_inv:.2f}")2930print("\n--- continuum couplings run up to the substrate scale M_P ---")31for tag,mu in [("M_P",MP)]:32    tt=np.log(mu/MZ)33    aMP=[run(a1_inv,b[0],tt),run(a2_inv,b[1],tt),run(a3_inv,b[2],tt)]34    print(f"  at {tag}: a1^-1={aMP[0]:.1f} a2^-1={aMP[1]:.1f} a3^-1={aMP[2]:.1f}")3536# approximate unification (a1=a2)37tU=(a1_inv-a2_inv)/((b[0]-b[1])/(2*pi))38muU=MZ*np.exp(tU); aGUT_inv=run(a1_inv,b[0],tU); a3U=run(a3_inv,b[2],tU)39print(f"\n  a1=a2 unify at mu~{muU:.1e} GeV, alpha_GUT^-1={aGUT_inv:.1f}; "40      f"a3^-1={a3U:.1f} there (the ~{100*abs(aGUT_inv-a3U)/aGUT_inv:.0f}% near-miss = A10)")4142print("\n--- the lattice->continuum matching (the anchor) ---")43Delta=aGUT_inv-abare_inv44print(f"  bare LATTICE alpha^-1 = 4pi = {abare_inv:.1f}  vs  continuum unified alpha_GUT^-1 = {aGUT_inv:.1f}")45print(f"  matching  Delta(alpha^-1) = {Delta:.1f}  (continuum WEAKER than bare lattice)")46print(f"  -> the 'too strong' is the standard lattice-continuum offset: the bare lattice")47print(f"     coupling is always stronger than the continuum (cf Lambda_MSbar/Lambda_lat >> 1,")48print(f"     e.g. ~28.8 for SU(3)), by a finite matching Z computable in lattice PT.")4950print("\n--- consolidation: ONE anchor fixes alpha, Lambda_QCD, v ---")51print("  All gauge couplings descend from the single bare 1/4pi at the substrate; the matching")52print("  + RG running gives the three IR couplings -> alpha(0) (from a1,a2), Lambda_QCD (from a3,")53print("  dimensional transmutation), and v (from the Higgs CW, driven by y_t~1).  So the alpha")54print("  digit, Lambda_QCD, and the EW exponent c are ONE residual: the matching Z (= A7).")5556print(f"\n  Lambda_QCD = M_P exp(-2pi/(b0 alpha_s)) and v = M_P exp(-c) are BOTH exponentials of the")57print(f"  matched coupling at the substrate -- once the matching Z fixes alpha_s and the running,")58print(f"  both dimensionful scales follow.  (the rough one-loop value is scale-scheme sensitive;")59print(f"  the proton mass ~ Lambda_QCD is the IR image, the NNLO/anchor residual.)")60print("\nRESIDUAL: the precise matching Z for the FRC Wilson action (lattice PT) = A7, the one")61print("bounded computation that closes alpha(0), Lambda_QCD, and v together.")62