HomeTutorials13 – Weak Force
13Advanced~12 min

Weak Force

Isolate the parity-odd coupling term ε_W · j in GOV-02 by running the same setup twice — once with the coupling on, once as a control. The left/right asymmetry in χ depressions is measured directly from simulation output. No external weak-force potential is injected.

What you'll learn

  • How to compute momentum density with lfm.momentum_density()
  • How to measure parity asymmetry with lfm.weak_parity_asymmetry()
  • How to run an internal control by toggling epsilon_w only

Which equation is running?

LevelFieldForces includedTutorials
REALΨ ∈ ℝGravity only01–04
COMPLEX ←Ψ ∈ ℂGravity + EM + weak couplingThis tutorial
COLORΨₐ ∈ ℂ³All 4 forces14 →

The weak coupling lives inside GOV-02: the ε_W · j term sources χ asymmetrically from the wave momentum density j = Im(Ψ*∇Ψ). COMPLEX is sufficient because j is non-zero for any field with a spatial phase gradient.

The weak coupling — the mechanism

GOV-02 drives χ from two sources. The energy term κ|Ψ|² is parity-symmetric. The momentum term ε_W · j is parity-odd — it deepens χ on the side the wave is moving toward and raises it on the trailing side:

∂²χ/∂t² = c²∇²χ − κ(|Ψ|² + ε_W·j − E₀²)
          └── parity even ──┘ └─ parity odd ─┘

We quantify this with the parity asymmetry observable:

depression(x) = max(χ) − χ(x)
A = (W₊ − W₋) / (W₊ + W₋)    W± = depression summed over ±x half

When ε_W = 0 the system is parity-symmetric and A ≈ 0. With ε_W = 0.1 and a phase-twisted field, a measurable asymmetry develops. No W-boson, no weak-isospin, no Fermi constant — just GOV-02.

Full script

"""13 - Weak Force (Parity Asymmetry)

This example isolates the epsilon_w * j term in GOV-02.

We run the same complex-field setup twice:
  1) with epsilon_w = 0.1 (default from chi0)
  2) with epsilon_w = 0.0 (control)

Then we compare the left/right chi-depression asymmetry using
lfm.weak_parity_asymmetry().
"""

import numpy as np
import lfm


def build_run(epsilon_w: float) -> dict[str, float]:
    cfg = lfm.SimulationConfig(
        grid_size=48,
        field_level=lfm.FieldLevel.COMPLEX,
        epsilon_w=epsilon_w,
    )
    sim = lfm.Simulation(cfg)

    sim.place_soliton((18, 24, 24), amplitude=5.0, sigma=3.2, phase=0.0)
    sim.place_soliton((30, 24, 24), amplitude=5.0, sigma=3.2, phase=np.pi)
    sim.equilibrate()

    pr = sim.psi_real
    pi = sim.psi_imag
    n = pr.shape[0]

    # Smooth phase twist along x to generate nonzero j.
    x = np.arange(n, dtype=np.float32)
    phase = 0.35 * np.sin(2.0 * np.pi * x / n).astype(np.float32)
    phase3 = phase[:, None, None]
    c = np.cos(phase3)
    s = np.sin(phase3)

    sim.psi_real = (pr * c - pi * s).astype(np.float32)
    sim.psi_imag = (pr * s + pi * c).astype(np.float32)

    sim.run(steps=2500)

    j = lfm.momentum_density(sim.psi_real, sim.psi_imag)
    asym = lfm.weak_parity_asymmetry(sim.chi, axis=0)

    return {
        "j_rms": float(np.sqrt(np.mean(j["j_total"] ** 2))),
        "asymmetry": float(asym["asymmetry"]),
    }


w_on = build_run(epsilon_w=lfm.EPSILON_W)
w_off = build_run(epsilon_w=0.0)

print("epsilon_w ON :", w_on)
print("epsilon_w OFF:", w_off)
print("delta |asym|:", abs(w_on["asymmetry"]) - abs(w_off["asymmetry"]))

Step-by-step explanation

Step 1 — Build the controlled pair

Two solitons at opposite phases (θ=0 and θ=π) sit close enough to produce an overlap region. A smooth phase twist along x is applied after placement to generate nonzero momentum density j. This twist is the only source of parity-odd input — nothing else differs between runs.

Step 2 — Run with ε_W on and off

build_run(epsilon_w=lfm.EPSILON_W) uses the derived value 0.1. build_run(epsilon_w=0.0) is the parity-symmetric control. The only parameter that changes is epsilon_w inside SimulationConfig.

Step 3 — Measure momentum density and asymmetry

lfm.momentum_density() computes j from finite differences of the phase field. lfm.weak_parity_asymmetry(chi) computes the left/right depression imbalance A directly from χ. Neither function knows about epsilon_w; they measure only field geometry.

Step 4 — Compare delta asymmetry

The difference |A_on| − |A_off| isolates the parity-odd contribution. A positive delta means the coupling moved χ asymmetrically — weak-force-like behavior emerging from two wave equations.

Expected output

13 - Weak Force (Parity Asymmetry)
============================================================

epsilon_w ON  (0.100)
  j_rms      = 0.032117
  asymmetry  = +0.041882

epsilon_w OFF (0.000 control)
  j_rms      = 0.031944
  asymmetry  = +0.008901

delta |asym| (on - off) = +0.032981
Parity asymmetry strengthens when epsilon_w is enabled.