nDot.io physics
08-ilang-propagation / 05-anchor
05anchorverified

Determines when oscillator cells without pinning have a lowest eigenvector with held bodies and sources, what an anchor changes, and whether the mark is long-range and weighed with an anchor.

Code of version 1

check_anchor.py25 KB · raw
"""Check for 08-ilang-propagation/05-anchor, derivation v1.

Field of oscillator cells without pinning, anchor (kappa_a/2) q_h^2, held bodies with grips
F(q) = F0 + F1 q + F2 q^2, held sources g q_xs.  In a sector of the held bodies the uncompressed
contract is C_f = 1/2 p.p + 1/2 q.A q + b.q + c0, and for A > 0 its exact lowest eigenvalue is
E0 = c0 + 1/2 Tr sqrt(A) - 1/2 b.A^{-1}.b  (computed here by dense or sparse linear algebra).
The script compares this with the closed forms of the derivation:
 (i)   existence conditions (5.4)-(5.6), (5.10);
 (ii)  mutual cost of two sources (5.14)-(5.16) against the separation, two distances from the anchor;
 (iii) cost, weight, bond and the ratios rho_mark, rho_bond,i (5.18)-(5.22), two levels,
       both branches, three distances from the anchor;
 plus the asymptotic statements (5.13), (5.15), (5.23)-(5.25) from the closed forms at large L.
Outputs: output/existence.txt, output/mutual_cost.txt, output/weighing.txt, output/asymptotics.txt
"""
import numpy as np
from pathlib import Path
from scipy import linalg as sla, sparse as sp
from scipy.sparse import linalg as spla
from scipy.special import ive
from scipy.integrate import quad
from scipy.optimize import brentq

OUT = Path(__file__).parent / "output"
OUT.mkdir(parents=True, exist_ok=True)

KH, KA = 1.0, 0.7                      # kappa_h, kappa_a
MK = {0: 1.0, 1: 1.5}                  # M_k of the two levels used (m = 1, 2 pi/(N lambda_0) = 0.5)
GRIPS = {                              # (F0, F1, F2)
    "square":    (1.0, 0.6, 0.09),     # 4 F0 F2 = F1^2  (beta_hat = b_hat = 0.3)
    "nonsquare": (1.0, 0.6, 0.03),     # beta_hat / b_hat = 1/3
    "eight":     (1.0, 0.6, 0.045),    # 8 F0 F2 = F1^2  (beta_hat / b_hat = 1/2)
    "linear":    (1.0, 0.6, 0.0),
    "negF2":     (1.0, 0.6, -0.05),
}
HS = 0.01                              # step of the s-stencil


class Lattice:
    """Ring (D=1) or cubic torus (D=3) of side L; Laplacian and pseudo-inverse Green function."""

    def __init__(self, D, L):
        self.D, self.L, self.n = D, L, L ** D
        idx = np.arange(self.n).reshape((L,) * D)
        r = np.concatenate([idx.ravel()] * D)
        c = np.concatenate([np.roll(idx, -1, axis=ax).ravel() for ax in range(D)])
        adj = sp.coo_matrix((np.ones(len(r)), (r, c)), shape=(self.n, self.n))
        adj = (adj + adj.T).tocsr()
        self.lap = (sp.diags(np.asarray(adj.sum(axis=1)).ravel()) - adj).tocsr()
        k = 2 * np.pi * np.fft.fftfreq(L)
        grids = np.meshgrid(*([k] * D), indexing="ij")
        dh = sum(2 - 2 * np.cos(kk) for kk in grids)
        inv = np.zeros_like(dh)
        inv[dh > 1e-12] = 1 / dh[dh > 1e-12]
        self.g = np.real(np.fft.ifftn(inv)) / KH      # g(x) = (kappa_h Delta)^+ (x)

    def site(self, x):
        x = np.atleast_1d(x)
        return int(np.ravel_multi_index(tuple(int(c) % self.L for c in x), (self.L,) * self.D))

    def gx(self, x):
        x = np.atleast_1d(x)
        return self.g[tuple(int(c) % self.L for c in x)]

    def Ga(self, x, y, h):            # (5.8)
        x, y, h = (np.atleast_1d(v) for v in (x, y, h))
        return 1 / KA + self.gx(x - y) - self.gx(x - h) - self.gx(y - h) + self.gx(0 * x)

    def Ka_sparse(self, h):
        e = np.zeros(self.n)
        e[self.site(h)] = KA
        return (KH * self.lap + sp.diags(e)).tocsc()


def lam_min(A):
    return sla.eigh(A, eigvals_only=True, subset_by_index=[0, 0])[0]


# ---------------------------------------------------------------- infinite cubic lattice
def ginf3(x):
    """g_inf(x) of the infinite cubic lattice (kappa_h = 1): int_0^inf e^{-6t} prod_j I_{x_j}(2t) dt."""
    a, b, c = (abs(int(v)) for v in x)
    f = lambda t: ive(a, 2 * t) * ive(b, 2 * t) * ive(c, 2 * t)
    pts = [0, 1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7]
    s = sum(quad(f, pts[i], pts[i + 1], limit=400, epsabs=1e-16, epsrel=1e-12)[0] for i in range(len(pts) - 1))
    # tail t > T from ive(n, 2t) = (4 pi t)^{-1/2} (1 - (4n^2-1)/(16 t) + O(t^-2))
    T, cc = pts[-1], sum((4 * n * n - 1) / 16 for n in (a, b, c))
    return (s + (4 * np.pi) ** -1.5 * (2 / np.sqrt(T) - cc * (2 / 3) * T ** -1.5)) / KH


# ================================================================ (i) existence
def part_i(lines):
    P = lambda s: lines.append(s)
    P("(i) Existence of a lowest eigenvector: lambda_min(A) > 0 against the criteria of the derivation")
    P(f"kappa_h={KH}, kappa_a={KA}, levels M_k={MK}, grips (F0,F1,F2)={GRIPS}\n")
    for D, Ls in ((1, (32, 64)), (3, (8, 12))):
        for L in Ls:
            lat = Lattice(D, L)
            lapd = KH * lat.lap.toarray()
            n = lat.n
            P(f"--- {'ring' if D == 1 else 'cubic torus'} L={L}")
            # no anchor, one body: exists iff mu F2 > 0   (5.5)
            x0 = lat.site([3] * D)
            P(" no anchor, one body at a place: lambda_min(A0) and prediction [mu F2 > 0]")
            for gname in ("square", "negF2", "linear"):
                F0, F1, F2 = GRIPS[gname]
                for k in (0, 1):
                    for sg in (+1, -1):
                        mu = sg * MK[k]
                        A = lapd.copy(); A[x0, x0] += 2 * mu * F2
                        lm = lam_min(A)
                        P(f"   grip={gname:9s} k={k} sigma={sg:+d}: lambda_min={lm:+.3e}  "
                          f"exists={lm > 1e-10}  predicted={mu * F2 > 0}  b.1={mu * F1:+.2f}")
            # no anchor, two bodies with mixed signs: threshold alpha2* = -alpha1/(1+alpha1 r12)   (5.6)
            x1, x2 = lat.site([0] * D), lat.site([4] + [0] * (D - 1))
            r12 = 2 * (lat.gx([0] * D) - lat.gx([4] + [0] * (D - 1)))
            a1 = 2 * MK[1] * GRIPS["square"][2]
            def lm2(a2):
                A = lapd.copy(); A[x1, x1] += a1; A[x2, x2] += a2
                return lam_min(A)
            a2num = brentq(lm2, -a1 + 1e-9, -1e-9, xtol=1e-14)
            a2pred = -a1 / (1 + a1 * r12)
            P(f" no anchor, two bodies (separation 4): alpha1={a1:.4f}, r12={r12:.6f}: threshold alpha2 "
              f"numerical={a2num:.10f} predicted={a2pred:.10f}  rel.dev={abs(a2num / a2pred - 1):.1e}")
            # anchor: one body, threshold mu F2 = -1/(2 Gamma(x))   (5.10)
            h = [0] * D
            Ka = lapd.copy(); Ka[lat.site(h), lat.site(h)] += KA
            P(" anchor at h, one body at distance d: threshold alpha* (lambda_min=0) vs -1/Gamma(x), "
              "and which (k, sigma) of grip negF2 / square have a lowest eigenvector")
            for d in ((2, 5, 10) if D == 1 else (1, 2, 3)):
                xx = [d] + [0] * (D - 1); i = lat.site(xx)
                Gam = lat.Ga(xx, xx, h)
                def lm1(al):
                    A = Ka.copy(); A[i, i] += al
                    return lam_min(A)
                anum = brentq(lm1, -2 / Gam, -0.2 / Gam, xtol=1e-14)
                ex = []
                for gname in ("negF2", "square"):
                    for k in (0, 1):
                        for sg in (+1, -1):
                            al = 2 * sg * MK[k] * GRIPS[gname][2]
                            ok_num = lm1(al) > 0
                            ok_pred = 1 + al * Gam > 0
                            ex.append(f"{gname}:k{k}{'+' if sg > 0 else '-'}={'Y' if ok_num else 'N'}"
                                      f"{'' if ok_num == ok_pred else '(MISMATCH)'}")
                P(f"   d={d}: Gamma={Gam:.6f}  alpha* numerical={anum:.10f} predicted={-1 / Gam:.10f}  "
                  f"| {' '.join(ex)}")
            # anchor, two bodies: A > 0 iff Gamma_2^{-1} + diag(alpha) > 0   (5.10), random samples
            rng = np.random.default_rng(1)
            y1, y2 = [1] + [0] * (D - 1), [3] + [1] * (D - 1)
            i1, i2 = lat.site(y1), lat.site(y2)
            G2 = np.array([[lat.Ga(y1, y1, h), lat.Ga(y1, y2, h)], [lat.Ga(y2, y1, h), lat.Ga(y2, y2, h)]])
            agree, tot = 0, 0
            for _ in range(40):
                al = rng.uniform(-2.0, 2.0, size=2) / np.diag(G2)
                A = Ka.copy(); A[i1, i1] += al[0]; A[i2, i2] += al[1]
                num = lam_min(A) > 0
                pred = np.linalg.eigvalsh(np.linalg.inv(G2) + np.diag(al))[0] > 0
                agree += int(num == pred); tot += 1
            P(f" anchor, two bodies, random (alpha1, alpha2): criterion (5.10) agrees with lambda_min in {agree}/{tot}\n")


# ================================================================ (ii) mutual cost
def part_ii(lines):
    P = lambda s: lines.append(s)
    P("(ii) Mutual cost of two held sources E12 = -g1 g2 (A^{-1})_{x1 x2} from the exact E0 "
      "(sparse LU of A) against (5.14) E12 = -g1 g2 G_a(x1,x2); g1 = g2 = 1")
    P(f"kappa_h={KH}, kappa_a={KA}\n")
    # ring
    for L in (64, 256):
        lat = Lattice(1, L); h = [0]
        lu = spla.splu(lat.Ka_sparse(h))
        P(f"--- ring L={L}: pair on one side of the anchor, x1 = h + d1, x2 = x1 + s")
        for d1 in (4, 16):
            e = np.zeros(lat.n); e[lat.site([d1])] = 1.0
            col = lu.solve(e)
            row = []
            for s in (1, 2, 4, 8, 16):
                ex = -col[lat.site([d1 + s])]
                fo = -lat.Ga([d1], [d1 + s], h)
                row.append(f"s={s}: {ex:.10f} (formula {fo:.10f})")
            P(f"  d1={d1}: " + "; ".join(row))
            P(f"         L->inf value (5.16) on the line: -(1/kappa_a + d1/kappa_h) = {-(1 / KA + d1 / KH):.10f}")
        e = np.zeros(lat.n); e[lat.site([5])] = 1.0
        col = lu.solve(e)
        P(f"  opposite sides x1=h+5, x2=h-7: exact {-col[lat.site([-7])]:.10f}, formula "
          f"{-lat.Ga([5], [-7], h):.10f}, -1/kappa_a = {-1 / KA:.10f}")
    # cubic torus
    g0inf = ginf3([0, 0, 0])
    gcache = {}
    def gi(x):
        key = tuple(sorted(abs(int(v)) for v in x))
        if key not in gcache:
            gcache[key] = ginf3(key)
        return gcache[key]
    for L in (16, 32):
        rs = (2, 4, 6, 8) if L == 16 else (2, 4, 6, 8, 12, 16)
        lat = Lattice(3, L); h = np.array([0, 0, 0])
        lu = spla.splu(lat.Ka_sparse(h))
        P(f"--- cubic torus L={L}: pair along x with midpoint h + D e_y, x1,2 = h + D e_y -/+ (r/2) e_x")
        for Dm in (0, 6):
            res = []
            for r in rs:
                y1 = h + np.array([-r // 2, Dm, 0]); y2 = h + np.array([r // 2, Dm, 0])
                e = np.zeros(lat.n); e[lat.site(y1)] = 1.0
                ex = -lu.solve(e)[lat.site(y2)]
                fo = -lat.Ga(y1, y2, h)
                linf = -(1 / KA + gi(y1 - y2) - gi(y1 - h) - gi(y2 - h) + g0inf)
                cont = -(1 / KA + g0inf) - (1 / (4 * np.pi * KH)) * (1 / r - 2 / np.hypot(Dm, r / 2))
                res.append((r, ex, fo, linf, cont))
            P(f"  D={Dm}:  r | exact E12 | formula (5.14), this L | L=inf lattice, (5.14) with g_inf | continuum image form (5.15)")
            for (r, ex, fo, linf, cont) in res:
                P(f"     {r:2d} | {ex:.10f} | {fo:.10f} | {linf:.10f} | {cont:.10f}")
            P("        effective coefficient c(r) = [E12(r)-E12(r')] / [-(1/(4 pi kappa_h))(1/r - 1/r')], consecutive r:")
            for j in range(1, len(res)):
                (r0, e0, _, l0, _), (r1, e1, _, l1, _) = res[j - 1], res[j]
                den = -(1 / (4 * np.pi * KH)) * (1 / r1 - 1 / r0)
                pc = (1 / r1 - 2 / np.hypot(Dm, r1 / 2) - 1 / r0 + 2 / np.hypot(Dm, r0 / 2)) / (1 / r1 - 1 / r0)
                P(f"        r={r0}->{r1}: exact {(e1 - e0) / den:+.4f}, L=inf lattice {(l1 - l0) / den:+.4f}, "
                  f"continuum image form {pc:+.4f}")
        # one source at the anchor
        vals = []
        e = np.zeros(lat.n); e[lat.site(h)] = 1.0
        col = lu.solve(e)
        for y in ([3, 0, 0], [5, 2, 1], [L // 2, L // 2, L // 2]):
            vals.append(-col[lat.site(y)])
        P(f"  source 1 at the anchor, source 2 at three places: E12 = {', '.join(f'{v:.12f}' for v in vals)}; "
          f"-1/kappa_a = {-1 / KA:.12f}")
    P("")


# ================================================================ (iii) weighing
def stencil(f):
    """f: dict s -> value with f(0)=0. Returns (first derivative, half second derivative) at s=0."""
    h = HS
    d1 = (8 * (f[h] - f[-h]) - (f[2 * h] - f[-2 * h])) / (12 * h)
    d2 = (16 * (f[h] + f[-h]) - (f[2 * h] + f[-2 * h])) / (24 * h * h)
    return d1, d2


def part_iii(lines):
    P = lambda s: lines.append(s)
    P("(iii) Cost, weight, bond and weighing ratios at order s^2 from the exact E0 (dense; s-stencil "
      f"step {HS}) against (5.18)-(5.22); g_s = +-1 (the g_s-linear part is exact)")
    P(f"kappa_h={KH}, kappa_a={KA}, levels M_k={MK}\n")
    S = (-2 * HS, -HS, HS, 2 * HS)
    combos1 = [(k, sg) for k in (0, 1) for sg in (+1, -1)]
    combos2 = [((0, 1), (0, 1)), ((0, -1), (0, -1)), ((1, 1), (1, 1)), ((1, -1), (1, -1)), ((0, 1), (1, -1))]
    for D, Ls, ds, Rp in ((1, (32, 64), (2, 5, 10), 3), (3, (8, 12), (1, 2, 3), 1)):
        for L in Ls:
            lat = Lattice(D, L); n = lat.n
            h = np.zeros(D, dtype=int)
            Ka = KH * lat.lap.toarray(); Ka[lat.site(h), lat.site(h)] += KA
            lam, U = np.linalg.eigh(Ka); om = np.sqrt(lam)
            Mab = 1 / (om[:, None] * om[None, :] * (om[:, None] + om[None, :]))
            w = lambda i: 0.5 * np.sum(U[i] ** 2 / om)
            Sig = lambda i, j: (U[i] * U[j]) @ Mab @ (U[i] * U[j])
            Tc, Ec = {}, {}

            def E(bodies, s, xs):
                """Exact E0 = c0 + 1/2 Tr sqrt(A) - 1/2 b.A^-1.b with source +1, -1, 0 at site xs."""
                key = (tuple(bodies), s, xs)
                if key not in Ec:
                    A = Ka.copy(); b = np.zeros(n); c0 = 0.0
                    for (i, mu, g) in bodies:
                        F0, F1, F2 = GRIPS[g]
                        A[i, i] += 2 * s * mu * F2; b[i] += s * mu * F1; c0 += s * mu * F0
                    tkey = tuple(sorted((i, 2 * s * mu * GRIPS[g][2]) for (i, mu, g) in bodies))
                    if tkey not in Tc:
                        lam_ = sla.eigvalsh(A)
                        assert lam_[0] > 0
                        Tc[tkey] = 0.5 * np.sqrt(lam_).sum()
                    cf = sla.cho_factor(A)
                    es = np.zeros(n); es[xs] = 1.0
                    Ec[key] = [c0 + Tc[tkey] - 0.5 * bb @ sla.cho_solve(cf, bb) for bb in (b + es, b - es, b)]
                return Ec[key]

            def single(i, mu, g, xs):
                """C1, Cmark, W1, Wmark of one body at site i (source at xs, g_s = 1)."""
                C = {s: E([(i, mu, g)], s, xs)[2] - E([], 0.0, xs)[2] for s in S}
                W = {s: 0.5 * ((E([(i, mu, g)], s, xs)[0] - E([], 0.0, xs)[0])
                               - (E([(i, mu, g)], s, xs)[1] - E([], 0.0, xs)[1])) for s in S}
                return stencil(C) + stencil(W)

            P(f"=== {'ring' if D == 1 else 'cubic torus'} L={L}, anchor h=0; body placements x=h+d e, x'=h+(d+1) e, "
              f"source at h+(d+1+{Rp}) e")
            maxdev = 0.0
            for d in ds:
                ex = np.array([1] + [0] * (D - 1))
                X, Xp, Xs = h + d * ex, h + (d + 1) * ex, h + (d + 1 + Rp) * ex
                i, ip, isrc = lat.site(X), lat.site(Xp), lat.site(Xs)
                Gm = {i: lat.Ga(X, X, h), ip: lat.Ga(Xp, Xp, h)}
                ph = {i: -lat.Ga(X, Xs, h), ip: -lat.Ga(Xp, Xs, h)}
                Gb = 0.5 * (Gm[i] + Gm[ip]); pb = 0.5 * (ph[i] + ph[ip])
                amark = pb * (Gm[i] - Gm[ip]) / (Gb * (ph[i] - ph[ip]))
                P(f" d={d}: Gamma(x)={Gm[i]:.6f}, w(x)={w(i):.6f}, Sigma(x)={Sig(i, i):.6f}, phi_a(x)={ph[i]:.6f}; "
                  f"a_mark={amark:+.6f}")
                for g in ("square", "nonsquare", "eight", "linear"):
                    F0, F1, F2 = GRIPS[g]
                    for (k, sg) in combos1:
                        mu = sg * MK[k]
                        r = {j: single(j, mu, g, isrc) for j in (i, ip)}
                        # closed forms (5.18)
                        for j in (i, ip):
                            pred = (mu * (F0 + F2 * w(j)), -0.5 * mu ** 2 * (F1 ** 2 * Gm[j] + F2 ** 2 * Sig(j, j)),
                                    mu * F1 * ph[j], -2 * mu ** 2 * F1 * F2 * Gm[j] * ph[j])
                            for a, bb in zip(r[j], pred):
                                maxdev = max(maxdev, abs(a - bb) / max(abs(bb), 1e-12) if abs(bb) > 1e-12 else abs(a))
                        if F2 == 0:
                            rho_num = (r[i][3] - r[ip][3]) / (r[i][2] - r[ip][2]) * \
                                (0.5 * (r[i][0] + r[ip][0])) / (0.5 * (r[i][1] + r[ip][1]))
                            P(f"    grip={g:9s} k={k} sigma={sg:+d}: rho_mark numerical={rho_num:+.3e} predicted=0")
                            continue
                        rho_num = (r[i][3] - r[ip][3]) / (r[i][2] - r[ip][2]) * \
                            (0.5 * (r[i][0] + r[ip][0])) / (0.5 * (r[i][1] + r[ip][1]))
                        wb = 0.5 * (w(i) + w(ip)); Sb = 0.5 * (Sig(i, i) + Sig(ip, ip))
                        rho_pred = 4 * F2 * (F0 + F2 * wb) / (F1 ** 2 * Gb + F2 ** 2 * Sb) * \
                            (Gm[i] * ph[i] - Gm[ip] * ph[ip]) / (ph[i] - ph[ip])
                        lead = 4 * F0 * F2 / F1 ** 2 * (1 + amark)
                        P(f"    grip={g:9s} k={k} sigma={sg:+d}: rho_mark numerical={rho_num:.8f} "
                          f"predicted (5.20)={rho_pred:.8f} leading (4F0F2/F1^2)(1+a_mark)={lead:.6f}")
                # bond: pair x1 = X, x2 = X + 2 e2 (ring: X + 2 e), translated by e; square grip
                e2 = np.array([0, 1, 0]) if D == 3 else ex
                Y1, Y2 = X, X + 2 * e2
                Y1p, Y2p = Y1 + ex, Y2 + ex
                Ym, Ymp = X + e2, X + e2 + ex
                Ys = Y2p + 2 * ex if D == 1 else Ymp + Rp * ex
                js = [lat.site(v) for v in (Y1, Y2, Y1p, Y2p, Ym, Ymp)]
                jsrc = lat.site(Ys)
                phi = lambda v: -lat.Ga(v, Ys, h)
                G12, G12p = lat.Ga(Y1, Y2, h), lat.Ga(Y1p, Y2p, h)
                dphi1, dphi2 = phi(Y1) - phi(Y1p), phi(Y2) - phi(Y2p)
                dphim = phi(Ym) - phi(Ymp)
                mr = (dphi1 + dphi2) / (2 * dphim)
                abond = (0.5 * (phi(Y1) + phi(Y1p)) + 0.5 * (phi(Y2) + phi(Y2p))) * (G12 - G12p) / \
                    (2 * 0.5 * (G12 + G12p) * dphim)
                P(f"  bond (square grips), pair separation 2, source at {list(Ys)}: m_r={mr:.6f}, a_bond={abond:+.6f}")
                F0, F1, F2 = GRIPS["square"]
                for (c1, c2) in combos2:
                    mu1, mu2 = c1[1] * MK[c1[0]], c2[1] * MK[c2[0]]
                    def bond(a, b_):
                        B = {}; Wb = {}
                        for s in S:
                            e12 = E([(a, mu1, "square"), (b_, mu2, "square")], s, jsrc)
                            e1 = E([(a, mu1, "square")], s, jsrc); e2_ = E([(b_, mu2, "square")], s, jsrc)
                            e0 = E([], 0.0, jsrc)
                            bb = [e12[t] - e1[t] - e2_[t] + e0[t] for t in range(3)]
                            B[s] = bb[2]; Wb[s] = 0.5 * (bb[0] - bb[1])
                        return stencil(B)[1], stencil(Wb)[1], stencil(B)[0]
                    B2, W2, B1 = bond(js[0], js[1]); B2p, W2p, B1p = bond(js[2], js[3])
                    out = []
                    for ii, mui in ((1, mu1), (2, mu2)):
                        rm = single(js[4], mui, "square", jsrc); rmp = single(js[5], mui, "square", jsrc)
                        rho_num = ((W2 - W2p) / (0.5 * (B2 + B2p))) / ((rm[2] - rmp[2]) / (0.5 * (rm[0] + rmp[0])))
                        # closed forms (5.19), (5.21) at order mu1 mu2
                        Bp = lambda y1, y2, j1, j2: -mu1 * mu2 * (F1 ** 2 * lat.Ga(y1, y2, h) + F2 ** 2 * Sig(j1, j2))
                        Wp = lambda y1, y2: -2 * mu1 * mu2 * lat.Ga(y1, y2, h) * F1 * F2 * (phi(y1) + phi(y2))
                        Bbar = 0.5 * (Bp(Y1, Y2, js[0], js[1]) + Bp(Y1p, Y2p, js[2], js[3]))
                        C1bar = 0.5 * (mui * (F0 + F2 * w(js[4])) + mui * (F0 + F2 * w(js[5])))
                        rho_pred = ((Wp(Y1, Y2) - Wp(Y1p, Y2p)) / Bbar) / (mui * F1 * dphim / C1bar)
                        out.append(f"rho_bond,{ii} num={rho_num:.8f} pred={rho_pred:.8f}")
                    P(f"    (k,sigma)=({c1[0]},{c1[1]:+d}),({c2[0]},{c2[1]:+d}): B2={B2:+.6e} (s^1 part {B1:+.1e}); "
                      + "; ".join(out) + f"; leading m_r+a_bond={mr + abond:.6f}")
            P(f" max relative deviation of C1, Cmark, W1, Wmark from (5.18) over this lattice: {maxdev:.2e}\n")


# ================================================================ asymptotics from closed forms
def part_asym(lines):
    P = lambda s: lines.append(s)
    P("Asymptotic statements from the closed forms (no eigenvalue computation)")
    g0 = ginf3([0, 0, 0])
    P(f"gamma_3 = kappa_h g_inf(0) = {g0 * KH:.10f}")
    for x in ([4, 0, 0], [8, 0, 0], [16, 0, 0], [6, 6, 6]):
        r = np.linalg.norm(x)
        P(f"  g_inf({x}) * 4 pi kappa_h |x| = {ginf3(x) * 4 * np.pi * KH * r:.6f}")
    P("\n(5.15) orders of the limits on the infinite cubic lattice (L -> inf first), anchor at 0, g1 = g2 = 1;"
      " c(r) as in mutual_cost.txt")
    E12 = lambda y1, y2: -(1 / KA + g0 + ginf3(np.subtract(y1, y2)) - ginf3(y1) - ginf3(y2))
    for lab, Dm, rr in (("(a) midpoint (0,40,0), r << D", 40, (4, 8, 16)), ("(c) midpoint at the anchor", 0, (8, 16, 32, 64))):
        vals = [E12([-r // 2, Dm, 0], [r // 2, Dm, 0]) for r in rr]
        cs = [(vals[j] - vals[j - 1]) / (-(1 / (4 * np.pi * KH)) * (1 / rr[j] - 1 / rr[j - 1])) for j in range(1, len(rr))]
        P(f"  {lab}: " + ", ".join(f"c({rr[j - 1]}->{rr[j]})={cs[j - 1]:+.4f}" for j in range(1, len(rr))))
    lim = -(1 / KA + g0 - ginf3([3, 0, 0]))
    P("  (b) x1=(3,0,0) fixed, x2=(3+r,0,0): 4 pi kappa_h r^2 [E12 - E12(r=inf)] -> -(x1-h).r_hat = -3: " +
      ", ".join(f"r={r}: {4 * np.pi * KH * r * r * (E12([3, 0, 0], [3 + r, 0, 0]) - lim):+.4f}" for r in (8, 16, 32, 64)))
    cphi = 1 / KA + g0
    Ginf = 1 / KA + 2 * g0
    P(f"\n(5.23) a_mark on the infinite cubic lattice (L -> inf first), collinear: anchor 0, body d, d+1, "
      f"source d+1+R'; prediction a_mark ~ (2 c_phi/Gamma_inf) (R/d)^2 with c_phi=1/kappa_a+gamma_3/kappa_h="
      f"{cphi:.6f}, Gamma_inf={Ginf:.6f}, R=R'+1/2, d->d+1/2")
    for Rp in (3, 6):
        for d in (8, 16, 32, 64):
            Gm = lambda x: 1 / KA + 2 * (g0 - ginf3([x, 0, 0]))
            ph = lambda x: -(1 / KA + g0 + ginf3([x - (d + 1 + Rp), 0, 0]) - ginf3([x, 0, 0]) - ginf3([d + 1 + Rp, 0, 0]))
            a = 0.5 * (ph(d) + ph(d + 1)) * (Gm(d) - Gm(d + 1)) / (0.5 * (Gm(d) + Gm(d + 1)) * (ph(d) - ph(d + 1)))
            pred = 2 * cphi / Ginf * ((Rp + 0.5) / (d + 0.5)) ** 2
            P(f"  R'={Rp} d={d:3d}: a_mark={a:+.6e}  prediction={pred:+.6e}  ratio={a / pred:.4f}")
    P("\n(5.24) a_bond on the infinite cubic lattice: pair (d,0,0),(d,2,0) -> translated by e_x, source (d+1+R',1,0)")
    for Rp in (3, 6):
        for d in (8, 16, 32, 64):
            xs = np.array([d + 1 + Rp, 1, 0])
            phi = lambda v: -(1 / KA + g0 + ginf3(np.array(v) - xs) - ginf3(v) - ginf3(xs))
            G12 = lambda v1, v2: 1 / KA + g0 + ginf3(np.array(v1) - np.array(v2)) - ginf3(v1) - ginf3(v2)
            Y1, Y2, Y1p, Y2p = [d, 0, 0], [d, 2, 0], [d + 1, 0, 0], [d + 1, 2, 0]
            Gb = 0.5 * (G12(Y1, Y2) + G12(Y1p, Y2p))
            dphim = phi([d, 1, 0]) - phi([d + 1, 1, 0])
            a = 0.5 * (phi(Y1) + phi(Y1p) + phi(Y2) + phi(Y2p)) * (G12(Y1, Y2) - G12(Y1p, Y2p)) / (2 * Gb * dphim)
            R = Rp + 0.5; dd = np.hypot(d + 0.5, 1.0)
            pred = 2 * cphi / (cphi + ginf3([0, 2, 0])) * (R / dd) ** 2 * ((d + 0.5) / dd)
            P(f"  R'={Rp} d={d:3d}: a_bond={a:+.6e}  prediction={pred:+.6e}  ratio={a / pred:.4f}")
    P("\n(5.25) ring: a_mark for a body between anchor and source (d=10, d+1, source at d+1+3) -> 1 as L -> inf")
    for L in (32, 64, 256, 1024, 4096):
        Gm = lambda x: 1 / KA + x * (L - x) / (KH * L)
        xs = 14
        ph = lambda x: -(1 / KA + (x * (L - x) + xs * (L - xs) - abs(xs - x) * (L - abs(xs - x))) / (2 * KH * L))
        a = 0.5 * (ph(10) + ph(11)) * (Gm(10) - Gm(11)) / (0.5 * (Gm(10) + Gm(11)) * (ph(10) - ph(11)))
        P(f"  L={L:5d}: a_mark={a:.6f}")
    P("\n(5.13) anchored line (L = inf): w(d) and Sigma(d) from the resolvent (5.9); predictions "
      "w(10d)-w(d) -> ln10/(2 pi sqrt(kappa_h)), Sigma(d)/d -> 2 ln2/(pi kappa_h^{3/2})")
    def Rdd(nu, d):
        t = nu * nu / (2 * KH)
        sq = np.sqrt(t * t + 2 * t)
        g0n = 1 / (KH * 2 * sq)                         # 1/(kappa_h (1/z - z)), 1/z = 1 + t + sq
        one_m = -np.expm1(-2 * d * np.log1p(t + sq))    # 1 - z^{2d}
        return (g0n + KA * g0n * g0n * one_m) / (1 + KA * g0n)
    def wS(d):
        f1 = lambda u: np.exp(u) * Rdd(np.exp(u), d)
        f2 = lambda u: np.exp(u) * Rdd(np.exp(u), d) ** 2
        lo, hi = -40.0, 25.0
        w_ = quad(f1, lo, hi, limit=800, epsabs=1e-13)[0] / np.pi
        S_ = 2 * quad(f2, lo, hi, limit=800, epsabs=1e-13)[0] / np.pi
        return w_, S_
    prev = None
    for d in (10, 100, 1000, 10000):
        w_, S_ = wS(d)
        inc = "" if prev is None else f"  w(d)-w(d/10)={w_ - prev:.6f}"
        P(f"  d={d:6d}: w={w_:.6f}  Sigma/d={S_ / d:.6f}  Gamma={1 / KA + d / KH:.3f}{inc}")
        prev = w_
    P(f"  predictions: ln10/(2 pi)={np.log(10) / (2 * np.pi):.6f}, 2 ln2/pi={2 * np.log(2) / np.pi:.6f}")


if __name__ == "__main__":
    for name, fn in (("existence.txt", part_i), ("mutual_cost.txt", part_ii),
                     ("weighing.txt", part_iii), ("asymptotics.txt", part_asym)):
        lines = []
        fn(lines)
        (OUT / name).write_text("\n".join(lines) + "\n", encoding="utf-8")
        print("wrote", OUT / name, flush=True)
output/asymptotics.txt3 KB · raw
Asymptotic statements from the closed forms (no eigenvalue computation)
gamma_3 = kappa_h g_inf(0) = 0.2527310099
  g_inf([4, 0, 0]) * 4 pi kappa_h |x| = 1.019830
  g_inf([8, 0, 0]) * 4 pi kappa_h |x| = 1.004108
  g_inf([16, 0, 0]) * 4 pi kappa_h |x| = 1.000988
  g_inf([6, 6, 6]) * 4 pi kappa_h |x| = 0.998451

(5.15) orders of the limits on the infinite cubic lattice (L -> inf first), anchor at 0, g1 = g2 = 1; c(r) as in mutual_cost.txt
  (a) midpoint (0,40,0), r << D: c(4->8)=+1.0341, c(8->16)=+0.9956
  (c) midpoint at the anchor: c(8->16)=-3.1350, c(16->32)=-3.0272, c(32->64)=-3.0065
  (b) x1=(3,0,0) fixed, x2=(3+r,0,0): 4 pi kappa_h r^2 [E12 - E12(r=inf)] -> -(x1-h).r_hat = -3: r=8: -2.2024, r=16: -2.5327, r=32: -2.7447, r=64: -2.8662

(5.23) a_mark on the infinite cubic lattice (L -> inf first), collinear: anchor 0, body d, d+1, source d+1+R'; prediction a_mark ~ (2 c_phi/Gamma_inf) (R/d)^2 with c_phi=1/kappa_a+gamma_3/kappa_h=1.681302, Gamma_inf=1.934033, R=R'+1/2, d->d+1/2
  R'=3 d=  8: a_mark=+2.354491e-01  prediction=+2.947882e-01  ratio=0.7987
  R'=3 d= 16: a_mark=+6.851490e-02  prediction=+7.823121e-02  ratio=0.8758
  R'=3 d= 32: a_mark=+1.813394e-02  prediction=+2.016421e-02  ratio=0.8993
  R'=3 d= 64: a_mark=+4.636675e-03  prediction=+5.119511e-03  ratio=0.9057
  R'=6 d=  8: a_mark=+6.421039e-01  prediction=+1.016718e+00  ratio=0.6315
  R'=6 d= 16: a_mark=+2.306867e-01  prediction=+2.698179e-01  ratio=0.8550
  R'=6 d= 32: a_mark=+6.571165e-02  prediction=+6.954595e-02  ratio=0.9449
  R'=6 d= 64: a_mark=+1.715213e-02  prediction=+1.765709e-02  ratio=0.9714

(5.24) a_bond on the infinite cubic lattice: pair (d,0,0),(d,2,0) -> translated by e_x, source (d+1+R',1,0)
  R'=3 d=  8: a_bond=+2.539632e-01  prediction=+3.239171e-01  ratio=0.7840
  R'=3 d= 16: a_bond=+7.600590e-02  prediction=+8.727102e-02  ratio=0.8709
  R'=3 d= 32: a_bond=+2.027305e-02  prediction=+2.258620e-02  ratio=0.8976
  R'=3 d= 64: a_bond=+5.193783e-03  prediction=+5.740509e-03  ratio=0.9048
  R'=6 d=  8: a_bond=+6.966915e-01  prediction=+1.117183e+00  ratio=0.6236
  R'=6 d= 16: a_bond=+2.562273e-01  prediction=+3.009960e-01  ratio=0.8513
  R'=6 d= 32: a_bond=+7.351920e-02  prediction=+7.789935e-02  ratio=0.9438
  R'=6 d= 64: a_bond=+1.922696e-02  prediction=+1.979890e-02  ratio=0.9711

(5.25) ring: a_mark for a body between anchor and source (d=10, d+1, source at d+1+3) -> 1 as L -> inf
  L=   32: a_mark=0.528868
  L=   64: a_mark=0.811924
  L=  256: a_mark=0.959032
  L= 1024: a_mark=0.990075
  L= 4096: a_mark=0.997538

(5.13) anchored line (L = inf): w(d) and Sigma(d) from the resolvent (5.9); predictions w(10d)-w(d) -> ln10/(2 pi sqrt(kappa_h)), Sigma(d)/d -> 2 ln2/(pi kappa_h^{3/2})
  d=    10: w=0.809467  Sigma/d=0.489480  Gamma=11.429
  d=   100: w=1.157998  Sigma/d=0.446296  Gamma=101.429  w(d)-w(d/10)=0.348531
  d=  1000: w=1.522451  Sigma/d=0.441776  Gamma=1001.429  w(d)-w(d/10)=0.364453
  d= 10000: w=1.888714  Sigma/d=0.441322  Gamma=10001.429  w(d)-w(d/10)=0.366263
  predictions: ln10/(2 pi)=0.366468, 2 ln2/pi=0.441271
output/existence.txt9 KB · raw
(i) Existence of a lowest eigenvector: lambda_min(A) > 0 against the criteria of the derivation
kappa_h=1.0, kappa_a=0.7, levels M_k={0: 1.0, 1: 1.5}, grips (F0,F1,F2)={'square': (1.0, 0.6, 0.09), 'nonsquare': (1.0, 0.6, 0.03), 'eight': (1.0, 0.6, 0.045), 'linear': (1.0, 0.6, 0.0), 'negF2': (1.0, 0.6, -0.05)}

--- ring L=32
 no anchor, one body at a place: lambda_min(A0) and prediction [mu F2 > 0]
   grip=square    k=0 sigma=+1: lambda_min=+3.717e-03  exists=True  predicted=True  b.1=+0.60
   grip=square    k=0 sigma=-1: lambda_min=-9.615e-03  exists=False  predicted=False  b.1=-0.60
   grip=square    k=1 sigma=+1: lambda_min=+4.725e-03  exists=True  predicted=True  b.1=+0.90
   grip=square    k=1 sigma=-1: lambda_min=-1.904e-02  exists=False  predicted=False  b.1=-0.90
   grip=negF2     k=0 sigma=+1: lambda_min=-4.161e-03  exists=False  predicted=False  b.1=+0.60
   grip=negF2     k=0 sigma=-1: lambda_min=+2.445e-03  exists=True  predicted=True  b.1=-0.60
   grip=negF2     k=1 sigma=+1: lambda_min=-7.289e-03  exists=False  predicted=False  b.1=+0.90
   grip=negF2     k=1 sigma=-1: lambda_min=+3.291e-03  exists=True  predicted=True  b.1=-0.90
   grip=linear    k=0 sigma=+1: lambda_min=+7.846e-17  exists=False  predicted=False  b.1=+0.60
   grip=linear    k=0 sigma=-1: lambda_min=+7.846e-17  exists=False  predicted=False  b.1=-0.60
   grip=linear    k=1 sigma=+1: lambda_min=+7.846e-17  exists=False  predicted=False  b.1=+0.90
   grip=linear    k=1 sigma=-1: lambda_min=+7.846e-17  exists=False  predicted=False  b.1=-0.90
 no anchor, two bodies (separation 4): alpha1=0.2700, r12=3.500000: threshold alpha2 numerical=-0.1388174807 predicted=-0.1388174807  rel.dev=1.8e-14
 anchor at h, one body at distance d: threshold alpha* (lambda_min=0) vs -1/Gamma(x), and which (k, sigma) of grip negF2 / square have a lowest eigenvector
   d=2: Gamma=3.303571  alpha* numerical=-0.3027027027 predicted=-0.3027027027  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=5: Gamma=5.647321  alpha* numerical=-0.1770750988 predicted=-0.1770750988  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=N square:k1+=Y square:k1-=N
   d=10: Gamma=8.303571  alpha* numerical=-0.1204301075 predicted=-0.1204301075  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=N negF2:k1-=Y square:k0+=Y square:k0-=N square:k1+=Y square:k1-=N
 anchor, two bodies, random (alpha1, alpha2): criterion (5.10) agrees with lambda_min in 40/40

--- ring L=64
 no anchor, one body at a place: lambda_min(A0) and prediction [mu F2 > 0]
   grip=square    k=0 sigma=+1: lambda_min=+1.363e-03  exists=True  predicted=True  b.1=+0.60
   grip=square    k=0 sigma=-1: lambda_min=-8.183e-03  exists=False  predicted=False  b.1=-0.60
   grip=square    k=1 sigma=+1: lambda_min=+1.606e-03  exists=True  predicted=True  b.1=+0.90
   grip=square    k=1 sigma=-1: lambda_min=-1.816e-02  exists=False  predicted=False  b.1=-0.90
   grip=negF2     k=0 sigma=+1: lambda_min=-2.849e-03  exists=False  predicted=False  b.1=+0.60
   grip=negF2     k=0 sigma=-1: lambda_min=+9.931e-04  exists=True  predicted=True  b.1=-0.60
   grip=negF2     k=1 sigma=+1: lambda_min=-5.792e-03  exists=False  predicted=False  b.1=+0.90
   grip=negF2     k=1 sigma=-1: lambda_min=+1.248e-03  exists=True  predicted=True  b.1=-0.90
   grip=linear    k=0 sigma=+1: lambda_min=+2.264e-16  exists=False  predicted=False  b.1=+0.60
   grip=linear    k=0 sigma=-1: lambda_min=+2.264e-16  exists=False  predicted=False  b.1=-0.60
   grip=linear    k=1 sigma=+1: lambda_min=+2.264e-16  exists=False  predicted=False  b.1=+0.90
   grip=linear    k=1 sigma=-1: lambda_min=+2.264e-16  exists=False  predicted=False  b.1=-0.90
 no anchor, two bodies (separation 4): alpha1=0.2700, r12=3.750000: threshold alpha2 numerical=-0.1341614907 predicted=-0.1341614907  rel.dev=7.3e-14
 anchor at h, one body at distance d: threshold alpha* (lambda_min=0) vs -1/Gamma(x), and which (k, sigma) of grip negF2 / square have a lowest eigenvector
   d=2: Gamma=3.366071  alpha* numerical=-0.2970822281 predicted=-0.2970822281  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=5: Gamma=6.037946  alpha* numerical=-0.1656192237 predicted=-0.1656192237  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=N square:k1+=Y square:k1-=N
   d=10: Gamma=9.866071  alpha* numerical=-0.1013574661 predicted=-0.1013574661  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=N negF2:k1-=Y square:k0+=Y square:k0-=N square:k1+=Y square:k1-=N
 anchor, two bodies, random (alpha1, alpha2): criterion (5.10) agrees with lambda_min in 40/40

--- cubic torus L=8
 no anchor, one body at a place: lambda_min(A0) and prediction [mu F2 > 0]
   grip=square    k=0 sigma=+1: lambda_min=+3.379e-04  exists=True  predicted=True  b.1=+0.60
   grip=square    k=0 sigma=-1: lambda_min=-3.664e-04  exists=False  predicted=False  b.1=-0.60
   grip=square    k=1 sigma=+1: lambda_min=+4.972e-04  exists=True  predicted=True  b.1=+0.90
   grip=square    k=1 sigma=-1: lambda_min=-5.614e-04  exists=False  predicted=False  b.1=-0.90
   grip=negF2     k=0 sigma=+1: lambda_min=-1.998e-04  exists=False  predicted=False  b.1=+0.60
   grip=negF2     k=0 sigma=-1: lambda_min=+1.910e-04  exists=True  predicted=True  b.1=-0.60
   grip=negF2     k=1 sigma=+1: lambda_min=-3.032e-04  exists=False  predicted=False  b.1=+0.90
   grip=negF2     k=1 sigma=-1: lambda_min=+2.834e-04  exists=True  predicted=True  b.1=-0.90
   grip=linear    k=0 sigma=+1: lambda_min=-8.867e-16  exists=False  predicted=False  b.1=+0.60
   grip=linear    k=0 sigma=-1: lambda_min=-8.867e-16  exists=False  predicted=False  b.1=-0.60
   grip=linear    k=1 sigma=+1: lambda_min=-8.867e-16  exists=False  predicted=False  b.1=+0.90
   grip=linear    k=1 sigma=-1: lambda_min=-8.867e-16  exists=False  predicted=False  b.1=-0.90
 no anchor, two bodies (separation 4): alpha1=0.2700, r12=0.449684: threshold alpha2 numerical=-0.2407673308 predicted=-0.2407673308  rel.dev=2.1e-13
 anchor at h, one body at distance d: threshold alpha* (lambda_min=0) vs -1/Gamma(x), and which (k, sigma) of grip negF2 / square have a lowest eigenvector
   d=1: Gamma=1.761254  alpha* numerical=-0.5677773671 predicted=-0.5677773671  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=2: Gamma=1.845431  alpha* numerical=-0.5418788955 predicted=-0.5418788955  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=3: Gamma=1.871738  alpha* numerical=-0.5342627406 predicted=-0.5342627406  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
 anchor, two bodies, random (alpha1, alpha2): criterion (5.10) agrees with lambda_min in 40/40

--- cubic torus L=12
 no anchor, one body at a place: lambda_min(A0) and prediction [mu F2 > 0]
   grip=square    k=0 sigma=+1: lambda_min=+9.996e-05  exists=True  predicted=True  b.1=+0.60
   grip=square    k=0 sigma=-1: lambda_min=-1.087e-04  exists=False  predicted=False  b.1=-0.60
   grip=square    k=1 sigma=+1: lambda_min=+1.470e-04  exists=True  predicted=True  b.1=+0.90
   grip=square    k=1 sigma=-1: lambda_min=-1.668e-04  exists=False  predicted=False  b.1=-0.90
   grip=negF2     k=0 sigma=+1: lambda_min=-5.926e-05  exists=False  predicted=False  b.1=+0.60
   grip=negF2     k=0 sigma=-1: lambda_min=+5.655e-05  exists=True  predicted=True  b.1=-0.60
   grip=negF2     k=1 sigma=+1: lambda_min=-8.996e-05  exists=False  predicted=False  b.1=+0.90
   grip=negF2     k=1 sigma=-1: lambda_min=+8.386e-05  exists=True  predicted=True  b.1=-0.90
   grip=linear    k=0 sigma=+1: lambda_min=-1.988e-16  exists=False  predicted=False  b.1=+0.60
   grip=linear    k=0 sigma=-1: lambda_min=-1.988e-16  exists=False  predicted=False  b.1=-0.60
   grip=linear    k=1 sigma=+1: lambda_min=-1.988e-16  exists=False  predicted=False  b.1=+0.90
   grip=linear    k=1 sigma=-1: lambda_min=-1.988e-16  exists=False  predicted=False  b.1=-0.90
 no anchor, two bodies (separation 4): alpha1=0.2700, r12=0.461270: threshold alpha2 numerical=-0.2400975469 predicted=-0.2400975468  rel.dev=1.3e-11
 anchor at h, one body at distance d: threshold alpha* (lambda_min=0) vs -1/Gamma(x), and which (k, sigma) of grip negF2 / square have a lowest eigenvector
   d=1: Gamma=1.761712  alpha* numerical=-0.5676297142 predicted=-0.5676297142  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=2: Gamma=1.847457  alpha* numerical=-0.5412844656 predicted=-0.5412844656  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
   d=3: Gamma=1.877051  alpha* numerical=-0.5327505289 predicted=-0.5327505289  | negF2:k0+=Y negF2:k0-=Y negF2:k1+=Y negF2:k1-=Y square:k0+=Y square:k0-=Y square:k1+=Y square:k1-=Y
 anchor, two bodies, random (alpha1, alpha2): criterion (5.10) agrees with lambda_min in 40/40

output/mutual_cost.txt6 KB · raw
(ii) Mutual cost of two held sources E12 = -g1 g2 (A^{-1})_{x1 x2} from the exact E0 (sparse LU of A) against (5.14) E12 = -g1 g2 G_a(x1,x2); g1 = g2 = 1
kappa_h=1.0, kappa_a=0.7

--- ring L=64: pair on one side of the anchor, x1 = h + d1, x2 = x1 + s
  d1=4: s=1: -5.1160714286 (formula -5.1160714286); s=2: -5.0535714286 (formula -5.0535714286); s=4: -4.9285714286 (formula -4.9285714286); s=8: -4.6785714286 (formula -4.6785714286); s=16: -4.1785714286 (formula -4.1785714286)
         L->inf value (5.16) on the line: -(1/kappa_a + d1/kappa_h) = -5.4285714286
  d1=16: s=1: -13.1785714286 (formula -13.1785714286); s=2: -12.9285714286 (formula -12.9285714286); s=4: -12.4285714286 (formula -12.4285714286); s=8: -11.4285714286 (formula -11.4285714286); s=16: -9.4285714286 (formula -9.4285714286)
         L->inf value (5.16) on the line: -(1/kappa_a + d1/kappa_h) = -17.4285714286
  opposite sides x1=h+5, x2=h-7: exact -1.9754464286, formula -1.9754464286, -1/kappa_a = -1.4285714286
--- ring L=256: pair on one side of the anchor, x1 = h + d1, x2 = x1 + s
  d1=4: s=1: -5.3504464286 (formula -5.3504464286); s=2: -5.3348214286 (formula -5.3348214286); s=4: -5.3035714286 (formula -5.3035714286); s=8: -5.2410714286 (formula -5.2410714286); s=16: -5.1160714286 (formula -5.1160714286)
         L->inf value (5.16) on the line: -(1/kappa_a + d1/kappa_h) = -5.4285714286
  d1=16: s=1: -16.3660714286 (formula -16.3660714286); s=2: -16.3035714286 (formula -16.3035714286); s=4: -16.1785714286 (formula -16.1785714286); s=8: -15.9285714286 (formula -15.9285714286); s=16: -15.4285714286 (formula -15.4285714286)
         L->inf value (5.16) on the line: -(1/kappa_a + d1/kappa_h) = -17.4285714286
  opposite sides x1=h+5, x2=h-7: exact -1.5652901786, formula -1.5652901786, -1/kappa_a = -1.4285714286
--- cubic torus L=16: pair along x with midpoint h + D e_y, x1,2 = h + D e_y -/+ (r/2) e_x
  D=0:  r | exact E12 | formula (5.14), this L | L=inf lattice, (5.14) with g_inf | continuum image form (5.15)
      2 | -1.5521474018 | -1.5521474018 | -1.5520630666 | -1.5619362311
      4 | -1.6161920237 | -1.6161920237 | -1.6158126766 | -1.6216193348
      6 | -1.6405966215 | -1.6405966215 | -1.6395768761 | -1.6415137027
      8 | -1.6529995167 | -1.6529995167 | -1.6507127513 | -1.6514608866
        effective coefficient c(r) = [E12(r)-E12(r')] / [-(1/(4 pi kappa_h))(1/r - 1/r')], consecutive r:
        r=2->4: exact -3.2192, L=inf lattice -3.2044, continuum image form -3.0000
        r=4->6: exact -3.6801, L=inf lattice -3.5836, continuum image form -3.0000
        r=6->8: exact -3.7406, L=inf lattice -3.3585, continuum image form -3.0000
  D=6:  r | exact E12 | formula (5.14), this L | L=inf lattice, (5.14) with g_inf | continuum image form (5.15)
      2 | -1.6944344012 | -1.6944344012 | -1.6978633698 | -1.6949262627
      4 | -1.6733874597 | -1.6733874597 | -1.6763388724 | -1.6760322003
      6 | -1.6688972054 | -1.6688972054 | -1.6709151156 | -1.6708399322
      8 | -1.6688691370 | -1.6688691370 | -1.6692251878 | -1.6691788028
        effective coefficient c(r) = [E12(r)-E12(r')] / [-(1/(4 pi kappa_h))(1/r - 1/r')], consecutive r:
        r=2->4: exact +1.0579, L=inf lattice +1.0819, continuum image form +0.9497
        r=4->6: exact +0.6771, L=inf lattice +0.8179, continuum image form +0.7830
        r=6->8: exact +0.0085, L=inf lattice +0.5097, continuum image form +0.5010
  source 1 at the anchor, source 2 at three places: E12 = -1.428571428571, -1.428571428571, -1.428571428571; -1/kappa_a = -1.428571428571
--- cubic torus L=32: pair along x with midpoint h + D e_y, x1,2 = h + D e_y -/+ (r/2) e_x
  D=0:  r | exact E12 | formula (5.14), this L | L=inf lattice, (5.14) with g_inf | continuum image form (5.15)
      2 | -1.5520733285 | -1.5520733285 | -1.5520630666 | -1.5619362311
      4 | -1.6158549799 | -1.6158549799 | -1.6158126766 | -1.6216193348
      6 | -1.6396768051 | -1.6396768051 | -1.6395768761 | -1.6415137027
      8 | -1.6509023983 | -1.6509023983 | -1.6507127513 | -1.6514608866
     12 | -1.6617240446 | -1.6617240446 | -1.6612162537 | -1.6614080705
     16 | -1.6674389658 | -1.6674389659 | -1.6663048488 | -1.6663816625
        effective coefficient c(r) = [E12(r)-E12(r')] / [-(1/(4 pi kappa_h))(1/r - 1/r')], consecutive r:
        r=2->4: exact -3.2060, L=inf lattice -3.2044, continuum image form -3.0000
        r=4->6: exact -3.5922, L=inf lattice -3.5836, continuum image form -3.0000
        r=6->8: exact -3.3856, L=inf lattice -3.3585, continuum image form -3.0000
        r=8->12: exact -3.2637, L=inf lattice -3.1678, continuum image form -3.0000
        r=12->16: exact -3.4472, L=inf lattice -3.0694, continuum image form -3.0000
  D=6:  r | exact E12 | formula (5.14), this L | L=inf lattice, (5.14) with g_inf | continuum image form (5.15)
      2 | -1.6974901645 | -1.6974901645 | -1.6978633698 | -1.6949262627
      4 | -1.6760026402 | -1.6760026402 | -1.6763388724 | -1.6760322003
      6 | -1.6706447335 | -1.6706447335 | -1.6709151156 | -1.6708399322
      8 | -1.6690560582 | -1.6690560582 | -1.6692251878 | -1.6691788028
     12 | -1.6693862736 | -1.6693862736 | -1.6692040382 | -1.6691773045
     16 | -1.6712274436 | -1.6712274436 | -1.6703711253 | -1.6703605361
        effective coefficient c(r) = [E12(r)-E12(r')] / [-(1/(4 pi kappa_h))(1/r - 1/r')], consecutive r:
        r=2->4: exact +1.0801, L=inf lattice +1.0819, continuum image form +0.9497
        r=4->6: exact +0.8080, L=inf lattice +0.8179, continuum image form +0.7830
        r=6->8: exact +0.4791, L=inf lattice +0.5097, continuum image form +0.5010
        r=8->12: exact -0.0996, L=inf lattice +0.0064, continuum image form +0.0005
        r=12->16: exact -1.1106, L=inf lattice -0.7040, continuum image form -0.7137
  source 1 at the anchor, source 2 at three places: E12 = -1.428571428560, -1.428571428560, -1.428571428560; -1/kappa_a = -1.428571428571

output/weighing.txt36 KB · raw
(iii) Cost, weight, bond and weighing ratios at order s^2 from the exact E0 (dense; s-stencil step 0.01) against (5.18)-(5.22); g_s = +-1 (the g_s-linear part is exact)
kappa_h=1.0, kappa_a=0.7, levels M_k={0: 1.0, 1: 1.5}

=== ring L=32, anchor h=0; body placements x=h+d e, x'=h+(d+1) e, source at h+(d+1+3) e
 d=2: Gamma(x)=3.303571, w(x)=0.611203, Sigma(x)=1.350120, phi_a(x)=-3.053571; a_mark=+0.964419
    grip=square    k=0 sigma=+1: rho_mark numerical=2.05681151 predicted (5.20)=2.05681147 leading (4F0F2/F1^2)(1+a_mark)=1.964419
    grip=square    k=0 sigma=-1: rho_mark numerical=2.05681151 predicted (5.20)=2.05681147 leading (4F0F2/F1^2)(1+a_mark)=1.964419
    grip=square    k=1 sigma=+1: rho_mark numerical=2.05681164 predicted (5.20)=2.05681147 leading (4F0F2/F1^2)(1+a_mark)=1.964419
    grip=square    k=1 sigma=-1: rho_mark numerical=2.05681164 predicted (5.20)=2.05681147 leading (4F0F2/F1^2)(1+a_mark)=1.964419
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.66654228 predicted (5.20)=0.66654228 leading (4F0F2/F1^2)(1+a_mark)=0.654806
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.66654228 predicted (5.20)=0.66654228 leading (4F0F2/F1^2)(1+a_mark)=0.654806
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.66654228 predicted (5.20)=0.66654228 leading (4F0F2/F1^2)(1+a_mark)=0.654806
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.66654228 predicted (5.20)=0.66654228 leading (4F0F2/F1^2)(1+a_mark)=0.654806
    grip=eight     k=0 sigma=+1: rho_mark numerical=1.00780344 predicted (5.20)=1.00780344 leading (4F0F2/F1^2)(1+a_mark)=0.982210
    grip=eight     k=0 sigma=-1: rho_mark numerical=1.00780344 predicted (5.20)=1.00780344 leading (4F0F2/F1^2)(1+a_mark)=0.982210
    grip=eight     k=1 sigma=+1: rho_mark numerical=1.00780344 predicted (5.20)=1.00780344 leading (4F0F2/F1^2)(1+a_mark)=0.982210
    grip=eight     k=1 sigma=-1: rho_mark numerical=1.00780344 predicted (5.20)=1.00780344 leading (4F0F2/F1^2)(1+a_mark)=0.982210
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(7)]: m_r=1.000000, a_bond=+1.166354
    (k,sigma)=(0,+1),(0,+1): B2=-1.150152e+00 (s^1 part -2.2e-07); rho_bond,1 num=2.28470542 pred=2.28470692; rho_bond,2 num=2.28470542 pred=2.28470692; leading m_r+a_bond=2.166354
    (k,sigma)=(0,-1),(0,-1): B2=-1.150152e+00 (s^1 part +2.2e-07); rho_bond,1 num=2.28470542 pred=2.28470692; rho_bond,2 num=2.28470542 pred=2.28470692; leading m_r+a_bond=2.166354
    (k,sigma)=(1,+1),(1,+1): B2=-2.587840e+00 (s^1 part -1.7e-06); rho_bond,1 num=2.28469931 pred=2.28470692; rho_bond,2 num=2.28469931 pred=2.28470692; leading m_r+a_bond=2.166354
    (k,sigma)=(1,-1),(1,-1): B2=-2.587840e+00 (s^1 part +1.7e-06); rho_bond,1 num=2.28469931 pred=2.28470692; rho_bond,2 num=2.28469931 pred=2.28470692; leading m_r+a_bond=2.166354
    (k,sigma)=(0,+1),(1,-1): B2=+1.725229e+00 (s^1 part -1.5e-07); rho_bond,1 num=2.28470649 pred=2.28470692; rho_bond,2 num=2.28470711 pred=2.28470692; leading m_r+a_bond=2.166354
 d=5: Gamma(x)=5.647321, w(x)=0.715303, Sigma(x)=2.643709, phi_a(x)=-5.022321; a_mark=+0.822319
    grip=square    k=0 sigma=+1: rho_mark numerical=1.92089161 predicted (5.20)=1.92089145 leading (4F0F2/F1^2)(1+a_mark)=1.822319
    grip=square    k=0 sigma=-1: rho_mark numerical=1.92089161 predicted (5.20)=1.92089145 leading (4F0F2/F1^2)(1+a_mark)=1.822319
    grip=square    k=1 sigma=+1: rho_mark numerical=1.92089226 predicted (5.20)=1.92089145 leading (4F0F2/F1^2)(1+a_mark)=1.822319
    grip=square    k=1 sigma=-1: rho_mark numerical=1.92089226 predicted (5.20)=1.92089145 leading (4F0F2/F1^2)(1+a_mark)=1.822319
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.61993590 predicted (5.20)=0.61993590 leading (4F0F2/F1^2)(1+a_mark)=0.607440
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.61993590 predicted (5.20)=0.61993590 leading (4F0F2/F1^2)(1+a_mark)=0.607440
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.61993590 predicted (5.20)=0.61993590 leading (4F0F2/F1^2)(1+a_mark)=0.607440
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.61993590 predicted (5.20)=0.61993590 leading (4F0F2/F1^2)(1+a_mark)=0.607440
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.93842570 predicted (5.20)=0.93842570 leading (4F0F2/F1^2)(1+a_mark)=0.911159
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.93842570 predicted (5.20)=0.93842570 leading (4F0F2/F1^2)(1+a_mark)=0.911159
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.93842570 predicted (5.20)=0.93842570 leading (4F0F2/F1^2)(1+a_mark)=0.911159
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.93842570 predicted (5.20)=0.93842570 leading (4F0F2/F1^2)(1+a_mark)=0.911159
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(10)]: m_r=1.000000, a_bond=+0.904371
    (k,sigma)=(0,+1),(0,+1): B2=-1.933962e+00 (s^1 part -1.4e-06); rho_bond,1 num=2.01765675 pred=2.01766300; rho_bond,2 num=2.01765675 pred=2.01766300; leading m_r+a_bond=1.904371
    (k,sigma)=(0,-1),(0,-1): B2=-1.933962e+00 (s^1 part +1.4e-06); rho_bond,1 num=2.01765675 pred=2.01766300; rho_bond,2 num=2.01765675 pred=2.01766300; leading m_r+a_bond=1.904371
    (k,sigma)=(1,+1),(1,+1): B2=-4.351387e+00 (s^1 part -1.1e-05); rho_bond,1 num=2.01763119 pred=2.01766300; rho_bond,2 num=2.01763119 pred=2.01766300; leading m_r+a_bond=1.904371
    (k,sigma)=(1,-1),(1,-1): B2=-4.351387e+00 (s^1 part +1.1e-05); rho_bond,1 num=2.01763119 pred=2.01766300; rho_bond,2 num=2.01763119 pred=2.01766300; leading m_r+a_bond=1.904371
    (k,sigma)=(0,+1),(1,-1): B2=+2.900947e+00 (s^1 part -6.1e-07); rho_bond,1 num=2.01766198 pred=2.01766300; rho_bond,2 num=2.01766404 pred=2.01766300; leading m_r+a_bond=1.904371
 d=10: Gamma(x)=8.303571, w(x)=0.792249, Sigma(x)=4.263750, phi_a(x)=-7.053571; a_mark=+0.528868
    grip=square    k=0 sigma=+1: rho_mark numerical=1.61964455 predicted (5.20)=1.61964428 leading (4F0F2/F1^2)(1+a_mark)=1.528868
    grip=square    k=0 sigma=-1: rho_mark numerical=1.61964455 predicted (5.20)=1.61964428 leading (4F0F2/F1^2)(1+a_mark)=1.528868
    grip=square    k=1 sigma=+1: rho_mark numerical=1.61964568 predicted (5.20)=1.61964428 leading (4F0F2/F1^2)(1+a_mark)=1.528868
    grip=square    k=1 sigma=-1: rho_mark numerical=1.61964568 predicted (5.20)=1.61964428 leading (4F0F2/F1^2)(1+a_mark)=1.528868
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.52112633 predicted (5.20)=0.52112633 leading (4F0F2/F1^2)(1+a_mark)=0.509623
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.52112633 predicted (5.20)=0.52112633 leading (4F0F2/F1^2)(1+a_mark)=0.509623
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.52112632 predicted (5.20)=0.52112633 leading (4F0F2/F1^2)(1+a_mark)=0.509623
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.52112632 predicted (5.20)=0.52112633 leading (4F0F2/F1^2)(1+a_mark)=0.509623
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.78953802 predicted (5.20)=0.78953802 leading (4F0F2/F1^2)(1+a_mark)=0.764434
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.78953802 predicted (5.20)=0.78953802 leading (4F0F2/F1^2)(1+a_mark)=0.764434
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.78953801 predicted (5.20)=0.78953802 leading (4F0F2/F1^2)(1+a_mark)=0.764434
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.78953801 predicted (5.20)=0.78953802 leading (4F0F2/F1^2)(1+a_mark)=0.764434
    grip=linear    k=0 sigma=+1: rho_mark numerical=-7.188e-13 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-7.188e-13 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(15)]: m_r=1.000000, a_bond=+0.510369
    (k,sigma)=(0,+1),(0,+1): B2=-2.787577e+00 (s^1 part -5.5e-06); rho_bond,1 num=1.60596890 pred=1.60598131; rho_bond,2 num=1.60596890 pred=1.60598131; leading m_r+a_bond=1.510369
    (k,sigma)=(0,-1),(0,-1): B2=-2.787577e+00 (s^1 part +5.5e-06); rho_bond,1 num=1.60596890 pred=1.60598131; rho_bond,2 num=1.60596890 pred=1.60598131; leading m_r+a_bond=1.510369
    (k,sigma)=(1,+1),(1,+1): B2=-6.271894e+00 (s^1 part -4.2e-05); rho_bond,1 num=1.60591794 pred=1.60598131; rho_bond,2 num=1.60591794 pred=1.60598131; leading m_r+a_bond=1.510369
    (k,sigma)=(1,-1),(1,-1): B2=-6.271894e+00 (s^1 part +4.2e-05); rho_bond,1 num=1.60591794 pred=1.60598131; rho_bond,2 num=1.60591794 pred=1.60598131; leading m_r+a_bond=1.510369
    (k,sigma)=(0,+1),(1,-1): B2=+4.181385e+00 (s^1 part -1.7e-06); rho_bond,1 num=1.60598013 pred=1.60598131; rho_bond,2 num=1.60598322 pred=1.60598131; leading m_r+a_bond=1.510369
 max relative deviation of C1, Cmark, W1, Wmark from (5.18) over this lattice: 1.19e-06

=== ring L=64, anchor h=0; body placements x=h+d e, x'=h+(d+1) e, source at h+(d+1+3) e
 d=2: Gamma(x)=3.366071, w(x)=0.609472, Sigma(x)=1.332455, phi_a(x)=-3.241071; a_mark=+0.981939
    grip=square    k=0 sigma=+1: rho_mark numerical=2.07559516 predicted (5.20)=2.07559512 leading (4F0F2/F1^2)(1+a_mark)=1.981939
    grip=square    k=0 sigma=-1: rho_mark numerical=2.07559516 predicted (5.20)=2.07559512 leading (4F0F2/F1^2)(1+a_mark)=1.981939
    grip=square    k=1 sigma=+1: rho_mark numerical=2.07559532 predicted (5.20)=2.07559512 leading (4F0F2/F1^2)(1+a_mark)=1.981939
    grip=square    k=1 sigma=-1: rho_mark numerical=2.07559532 predicted (5.20)=2.07559512 leading (4F0F2/F1^2)(1+a_mark)=1.981939
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.67248224 predicted (5.20)=0.67248224 leading (4F0F2/F1^2)(1+a_mark)=0.660646
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.67248224 predicted (5.20)=0.67248224 leading (4F0F2/F1^2)(1+a_mark)=0.660646
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.67248224 predicted (5.20)=0.67248224 leading (4F0F2/F1^2)(1+a_mark)=0.660646
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.67248224 predicted (5.20)=0.67248224 leading (4F0F2/F1^2)(1+a_mark)=0.660646
    grip=eight     k=0 sigma=+1: rho_mark numerical=1.01681087 predicted (5.20)=1.01681087 leading (4F0F2/F1^2)(1+a_mark)=0.990970
    grip=eight     k=0 sigma=-1: rho_mark numerical=1.01681087 predicted (5.20)=1.01681087 leading (4F0F2/F1^2)(1+a_mark)=0.990970
    grip=eight     k=1 sigma=+1: rho_mark numerical=1.01681088 predicted (5.20)=1.01681087 leading (4F0F2/F1^2)(1+a_mark)=0.990970
    grip=eight     k=1 sigma=-1: rho_mark numerical=1.01681088 predicted (5.20)=1.01681087 leading (4F0F2/F1^2)(1+a_mark)=0.990970
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(7)]: m_r=1.000000, a_bond=+1.212563
    (k,sigma)=(0,+1),(0,+1): B2=-1.195053e+00 (s^1 part -2.5e-07); rho_bond,1 num=2.33396220 pred=2.33396410; rho_bond,2 num=2.33396220 pred=2.33396410; leading m_r+a_bond=2.212563
    (k,sigma)=(0,-1),(0,-1): B2=-1.195053e+00 (s^1 part +2.5e-07); rho_bond,1 num=2.33396220 pred=2.33396410; rho_bond,2 num=2.33396220 pred=2.33396410; leading m_r+a_bond=2.212563
    (k,sigma)=(1,+1),(1,+1): B2=-2.688865e+00 (s^1 part -1.9e-06); rho_bond,1 num=2.33395446 pred=2.33396410; rho_bond,2 num=2.33395446 pred=2.33396410; leading m_r+a_bond=2.212563
    (k,sigma)=(1,-1),(1,-1): B2=-2.688865e+00 (s^1 part +1.9e-06); rho_bond,1 num=2.33395446 pred=2.33396410; rho_bond,2 num=2.33395446 pred=2.33396410; leading m_r+a_bond=2.212563
    (k,sigma)=(0,+1),(1,-1): B2=+1.792579e+00 (s^1 part -1.8e-07); rho_bond,1 num=2.33396348 pred=2.33396410; rho_bond,2 num=2.33396427 pred=2.33396410; leading m_r+a_bond=2.212563
 d=5: Gamma(x)=6.037946, w(x)=0.716014, Sigma(x)=2.674050, phi_a(x)=-5.725446; a_mark=+0.919297
    grip=square    k=0 sigma=+1: rho_mark numerical=2.02458539 predicted (5.20)=2.02458512 leading (4F0F2/F1^2)(1+a_mark)=1.919297
    grip=square    k=0 sigma=-1: rho_mark numerical=2.02458539 predicted (5.20)=2.02458512 leading (4F0F2/F1^2)(1+a_mark)=1.919297
    grip=square    k=1 sigma=+1: rho_mark numerical=2.02458649 predicted (5.20)=2.02458512 leading (4F0F2/F1^2)(1+a_mark)=1.919297
    grip=square    k=1 sigma=-1: rho_mark numerical=2.02458649 predicted (5.20)=2.02458512 leading (4F0F2/F1^2)(1+a_mark)=1.919297
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.65300027 predicted (5.20)=0.65300027 leading (4F0F2/F1^2)(1+a_mark)=0.639766
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.65300027 predicted (5.20)=0.65300027 leading (4F0F2/F1^2)(1+a_mark)=0.639766
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.65300027 predicted (5.20)=0.65300027 leading (4F0F2/F1^2)(1+a_mark)=0.639766
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.65300027 predicted (5.20)=0.65300027 leading (4F0F2/F1^2)(1+a_mark)=0.639766
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.98858086 predicted (5.20)=0.98858086 leading (4F0F2/F1^2)(1+a_mark)=0.959648
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.98858086 predicted (5.20)=0.98858086 leading (4F0F2/F1^2)(1+a_mark)=0.959648
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.98858088 predicted (5.20)=0.98858086 leading (4F0F2/F1^2)(1+a_mark)=0.959648
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.98858088 predicted (5.20)=0.98858086 leading (4F0F2/F1^2)(1+a_mark)=0.959648
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(10)]: m_r=1.000000, a_bond=+1.039611
    (k,sigma)=(0,+1),(0,+1): B2=-2.131345e+00 (s^1 part -2.0e-06); rho_bond,1 num=2.16246098 pred=2.16247190; rho_bond,2 num=2.16246098 pred=2.16247190; leading m_r+a_bond=2.039611
    (k,sigma)=(0,-1),(0,-1): B2=-2.131345e+00 (s^1 part +2.0e-06); rho_bond,1 num=2.16246098 pred=2.16247190; rho_bond,2 num=2.16246098 pred=2.16247190; leading m_r+a_bond=2.039611
    (k,sigma)=(1,+1),(1,+1): B2=-4.795482e+00 (s^1 part -1.6e-05); rho_bond,1 num=2.16241626 pred=2.16247190; rho_bond,2 num=2.16241626 pred=2.16247190; leading m_r+a_bond=2.039611
    (k,sigma)=(1,-1),(1,-1): B2=-4.795482e+00 (s^1 part +1.6e-05); rho_bond,1 num=2.16241626 pred=2.16247190; rho_bond,2 num=2.16241626 pred=2.16247190; leading m_r+a_bond=2.039611
    (k,sigma)=(0,+1),(1,-1): B2=+3.197023e+00 (s^1 part -9.5e-07); rho_bond,1 num=2.16246979 pred=2.16247190; rho_bond,2 num=2.16247357 pred=2.16247190; leading m_r+a_bond=2.039611
 d=10: Gamma(x)=9.866071, w(x)=0.805930, Sigma(x)=4.741418, phi_a(x)=-9.241071; a_mark=+0.811924
    grip=square    k=0 sigma=+1: rho_mark numerical=1.92343554 predicted (5.20)=1.92343421 leading (4F0F2/F1^2)(1+a_mark)=1.811924
    grip=square    k=0 sigma=-1: rho_mark numerical=1.92343554 predicted (5.20)=1.92343421 leading (4F0F2/F1^2)(1+a_mark)=1.811924
    grip=square    k=1 sigma=+1: rho_mark numerical=1.92344096 predicted (5.20)=1.92343421 leading (4F0F2/F1^2)(1+a_mark)=1.811924
    grip=square    k=1 sigma=-1: rho_mark numerical=1.92344096 predicted (5.20)=1.92343421 leading (4F0F2/F1^2)(1+a_mark)=1.811924
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.61794256 predicted (5.20)=0.61794256 leading (4F0F2/F1^2)(1+a_mark)=0.603975
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.61794256 predicted (5.20)=0.61794256 leading (4F0F2/F1^2)(1+a_mark)=0.603975
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.61794255 predicted (5.20)=0.61794256 leading (4F0F2/F1^2)(1+a_mark)=0.603975
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.61794255 predicted (5.20)=0.61794256 leading (4F0F2/F1^2)(1+a_mark)=0.603975
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.93652337 predicted (5.20)=0.93652336 leading (4F0F2/F1^2)(1+a_mark)=0.905962
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.93652337 predicted (5.20)=0.93652336 leading (4F0F2/F1^2)(1+a_mark)=0.905962
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.93652343 predicted (5.20)=0.93652336 leading (4F0F2/F1^2)(1+a_mark)=0.905962
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.93652343 predicted (5.20)=0.93652336 leading (4F0F2/F1^2)(1+a_mark)=0.905962
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(15)]: m_r=1.000000, a_bond=+0.867189
    (k,sigma)=(0,+1),(0,+1): B2=-3.467098e+00 (s^1 part -1.3e-05); rho_bond,1 num=1.98924985 pred=1.98930136; rho_bond,2 num=1.98924985 pred=1.98930136; leading m_r+a_bond=1.867189
    (k,sigma)=(0,-1),(0,-1): B2=-3.467098e+00 (s^1 part +1.3e-05); rho_bond,1 num=1.98924985 pred=1.98930136; rho_bond,2 num=1.98924985 pred=1.98930136; leading m_r+a_bond=1.867189
    (k,sigma)=(1,+1),(1,+1): B2=-7.800528e+00 (s^1 part -9.8e-05); rho_bond,1 num=1.98903680 pred=1.98930136; rho_bond,2 num=1.98903680 pred=1.98930136; leading m_r+a_bond=1.867189
    (k,sigma)=(1,-1),(1,-1): B2=-7.800528e+00 (s^1 part +9.8e-05); rho_bond,1 num=1.98903680 pred=1.98930136; rho_bond,2 num=1.98903680 pred=1.98930136; leading m_r+a_bond=1.867189
    (k,sigma)=(0,+1),(1,-1): B2=+5.200703e+00 (s^1 part -4.4e-06); rho_bond,1 num=1.98929451 pred=1.98930136; rho_bond,2 num=1.98930983 pred=1.98930136; leading m_r+a_bond=1.867189
 max relative deviation of C1, Cmark, W1, Wmark from (5.18) over this lattice: 2.63e-06

=== cubic torus L=8, anchor h=0; body placements x=h+d e, x'=h+(d+1) e, source at h+(d+1+1) e
 d=1: Gamma(x)=1.761254, w(x)=0.250142, Sigma(x)=0.110614, phi_a(x)=-1.608066; a_mark=+0.915054
    grip=square    k=0 sigma=+1: rho_mark numerical=1.95555323 predicted (5.20)=1.95555323 leading (4F0F2/F1^2)(1+a_mark)=1.915054
    grip=square    k=0 sigma=-1: rho_mark numerical=1.95555323 predicted (5.20)=1.95555323 leading (4F0F2/F1^2)(1+a_mark)=1.915054
    grip=square    k=1 sigma=+1: rho_mark numerical=1.95555323 predicted (5.20)=1.95555323 leading (4F0F2/F1^2)(1+a_mark)=1.915054
    grip=square    k=1 sigma=-1: rho_mark numerical=1.95555323 predicted (5.20)=1.95555323 leading (4F0F2/F1^2)(1+a_mark)=1.915054
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.64305813 predicted (5.20)=0.64305813 leading (4F0F2/F1^2)(1+a_mark)=0.638351
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.64305813 predicted (5.20)=0.64305813 leading (4F0F2/F1^2)(1+a_mark)=0.638351
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.64305811 predicted (5.20)=0.64305813 leading (4F0F2/F1^2)(1+a_mark)=0.638351
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.64305811 predicted (5.20)=0.64305813 leading (4F0F2/F1^2)(1+a_mark)=0.638351
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.96800210 predicted (5.20)=0.96800210 leading (4F0F2/F1^2)(1+a_mark)=0.957527
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.96800210 predicted (5.20)=0.96800210 leading (4F0F2/F1^2)(1+a_mark)=0.957527
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.96800208 predicted (5.20)=0.96800210 leading (4F0F2/F1^2)(1+a_mark)=0.957527
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.96800208 predicted (5.20)=0.96800210 leading (4F0F2/F1^2)(1+a_mark)=0.957527
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(3), np.int64(1), np.int64(0)]: m_r=0.710282, a_bond=+0.826912
    (k,sigma)=(0,+1),(0,+1): B2=-5.769611e-01 (s^1 part -1.0e-08); rho_bond,1 num=1.57103889 pred=1.57103895; rho_bond,2 num=1.57103889 pred=1.57103895; leading m_r+a_bond=1.537194
    (k,sigma)=(0,-1),(0,-1): B2=-5.769611e-01 (s^1 part +1.0e-08); rho_bond,1 num=1.57103889 pred=1.57103895; rho_bond,2 num=1.57103889 pred=1.57103895; leading m_r+a_bond=1.537194
    (k,sigma)=(1,+1),(1,+1): B2=-1.298162e+00 (s^1 part -8.0e-08); rho_bond,1 num=1.57103876 pred=1.57103895; rho_bond,2 num=1.57103876 pred=1.57103895; leading m_r+a_bond=1.537194
    (k,sigma)=(1,-1),(1,-1): B2=-1.298162e+00 (s^1 part +8.0e-08); rho_bond,1 num=1.57103876 pred=1.57103895; rho_bond,2 num=1.57103876 pred=1.57103895; leading m_r+a_bond=1.537194
    (k,sigma)=(0,+1),(1,-1): B2=+8.654416e-01 (s^1 part -3.2e-09); rho_bond,1 num=1.57103897 pred=1.57103895; rho_bond,2 num=1.57103897 pred=1.57103895; leading m_r+a_bond=1.537194
 d=2: Gamma(x)=1.845431, w(x)=0.252020, Sigma(x)=0.116884, phi_a(x)=-1.653413; a_mark=+0.430726
    grip=square    k=0 sigma=+1: rho_mark numerical=1.46112323 predicted (5.20)=1.46112323 leading (4F0F2/F1^2)(1+a_mark)=1.430726
    grip=square    k=0 sigma=-1: rho_mark numerical=1.46112323 predicted (5.20)=1.46112323 leading (4F0F2/F1^2)(1+a_mark)=1.430726
    grip=square    k=1 sigma=+1: rho_mark numerical=1.46112322 predicted (5.20)=1.46112323 leading (4F0F2/F1^2)(1+a_mark)=1.430726
    grip=square    k=1 sigma=-1: rho_mark numerical=1.46112322 predicted (5.20)=1.46112323 leading (4F0F2/F1^2)(1+a_mark)=1.430726
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.48044164 predicted (5.20)=0.48044166 leading (4F0F2/F1^2)(1+a_mark)=0.476909
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.48044164 predicted (5.20)=0.48044166 leading (4F0F2/F1^2)(1+a_mark)=0.476909
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.48044166 predicted (5.20)=0.48044166 leading (4F0F2/F1^2)(1+a_mark)=0.476909
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.48044166 predicted (5.20)=0.48044166 leading (4F0F2/F1^2)(1+a_mark)=0.476909
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.72322553 predicted (5.20)=0.72322555 leading (4F0F2/F1^2)(1+a_mark)=0.715363
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.72322553 predicted (5.20)=0.72322555 leading (4F0F2/F1^2)(1+a_mark)=0.715363
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.72322554 predicted (5.20)=0.72322555 leading (4F0F2/F1^2)(1+a_mark)=0.715363
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.72322554 predicted (5.20)=0.72322555 leading (4F0F2/F1^2)(1+a_mark)=0.715363
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(4), np.int64(1), np.int64(0)]: m_r=0.535514, a_bond=+0.349449
    (k,sigma)=(0,+1),(0,+1): B2=-5.946991e-01 (s^1 part -1.2e-08); rho_bond,1 num=0.90447490 pred=0.90447492; rho_bond,2 num=0.90447490 pred=0.90447492; leading m_r+a_bond=0.884964
    (k,sigma)=(0,-1),(0,-1): B2=-5.946991e-01 (s^1 part +1.2e-08); rho_bond,1 num=0.90447490 pred=0.90447492; rho_bond,2 num=0.90447490 pred=0.90447492; leading m_r+a_bond=0.884964
    (k,sigma)=(1,+1),(1,+1): B2=-1.338073e+00 (s^1 part -8.9e-08); rho_bond,1 num=0.90447484 pred=0.90447492; rho_bond,2 num=0.90447484 pred=0.90447492; leading m_r+a_bond=0.884964
    (k,sigma)=(1,-1),(1,-1): B2=-1.338073e+00 (s^1 part +8.9e-08); rho_bond,1 num=0.90447484 pred=0.90447492; rho_bond,2 num=0.90447484 pred=0.90447492; leading m_r+a_bond=0.884964
    (k,sigma)=(0,+1),(1,-1): B2=+8.920486e-01 (s^1 part -3.3e-09); rho_bond,1 num=0.90447494 pred=0.90447492; rho_bond,2 num=0.90447495 pred=0.90447492; leading m_r+a_bond=0.884964
 d=3: Gamma(x)=1.871738, w(x)=0.252479, Sigma(x)=0.118775, phi_a(x)=-1.663309; a_mark=+0.129224
    grip=square    k=0 sigma=+1: rho_mark numerical=1.15324262 predicted (5.20)=1.15324253 leading (4F0F2/F1^2)(1+a_mark)=1.129224
    grip=square    k=0 sigma=-1: rho_mark numerical=1.15324262 predicted (5.20)=1.15324253 leading (4F0F2/F1^2)(1+a_mark)=1.129224
    grip=square    k=1 sigma=+1: rho_mark numerical=1.15324251 predicted (5.20)=1.15324253 leading (4F0F2/F1^2)(1+a_mark)=1.129224
    grip=square    k=1 sigma=-1: rho_mark numerical=1.15324251 predicted (5.20)=1.15324253 leading (4F0F2/F1^2)(1+a_mark)=1.129224
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.37919960 predicted (5.20)=0.37919966 leading (4F0F2/F1^2)(1+a_mark)=0.376408
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.37919960 predicted (5.20)=0.37919966 leading (4F0F2/F1^2)(1+a_mark)=0.376408
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.37919966 predicted (5.20)=0.37919966 leading (4F0F2/F1^2)(1+a_mark)=0.376408
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.37919966 predicted (5.20)=0.37919966 leading (4F0F2/F1^2)(1+a_mark)=0.376408
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.57082472 predicted (5.20)=0.57082469 leading (4F0F2/F1^2)(1+a_mark)=0.564612
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.57082472 predicted (5.20)=0.57082469 leading (4F0F2/F1^2)(1+a_mark)=0.564612
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.57082468 predicted (5.20)=0.57082469 leading (4F0F2/F1^2)(1+a_mark)=0.564612
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.57082468 predicted (5.20)=0.57082469 leading (4F0F2/F1^2)(1+a_mark)=0.564612
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(5), np.int64(1), np.int64(0)]: m_r=0.463091, a_bond=+0.105633
    (k,sigma)=(0,+1),(0,+1): B2=-6.010252e-01 (s^1 part -1.2e-08); rho_bond,1 num=0.58126935 pred=0.58126936; rho_bond,2 num=0.58126935 pred=0.58126936; leading m_r+a_bond=0.568724
    (k,sigma)=(0,-1),(0,-1): B2=-6.010252e-01 (s^1 part +1.2e-08); rho_bond,1 num=0.58126935 pred=0.58126936; rho_bond,2 num=0.58126935 pred=0.58126936; leading m_r+a_bond=0.568724
    (k,sigma)=(1,+1),(1,+1): B2=-1.352307e+00 (s^1 part -9.3e-08); rho_bond,1 num=0.58126936 pred=0.58126936; rho_bond,2 num=0.58126936 pred=0.58126936; leading m_r+a_bond=0.568724
    (k,sigma)=(1,-1),(1,-1): B2=-1.352307e+00 (s^1 part +9.3e-08); rho_bond,1 num=0.58126936 pred=0.58126936; rho_bond,2 num=0.58126936 pred=0.58126936; leading m_r+a_bond=0.568724
    (k,sigma)=(0,+1),(1,-1): B2=+9.015378e-01 (s^1 part -3.3e-09); rho_bond,1 num=0.58126939 pred=0.58126936; rho_bond,2 num=0.58126939 pred=0.58126936; leading m_r+a_bond=0.568724
 max relative deviation of C1, Cmark, W1, Wmark from (5.18) over this lattice: 1.50e-08

=== cubic torus L=12, anchor h=0; body placements x=h+d e, x'=h+(d+1) e, source at h+(d+1+1) e
 d=1: Gamma(x)=1.761712, w(x)=0.239778, Sigma(x)=0.083083, phi_a(x)=-1.609939; a_mark=+0.915896
    grip=square    k=0 sigma=+1: rho_mark numerical=1.95528543 predicted (5.20)=1.95528538 leading (4F0F2/F1^2)(1+a_mark)=1.915896
    grip=square    k=0 sigma=-1: rho_mark numerical=1.95528543 predicted (5.20)=1.95528538 leading (4F0F2/F1^2)(1+a_mark)=1.915896
    grip=square    k=1 sigma=+1: rho_mark numerical=1.95528541 predicted (5.20)=1.95528538 leading (4F0F2/F1^2)(1+a_mark)=1.915896
    grip=square    k=1 sigma=-1: rho_mark numerical=1.95528541 predicted (5.20)=1.95528538 leading (4F0F2/F1^2)(1+a_mark)=1.915896
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.64316301 predicted (5.20)=0.64316296 leading (4F0F2/F1^2)(1+a_mark)=0.638632
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.64316301 predicted (5.20)=0.64316296 leading (4F0F2/F1^2)(1+a_mark)=0.638632
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.64316298 predicted (5.20)=0.64316296 leading (4F0F2/F1^2)(1+a_mark)=0.638632
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.64316298 predicted (5.20)=0.64316296 leading (4F0F2/F1^2)(1+a_mark)=0.638632
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.96805669 predicted (5.20)=0.96805671 leading (4F0F2/F1^2)(1+a_mark)=0.957948
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.96805669 predicted (5.20)=0.96805671 leading (4F0F2/F1^2)(1+a_mark)=0.957948
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.96805668 predicted (5.20)=0.96805671 leading (4F0F2/F1^2)(1+a_mark)=0.957948
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.96805668 predicted (5.20)=0.96805671 leading (4F0F2/F1^2)(1+a_mark)=0.957948
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(3), np.int64(1), np.int64(0)]: m_r=0.714916, a_bond=+0.828812
    (k,sigma)=(0,+1),(0,+1): B2=-5.769264e-01 (s^1 part -1.1e-08); rho_bond,1 num=1.57666083 pred=1.57666085; rho_bond,2 num=1.57666083 pred=1.57666085; leading m_r+a_bond=1.543728
    (k,sigma)=(0,-1),(0,-1): B2=-5.769264e-01 (s^1 part +1.1e-08); rho_bond,1 num=1.57666083 pred=1.57666085; rho_bond,2 num=1.57666083 pred=1.57666085; leading m_r+a_bond=1.543728
    (k,sigma)=(1,+1),(1,+1): B2=-1.298084e+00 (s^1 part -8.0e-08); rho_bond,1 num=1.57666064 pred=1.57666085; rho_bond,2 num=1.57666064 pred=1.57666085; leading m_r+a_bond=1.543728
    (k,sigma)=(1,-1),(1,-1): B2=-1.298084e+00 (s^1 part +8.0e-08); rho_bond,1 num=1.57666064 pred=1.57666085; rho_bond,2 num=1.57666064 pred=1.57666085; leading m_r+a_bond=1.543728
    (k,sigma)=(0,+1),(1,-1): B2=+8.653896e-01 (s^1 part -3.3e-09); rho_bond,1 num=1.57666079 pred=1.57666085; rho_bond,2 num=1.57666080 pred=1.57666085; leading m_r+a_bond=1.543728
 d=2: Gamma(x)=1.847457, w(x)=0.241121, Sigma(x)=0.086833, phi_a(x)=-1.659206; a_mark=+0.465154
    grip=square    k=0 sigma=+1: rho_mark numerical=1.49539019 predicted (5.20)=1.49539026 leading (4F0F2/F1^2)(1+a_mark)=1.465154
    grip=square    k=0 sigma=-1: rho_mark numerical=1.49539019 predicted (5.20)=1.49539026 leading (4F0F2/F1^2)(1+a_mark)=1.465154
    grip=square    k=1 sigma=+1: rho_mark numerical=1.49539022 predicted (5.20)=1.49539026 leading (4F0F2/F1^2)(1+a_mark)=1.465154
    grip=square    k=1 sigma=-1: rho_mark numerical=1.49539022 predicted (5.20)=1.49539026 leading (4F0F2/F1^2)(1+a_mark)=1.465154
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.49186198 predicted (5.20)=0.49186203 leading (4F0F2/F1^2)(1+a_mark)=0.488385
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.49186198 predicted (5.20)=0.49186203 leading (4F0F2/F1^2)(1+a_mark)=0.488385
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.49186203 predicted (5.20)=0.49186203 leading (4F0F2/F1^2)(1+a_mark)=0.488385
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.49186203 predicted (5.20)=0.49186203 leading (4F0F2/F1^2)(1+a_mark)=0.488385
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.74033528 predicted (5.20)=0.74033546 leading (4F0F2/F1^2)(1+a_mark)=0.732577
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.74033528 predicted (5.20)=0.74033546 leading (4F0F2/F1^2)(1+a_mark)=0.732577
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.74033547 predicted (5.20)=0.74033546 leading (4F0F2/F1^2)(1+a_mark)=0.732577
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.74033547 predicted (5.20)=0.74033546 leading (4F0F2/F1^2)(1+a_mark)=0.732577
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(4), np.int64(1), np.int64(0)]: m_r=0.551950, a_bond=+0.387599
    (k,sigma)=(0,+1),(0,+1): B2=-5.951142e-01 (s^1 part -1.2e-08); rho_bond,1 num=0.95961375 pred=0.95961365; rho_bond,2 num=0.95961375 pred=0.95961365; leading m_r+a_bond=0.939549
    (k,sigma)=(0,-1),(0,-1): B2=-5.951142e-01 (s^1 part +1.2e-08); rho_bond,1 num=0.95961375 pred=0.95961365; rho_bond,2 num=0.95961375 pred=0.95961365; leading m_r+a_bond=0.939549
    (k,sigma)=(1,+1),(1,+1): B2=-1.339007e+00 (s^1 part -9.0e-08); rho_bond,1 num=0.95961348 pred=0.95961365; rho_bond,2 num=0.95961348 pred=0.95961365; leading m_r+a_bond=0.939549
    (k,sigma)=(1,-1),(1,-1): B2=-1.339007e+00 (s^1 part +9.0e-08); rho_bond,1 num=0.95961348 pred=0.95961365; rho_bond,2 num=0.95961348 pred=0.95961365; leading m_r+a_bond=0.939549
    (k,sigma)=(0,+1),(1,-1): B2=+8.926713e-01 (s^1 part -3.3e-09); rho_bond,1 num=0.95961365 pred=0.95961365; rho_bond,2 num=0.95961365 pred=0.95961365; leading m_r+a_bond=0.939549
 d=3: Gamma(x)=1.877051, w(x)=0.241437, Sigma(x)=0.088031, phi_a(x)=-1.676908; a_mark=+0.234536
    grip=square    k=0 sigma=+1: rho_mark numerical=1.26003887 predicted (5.20)=1.26003894 leading (4F0F2/F1^2)(1+a_mark)=1.234536
    grip=square    k=0 sigma=-1: rho_mark numerical=1.26003887 predicted (5.20)=1.26003894 leading (4F0F2/F1^2)(1+a_mark)=1.234536
    grip=square    k=1 sigma=+1: rho_mark numerical=1.26003895 predicted (5.20)=1.26003894 leading (4F0F2/F1^2)(1+a_mark)=1.234536
    grip=square    k=1 sigma=-1: rho_mark numerical=1.26003895 predicted (5.20)=1.26003894 leading (4F0F2/F1^2)(1+a_mark)=1.234536
    grip=nonsquare k=0 sigma=+1: rho_mark numerical=0.41444475 predicted (5.20)=0.41444465 leading (4F0F2/F1^2)(1+a_mark)=0.411512
    grip=nonsquare k=0 sigma=-1: rho_mark numerical=0.41444475 predicted (5.20)=0.41444465 leading (4F0F2/F1^2)(1+a_mark)=0.411512
    grip=nonsquare k=1 sigma=+1: rho_mark numerical=0.41444467 predicted (5.20)=0.41444465 leading (4F0F2/F1^2)(1+a_mark)=0.411512
    grip=nonsquare k=1 sigma=-1: rho_mark numerical=0.41444467 predicted (5.20)=0.41444465 leading (4F0F2/F1^2)(1+a_mark)=0.411512
    grip=eight     k=0 sigma=+1: rho_mark numerical=0.62381146 predicted (5.20)=0.62381137 leading (4F0F2/F1^2)(1+a_mark)=0.617268
    grip=eight     k=0 sigma=-1: rho_mark numerical=0.62381146 predicted (5.20)=0.62381137 leading (4F0F2/F1^2)(1+a_mark)=0.617268
    grip=eight     k=1 sigma=+1: rho_mark numerical=0.62381145 predicted (5.20)=0.62381137 leading (4F0F2/F1^2)(1+a_mark)=0.617268
    grip=eight     k=1 sigma=-1: rho_mark numerical=0.62381145 predicted (5.20)=0.62381137 leading (4F0F2/F1^2)(1+a_mark)=0.617268
    grip=linear    k=0 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=0 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=+1: rho_mark numerical=-0.000e+00 predicted=0
    grip=linear    k=1 sigma=-1: rho_mark numerical=-0.000e+00 predicted=0
  bond (square grips), pair separation 2, source at [np.int64(5), np.int64(1), np.int64(0)]: m_r=0.497556, a_bond=+0.206349
    (k,sigma)=(0,+1),(0,+1): B2=-6.024264e-01 (s^1 part -1.2e-08); rho_bond,1 num=0.71894417 pred=0.71894422; rho_bond,2 num=0.71894417 pred=0.71894422; leading m_r+a_bond=0.703905
    (k,sigma)=(0,-1),(0,-1): B2=-6.024264e-01 (s^1 part +1.2e-08); rho_bond,1 num=0.71894417 pred=0.71894422; rho_bond,2 num=0.71894417 pred=0.71894422; leading m_r+a_bond=0.703905
    (k,sigma)=(1,+1),(1,+1): B2=-1.355459e+00 (s^1 part -9.4e-08); rho_bond,1 num=0.71894419 pred=0.71894422; rho_bond,2 num=0.71894419 pred=0.71894422; leading m_r+a_bond=0.703905
    (k,sigma)=(1,-1),(1,-1): B2=-1.355459e+00 (s^1 part +9.4e-08); rho_bond,1 num=0.71894419 pred=0.71894422; rho_bond,2 num=0.71894419 pred=0.71894422; leading m_r+a_bond=0.703905
    (k,sigma)=(0,+1),(1,-1): B2=+9.036396e-01 (s^1 part -3.4e-09); rho_bond,1 num=0.71894432 pred=0.71894422; rho_bond,2 num=0.71894432 pred=0.71894422; leading m_r+a_bond=0.703905
 max relative deviation of C1, Cmark, W1, Wmark from (5.18) over this lattice: 1.93e-08

Analyse with ChatGPTnDot Physics Research plugin
ChatGPT plugin

Analyse this research in ChatGPT

The free plugin nDot Physics Research gives ChatGPT read-only access to everything published here.

  1. Open ChatGPT and select the plugin in the message box.
  2. Write your question after it:nDot Physics Research Explain what 08-ilang-propagation/05-anchor establishes and what it builds on.
  3. Name the subproject when you cite an equation number, e.g. (17.7) of 03-ilang-space.
Open in ChatGPT

Interested in this research?

Join the readers' list and get an e-mail when a new stage or a correction is published. No password, and you can unsubscribe at any time.