HomeTutorials14 – Strong Force
14Advanced~14 min

Strong Force

Activate the full three-component color field (Ψₐ ∈ ℂ³) and place two color-charged sources at different separations. Measure the χ-depression line integral between them. If a flux-tube-like structure forms, the integral grows linearly with distance — a confinement proxy, from two wave equations.

What you'll learn

  • How to run FieldLevel.COLOR simulations with kappa_c and epsilon_cc
  • How to compute confinement with lfm.confinement_proxy()
  • How to measure color variance with lfm.color_variance()
  • How to test distance scaling from measured chi geometry

Which equation is running?

LevelFieldForces includedTutorials
REALΨ ∈ ℝGravity only01–04
COMPLEXΨ ∈ ℂGravity + EM + weak coupling05–13
COLOR ←Ψₐ ∈ ℂ³All 4 forces (color variance + cross-color)This tutorial

COLOR (Ψₐ ∈ ℂ³) stores three independent complex components. Each color source occupies one component (e.g. a=0 and a=1 in this tutorial). With kappa_c enabled, non-singlet states see deeper χ wells. With epsilon_cc enabled, colors mix dynamically — preferentially stabilising balanced configs. COLOR is ~6× slower than REAL on the same grid.

Confinement metric — the mechanism

Each color source drives GOV-02 to lower χ in its vicinity. When two sources of opposite color sit close together, the overlapping χ-well is elongated along the axis between them — a proto-flux-tube. We sample that shape with a line integral:

I = ∫ max(χ) − χ(s) ds   (along segment p0 → p1)
If a flux tube forms
I ∝ r — integral grows linearly with separation
If sources are free
I ∝ constant — integral saturates (Coulomb-like)

No Cornell potential V(r) = σr + α/r is injected. Linear growth is a measurement, not an assumption.

Full script

"""14 - Strong Force (Color Confinement Proxy)

Demonstrate a color-field confinement observable without injecting
external potentials.

We run a Level-2 (color) simulation with v14 color variance (kappa_c)
and v15 cross-color coupling (epsilon_cc), then measure the
chi-depression line integral between color sources:

    I = integral (max(chi) - chi) ds

If color flux forms tube-like structures, I grows approximately
with source separation.
"""

import numpy as np
import lfm


def run_pair(separation: int) -> dict[str, float]:
    n = 56
    cx = n // 2
    p0 = (cx - separation // 2, n // 2, n // 2)
    p1 = (cx + separation // 2, n // 2, n // 2)

    cfg = lfm.SimulationConfig(
        grid_size=n,
        field_level=lfm.FieldLevel.COLOR,
        kappa_c=lfm.KAPPA_C,
        epsilon_cc=lfm.EPSILON_CC,
    )
    sim = lfm.Simulation(cfg)

    sim.place_solitons(
        positions=[p0, p1],
        amplitude=5.5,
        sigma=3.0,
        phases=[0.0, np.pi],
        colors=[0, 1],
    )
    sim.equilibrate()
    sim.run(steps=2500)

    # Measure confinement proxy and color variance
    conf = lfm.confinement_proxy(sim.chi, p0, p1, samples=96)
    cv = lfm.color_variance(sim.psi_real, sim.psi_imag)
    conf["f_c_mean"] = cv["f_c_mean"]
    return conf


rows = []
for sep in (10, 14, 18):
    conf = run_pair(sep)
    rows.append((sep, conf))
    print(sep, conf)

# Linear fit: I ~ a*r + b
distances = np.array([r[1]["distance"] for r in rows], dtype=np.float64)
integrals = np.array([r[1]["line_integral"] for r in rows], dtype=np.float64)
A = np.column_stack([distances, np.ones_like(distances)])
coeffs, _, _, _ = np.linalg.lstsq(A, integrals, rcond=None)
print("slope:", coeffs[0])

Step-by-step explanation

Step 1 — Enable color fields and assign color charges

FieldLevel.COLOR allocates three complex wave arrays Ψₒ, Ψ₁, Ψ₂. Setting kappa_c=lfm.KAPPA_C enables v14 color variance (κ_c = κ/3 = 1/189) which deepens χ wells for non-singlet states. Setting epsilon_cc=lfm.EPSILON_CC enables v15 cross-color coupling (ε_cc = α_s = 2/17) which dynamically mixes colors. sim.place_solitons(colors=[0, 1]) places the first source in component 0 and the second in component 1. The two components interact via their shared χ field.

Step 2 — Run at three separations

run_pair(separation) is called for sep = 10, 14, 18. Each run evolves for 2500 steps from the same amplitude and sigma. The only variable is how far apart the color sources start.

Step 3 — Measure the confinement proxy

lfm.confinement_proxy(sim.chi, p0, p1) walks 96 samples along the axis between the two sources and integrates max(χ) − χ(s). The function knows nothing about color charge — it sees only the χ geometry.

Step 4 — Fit the distance scaling

A least-squares fit I = a·r + b gives slope a ≈ 0.42. The high R² (≥0.99) confirms the linear scaling. A Coulomb-only regime would give a slope near zero and a large constant b. The linear term is the confinement signature.

Expected output

14 - Strong Force (Color Confinement Proxy)
================================================================

  sep   distance   line_integral   mean_depression
-----   --------   -------------   ---------------
   10     10.000        4.19312           0.41931
   14     14.000        5.89526           0.42109
   18     18.000        7.54084           0.41894

Linear fit: I ~ a*r + b,  a=0.41867, b=0.00829, R^2=0.9987
Confinement proxy is strongly distance-dependent (approximately linear).