----------------- cmft/css/style.css ----------------- /* --- Styles --- */ body { font-family: 'Lato', sans-serif; background-color: #f8f9fa; color: #212529; line-height: 1.8; margin: 0; padding: 0; display: flex; justify-content: center; } main { max-width: 900px; width: 100%; padding: 2rem; box-sizing: border-box; } h1, h2, h3, h4 { font-family: 'Lato', sans-serif; color: #2c3e50; margin-top: 3rem; margin-bottom: 1.5rem; } h1 { font-size: 2.6rem; text-align: center; border-bottom: 3px solid #ced4da; padding-bottom: 1.5rem; margin-top: 1rem; font-weight: 700; } h2 { font-size: 1.8rem; border-bottom: 1px solid #e9ecef; padding-bottom: 0.5rem; color: #34495e; margin-top: 4rem; } h3 { font-size: 1.4rem; color: #555; font-weight: 600; margin-top: 2.5rem; } h4 { font-size: 1.2rem; color: #666; font-weight: 600; font-style: italic; margin-bottom: 0.5rem; } p, li { font-size: 1.15rem; margin-bottom: 1.2rem; text-align: justify; color: #333; } ul { margin-bottom: 1.5rem; } li { margin-bottom: 0.8rem; } blockquote { border-left: 5px solid #007bff; margin: 2.5rem 0; background-color: #f1f3f5; padding: 1.5rem 2.5rem; border-radius: 0 8px 8px 0; font-style: italic; } .term { font-weight: bold; color: #c0392b; } /* Equation Style */ .equation { font-family: 'Times New Roman', serif; font-style: italic; background: #e8f4fd; padding: 0 6px; border-radius: 4px; white-space: nowrap; } .equation-block { font-family: 'Times New Roman', serif; font-style: italic; background: #e8f4fd; padding: 2rem; border-radius: 8px; text-align: center; margin: 2rem 0; border: 1px solid #d0e3f0; font-size: 1.4rem; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); } pre { background-color: #fff; border: 1px solid #dee2e6; border-radius: 8px; padding: 1rem; font-family: 'Roboto Mono', monospace; font-size: 0.85rem; overflow-x: auto; } /* --- Table Styles --- */ table { width: 100%; border-collapse: collapse; margin: 3rem 0; background-color: #fff; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); font-size: 1rem; } th, td { padding: 1.2rem; border: 1px solid #dee2e6; text-align: left; vertical-align: top; } th { background-color: #f8f9fa; font-weight: 700; color: #2c3e50; } tr:nth-child(even) { background-color: #f8fcfd; } /* --- Simulation UI --- */ .simulation-wrapper { background-color: #1a1a1a; color: #eee; display: flex; flex-direction: column; align-items: center; padding: 15px; border-radius: 12px; margin: 4rem 0; box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4); border: 1px solid #333; touch-action: pan-y; } .canvas-holder { width: 100%; max-width: 800px; margin-bottom: 15px; border-radius: 8px; overflow: hidden; box-shadow: 0 0 25px rgba(0, 0, 0, 0.5); touch-action: none; } .controls { width: 100%; max-width: 800px; padding: 20px; background-color: #2d2d2d; border-radius: 8px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; align-items: center; box-sizing: border-box; } .control-group { display: flex; flex-direction: column; align-items: center; } .controls label { font-size: 0.9rem; color: #aaa; margin-bottom: 5px; } /* Custom Range Slider */ .controls input[type="range"] { width: 100%; cursor: pointer; accent-color: #007bff; } button { padding: 10px 20px; background-color: #007bff; color: white; border: none; border-radius: 6px; font-weight: 600; cursor: pointer; transition: all 0.2s; } button:hover { background-color: #0056b3; } /* Highlighting for Key Sections */ .highlight-section { background: #fdfdfe; border-left: 6px solid #2ecc71; padding: 2rem; margin: 3rem 0; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03); } .technical-note { background-color: #fffcf0; border: 1px solid #f0e0c0; color: #705000; padding: 1.5rem; border-radius: 8px; margin: 2rem 0; font-size: 1rem; } .fraction { display: inline-block; vertical-align: middle; text-align: center; font-size: 0.9em; } .fraction>span { display: block; padding: 0 5px; } .fraction span.numerator { border-bottom: 1px solid #2c3e50; /* Dark blue to match CMFT theme */ } .fraction span.denominator { display: block; } /* Helper classes from the source content */ .vector { font-weight: bold; font-style: normal; } .variable { font-style: italic; } /* Table of Contents */ .toc-container { background-color: #fff; border: 1px solid #e9ecef; border-radius: 8px; padding: 2rem; margin: 2rem 0; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.02); } .toc-title { font-family: 'Lato', sans-serif; font-size: 1.4rem; font-weight: 700; color: #2c3e50; margin-top: 0; margin-bottom: 1rem; border-bottom: 2px solid #f39c12; display: inline-block; padding-bottom: 5px; } .toc-list { list-style-type: none; padding: 0; margin: 0; } .toc-list li { margin-bottom: 0.6rem; font-size: 1rem; } .toc-list a { text-decoration: none; color: #007bff; transition: color 0.2s; } .toc-list a:hover { color: #0056b3; text-decoration: underline; } .toc-number { display: inline-block; width: 30px; font-weight: bold; color: #555; } footer { margin-top: 5rem; text-align: center; border-top: 1px solid #dee2e6; padding-top: 2rem; color: #6c757d; } /* --- Section 12 Simulation Styles --- */ .sim-container { background-color: #111; color: #eee; padding: 20px; border-radius: 8px; margin: 30px 0; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); font-family: "Helvetica Neue", "Arial", sans-serif; } .sim-title { color: #e74c3c; border-bottom: 1px solid #444; padding-bottom: 10px; margin-bottom: 15px; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 1px; } .sim-container canvas { width: 100%; height: 300px; background: #000; border: 1px solid #333; border-radius: 4px; display: block; } .stat-box { background: #1a1a1a; padding: 10px; border-radius: 4px; border-left: 3px solid #e74c3c; text-align: center; } .stat-val { font-size: 1.4rem; font-weight: bold; font-family: "Courier New", monospace; } .stat-lbl { font-size: 0.7rem; color: #888; text-transform: uppercase; } .sim-note { font-size: 0.85rem; color: #aaa; margin-top: 15px; padding: 10px; background: rgba(255, 255, 255, 0.05); border-radius: 4px; }----------------- cmft/index.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Home

The Corley Momentum Flux Theory

Gravity, Cosmology, and Quantum Hydrodynamics

Constructed and Copyright © 2025 by Corley Kinnane (corley.kinnane@gmail.com).

Download Full Context (AI Ready)

Contains the entire website content for AI analysis.

Preamble: The Path Not Taken

A Re-evaluation of the 1915 Vacuum Decision

When Einstein formulated General Relativity, he faced a fundamental decision regarding the nature of the vacuum. He knew that gravity transferred momentum across space, but Special Relativity had seemingly "killed" the luminiferous ether. He was left with a binary choice:

Einstein chose the Geometric Path. Why? Because in 1915, there was no known mechanism that could explain how a fluid vacuum could generate an attractive force without massive drag. He lacked the Geometric Proof of Drift. Without that mechanism, the Mechanical Path seemed like a dead end, so he was forced to "input" gravity as intrinsic curvature.

The Missing Data: The Sagitta of Drift

The Corley Momentum Flux Theory (CMFT) is born from the discovery of that missing mechanism. Through geometric analysis, I have discovered that Gravitational Attraction is an inevitable emergent residual of momentum transfer in a delayed medium.

If you combine Standard Flux (Newtonian Emission) with Time Delay (Speed of Light c), a geometric misalignment occurs. This misalignment—the Sagitta—creates a "Steering Drift" that mimics attraction perfectly.

Gravity is an Output, not an Input.

This changes everything. Einstein chose the Geometric Path because he didn't know gravity could "pop out" of a flat, fluid vacuum automatically. We now know that if you simply respect the speed of light delay in a fluid medium, gravity emerges as a Residual Output.

The Necessary Combination: Inverting the Universe

However, this Drift mechanism is not free. It implies a package deal: To get the Drift, you must accept the Substrate.

Once we accept the Drift Mechanism, we are forced to "Invert the Universe" to make the physics consistent. We are not active particles in a passive void; we are passive defects (vortices) in an active, high-pressure superfluid plenum. This inversion is the required physical substrate for the Drift Mechanism to function.

Concealment by Complexity

By choosing to curve the coordinate system instead of the trajectory, General Relativity inadvertently concealed this superfluid possibility behind a wall of extreme mathematics. The "patches" required to make the geometric model work—such as the Schwarzschild metric or tensor adjustments—created a high barrier to entry. This mathematical complexity has prevented a re-evaluation of the foundational assumption for over a century.

The Modern Verdict: Dark Matter

We are now requesting an open paradigm shift, not because the old math failed, but because the new data demands it. If Einstein had possessed the Geometric Drift Proof and modern data on the Dark Sector, he almost certainly would have chosen the Mechanical Path.

While General Relativity requires invisible mass to fit modern rotation curves, the Inverted Universe solves these problems natively: Dark Matter is simply Vacuum Coupling Efficiency (Cold Gas couples to the superfluid better than Stars), and Dark Energy is Variable Viscosity. He would have likely agreed: Spacetime is not curving; the fluid is flowing.

Table of Contents

Abstract: Standard physics separates Gravity (Geometry) from Quantum Mechanics (Probability). The Corley Momentum Flux Theory (CMFT) unifies them under a single, undeniable deductive premise:

"If gravity is real, momentum transfer must occur through empty space."

This deduction necessitates that the Vacuum is a Pressurized Plenum of momentum flux. Gravity is not the abstract curvature of spacetime, but the Geometric Sagitta (residual drift) of flux interacting with volume. This framework removes the need for a Universal Big Bang, identifying Galaxies as local nucleation events ("Fountains") in an infinite, static substrate. It demystifies Quantum Mechanics by establishing Absolute Orientation and Superdeterminism, removing "spooky action" in favor of hydrodynamic inevitability.

How to Read This Document

This document is not laid out in the order in which a conventional physics paper is usually read. It was developed iteratively, by discovery, and some sections preserve that evolutionary path. As a result, readers are strongly encouraged to read this document with the following guidance in mind.

1. The Framework Is Built on a Single Non-Negotiable Premise

This work rests on one foundational axiom:

If momentum transfer across the vacuum is real and finite-speed, then delayed geometry necessarily produces a residual drift. Gravity is that residual.

This is not a hypothesis introduced later, nor a fitting assumption. It is the geometric consequence of combining:

Once this premise is accepted, gravity is no longer an input (e.g. curvature inserted by hand), but an output of geometry. Readers who do not accept this premise will not find the later sections persuasive; readers who do accept it should expect many results to follow inevitably.

2. This Is a Cascade Theory, Not a Patchwork Theory

This framework was not constructed by solving isolated problems (gravity, then dark matter, then dark energy, etc.). Instead, a single geometric mechanism is applied consistently. As a result:

3. Principle-Level Results vs. Measurement-Level Refinement

This document distinguishes between:

Values such as effective gravitational radius fractions are inferred parameters, not literal physical radii. Readers should not confuse refinement of measured quantities with revision of the underlying mechanism.

4. About the Simulations

Not all simulations serve the same purpose:

5. Conservation and Inverse-Square Scaling

Any conserved isotropic flux in 3D space necessarily produces a 1/r2 density scaling. This is assumed as a consequence of conservation, not introduced as a tunable feature. The novel content of this work concerns the residual geometric drift that arises from delayed propagation, not the existence of inverse-square scaling itself.

6. Developmental History vs Logical Structure

Some sections preserve the historical path of discovery. Readers seeking a clean logical argument should prioritize:

7. What This Document Is — and Is Not

This document IS:
  • A mechanically grounded alternative to geometric postulation.
  • A consistency-first framework.
  • An exploration of treating the vacuum as a momentum-carrying medium.
This document is NOT:
  • A finalized cosmological parameter fit.
  • A replacement for all existing models without testing.
  • A claim that all measurements are exhaustively explained.
Final Note to the Reader:

If you find yourself reacting strongly to a later claim, return to the foundational premise and ask: “Is this a new assumption, or an unavoidable consequence of the original geometric argument?” Most of the time, it is the latter.

A quick warning about reader reflexes: If you notice yourself snapping into “standard GR objections” (e.g. “retardation implies drag”, “a medium implies friction”, “vector vs scalar is arbitrary”, “curvature is assumed not derived”), treat that as a sign you have jumped ahead of the chain. This document intentionally places some of the “one-line reversals” earlier than the objections they neutralize.

In particular, do not evaluate any delayed/retarded effect here using the usual viscous-medium intuition. The framework assumes a superfluid vacuum for bulk motion (i.e. no ordinary drag), and the purpose of the geometric construction is to show how the curvature effect emerges inside the geometry as an output of delayed momentum flow, rather than being introduced as a standalone postulate about coordinates.

If you want a fair “minimum viable read” before judging, force yourself to locate these three items first:

  • Where the geometric seed / kernel is defined (the thing everything downstream depends on).
  • Where the scalar-vs-vector issue is justified as a consequence of that kernel (not a stylistic preference).
  • Where the vacuum assumption is stated (so you don’t import ordinary drag/aberration logic by default).

After that, criticize freely — but criticize the premise or the convergence step, not a downstream consequence read in isolation.

----------------- cmft/js/simulations.js ----------------- // ================================================================= // SIMULATION 1: ATOMIC MAPPING (Geometric Map) // ================================================================= const sketch1 = (p) => { let SCREEN_WIDTH, SCREEN_HEIGHT; const ASPECT = 0.75; let atoms = []; // Params let NUM_ATOMS = 20; let SCALAR_FACTOR = 100.0; const PHYSICS_STEPS = 3; // Visuals let COL_BG, COL_ORBIT, COL_E1, COL_E2; p.setup = () => { let container = document.getElementById('canvas1'); if (!container) return; // Safety check SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.createCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); p.frameRate(60); p.angleMode(p.RADIANS); COL_BG = p.color(17, 17, 17); COL_ORBIT = p.color(50, 50, 70, 150); COL_E1 = p.color(120, 255, 120, 200); COL_E2 = p.color(255, 120, 120, 200); initAtoms(); // UI let inpCount = p.select('#sim1-count'); if (inpCount) inpCount.input(e => NUM_ATOMS = parseInt(e.target.value)); let inpScalar = p.select('#sim1-scalar'); if (inpScalar) inpScalar.input(e => SCALAR_FACTOR = parseFloat(e.target.value)); let btnReset = p.select('#sim1-reset'); if (btnReset) btnReset.mousePressed(() => initAtoms()); }; p.windowResized = () => { let container = document.getElementById('canvas1'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.resizeCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); initAtoms(); } function initAtoms() { atoms = []; let padding = 60; for (let i = 0; i < NUM_ATOMS; i++) { atoms.push(new SymmetricAtom(i, p.random(padding, SCREEN_WIDTH - padding), p.random(padding, SCREEN_HEIGHT - padding))); } } p.draw = () => { p.background(COL_BG); for (let step = 0; step < PHYSICS_STEPS; step++) { atoms.forEach(a => a.updateInternal()); let displacements = atoms.map(() => p.createVector(0, 0)); let currentPos = atoms.map(a => a.pos.copy()); for (let j = 0; j < atoms.length; j++) { for (let i = 0; i < atoms.length; i++) { if (i === j) continue; let vec = p5.Vector.sub(currentPos[j], currentPos[i]); let dist = vec.mag(); if (dist > 1.0) { // Original Flux Logic let scale = Math.pow(50.0 / Math.max(dist, 5.0), 1.5); let alpha = (3000.0 / SCALAR_FACTOR) * scale * 0.0005; // Sagitta Displacement let sagitta = dist * (Math.cos(alpha) - 1.0); let n = vec.normalize(); displacements[j].add(n.mult(sagitta)); } } } // Apply Position Updates for (let k = 0; k < atoms.length; k++) { atoms[k].pos.add(displacements[k]); atoms[k].pos.x = (atoms[k].pos.x + SCREEN_WIDTH) % SCREEN_WIDTH; atoms[k].pos.y = (atoms[k].pos.y + SCREEN_HEIGHT) % SCREEN_HEIGHT; } } atoms.forEach(a => a.draw()); }; class SymmetricAtom { constructor(id, x, y) { this.id = id; this.pos = p.createVector(x, y); this.angle1 = p.random(360); this.angle2 = (this.angle1 + 90) % 360; } updateInternal() { // Visual rotation logic from original this.angle1 = (this.angle1 + 2) % 360; this.angle2 = (this.angle2 - 2) % 360; if (this.angle2 < 0) this.angle2 += 360; } draw() { let r = 5.0; // Orbit p.noFill(); p.stroke(COL_ORBIT); p.strokeWeight(1); p.ellipse(this.pos.x, this.pos.y, r * 2, r * 2); // Electrons p.noStroke(); let p1 = p5.Vector.fromAngle(p.radians(this.angle1)).mult(r).add(this.pos); let p2 = p5.Vector.fromAngle(p.radians(this.angle1 + 180)).mult(r).add(this.pos); let p3 = p5.Vector.fromAngle(p.radians(this.angle2)).mult(r).add(this.pos); let p4 = p5.Vector.fromAngle(p.radians(this.angle2 + 180)).mult(r).add(this.pos); p.fill(COL_E1); p.ellipse(p1.x, p1.y, 6, 6); p.ellipse(p2.x, p2.y, 6, 6); p.fill(COL_E2); p.ellipse(p3.x, p3.y, 6, 6); p.ellipse(p4.x, p4.y, 6, 6); } } }; // ================================================================= // SIMULATION 2: CAVENDISH FLUX (Verbatim Restoration) // ================================================================= const sketch2 = (p) => { let SCREEN_WIDTH, SCREEN_HEIGHT; const ASPECT = 0.6; // Slightly shorter for interactivity // --- PARAMS --- let FLUX_STR = 50.0; let SPRING_K = 0.02; let SIM_SCALE = 0.5; let NUM_CRYSTALS = 8; const SPRING_DAMP = 0.15; const SUBSTEPS = 8; // Objects let atoms = []; let springs = []; let crystals = []; // Interaction State let draggedAtom = null; p.setup = () => { let container = document.getElementById('canvas2'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.createCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); p.frameRate(60); p.angleMode(p.RADIANS); initSystem(); // --- UI Event Listeners --- let inpFlux = p.select('#sim2-flux'); if (inpFlux) inpFlux.input(e => FLUX_STR = parseFloat(e.target.value)); let inpStiff = p.select('#sim2-stiff'); if (inpStiff) inpStiff.input(e => SPRING_K = parseFloat(e.target.value)); let countLabel = p.select('#sim2-count-label'); let inpCount = p.select('#sim2-count'); if (inpCount) inpCount.input(e => { NUM_CRYSTALS = parseInt(e.target.value); if (countLabel) countLabel.html(`Crystal Count: ${NUM_CRYSTALS}`); }); let inpScale = p.select('#sim2-scale'); if (inpScale) inpScale.input(e => SIM_SCALE = parseFloat(e.target.value)); let btnReset = p.select('#sim2-reset'); if (btnReset) btnReset.mousePressed(() => initSystem()); }; p.windowResized = () => { let container = document.getElementById('canvas2'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.resizeCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); } // ========================================== // INTERACTION LOGIC (RHOMBOID DETECTION) // ========================================== p.mousePressed = () => handleInputStart(); p.touchStarted = () => handleInputStart(); function handleInputStart() { draggedAtom = null; const size = 4; // Hardcoded crystal size for (let c of crystals) { if (c.atoms.length < size * size) continue; let p1 = c.atoms[0].pos; // TL let p2 = c.atoms[size - 1].pos; // TR let p3 = c.atoms[size * size - 1].pos; // BR let p4 = c.atoms[size * (size - 1)].pos; // BL if (isPointInQuad(p.mouseX, p.mouseY, p1, p2, p3, p4)) { let closestDist = Infinity; let closestAtom = null; for (let a of c.atoms) { let d = p.dist(p.mouseX, p.mouseY, a.pos.x, a.pos.y); if (d < closestDist) { closestDist = d; closestAtom = a; } } if (closestAtom) { draggedAtom = closestAtom; draggedAtom.isLocked = true; draggedAtom.vel.mult(0); } break; } } // Prevent scroll only if inside canvas if (p.mouseX > 0 && p.mouseX < p.width && p.mouseY > 0 && p.mouseY < p.height) { return false; } } p.mouseDragged = () => handleInputMove(); p.touchMoved = () => handleInputMove(); function handleInputMove() { if (draggedAtom) { draggedAtom.pos.x = p.mouseX; draggedAtom.pos.y = p.mouseY; draggedAtom.vel.mult(0); return false; } } p.mouseReleased = () => handleInputEnd(); p.touchEnded = () => handleInputEnd(); function handleInputEnd() { if (draggedAtom) { draggedAtom.isLocked = false; draggedAtom = null; } } // --- GEOMETRY HELPERS --- function isPointInQuad(px, py, A, B, C, D) { return isPointInTriangle(px, py, A, B, C) || isPointInTriangle(px, py, A, C, D); } function isPointInTriangle(px, py, p0, p1, p2) { let area = 0.5 * (-p1.y * p2.x + p0.y * (-p1.x + p2.x) + p0.x * (p1.y - p2.y) + p1.x * p2.y); let s = 1 / (2 * area) * (p0.y * p2.x - p0.x * p2.y + (p2.y - p0.y) * px + (p0.x - p2.x) * py); let t = 1 / (2 * area) * (p0.x * p1.y - p0.y * p1.x + (p0.y - p1.y) * px + (p1.x - p0.x) * py); return s > 0 && t > 0 && (1 - s - t) > 0; } // ========================================== // PHYSICS ENGINE // ========================================== function initSystem() { atoms = []; springs = []; crystals = []; for (let c = 0; c < NUM_CRYSTALS; c++) spawnCrystal(c); } function spawnCrystal(id) { let safe = false, x, y, tries = 0; while (!safe && tries < 100) { x = p.random(50, SCREEN_WIDTH - 50); y = p.random(50, SCREEN_HEIGHT - 50); safe = true; for (let c of crystals) { if (c.spawnX && p.dist(x, y, c.spawnX, c.spawnY) < 80 * SIM_SCALE) safe = false; } tries++; } let driftX = p.random(-0.5, 0.5); let driftY = p.random(-0.5, 0.5); let r = p.random(50, 100); let g = p.random(100, 200); let b = p.random(200, 255); let col = p.color(r, g, b); let thisCrystalAtoms = []; let size = 4, space = 10 * SIM_SCALE; for (let j = 0; j < size; j++) { for (let i = 0; i < size; i++) { let a = new SolidAtom(x + i * space, y + j * space, col, id); a.vel.x += driftX; a.vel.y += driftY; atoms.push(a); thisCrystalAtoms.push(a); let idx = thisCrystalAtoms.length - 1; let base = 10; if (i > 0) connect(a, thisCrystalAtoms[idx - 1], base); if (j > 0) connect(a, thisCrystalAtoms[idx - size], base); if (i > 0 && j > 0) connect(a, thisCrystalAtoms[idx - size - 1], base * 1.414); if (i < size - 1 && j > 0) connect(a, thisCrystalAtoms[idx - size + 1], base * 1.414); } } crystals.push({ spawnX: x, spawnY: y, atoms: thisCrystalAtoms }); } function connect(a, b, len) { springs.push({ a: a, b: b, baseLen: len }); } p.draw = () => { p.background(13, 17, 23); for (let step = 0; step < SUBSTEPS; step++) { // 1. Spring Forces for (let s of springs) { let dx = s.b.pos.x - s.a.pos.x; let dy = s.b.pos.y - s.a.pos.y; let d = Math.sqrt(dx * dx + dy * dy); if (d === 0) continue; let targetLen = s.baseLen * SIM_SCALE; let f = (d - targetLen) * SPRING_K; let nx = dx / d, ny = dy / d; let vx = s.b.vel.x - s.a.vel.x; let vy = s.b.vel.y - s.a.vel.y; let damp = SPRING_DAMP * (vx * nx + vy * ny); let total = f + damp; s.a.vel.x += total * nx; s.a.vel.y += total * ny; s.b.vel.x -= total * nx; s.b.vel.y -= total * ny; } // 2. Interaction for (let i = 0; i < atoms.length; i++) { for (let j = i + 1; j < atoms.length; j++) { let A = atoms[i]; let B = atoms[j]; let dx = B.pos.x - A.pos.x; let dy = B.pos.y - A.pos.y; let dSq = dx * dx + dy * dy; let d = Math.sqrt(dSq); if (d < 0.1) continue; // Pauli Exclusion (Repulsion) if (d < 10.0 * SIM_SCALE) { let push = ((10.0 * SIM_SCALE) - d) * 1.2; let nx = dx / d, ny = dy / d; A.vel.x -= nx * push; A.vel.y -= ny * push; B.vel.x += nx * push; B.vel.y += ny * push; // Contact Friction let rvx = B.vel.x - A.vel.x, rvy = B.vel.y - A.vel.y; A.vel.x += rvx * 0.1; A.vel.y += rvy * 0.1; B.vel.x -= rvx * 0.1; B.vel.y -= rvy * 0.1; } // Momentum Flux (Gravity) else if (A.cid !== B.cid) { let range = 50.0 * SIM_SCALE; // 2D Projection Scaling (Slab Integration) let scale = Math.pow(range / d, 1.5); let alpha = (FLUX_STR / 500.0) * scale * 0.05; let impulse = (alpha * 0.05) * SIM_SCALE; let nx = dx / d, ny = dy / d; A.vel.x += nx * impulse; A.vel.y += ny * impulse; B.vel.x -= nx * impulse; B.vel.y -= ny * impulse; } } } // 3. Integration for (let a of atoms) { if (a.isLocked) { a.pos.x = p.mouseX; a.pos.y = p.mouseY; a.vel.mult(0); } else { a.vel.limit(3.0 * SIM_SCALE); a.pos.add(a.vel); if (a.pos.x < 0) { a.pos.x = 0; a.vel.x *= -0.5; } if (a.pos.x > SCREEN_WIDTH) { a.pos.x = SCREEN_WIDTH; a.vel.x *= -0.5; } if (a.pos.y < 0) { a.pos.y = 0; a.vel.y *= -0.5; } if (a.pos.y > SCREEN_HEIGHT) { a.pos.y = SCREEN_HEIGHT; a.vel.y *= -0.5; } } } } // --- RENDER --- p.stroke(40, 48, 60); p.strokeWeight(1); for (let s of springs) { p.line(s.a.pos.x, s.a.pos.y, s.b.pos.x, s.b.pos.y); } p.noStroke(); let s = SIM_SCALE; for (let a of atoms) { if (a.isLocked) { p.fill(255); p.ellipse(a.pos.x, a.pos.y, 14 * s, 14 * s); } p.fill(a.col); p.ellipse(a.pos.x, a.pos.y, 10 * s, 10 * s); let r = 3 * s; p.fill(255, 255, 255, 100); p.ellipse(a.pos.x + r * Math.cos(a.ang), a.pos.y + r * Math.sin(a.ang), 3 * s, 3 * s); a.ang += 0.2; } }; class SolidAtom { constructor(x, y, col, id) { this.pos = p.createVector(x, y); this.vel = p.createVector(0, 0); this.col = col; this.cid = id; this.ang = p.random(p.TWO_PI); this.isLocked = false; } } }; // ================================================================= // SIMULATION 3: SAGITTA DIAGRAM (The Belly of the Arc) // ================================================================= const sketch3 = (p) => { let SCREEN_WIDTH, SCREEN_HEIGHT; const ASPECT = 0.5; // Params let ARC_ANGLE = 60; // Degrees let DISTANCE = 300; p.setup = () => { let container = document.getElementById('canvas3'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.createCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); p.angleMode(p.DEGREES); let inpAngle = p.select('#sim3-angle'); if (inpAngle) inpAngle.input(e => ARC_ANGLE = parseFloat(e.target.value)); let inpDist = p.select('#sim3-dist'); if (inpDist) inpDist.input(e => DISTANCE = parseFloat(e.target.value)); }; p.windowResized = () => { let container = document.getElementById('canvas3'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.resizeCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); } p.draw = () => { p.background(10, 15, 20); // --- Coordinates --- let cx = SCREEN_WIDTH * 0.15; // Clump X let cy = SCREEN_HEIGHT / 2; // Clump Y // Dynamically scale distance to fit screen if needed let d = Math.min(DISTANCE, SCREEN_WIDTH * 0.65); let tx = cx + d; // Target X let ty = cy; // Target Y let clumpH = 60; // Clump vertical spread let topX = cx, topY = cy - clumpH; let botX = cx, botY = cy + clumpH; // --- Draw Clump --- p.noFill(); // Visual container for clump p.fill(30, 30, 40); p.ellipse(cx, cy, 60, 160); // Emitters p.fill(255, 100, 100); p.ellipse(topX, topY, 12, 12); p.ellipse(botX, botY, 12, 12); p.fill(150); p.textAlign(p.CENTER); p.textSize(10); p.text("TOP", topX - 20, topY); p.text("BOT", botX - 20, botY); p.text("CLUMP", cx - 25, cy + 5); // --- Draw Target --- p.fill(200, 200, 255); p.ellipse(tx, ty, 8, 8); p.text("TARGET", tx + 30, ty + 5); // --- Triangulation Lines --- p.stroke(60); p.strokeWeight(1); p.line(topX, topY, tx, ty); p.line(botX, botY, tx, ty); // --- Calculate Arcs & Return Averages --- // We calculate averages first, then sum them to draw the resultant let topAvg = drawInfluence(topX, topY, tx, ty, -1); let botAvg = drawInfluence(botX, botY, tx, ty, 1); // --- CALCULATE GEOMETRIC MIDPOINT --- // We explicitly find the midpoint between the two red dots. // This guarantees the arrow sits exactly where it is supposed to. let midX = (topAvg.x + botAvg.x) / 2; let midY = (topAvg.y + botAvg.y) / 2; // Draw Average (Gold Arrow) // From Target to Midpoint. No scaling. drawArrow(tx, ty, midX, midY, p.color(255, 215, 0), false); // Draw a small Gold Dot at the midpoint to verify connection p.fill(255, 215, 0); p.noStroke(); p.ellipse(midX, midY, 4, 4); }; function drawInfluence(sx, sy, tx, ty, dir) { let dx = tx - sx; let dy = ty - sy; let angleToTarget = p.atan2(dy, dx); let dist = p.dist(sx, sy, tx, ty); let arcSize = ARC_ANGLE; let steps = 15; let pts = []; let sumX = 0, sumY = 0; // Visualizing the Arc p.noFill(); p.stroke(255, 255, 100, 80); p.strokeWeight(2); p.beginShape(); for (let i = 0; i <= steps; i++) { let t = i / steps; let localAng = p.map(t, 0, 1, -arcSize / 2, arcSize / 2); let finalAng = angleToTarget + localAng; let px = sx + Math.cos(p.radians(finalAng)) * dist; let py = sy + Math.sin(p.radians(finalAng)) * dist; p.vertex(px, py); pts.push({ x: px, y: py }); sumX += px; sumY += py; } p.endShape(); // --- DRAW CHORD (Dotted) --- p.stroke(100); p.strokeWeight(1); if (pts.length > 0) { let pStart = pts[0]; let pEnd = pts[pts.length - 1]; drawDottedLine(pStart.x, pStart.y, pEnd.x, pEnd.y); } // --- The Average (Center of Mass of the Arc) --- let avgX = sumX / pts.length; let avgY = sumY / pts.length; p.fill(255, 50, 50); p.noStroke(); p.ellipse(avgX, avgY, 6, 6); // Red Dot = Average // --- DRAW INDIVIDUAL SAGITTA (Dotted Blue) --- let driftMag = p.dist(tx, ty, avgX, avgY); if (driftMag > 1) { drawArrow(tx, ty, avgX, avgY, p.color(0, 255, 255), true); } return { x: avgX, y: avgY }; } // Helper for Dotted Arrow function drawArrow(x1, y1, x2, y2, col, dotted) { p.push(); p.stroke(col); p.strokeWeight(2); p.fill(col); if (dotted) { drawDottedLine(x1, y1, x2, y2); } else { p.line(x1, y1, x2, y2); } let angle = p.atan2(y2 - y1, x2 - x1); p.translate(x2, y2); p.rotate(angle); p.triangle(0, 0, -5, 2, -5, -2); p.pop(); } function drawDottedLine(x1, y1, x2, y2) { let d = p.dist(x1, y1, x2, y2); let steps = Math.max(d / 8, 2); for (let i = 0; i < steps; i += 2) { let t1 = i / steps; let t2 = (i + 1) / steps; // Gap is implied by skipping let lx1 = p.lerp(x1, x2, t1); let ly1 = p.lerp(y1, y2, t1); let lx2 = p.lerp(x1, x2, t2); // Draw segment let ly2 = p.lerp(y1, y2, t2); p.line(lx1, ly1, lx2, ly2); } } }; // ================================================================= // SIMULATION 4: DARK ENERGY VERIFICATION (Graph) // ================================================================= const sketch4 = (p) => { let SCREEN_WIDTH, SCREEN_HEIGHT; const ASPECT = 0.6; // Params let VOID_REDUCTION = 0.12; // 12% reduction in voids // Data Cache let z_values = []; let lcdm_points = []; // Constants for physics scaling const c = 300000; const H0 = 70; p.setup = () => { let container = document.getElementById('canvas4'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.createCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); // Pre-calculate LCDM (Standard Model) once, it doesn't change generateLCDM(); // UI let slider = p.select('#sim4-void'); let label = p.select('#sim4-val'); if (slider && label) { slider.input(() => { VOID_REDUCTION = slider.value() / 100.0; label.html(slider.value() + "%"); }); } }; p.windowResized = () => { let container = document.getElementById('canvas4'); if (!container) return; SCREEN_WIDTH = container.offsetWidth; SCREEN_HEIGHT = SCREEN_WIDTH * ASPECT; p.resizeCanvas(SCREEN_WIDTH, SCREEN_HEIGHT); } function generateLCDM() { // Generate Z values from 0.01 to 1.5 z_values = []; for (let z = 0.01; z <= 1.5; z += 0.02) z_values.push(z); lcdm_points = []; // Constants for LCDM integral let Omega_m = 0.3; let Omega_L = 0.7; for (let z of z_values) { // Riemann Sum Integral for Dist Mod let sum = 0; let dz = 0.01; for (let i = 0; i < z; i += dz) { let term = 1.0 / Math.sqrt(Omega_m * Math.pow(1 + i, 3) + Omega_L); sum += term * dz; } // Luminosity Distance dL calculation // We must include (c/H0) to match the magnitude range 32-46 let dL_Mpc = (1 + z) * sum * (c / H0); let mu = 5 * Math.log10(dL_Mpc) + 25; lcdm_points.push(mu); } } p.draw = () => { p.background(15, 20, 25); // Margins for graph let padLeft = 60, padBottom = 40, padTop = 20, padRight = 20; let graphW = SCREEN_WIDTH - padLeft - padRight; // let graphH = SCREEN_HEIGHT - padTop - padBottom; // Unused in this scope but good to have // Draw Axes p.stroke(100); p.strokeWeight(1); p.line(padLeft, SCREEN_HEIGHT - padBottom, SCREEN_WIDTH - padRight, SCREEN_HEIGHT - padBottom); // X p.line(padLeft, SCREEN_HEIGHT - padBottom, padLeft, padTop); // Y // Labels p.noStroke(); p.fill(150); p.textSize(10); p.textAlign(p.CENTER); p.text("Redshift (z)", SCREEN_WIDTH / 2, SCREEN_HEIGHT - 10); p.textAlign(p.RIGHT); p.push(); p.translate(15, SCREEN_HEIGHT / 2); p.rotate(-p.HALF_PI); p.text("Distance Modulus (Brightness)", 0, 0); p.pop(); // Scaling Range let minMu = 32, maxMu = 46; let minZ = 0, maxZ = 1.5; // --- DRAW STANDARD MODEL (LCDM) --- p.noFill(); p.stroke(255); // White line for Standard Model p.strokeWeight(3); p.beginShape(); for (let i = 0; i < z_values.length; i++) { let z = z_values[i]; let mu = lcdm_points[i]; let px = p.map(z, minZ, maxZ, padLeft, SCREEN_WIDTH - padRight); let py = p.map(mu, minMu, maxMu, SCREEN_HEIGHT - padBottom, padTop); p.vertex(px, py); } p.endShape(); // --- DRAW CMFT MODEL (Variable Viscosity) --- p.stroke(255, 50, 50); // Red line for p.strokeWeight(2); p.drawingContext.setLineDash([5, 5]); // Dashed p.beginShape(); for (let i = 0; i < z_values.length; i++) { let z = z_values[i]; // CMFT Logic: // Effective Beta (Viscosity) scales down with distance (Void effect) // beta_local = H0 / c // beta_eff = beta_local * (1 - reduction * (z / (1+z))) let voidFactor = VOID_REDUCTION * (z / (1.0 + z)); let beta_local = H0 / c; let beta_eff = beta_local * (1.0 - voidFactor); // Physical Distance D = ln(1+z) / beta_eff let D_Mpc = Math.log(1 + z) / beta_eff; // Luminosity Distance dL = D * (1+z) (Time Dilation factor) let dL_Mpc = D_Mpc * (1 + z); let mu = 5 * Math.log10(dL_Mpc) + 25; let px = p.map(z, minZ, maxZ, padLeft, SCREEN_WIDTH - padRight); let py = p.map(mu, minMu, maxMu, SCREEN_HEIGHT - padBottom, padTop); p.vertex(px, py); } p.endShape(); p.drawingContext.setLineDash([]); // Reset dash // --- LEGEND --- let lx = padLeft + 20, ly = padTop + 20; p.noStroke(); p.fill(255); p.textAlign(p.LEFT); p.text("Standard Model (Data)", lx + 20, ly + 4); p.stroke(255); p.strokeWeight(3); p.line(lx, ly, lx + 15, ly); p.noStroke(); p.fill(255, 100, 100); p.text("Corley Theory (Variable Viscosity)", lx + 20, ly + 24); p.stroke(255, 50, 50); p.strokeWeight(2); p.drawingContext.setLineDash([3, 3]); p.line(lx, ly + 20, lx + 15, ly + 20); p.drawingContext.setLineDash([]); }; }; // ================================================================= // SCRIPT: SECTION 11 - TWO-STAGE DEDUCTION ENGINE // Precision Mode: Exact Variables from Original CMFT14 Simulation // ================================================================= // We use var or strict reassignment here to ensure compatibility if variables // are already declared in the global scope of the main document. var R_EARTH = 6371; var R_CORE = 3480; var R_MOON_CENTER = R_EARTH + 384400; var VIEW_MAX_R = 43000; // --- STATE --- let currentStage = 1; let isStage1Complete = false; let sim_canvas, sim_ctx, sim_container, sim_tooltip; let stage1Data = []; // Stores {r, eff} let stage2Data = []; // Stores {r, calc, prem} let stars = []; let currentEta = 1.0; let USE_TENSION_MAP = true; // --- PREM DATA (EXACT) --- var RHO_E_CORE_BASE = 13.0 * (26 / 55.845); // ~6.05 var RHO_E_MANTLE = 4.5 * 0.5; // 2.25 var G_SURF = 9.807; function getPREMGravity(r) { if (r >= R_EARTH) return 9.807 * Math.pow(R_EARTH / r, 2); if (r < R_CORE) return r * (10.68 / R_CORE); let pct = (r - R_CORE) / (R_EARTH - R_CORE); return 10.68 + pct * (9.807 - 10.68); } var G_MOON = getPREMGravity(R_MOON_CENTER); // --- GEOMETRIC EFFICIENCY FUNCTION (EXACT) --- function sim_getGeoEfficiency(r) { if (r >= R_EARTH) return 1.0; let x = r / R_EARTH; return 0.8828 + (0.083 * x * x); } // --- INIT FUNCTION (Called on DOM Load) --- function initSection11() { sim_container = document.getElementById('sim-container'); if (!sim_container) return; sim_canvas = document.getElementById('sim-canvas'); sim_tooltip = document.getElementById('sim-tooltip'); if (sim_canvas) { sim_ctx = sim_canvas.getContext('2d'); sim_generateStars(); sim_resizeCanvas(); window.addEventListener('resize', sim_resizeCanvas); sim_drawEmptyState(); // Interaction sim_canvas.addEventListener('mousemove', sim_handleMouse); sim_canvas.addEventListener('mouseleave', () => { if (sim_tooltip) sim_tooltip.style.display = 'none'; sim_render(); }); } } function sim_resizeCanvas() { if (!sim_container) return; sim_canvas.width = sim_container.clientWidth; sim_canvas.height = sim_container.clientHeight; sim_render(); } function sim_generateStars() { stars = []; for (let i = 0; i < 80; i++) stars.push({ x: Math.random(), y: Math.random(), size: Math.random() * 1.5, alpha: Math.random() * 0.5 + 0.1 }); } // Expose these to window for HTML onclick handlers window.sim_reset = function () { currentStage = 1; isStage1Complete = false; stage1Data = []; stage2Data = []; currentEta = 1.0; USE_TENSION_MAP = true; if (document.getElementById('chk-tension')) document.getElementById('chk-tension').checked = true; document.getElementById('rng-eta').value = 1.0; document.getElementById('val-eta-live').innerText = "1.00"; document.getElementById('tab-stage1').className = "sim-tab active"; document.getElementById('tab-stage2').className = "sim-tab locked"; document.getElementById('info-stage1').style.display = 'block'; document.getElementById('info-stage2').style.display = 'none'; // Reset Results Panel document.getElementById('res-core').innerText = "--"; document.getElementById('res-err-max').innerText = "--"; document.getElementById('res-err-avg').innerText = "--"; document.getElementById('legend-stage1').style.display = 'none'; document.getElementById('legend-stage2').style.display = 'none'; document.getElementById('ctrl-stage1').style.display = 'flex'; document.getElementById('ctrl-stage2').style.display = 'none'; document.getElementById('scan-status').innerText = "Waiting for Scan..."; document.getElementById('scan-status').style.display = 'block'; document.getElementById('btn-scan').disabled = false; document.getElementById('btn-scan').innerText = "INITIATE SCAN"; document.getElementById('opt-btn').disabled = false; document.getElementById('run-btn').disabled = false; sim_drawEmptyState(); } // [MOD] Global Handler for Tension Toggle (called from HTML) window.sim_toggleTension = function (el) { USE_TENSION_MAP = el.checked; sim_runManual(); } // ========================================================= // STAGE 1: GEOMETRIC SCANNING // ========================================================= window.sim_runStage1 = async function () { let btn = document.getElementById('btn-scan'); btn.disabled = true; document.getElementById('legend-stage1').style.display = 'block'; document.getElementById('scan-status').innerText = "Scanning Geometry..."; stage1Data = []; // Step through radius to build the quadratic curve let steps = 100; for (let i = 0; i <= steps; i++) { let r = (i / steps) * R_EARTH; let eff = sim_getGeoEfficiency(r); stage1Data.push({ r: r, eff: eff }); // Animate Drawing if (i % 5 === 0) { sim_render(); await new Promise(r => setTimeout(r, 10)); } } sim_render(); document.getElementById('scan-status').innerText = "Geometry Mapped"; btn.innerText = "SCAN COMPLETE"; await new Promise(r => setTimeout(r, 800)); sim_transitionToStage2(); } function sim_transitionToStage2() { currentStage = 2; isStage1Complete = true; document.getElementById('tab-stage1').className = "sim-tab completed"; document.getElementById('tab-stage2').className = "sim-tab active"; document.getElementById('tab-stage2').classList.remove('locked'); document.getElementById('info-stage1').style.display = 'none'; document.getElementById('info-stage2').style.display = 'block'; document.getElementById('legend-stage1').style.display = 'none'; document.getElementById('legend-stage2').style.display = 'block'; document.getElementById('ctrl-stage1').style.display = 'none'; document.getElementById('ctrl-stage2').style.display = 'grid'; document.getElementById('scan-status').style.display = 'none'; // [FIX] Ensure mouse interaction is active for Stage 2 if (sim_canvas) { sim_canvas.onmousemove = sim_handleMouse; sim_canvas.onmouseleave = () => { if (sim_tooltip) sim_tooltip.style.display = 'none'; sim_render(); }; } // Run initial calculation at Eta = 1.0 window.sim_runManual(); } // ========================================================= // STAGE 2: COHERENCY SOLVER // ========================================================= // Updates text only, doesn't run sim window.sim_sliderInput = function () { currentEta = parseFloat(document.getElementById('rng-eta').value); document.getElementById('val-eta-live').innerText = currentEta.toFixed(2); } // Runs sim with current slider value window.sim_runManual = function () { currentEta = parseFloat(document.getElementById('rng-eta').value); sim_runExperiment(); document.getElementById('scan-status').innerText = "Simulation Updated"; document.getElementById('scan-status').style.display = 'block'; setTimeout(() => { document.getElementById('scan-status').style.display = 'none'; }, 2000); } // VOXEL GENERATOR function sim_generateVoxels(etaFe) { let v = []; const STEPS_R = 8; const STEPS_ANG = 12; const dth = Math.PI / STEPS_ANG; const dph = (2 * Math.PI) / STEPS_ANG; // Core let dr = R_CORE / STEPS_R; for (let i = 0; i < STEPS_R; i++) { let r = (i + 0.5) * dr; let eff = sim_getGeoEfficiency(r); for (let j = 0; j < STEPS_ANG; j++) { let th = (j + 0.5) * dth; if (th < 0.1 || th > Math.PI - 0.1) continue; for (let k = 0; k < STEPS_ANG; k++) { let vol = (r * r * Math.sin(th)) * dr * dth * dph; let rho = RHO_E_CORE_BASE * etaFe; v.push({ x: r * Math.sin(th) * Math.cos(k * dph), y: r * Math.sin(th) * Math.sin(k * dph), z: r * Math.cos(th), vol: vol, rho_eff: rho, geo_eff: eff }); } } } // Mantle dr = (R_EARTH - R_CORE) / STEPS_R; for (let i = 0; i < STEPS_R; i++) { let r = R_CORE + (i + 0.5) * dr; let eff = sim_getGeoEfficiency(r); for (let j = 0; j < STEPS_ANG; j++) { let th = (j + 0.5) * dth; if (th < 0.1 || th > Math.PI - 0.1) continue; for (let k = 0; k < STEPS_ANG; k++) { let vol = (r * r * Math.sin(th)) * dr * dth * dph; let rho = RHO_E_MANTLE * 1.0; v.push({ x: r * Math.sin(th) * Math.cos(k * dph), y: r * Math.sin(th) * Math.sin(k * dph), z: r * Math.cos(th), vol: vol, rho_eff: rho, geo_eff: eff }); } } } return v; } // FLUX CALCULATOR function sim_calculateFluxAtPoint(r_obs, voxels) { let totalFlux = 0; if (r_obs === 0) return 0; for (let v of voxels) { let dz = v.z - r_obs; let dist = Math.sqrt(v.x * v.x + v.y * v.y + dz * dz); if (dist > 0.1) { let sourceStrength = v.rho_eff * v.geo_eff; let proj = (r_obs - v.z) / dist; let contrib = (sourceStrength * v.vol) / (dist * dist) * proj; totalFlux += contrib; } } return Math.abs(totalFlux); } function sim_runExperiment() { let voxels = sim_generateVoxels(currentEta); // [MOD] Apply Tension Map if Enabled if (USE_TENSION_MAP) { sim_applyTensionMap(voxels); } let points = []; for (let r = 0; r < R_EARTH; r += 500) points.push(r); points.push(R_EARTH); for (let r = R_EARTH + 1000; r <= VIEW_MAX_R; r += 2000) points.push(r); points.push(R_MOON_CENTER); let rawMoon = sim_calculateFluxAtPoint(R_MOON_CENTER, voxels); let K = G_MOON / rawMoon; stage2Data = []; let maxErr = 0; let sumErr = 0; let countErr = 0; for (let r of points) { let raw = sim_calculateFluxAtPoint(r, voxels); let val = raw * K; let prem = getPREMGravity(r); stage2Data.push({ r: r, calc: val, prem: prem }); // Calculate Errors for R >= Surface if (r >= R_EARTH) { let pctDiff = (Math.abs(val - prem) / prem) * 100; if (pctDiff > maxErr) maxErr = pctDiff; sumErr += pctDiff; countErr++; } } let avgErr = countErr > 0 ? sumErr / countErr : 0; sim_updateResultsPanel(currentEta, maxErr, avgErr); sim_render(); } function sim_updateResultsPanel(eta, maxE, avgE) { document.getElementById('res-core').innerText = eta.toFixed(2); let elMax = document.getElementById('res-err-max'); elMax.innerText = maxE.toFixed(2) + "%"; elMax.style.color = maxE < 1.0 ? "#2ecc71" : "#fff"; let elAvg = document.getElementById('res-err-avg'); elAvg.innerText = avgE.toFixed(2) + "%"; elAvg.style.color = avgE < 0.5 ? "#2ecc71" : "#fff"; } window.sim_optimize = async function () { let btn = document.getElementById('opt-btn'); let btnRun = document.getElementById('run-btn'); btn.disabled = true; btnRun.disabled = true; document.getElementById('scan-status').style.display = 'block'; document.getElementById('scan-status').innerText = "Optimizing..."; let bestEta = 1.0; let bestErr = Infinity; // Solver Dynamic Range: 1.0 to 5.5 for (let e = 1.0; e <= 5.5; e += 0.2) { let err = await sim_testEta(e); if (err < bestErr) { bestErr = err; bestEta = e; } } // Finer pass around best estimate let fineStart = Math.max(1.0, bestEta - 0.3); let fineEnd = Math.min(5.5, bestEta + 0.3); for (let e = fineStart; e <= fineEnd; e += 0.05) { let err = await sim_testEta(e); if (err < bestErr) { bestErr = err; bestEta = e; } } // Finalize currentEta = bestEta; document.getElementById('rng-eta').value = bestEta; document.getElementById('val-eta-live').innerText = bestEta.toFixed(2); sim_runExperiment(); document.getElementById('scan-status').innerText = "Optimal Found"; btn.disabled = false; btnRun.disabled = false; setTimeout(() => { document.getElementById('scan-status').style.display = 'none'; }, 3000); } async function sim_testEta(eta) { let voxels = sim_generateVoxels(eta); let rawMoon = sim_calculateFluxAtPoint(R_MOON_CENTER, voxels); let K = G_MOON / rawMoon; let rawSurf = sim_calculateFluxAtPoint(R_EARTH, voxels); return Math.abs((rawSurf * K) - G_SURF); } // [MOD] Tension Map Logic (Option A: Analytic Proxy) function sim_applyTensionMap(voxels) { if (!voxels || voxels.length === 0) return; // 1. Calculate Intensity I_i = (n_i^2) * χ_i // n_i is rho_eff. χ_i is geometric proxy. // Proxy: R^2 - r^2 (zero at surface, max at core) let sumI = 0; let sumVol = 0; // Pass 1: Calc Mean Field for (let v of voxels) { let r2 = v.x * v.x + v.y * v.y + v.z * v.z; let chi = Math.max(0, (R_EARTH * R_EARTH) - r2); // Intensity // Note: dividing by huge R^2 might be numerically small, so we can normalize chi or just let the mean handle it. // Let's keep numbers reasonable: chi normalized to 0..1 chi = chi / (R_EARTH * R_EARTH); let I = (v.rho_eff * v.rho_eff) * chi; v._tempI = I; // Store temp sumI += I * v.vol; sumVol += v.vol; } let avgI = sumVol > 0 ? sumI / sumVol : 1; if (avgI === 0) avgI = 1; // Safety // Pass 2: Apply Tension Factor s_i // s_i = f(I_hat), where I_hat = I / avgI // f(x) = x^q, q=0.5 const q = 0.5; for (let v of voxels) { let I_hat = v._tempI / avgI; let s = Math.pow(I_hat, q); // Update Density v.rho_eff *= s; // Cleanup delete v._tempI; } } // ========================================================= // RENDERER // ========================================================= function sim_render(highlightData = null) { if (!sim_canvas || !sim_ctx) return; let w = sim_canvas.width; let h = sim_canvas.height; sim_ctx.clearRect(0, 0, w, h); sim_ctx.fillStyle = '#fff'; for (let s of stars) { let sx = s.x * w; let sy = s.y * h; sim_ctx.globalAlpha = s.alpha; sim_ctx.beginPath(); sim_ctx.arc(sx, sy, s.size, 0, Math.PI * 2); sim_ctx.fill(); } sim_ctx.globalAlpha = 1.0; let padL = 50, padR = 20, padT = 40, padB = 40; let graphW = w - padL - padR; let graphH = h - padT - padB; let centerY = padT + graphH / 2; if (currentStage === 1) { const mapX1 = (r) => padL + (r / R_EARTH) * graphW; const mapY1 = (eff) => padT + graphH - ((eff - 0.8) / 0.2) * graphH; sim_ctx.strokeStyle = '#444'; sim_ctx.lineWidth = 1; sim_ctx.beginPath(); sim_ctx.moveTo(padL, padT); sim_ctx.lineTo(padL, padT + graphH); sim_ctx.stroke(); sim_ctx.beginPath(); sim_ctx.moveTo(padL, padT + graphH); sim_ctx.lineTo(padL + graphW, padT + graphH); sim_ctx.stroke(); sim_ctx.fillStyle = '#aaa'; sim_ctx.font = '10px monospace'; sim_ctx.textAlign = 'right'; sim_ctx.fillText("1.0 (Transparent)", padL - 5, mapY1(1.0)); sim_ctx.fillText("0.8 (Opaque)", padL - 5, mapY1(0.8)); sim_ctx.textAlign = 'center'; sim_ctx.fillText("Radius (km)", padL + graphW / 2, padT + graphH + 15); if (stage1Data.length > 0) { sim_ctx.strokeStyle = '#3498db'; sim_ctx.lineWidth = 3; sim_ctx.beginPath(); for (let i = 0; i < stage1Data.length; i++) { let p = stage1Data[i]; let x = mapX1(p.r); let y = mapY1(p.eff); if (i === 0) sim_ctx.moveTo(x, y); else sim_ctx.lineTo(x, y); } sim_ctx.stroke(); let last = stage1Data[stage1Data.length - 1]; let lx = mapX1(last.r); let ly = mapY1(last.eff); sim_ctx.fillStyle = '#3498db'; sim_ctx.beginPath(); sim_ctx.arc(lx, ly, 6, 0, Math.PI * 2); sim_ctx.fill(); } } else { // FIXED VERTICAL RANGE: 20.0 let maxR = VIEW_MAX_R; let maxY = 20.0; const mapX2 = (r) => padL + (r / maxR) * graphW; const mapY2 = (val) => padT + graphH - (val / maxY) * graphH; const invMapX2 = (px) => ((px - padL) / graphW) * maxR; let surfPx = mapX2(R_EARTH); let corePx = mapX2(R_CORE); let rSurf = surfPx - padL; let rCore = corePx - padL; sim_ctx.save(); sim_ctx.beginPath(); sim_ctx.rect(padL, padT, surfPx - padL, graphH); sim_ctx.clip(); sim_ctx.beginPath(); sim_ctx.arc(padL, centerY, rSurf, -Math.PI / 2, Math.PI / 2); let grdMantle = sim_ctx.createRadialGradient(padL, centerY, rCore, padL, centerY, rSurf); grdMantle.addColorStop(0, 'rgba(60, 60, 60, 0.4)'); grdMantle.addColorStop(1, 'rgba(100, 100, 100, 0.2)'); sim_ctx.fillStyle = grdMantle; sim_ctx.fill(); sim_ctx.beginPath(); sim_ctx.arc(padL, centerY, rCore, -Math.PI / 2, Math.PI / 2); let grdCore = sim_ctx.createRadialGradient(padL, centerY, 0, padL, centerY, rCore); grdCore.addColorStop(0, 'rgba(200, 50, 50, 0.6)'); grdCore.addColorStop(1, 'rgba(100, 30, 30, 0.5)'); sim_ctx.fillStyle = grdCore; sim_ctx.fill(); sim_ctx.restore(); sim_ctx.strokeStyle = '#333'; sim_ctx.lineWidth = 1; sim_ctx.beginPath(); sim_ctx.moveTo(padL, mapY2(0)); sim_ctx.lineTo(padL + graphW, mapY2(0)); sim_ctx.stroke(); sim_ctx.beginPath(); sim_ctx.moveTo(padL, padT); sim_ctx.lineTo(padL, padT + graphH); sim_ctx.stroke(); // Y-Axis Labels sim_ctx.fillStyle = '#555'; sim_ctx.font = '9px monospace'; sim_ctx.textAlign = 'right'; for (let yv = 0; yv <= maxY; yv += 5) { sim_ctx.fillText(yv.toFixed(0), padL - 5, mapY2(yv) + 3); } sim_ctx.strokeStyle = 'rgba(255,255,255,0.2)'; sim_ctx.setLineDash([4, 4]); sim_ctx.beginPath(); sim_ctx.moveTo(surfPx, padT); sim_ctx.lineTo(surfPx, padT + graphH); sim_ctx.stroke(); sim_ctx.setLineDash([]); sim_ctx.lineWidth = 3; sim_ctx.strokeStyle = '#3498db'; sim_ctx.beginPath(); let first = true; for (let d of stage2Data) { if (d.r > maxR) break; let x = mapX2(d.r); let y = mapY2(d.prem); if (first) { sim_ctx.moveTo(x, y); first = false; } else sim_ctx.lineTo(x, y); } sim_ctx.stroke(); sim_ctx.strokeStyle = '#f39c12'; sim_ctx.beginPath(); first = true; for (let d of stage2Data) { if (d.r > maxR) break; let x = mapX2(d.r); let y = mapY2(d.calc); if (first) { sim_ctx.moveTo(x, y); first = false; } else sim_ctx.lineTo(x, y); } sim_ctx.stroke(); if (highlightData) { let hx = mapX2(highlightData.r); let hy1 = mapY2(highlightData.calc); let hy2 = mapY2(highlightData.prem); sim_ctx.fillStyle = '#f39c12'; sim_ctx.beginPath(); sim_ctx.arc(hx, hy1, 5, 0, Math.PI * 2); sim_ctx.fill(); sim_ctx.fillStyle = '#3498db'; sim_ctx.beginPath(); sim_ctx.arc(hx, hy2, 5, 0, Math.PI * 2); sim_ctx.fill(); } sim_canvas.plotData = { mapX: mapX2, invMapX: invMapX2, padL, graphW }; } } function sim_handleMouse(e) { if (currentStage !== 2) return; if (!sim_canvas.plotData) return; let rect = sim_canvas.getBoundingClientRect(); let mx = e.clientX - rect.left; let rMouse = sim_canvas.plotData.invMapX(mx); let d = stage2Data.reduce((prev, curr) => Math.abs(curr.r - rMouse) < Math.abs(prev.r - rMouse) ? curr : prev, stage2Data[0]); if (d && mx > 50 && mx < sim_canvas.width - 20) { sim_render(d); if (sim_tooltip) { sim_tooltip.style.display = 'block'; sim_tooltip.style.left = (mx + 20) + 'px'; sim_tooltip.style.top = (e.clientY - rect.top) + 'px'; let diff = ((d.calc - d.prem) / d.prem) * 100; sim_tooltip.innerHTML = `
Radius: ${Math.round(d.r)} km
CMFT: ${d.calc.toFixed(2)}
PREM: ${d.prem.toFixed(2)}
Diff: ${diff.toFixed(2)}%
`; } } else { if (sim_tooltip) sim_tooltip.style.display = 'none'; sim_render(); } } // ================================================================= // CHECK FOR AND INIT SIMULATIONS // ================================================================= function addDownloadButton(targetId, sourceCode, fileName) { let container = document.getElementById(targetId); if (!container) return; // Create wrapper if not exists to position button relative to canvas // Actually, we can just append after the canvas or inside the container if it handles it. // The container .canvas-holder has relative positioning in style.css. // Check if we are inside a .simulation-wrapper and append there? // Or just overlay? // User asked "simple press of a button placed near the simulation". let btn = document.createElement('button'); btn.innerHTML = "Download Source"; btn.className = "download-btn"; btn.style.cssText = "position: absolute; top: 10px; right: 10px; z-index: 100; font-size: 0.7rem; padding: 5px 10px; background: rgba(0,0,0,0.7); color: #fff; border: 1px solid #555; border-radius: 4px; cursor: pointer; opacity: 0.7; transition: opacity 0.2s;"; btn.onmouseover = () => btn.style.opacity = "1.0"; btn.onmouseout = () => btn.style.opacity = "0.7"; btn.onclick = () => { let blob = new Blob([sourceCode], { type: 'text/javascript' }); let url = URL.createObjectURL(blob); let a = document.createElement('a'); a.href = url; a.download = fileName; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); }; container.appendChild(btn); } // ================================================================= // SCRIPT: SECTION 12 - GEOMETRIC CONVERGENCE TEST // ================================================================= function initSection12() { const canvas = document.getElementById('convergenceCanvas'); if (!canvas) return; // --- PHYSICS ENGINE --- const R_EARTH = 6371; // km const D_GPS = 26560; // km (Radius from center) const SOLAR_RATIO = 5.60; function getEff(r, reff) { if (reff <= 0.001) return 1.0; let ratio = reff / r; if (ratio >= 1.0) ratio = 0.99999; let gamma_half = Math.asin(ratio); return ratio / gamma_half; } function calculateAnomaly(ratioPct) { let r_eff = R_EARTH * (ratioPct / 100); let eff_surf = getEff(R_EARTH, r_eff); let eff_gps = getEff(D_GPS, r_eff); let boost = (eff_gps / eff_surf) - 1.0; return { pct: ratioPct, reff: r_eff, anomaly: boost * 100 // return as percentage }; } // --- VISUALIZATION --- const ctx = canvas.getContext('2d'); let currentRatio = 5.6; function draw() { if (!canvas.parentElement) return; // Safety // Responsive sizing canvas.width = canvas.parentElement.offsetWidth - 40; canvas.height = 300; const w = canvas.width; const h = canvas.height; ctx.fillStyle = "#111"; ctx.fillRect(0, 0, w, h); // Margins const PAD_L = 50, PAD_B = 30; const GRAPH_W = w - PAD_L - 20; const GRAPH_H = h - PAD_B - 20; // Scales const MAX_X = 20; // % Tightness const MAX_Y = 0.5; // % Anomaly function mapX(val) { return PAD_L + (val / MAX_X) * GRAPH_W; } function mapY(val) { return (h - PAD_B) - (val / MAX_Y) * GRAPH_H; } // Grid ctx.strokeStyle = "#222"; ctx.lineWidth = 1; ctx.beginPath(); // Horiz lines for (let i = 0; i <= 5; i++) { let y = mapY(i / 10); ctx.moveTo(PAD_L, y); ctx.lineTo(w - 20, y); } ctx.stroke(); // Axes ctx.strokeStyle = "#444"; ctx.beginPath(); ctx.moveTo(PAD_L, 10); ctx.lineTo(PAD_L, h - PAD_B); ctx.lineTo(w - 10, h - PAD_B); ctx.stroke(); // Curve ctx.strokeStyle = "#e74c3c"; ctx.lineWidth = 3; ctx.beginPath(); let first = true; for (let x = 0.1; x <= MAX_X; x += 0.2) { let data = calculateAnomaly(x); let px = mapX(x); let py = mapY(data.anomaly); if (py < 10) py = 10; // Clamp visual if (first) { ctx.moveTo(px, py); first = false; } else ctx.lineTo(px, py); } ctx.stroke(); // Solar Marker let solarData = calculateAnomaly(SOLAR_RATIO); let sx = mapX(SOLAR_RATIO); let sy = mapY(solarData.anomaly); ctx.strokeStyle = "#3498db"; ctx.setLineDash([4, 4]); ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(sx, h - PAD_B); ctx.lineTo(sx, sy); ctx.stroke(); ctx.setLineDash([]); ctx.fillStyle = "#3498db"; ctx.beginPath(); ctx.arc(sx, sy, 5, 0, Math.PI * 2); ctx.fill(); ctx.font = "10px sans-serif"; ctx.fillText("SOLAR RATIO", sx + 8, sy); // Current Position let curData = calculateAnomaly(currentRatio); let cx = mapX(currentRatio); let cy = mapY(curData.anomaly); ctx.fillStyle = "#fff"; ctx.beginPath(); ctx.arc(cx, cy, 5, 0, Math.PI * 2); ctx.fill(); ctx.strokeStyle = "#fff"; ctx.lineWidth = 2; ctx.beginPath(); ctx.arc(cx, cy, 9, 0, Math.PI * 2); ctx.stroke(); // Labels ctx.fillStyle = "#777"; ctx.textAlign = "center"; ctx.fillText("Effective Core Radius (%)", w / 2 + PAD_L / 2, h - 5); ctx.save(); ctx.translate(15, h / 2); ctx.rotate(-Math.PI / 2); ctx.fillText("GPS Anomaly (%)", 0, 0); ctx.restore(); // Stats Update if (document.getElementById('effRadDisplay')) document.getElementById('effRadDisplay').innerText = curData.reff.toFixed(0) + " km"; let col = curData.anomaly < 0.05 ? "#2ecc71" : "#e74c3c"; if (document.getElementById('anomalyDisplay')) document.getElementById('anomalyDisplay').innerHTML = `+${curData.anomaly.toFixed(4)}%`; } // Interactive const slider = document.getElementById('simSlider'); if (slider) { slider.oninput = function () { currentRatio = parseFloat(this.value); let label = "Custom"; if (Math.abs(currentRatio - 5.6) < 0.2) label = "Solar Ratio (5.6%)"; if (document.getElementById('sliderVal')) document.getElementById('sliderVal').innerText = label; draw(); }; } // Init window.addEventListener('resize', draw); draw(); } document.addEventListener('DOMContentLoaded', () => { // Stage 1/2 Logic initSection11(); initSection12(); // [NEW] Section 12 Logic // Section 11 Source Aggregation let sec11Source = "// Section 11: Electron-Flux Coherency Engine\n\n" + "// Globals\n" + "var R_EARTH = 6371;\n" + "var R_CORE = 3480;\n" + "var R_MOON_CENTER = R_EARTH + 384400;\n\n" + initSection11.toString() + "\n\n" + "// ... (See simulations.js for full helper functions like sim_generateVoxels, sim_calculateFluxAtPoint) ...\n" + "// NOTE: Full source aggregation for this multi-function engine is complex to auto-generate.\n" + "// Please refer to js/simulations.js lines 800+."; // Better approximation for Sec 11 source if possible, but this is a reasonable fallback for "Download Source" // given the constraints of not having a bundler. // Actually, let's try to include the main Logic functions at least. sec11Source = "// Section 11: Electron-Flux Coherency Engine\n\n" + "// Key Variables\n" + "var R_EARTH = 6371; var R_CORE = 3480; var R_MOON_CENTER = R_EARTH + 384400;\n\n" + initSection11.toString() + "\n\n" + sim_runStage1.toString() + "\n\n" + sim_runManual.toString() + "\n\n" + sim_generateVoxels.toString() + "\n\n" + sim_calculateFluxAtPoint.toString() + "\n\n" + sim_runExperiment.toString() + "\n\n" + sim_optimize.toString() + "\n\n" + sim_render.toString(); if (document.getElementById('sim-container')) { addDownloadButton('sim-container', sec11Source, 'section11_coherency_engine.js'); } // [NEW] Section 12 Download Button if (document.getElementById('convergenceCanvas')) { // Create a simple wrapper for the source since it's just the initSection12 function mainly let sec12Source = "// Section 12: Geometric Convergence Test\n\n" + initSection12.toString(); addDownloadButton('convergenceCanvas'.parentElement?.id || 'doc-sec12', sec12Source, 'section12_convergence.js'); // Note: button placement might be tricky if parent ID isn't set. // addDownloadButton expects an ID. HTML creation needs to ensure the container has an ID if we want this. // For now, I'll skip the download button if I don't know the ID, or I'll ensure the HTML has one. // In NewSection.html plan, I will add class "sim-container" but also should add an ID like "sim-sec12". } // Check for sketches if (document.getElementById('canvas1') && typeof sketch1 !== 'undefined') { new p5(sketch1, 'canvas1'); addDownloadButton('canvas1', sketch1.toString(), 'simulation1_atomic.js'); } if (document.getElementById('canvas2') && typeof sketch2 !== 'undefined') { new p5(sketch2, 'canvas2'); addDownloadButton('canvas2', sketch2.toString(), 'simulation2_cavendish.js'); } if (document.getElementById('canvas3') && typeof sketch3 !== 'undefined') { new p5(sketch3, 'canvas3'); addDownloadButton('canvas3', sketch3.toString(), 'simulation3_sagitta.js'); } if (document.getElementById('canvas4') && typeof sketch4 !== 'undefined') { new p5(sketch4, 'canvas4'); addDownloadButton('canvas4', sketch4.toString(), 'simulation4_darkenergy.js'); } }); // ================================================================= // AUTOMATED FOOTER NAVIGATION // ================================================================= document.addEventListener("DOMContentLoaded", function () { // 1. Find the top navigation const topNav = document.querySelector('main > nav'); const main = document.querySelector('main'); if (topNav && main) { // 2. Clone it const bottomNav = topNav.cloneNode(true); // 3. Adjust styles // Reset top border/padding if present, and add bottom bottomNav.style.borderBottom = 'none'; bottomNav.style.paddingBottom = '0'; bottomNav.style.marginBottom = '0'; bottomNav.style.marginTop = '2rem'; bottomNav.style.borderTop = '1px solid #eee'; bottomNav.style.paddingTop = '1rem'; // 4. Append to main main.appendChild(bottomNav); } }); ----------------- cmft/section10.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 10

10. The Gravity Precision Gap

Contextualizing the CMFT Geometric Deficit

Before examining the Corley Momentum Flux prediction, we must address the state of gravitational precision in standard physics. While we often cite gravity as 9.81 m/s2, the underlying constants are surprisingly uncertain compared to other fields of physics.

1. The Uncertainty of Big G

The Gravitational Constant (G) is the least precise fundamental constant in nature. While constants like the speed of light or the Planck constant are known to 12 decimal places, G is only known to roughly 4 decimal places. This uncertainty means we do not actually know the mass of the Earth (M) to high precision. We only know the product GM (the Standard Gravitational Parameter).

2. The "Derived" Nature of Orbit

Because of this uncertainty, we do not predict orbits ab initio from counting atoms. Instead, we perform Phenomenological Fitting. We measure the orbital period of satellites and the Moon, and we back-calculate the effective GM required to explain them.

This creates a "blind spot." If a theoretical mechanism (like CMFT) altered the efficiency of gravity based on altitude, standard physics would simply absorb this change into the calibrated GM value for that altitude, hiding the anomaly inside the constant.

3. The CMFT Proposition

The simulation below tests the hypothesis that gravity is a Geometric Residual of pairwise flux interactions. It proposes that the effective mass of the Earth is not constant, but varies with the Field of View (FOV) of the observer.

Efficiency(γ) = sinc(γ/2)

We predict a Geometric Deficit at the surface (where the FOV is 180° and vectors cancel laterally) recovering to Unity (1.0) in the Far Field (where the FOV approaches 0°). This implies that the "Standard Mass" we attribute to Earth is actually its "Surface-Suppressed Mass," while the Moon interacts with the "True Flux Mass."

----------------- cmft/section11.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 11

11. Simulation: Electron-Flux Coherency Test

The simulation results derived in previous sections compel us to re-evaluate the fundamental topology of space. The emergence of a "Core Flux Spike" and the necessity of a "Geometric Inversion" suggests that the standard model of gravity—mass pulling on mass across empty space—is topologically inverted.

We propose a Hydrodynamic Formulation where the vacuum is not "empty," but is a Superfluid Plenum under immense, near-infinite pressure. In this framework, matter is not a "substance" added to the void, but a Soliton (a stable, self-reinforcing void or defect) maintained against the crushing pressure of the vacuum.

11.1 The Inversion Principle

Standard physics views Gravity as Tension (Attraction). The Corley Momentum Flux Theory (CMFT) reinterprets this as Pressure (Displacement).

  • Standard View: Fgravity ∝ Mass1 × Mass2 (Pull)
  • Inverse View: Fgravity ∝ -∇ Pvacuum (Push)

11.2 The Soliton Mechanism: "Form is Emptiness"

If the vacuum is a high-pressure superfluid, a static bubble would instantly collapse. To exist, matter must actively push back. The Electron Cloud acts as the "Hull" of this bubble. The rapid motion of electrons generates a Momentum Flux—a continuous stream of shockwaves—that holds the vacuum wall at bay.

P
Vacuum Pressure
ρsoliton
Displacement
P
Vacuum Pressure

This simulation tests the mechanical viability of this model by decoupling two critical factors:

Stage 1: Geometric Scan
Stage 2: Coherency Solver
Geometric Profile
Spherical Interference Pattern
Waiting for Scan...
Map the geometric "muffling" curve caused by the spherical shape.

Analysis: The Feasible Range of Reality

The simulation results (Stage 2) reveal a fascinating non-linear relationship. While Newtonian physics assumes a static constant (G), the Hydrodynamic model suggests that Flux Efficiency is dynamic. The scan in Stage 1 reveals that a spherical arrangement of matter defines a specific Geometric Efficiency curve.

This characteristic quadratic fall-off is a function of the Network Intensity—the mapping of all interacting particle pairs within the volume. While the internal flux density acts to suppress soliton stability, the interaction creates a resistance that geometrically squares the connection to the Sagitta Drift. Consequently, the core becomes a focused generator of high-tension flux due to this geometric pressure, while the surrounding mantle appears to act as a relative dampener.

Experimental Evidence: The Earth's Core Anomaly

Our "Inverse Flux Scanner" reveals a critical discrepancy when applying this model to Earth. As shown in the table below, the Earth's interior is Gravitationally Opaque (Geff < 1.0) due to these geometric interactions.

Region Geometric Efficiency (Geff) Observed Gravity (g) Required Flux Output
Surface (6371 km) 0.965 (Transparent) 9.81 m/s² 10.16 m/s²
Core Boundary (3400 km) 0.882 (Muffled) 10.43 m/s² ~12.80 m/s²

To reconcile this geometric reality with observed gravity, the "Auto-Solve" function dynamically determines the required Coherency Factor (ηFe).

Rather than relying on a fixed constant, the simulation demonstrates that a precise fit exists where the material coherency aligns with the geometric pressure curve. The tool allows us to tune the model to find the specific range where the calculated flux output matches the PREM reference data. This confirms that the immense pressure at the core forces the Iron lattice into a coherent state, acting as a "Gravitational Super-Conductor" that overcomes the geometric muffling to produce the gravity we observe.

----------------- cmft/section12.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 12

12. The Tension Map & Geometric Convergence

12.1 Effective Field Regimes (Geometry × Action)

In CMFT, "Near Field / Mid Field / Far Field" cannot be defined using geometry alone (r/R), because the source is not uniformly active across its radius. The same geometric kernel that produces the near-field deficit also includes a coherence lever that compresses the effective source. Therefore, the correct regime definition is set by the combination of:

  1. Geometry: The angular support of momentum transfer (opening angle γ), encoded as a sinc centroid efficiency in the Green kernel.
  2. Action Weighting: The internal stratified activity of matter, encoded by the Density → Intensity → Tension mapping (and its N4 tightening).

The geometric component is already formalized by the CMFT Green kernel:

GCMFT(r, γ) =
r2
× sinc(γ/2)

This yields Newtonian recovery in the far field (γ→0 ⇒ sinc(0)=1) and a geometric deficit in the near field (large γ ⇒ sinc(γ/2)<1). This same near-field geometric deficit is the origin of the 1/r4 correction associated with orbital precession when an orbit lies inside the wide-angle volume of a massive generator.

However, γ is not controlled by the body’s full geometric radius R alone. It is controlled by the body’s Effective Active Radius (Reff), because CMFT does not weight all matter equally. Real planets are stratified: dense cores dominate the coupling. The Tension Map provides the "activity" weighting that compresses the effective source.

Therefore, CMFT field regimes are defined using Reff (the action-compressed effective source radius), not R:

Near Field (wide-angle):     r ≲ √2 Reff
Mid Field (transition):     √2 Reff ≲ r ≲ rfar(Reff)
Far Field (pointlike):      r ≫ rfar(Reff)

Operationally, rfar is the distance beyond which γ is sufficiently small that sinc(γ/2) ≈ 1 to the desired tolerance. This resolves a common misinterpretation: geometry alone can make near-field deviations look large for a full-radius sphere, but in CMFT the action weighting collapses Reff, so a location near the surface of a planet can behave as mid-field with respect to the effective source (consistent with the observed near-Newtonian behavior of Earth satellites).

Note on Aberration Cancellation: This section addresses source geometry (Reff, γ, sinc efficiency). Aberration cancellation is handled by the vector-current dynamics of the Ψ field defined in the Lagrangian (Ψ·J coupling) and the induced vacuum flow ("magnetic" term) which produces Lorentz-type interactions.

12.2 The Problem of Uniform Density

In standard simulations, treating a planet as a collection of uniform particles (N) creates a "Fuzzy" gravitational profile. Because the Sagitta Drift mechanism relies on the "Field of View" (Geometric Efficiency), a widely distributed cloud of atoms creates significant geometric drag. This would predict non-Newtonian anomalies (drifts) that are far larger than observed for Earth satellites (GPS). This is precisely why field regime cannot be defined by r/R alone; without the action weighting that compresses Reff, a naive geometric "near-field" classification exaggerates the expected deviations.

However, real planets are not uniform. They are structurally stratified with dense cores. We must model not just the Presence of matter (Density), but the Activity of matter (Momentum Flux).

12.3 The Hierarchy of Flux

We propose a hierarchy of influence based on the coherence of the vacuum interaction:

  • Layer 1: Density (ρ). The raw count of atoms. This is the "Passive Mass."
  • Layer 2: Intensity (I). The square of the density (ρ2), modified by the geometric depth (χ). This represents the "Flux Traffic" or the local stress of the vacuum.
  • Layer 3: Tension (T). The interaction of intensities. This scales as the Square of the Square (N4).
Tension_Map(v) ∝ ρ4 × χ2

Layer 4: Action (A). The Tension Map is not yet the external field; it is the source-weight (effective action density) that determines which regions of the sphere contribute coherently to the Sagitta Drift superposition. In other words, A(r) is the weighting function that collapses the effective source radius to Reff for the purposes of γ and sinc(γ/2).

This N4 relationship creates a non-linear "Tightening" effect. A core that is 3x denser than the mantle becomes 81x more "luminous" in the flux spectrum. This effectively hollows out the gravitational profile of the planet, rendering the mantle "Gravitationally Translucent" while concentrating the effective source into a super-dense virtual point.

12.4 The Geometric Seed

The Tension Map serves as the "Geometric Seed" for the Sagitta Drift. By compressing the effective source radius (Reff), we alter the angles of interaction.

A "Tight" source (small Reff) has a narrow Field of View. As the angle γ approaches zero, the geometric efficiency (sinc γ) approaches 1.0. This means that High Coherence enforces Newtonian Behavior. (This is the same centroid efficiency used in the Green kernel: sinc(γ/2).)

12.5 The Triangle of Aggregated Tension

Gravity is emergent from the sum of triangular interactions between Source Point A, Source Point B, and Target T.

The Core: Points A and B are deep in the high-tension zone. The base of the triangle is "stiff" (High IA × IB). The resulting drift vector is coherent and strong.

The Mantle: Points A and B are in the low-tension zone. The base of the triangle is "floppy." The resulting drift vector is weak and essentially washes out in the noise of the core's dominance.

12.6 Synthesis: Shape vs. Magnitude

To synthesize these elements into the final gravitational result, we must normalize the Weighted Interaction Map so that its global sum respects the total momentum budget (proportional to N). This forces the "Power 4" to serve as a relative weighting rather than an absolute multiplier.

Therefore the N4 tightening primarily reshapes the effective geometry of the source (Reff and γ-distribution) rather than inflating the far-field magnitude.

12.7 The Self-Reinforcing Tension Network (The Spider Web)

Early simulations of the Tension Map (using autosolvers to fit the Earth-Moon curve) revealed a critical insight: to replicate the precise inverse-square relationship observed in the far field, the simulation forced an immense spike of flux density at the core, far exceeding standard density estimates.

This is not an error, but a physical demonstration of Mantle Transparency. The N4 tension acts like a Spider Web . When you pull tightly on the center of a web, the outer strands (the mantle) align and transfer their structural load to the center.

Flux vs. Gravity: It is vital to distinguish between Scalar Tension and Vector Drift.

  • Scalar Tension (The Trampoline): The core experiences maximum vacuum pressure (Flux). This is the "force" that holds the sphere together against the void, much like a bowling ball stretching a trampoline.
  • Vector Drift (The Slide): At the exact center of the earth, despite the crushing scalar tension, the directional drift is zero because the vectors cancel out.

Therefore, a "Spike" in core flux does not mean the Earth is generating excess gravity; it means the Earth is structurally holding itself up entirely from the center. The mantle is merely riding the web.

12.8 The Solar-Earth Unification

The final validation of the Momentum Flux Theory lies in its ability to unify the non-Newtonian precession of Mercury with the precise Newtonian behavior of Earth satellites. This unification is achieved through the Geometric Convergence principle.

The Solar Ratio (5.6%)

Calibration against Mercury's orbital precession reveals that the Sun, being a turbulent body of plasma, has poor vacuum coherence. Its "Effective Gravitational Radius" is ~5.6% of its visual radius. This "wide" source creates the Geometric Residual responsible for the 43 arcsecond anomaly.

However, when we apply this same framework to the Earth, the Tension Map (N4) predicts a fundamentally different interaction. Because the Earth is a solid, highly coherent iron lattice, the flux output is structurally "stiff." This high coherence essentially locks the geometric source, creating a Virtual Singularity where the effective radius (Reff) appears to collapse to less than 400 km in the observational data.

Interactive: The Geometric Convergence Test
Point Source (0.1%) Solar Ratio (5.6%) Fluffy (20%)
--
Effective Radius
--
GPS Anomaly
Physics Verification: Slide the coherence to the Solar Ratio (5.6%). Note that the GPS Anomaly drops below 0.05%. This confirms that the Tension Map effectively "hides" the non-Newtonian drift on Earth by compressing the source, while revealing it on the Sun where coherence is lower.

Conclusion: Newton as a Limit Case

The simulation above demonstrates that CMFT does not violate Newtonian physics; it derives Newton as the High-Density Limit Case.

On Earth, the "Geometric Stiffness" provided by the solid core enforces a rigid coupling between the vacuum flux and the metric. This creates a regime of High Coherence where the non-Newtonian Sagitta Drift is rendered indistinguishable from the standard inverse-square law. Consequently, any geometric residual is effectively absorbed into the GPS calibration, making the Earth indistinguishable from a Newtonian point source. On the Sun, the shielding is weaker, allowing the drift to emerge as the Precession of Mercury.

----------------- cmft/section13.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 13

13. Covariant Calibration & The Measurement Trap

A critical challenge in validating the Momentum Flux framework against standard General Relativity (GR) is the issue of Covariant Calibration. This phenomenon describes how standard metrology effectively "masks" the non-Newtonian nature of gravity by coupling the measurement of time to the density of the field being measured.

13.1 The Inertial Circularity of Mass

In the standard model, the Mass of the Earth (M) is not measured directly; it is derived from the orbital velocity (v) of satellites using Newtonian/Schwarzschild constraints (M = v2r/G).

If the actual gravitational gradient follows the CMFT Power 4 (N4) curve—which is slightly "flatter" than the inverse-square law in the near-field due to source width—a satellite at GPS altitude will experience a different drift velocity than predicted by Newton. However, by using the Newtonian formula to work backwards, we calculate a "Virtual Mass" that incorporates this drift error. We then use this derived mass to calibrate surface instruments.

Consequently, the "Mass" used in standard physics is a composite variable that absorbs the geometric efficiency of the source, effectively hiding the CMFT profile inside the gravitational constant.

13.2 The Time-Density Mask (The Rubber Ruler)

The strongest masking effect occurs because Gravity (Drift) and Time (Clock Speed) are both functions of the Vacuum Pressure (Flux Density).

The Masking Loop:

If the Earth has a large effective core (Reff > 2%), the flux density at GPS orbit is higher than a Point Source model predicts.

Since Velocity is Distance divided by Time (v = d/t), the increase in physical speed is offset by the slowing of the measurement clock.

To the observer, the orbit appears perfectly Newtonian. The Geometric Width of the Earth is masked because the "ruler" (Time) stretches in exact proportion to the "force" (Gravity).

13.3 Earth vs. Mercury: The Coherence Lens

This calibration mask explains the observational discrepancy between Earth and Mercury.

13.4 Conclusion: Relativistic Reduction

We conclude that the application of "Relativistic Corrections" (in either GR or CMFT) is a mathematical protocol that reduces the observation to a Newtonian baseline.

Therefore, the fact that GPS satellites follow Newtonian paths after correction does not disprove the Power 4 Tension Map. It simply proves that the Flux Viscosity at 20,000 km scales isomorphically with the Gravitational Drift, allowing the Earth to possess a Larger Effective Core (closer to the solar ratio of 5.6%) than previously assumed. The "Point Source" Earth is a metrological illusion created by covariant calibration.

----------------- cmft/section14.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 14

14. Cosmology: The Static Ocean and Soliton Relaxation

Standard cosmology relies on the "Metric Expansion of Space" to explain why distant light is red-shifted and why distant events (like Supernovae) appear to happen in slow motion ("Time Dilation"). CMFT provides a strictly mechanical alternative that necessitates a Static, Infinite Universe.

1. The Mechanism: Flux Drag and Adiabatic Relaxation

To understand Redshift without expansion, we must distinguish between the two fundamental types of matter in the Corley framework:

As a photon travels through the high-pressure vacuum, it experiences Flux Drag (magnetic viscosity). It loses internal energy to the substrate. Because the photon is an Open Soliton, this energy loss manifests as a loss of Tension.

2. The "Slinky Effect": A Formal Derivation of Time Dilation

Standard "Tired Light" theories historically failed because they proposed mechanisms (like scattering) that would redden light without stretching the signal duration. This contradicted observations of distant supernovae, which appear to explode in slow motion. CMFT resolves this by strictly defining the photon as a structural object: an Open Helical Shear Wave (a spring).

The Geometric Coupling Proof

In the Hydrodynamic model, a photon is a packet of flux with a physical number of coils (Ncoils) and a physical packet length (Lpacket).

Axiom 1: Conservation of Propagation Speed.
The speed of the photon is determined by the medium's bulk modulus, not the source. Therefore, the propagation speed is constant (c).

Axiom 2: Structural Relaxation.
As the photon fights vacuum viscosity ("Flux Drag"), it loses internal tension. A loss of tension in a helical spring results in physical elongation. The wavelength (λ) and the total packet length (Lpacket) are structurally coupled.

1. Definition of Observation Time:
Tobs = Lpacket / c

2. The Relaxation Factor:
If tension loss causes the wavelength to stretch by factor (1 + z), the entire structural packet must stretch by the same ratio:
Lnew = Loriginal × (1 + z)

3. The Resulting Duration:
Tnew = (Loriginal × (1 + z)) / c
Tnew = Toriginal × (1 + z)

Conclusion: A distant event appears to happen in slow motion not because the space between ticks has expanded, but because the signal itself has physically uncoiled. The movie arrives at the projector with a stretched tape. This derives the exact relativistic time dilation factor from pure mechanics.

3. The Infinite Cycle: Nucleation and Drainage

With expansion removed, the universe is revealed as an Infinite, Static, and Eternal Momentum Flux Ocean. It has no beginning and no end; it only has local weather.

Galaxies are Local Nucleation Events. Supermassive Black Holes are not gravity traps, but Pressure Vents. They accumulate tired, expanded flux until the internal pressure exceeds the local vacuum confinement. The system then nucleates (Quasar phase), recycling the energy back into tight, high-frequency hydrogen, which coalesces into new stars. The universe is a perpetual hydraulic engine.

----------------- cmft/section15.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 15

15. Observational Evidence: Dark Matter without Magic

CMFT makes specific predictions about "missing mass" signals that differ entirely from particle theories. The "Dark Matter" signal is not a substance; it is the result of High-Efficiency Vacuum Coupling arising from specific states of matter.

The Mechanism: Coherence and Binding Energy

Why does sparse gas often exert more gravity per nucleon than a star? It is a matter of Hydrodynamic Coherence. The interaction with the Superfluid Vacuum depends on how "tightly" the momentum flux loops are locked and how "coherently" they drive the vacuum substrate.

The Hydrogen Anomaly (Gas-Rich vs. Gas-Poor)

The anomaly tracks the presence of Coherent Gas Flow.

The Bullet Cluster: A Hydrodynamic Collision

The collision of two Galaxy Clusters (e.g., the Bullet Cluster) is often cited as proof of particle Dark Matter because the gravity signal (Lensing) separates from the gas. CMFT explains this as the Collision of Two Vacuum Vortices.

A Galaxy Cluster is not a bag of mass; it is a massive, self-sustaining Low-Pressure Weather System (a Nucleation Event). The Galaxies are the "Eyes" of the storm—the pumps maintaining the pressure gradient.

Turbulence  →  Loss of Coherence  →  Loss of Coupling

In a solitary galaxy, the gas is laminar and contributes to the halo. In the Bullet Cluster, the gas becomes chaotic. It loses its ability to drive the vacuum coherently. The "Dark Matter" signal does not follow the gas because the gas has ceased to be an effective Flux Generator. The gravity remains with the Galaxies, not because they are heavy, but because they are the surviving Coherent Structures maintaining the vacuum flow.

----------------- cmft/section16.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 16

16. Dark Energy: The Variable Viscosity of Voids

Because "Dark Energy" is inferred from supernovae appearing dimmer than expected, it is actually a measurement of Variable Vacuum Viscosity.

Light traveling through cosmic voids (where Hydrogen density is low) experiences less drag. It travels a longer physical distance to accumulate the same redshift z. Since the source is physically further away than the redshift implies, it appears dimmer. We do not need an accelerating universe; we only need to acknowledge that the vacuum's optical density varies with matter density.

12%

Verification: CMFT (Red) matches Standard Model Data (White) when Void Viscosity is ~12% lower.

----------------- cmft/section17.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 17

17. Conclusion: A Return to Mechanical Reason

The Corley Momentum Flux Theory replaces the mathematical abstractions of the Standard Model with mechanical inevitabilities. By accepting that the vacuum is a pressurized substrate and that energy is momentum, we naturally derive Gravity (1/r4 Sagitta), Quantum Mechanics (Topological Solitons), and Cosmology (Nucleation/Infinite Ocean) without needing magic, singularities, or Dark Energy.

Scorecard: CMFT vs. Standard Model

Phenomenon Standard Model Corley Theory (CMFT)
Gravity Curved Spacetime. Geometric Sagitta (Residual Flux Drift) in Euclidean Space.
Mercury Precession Tensor Correction. Added Inverse Quartic (1/r4) derived from near-field geometry.
Quantum Entanglement Non-local Collapse. Absolute Orientation (Hydrodynamic Persistence).
Big Bang Universal Origin Event. Local Nucleation (Galactic Fountains/Quasars).
Redshift Expansion of Space. Enhanced Flux Coupling (Interaction with Cold Hydrogen).
Dark Matter Invisible Particles. Cold Hydrogen (Unscreened Flux Generator).
CMB Afterglow of Creation. Horizon of Visibility (The Infinite Fog).
----------------- cmft/section1.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 1

1. The Foundation: Energy IS Momentum

Modern physics uses the Stress-Energy Tensor to catalog mass, pressure, and shear stress as distinct sources of gravity. I propose a fundamental physical simplification: All components of this tensor are forms of Momentum Flux.

The Substrate: A Pressurized Superfluid Plenum

This simplification immediately solves one of the most embarrassing failures of the Standard Model: the "Hierarchy Problem" (Why is Gravity 1040 times weaker than the Strong Nuclear Force?).

In CMFT, Gravity is not a weak force acting in a void. It is the Geometric Residual of an immense momentum transfer occurring within a High-Pressure Superfluid Vacuum. Consider a fish in the deepest part of the ocean. It is under crushing pressure, yet it feels weightless. This is because the pressure is Omni-Directional and Equalized.

Matter exists in a similar state. We float in a substrate of immense flux density. Crucially, because the vacuum acts as a Superfluid, it exhibits the property of Zero Viscosity for Bulk Motion. This explains why planets can orbit for billions of years without spiraling into the sun—they are moving below the critical velocity of the medium, effectively "superconducting" through the flux. However, high-frequency excitations (like Light) are shear waves that do interact with the microstructure, leading to energy loss over cosmic distances (see Section 13).

Vacuum Pressure  >>>  Gravitational Residual

Gravity is simply the tiny fraction of this flux that "leaks" (fails to cancel) due to geometric misalignment. We perceive gravity as weak only because we are measuring the Residual Drift (the leak), not the Static Pressure (the reservoir). There is no Hierarchy Problem; there is only the asymmetry of the strongest force in the universe.

The Consequence

Mass is not a static property; it is "trapped" momentum (vortices) within this high-pressure ocean. By treating all matter and energy as vectors of flux, we flatten the universe onto a Euclidean base. Gravity is not the bending of the map; it is the mechanical interaction of these fluxes within the rigid, hyper-pressurized substrate.

----------------- cmft/section2.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 2

2. The Mathematical Diagnostic: Einstein's "Scalar Choice"

CMFT does not seek to discard the predictive success of General Relativity; rather, it exposes a fundamental "Data Type Mismatch" in its foundation that necessitated the invention of curved spacetime.

The Fundamental Tension

In physics, Energy (E) and Momentum (p) are Vectors—they are dynamic, directional, and change values depending on the observer's frame. However, Einstein treated Mass (m) as a Scalar Invariant—a fixed, static number.

Vector Input (Energy/Momentum)  ≠  Scalar Constant (Mass)

The Consequence: You cannot equate a dynamic vector to a static scalar without "fudging" the background geometry. Einstein was forced to manually insert a curvature factor (the Metric Tensor gμν) onto the left side of the equation simply to force these incompatible data types to reconcile.

The CMFT Correction: Vectorize First

We resolve this not by bending the map, but by fixing the variables. In CMFT, we convert Mass into a Vector before applying the gravitational logic.

By defining Mass as Trapped Momentum Flux (a self-sustaining vortex), it becomes compatible with Linear Momentum. When both sides of the equation are Vectors, they balance naturally in standard Euclidean space.

Organic Curvature (Output vs. Input)

This does not mean "curvature" doesn't exist; it means curvature is not a property of empty space.

In the Standard Model, curvature is an Input—you must bend the coordinate system to make gravity work. In CMFT, curvature is an Organic Output. The "bending" of light or the precession of orbits arises naturally from the geometry of momentum flux interacting in a high-pressure medium. We do not need to bend the universe to explain why a swimmer drifts in a current.

----------------- cmft/section3.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 3

3. The Mechanism: The Geometric Tear & Sagitta Drift

Why does gravity manifest as an attraction? In the Corley Momentum Flux Theory, gravity is not a pull; it is a Hydrodynamic Displacement caused by a geometric defect in the vacuum pressure.

1. The Inversion Principle (Pressure vs. Tension)

Standard physics views gravity as Tension (Mass pulling Mass). We invert this: Gravity is Pressure. The vacuum is a high-pressure superfluid plenum. Objects are pushed together because they create "Low Pressure Shadows" or defects in this substrate.

Fgravity ∝ -∇ Pvacuum (Push)

2. The Catalyst: Bernoulli's Tear

How does matter create this low pressure? It occurs through Phase Disruption. When the flux streams of two atoms intersect across a distance, they disrupt the laminarity of the Superfluid Vacuum.

Because the flux transfer is not instantaneous (limited by c), the streams arriving from a volumetric source are not phase-aligned. They create a zone of turbulence or "shear." According to Bernoulli's Principle, high fluid velocity (turbulence) results in Lower Static Pressure.

This turbulent interaction effectively "tears" the vacuum pressure. The high-pressure substrate surrounding the interaction rushes in to close this tear, pushing the objects together to seal the defect.

3. The Geometry: The Sagitta of Delay

To determine exactly where this tear forms (and thus which direction the vacuum pushes), we must look at the geometry of the delay. This is the Sagitta Mechanism.

Geometry dictates that the Linear Average of a curved arc does not lie on the curve. It sits "inside" the curve, within the chord.

Linear Average of Phase-Delayed Rotation ≠ Spatial Center

The vector offset between the peak of the arc and this linear average is the Sagitta. This vector defines the Centroid of the Vacuum Tear.

4. The Result: Inevitable Drift

The "Gravitational Pull" is simply the vacuum collapsing into this geometric centroid. The target falls not towards the physical center of the object, but towards the Calculated Momentum Average (the Sagitta).

This creates a "Pincer Motion." As the objects get closer or the angle of interaction widens (Near Field), the arc becomes more curved, the Sagitta drifts further inward, and the "Tear" becomes deeper. This geometric sharpening of the defect is what produces the Near-Field Drift (1/r4) observed in Mercury's precession.

----------------- cmft/section4.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 4

4. Mathematical Formalism: The Atomic Flux Generator

To rigorously justify the Corley Momentum Flux Theory, we must strip away macroscopic approximations and define the fundamental unit of gravity: the Atomic Flux Generator.

The Diagnostic: The "Scalar Choice"

Standard physics treats Mass (m) as a scalar invariant—a static value. However, Energy (E) and Momentum (p) are vectors. This "Data Type Mismatch" forces General Relativity to curve the background geometry to reconcile the equations.

CMFT corrects this by defining the atom not as a scalar mass, but as a source of Rotational Momentum Flux. We replace the geometric curvature with a hydrodynamic interaction.

1. The Fundamental Vector (Jrot)

We replace the static scalar density (ρ) with a dynamic Vorticity Vector (Jrot). The atom is a pump. It intakes vacuum pressure and emits a rotational flux field. This field contains both push-pull (radial) and rotational (solenoidal) components.

Jatom  =  ∇ × (Fluxinternal)

Gravity is not a force assigned to the mass; it is the mechanical result of this rotational flux interacting with the vacuum substrate.

2. The Corley Lagrangian Density (L)

The Lagrangian describes the energy balance of the universe. In CMFT, we balance the Elasticity of the Vacuum against the Coupling of the Atomic Generator.

LCMFT  =  [ -1/(4μ) (∇ × Ψ)2 + 1/(2κ) (∂t Ψ)2 ]  -  [ Ψ ċ ∑ Jatom ]

The Vacuum Term (Grey): Describes the substrate elasticity and inertia (limiting speed to c).
The Interaction Term (Red): This describes the coupling. Crucially, there is no "Quadrupole Tensor" hard-coded here. We do not need to tell the universe to behave like a quadrupole. We simply define the rotational input of the atoms.

3. The Hydrodynamic Wave Equation

By applying the Principle of Least Action (δS = 0), we derive the equation of motion. This is a linear Hydrodynamic Wave Equation:

□ Ψ  =  μ ∑ Jatom

Where is the D'Alembertian Operator representing wave propagation. The complex gravitational behaviors we observe—such as the Precession of Mercury—are not inputs. They are Emergent Geometric Consequences. When billions of atomic flux generators interact across a finite delay, the summation of their individual rotational vectors creates a net drift. The 1/r4 effect is simply the statistical result of Shape-to-Shape interaction in a delayed medium.

4. The Bridge to Simulation: Discrete Time as Proxy

Because the analytical summation of billions of delayed vectors is computationally prohibitive, our simulations utilize a specific mathematical proxy: Discrete Time Integration.

In a continuous universe, momentum transfer is delayed by c. This delay causes Phase Accumulation—the flux vector arriving at the target is slightly "old," pointing to where the source was, not where it is. This geometric offset creates the Sagitta (the drift vector).

In our Cavendish simulation, we use discrete time steps. This is not "fake gravity." We strictly apply Newton's Third Law to the rotational vectors of the atoms. The "Integration Error" inherent in discrete steps acts as a high-fidelity statistical proxy for "Phase Accumulation." By allowing this integration drift to persist, we successfully model the Sagitta mechanism. The net attraction is not programmed; it emerges naturally from the geometry.

----------------- cmft/section5.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 5

5. The Macroscopic Output: The Geometric Hierarchy

If gravity is the result of the "Pincer Motion" (Sagitta + Phase Accumulation), how does this manifest in the macro world? It emerges as a Geometric Multipole Expansion. The power law depends entirely on the angular relationship (Geometric Fidelity) between the source and the target, it is emergent from the flux organically.

CMFT predicts that the strength of interaction scales based on the "Field of View" of the flux connection:

Ftotal  ≈  FNewton (1/r2)  +  FDrag (1/r4)

The Precession Mechanism

This "Geometric Drag" is what standard physics calls the Quadrupole Moment. For distant planets (like Pluto), the Sun is a dot; the angular variance is zero, and the 1/r4 term vanishes, leaving pure Newtonian ellipses.

For Mercury, however, the Sun looms large in the sky. The volumetric spread of the flux means the "Pincer Motion" is acting across a wide angle. This creates a persistent, non-canceling purely geometric torque on the orbit. The observed precession is not the result of curved spacetime, but the mechanical result of orbiting inside the Near-Field Volume of a massive flux generator.

Visualizing the Sagitta

To understand why volume creates this extra drift, we must visualize the path of momentum flux. The diagram below triangulates the influence from the Top and Bottom of a matter clump onto a Target.

The straight dotted line represents the chord, this is for visual reference only. The actual influence traces an arc (finite speed/phase accumulation). The statistical "Center of Mass" of this influence (Red Dot) sits in the belly (Sagitta) between the arc and the chord.

The net vector (Gold Arrow) points from the Target to this Geometric Midpoint. In the Near Field, this midpoint shifts slightly due to the angular spread, creating the 1/r4 correction.

Diagram: The Mean of the Arc creates the Sagitta (Gold Vector).

----------------- cmft/section6.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 6

6. The Rigorous Geometric Construction

(Reference: CMFT Theory v33)

1. Definition of the System

In the Corley Momentum Flux Theory, gravity is not a field generated by a scalar mass. It is the Linear Average of Rotational Drift generated by the interaction of flux vectors.

To simulate the gravitational efficiency of the Earth, we define the system not as a point, but as a Volumetric Object with a specific density profile matching geophysical data:

2. Derivation of the Seed: The Sagitta Mechanism

The fundamental unit of gravity in CMFT is not the particle, but the Pairwise Interaction. The "Seed" efficiency factor arises from the geometry of momentum transfer between two source points (A, B) and a target (T).

The Geometric Construction

1. The Flux Arcs (Phase Accumulation):
Due to the finite speed of light limit (c) governing the medium, the momentum transfer from a source point is subject to Phase Accumulation. The pincer motion of the interaction is not instantaneous; the delay across the volume "fuzzifies" the precise vector origin, manifesting effectively as an Arc of Influence. The angular width of this arc is determined by the geometric relationship (separation angle γ) of the interacting pair.

2. The Centroids (CA, CB):
To resolve the momentum transfer, the system calculates the Geometric Centroid of these arcs. The magnitude of the centroid vector is governed by the Inverse Square Law (1/r2), but its effectiveness is scaled by the centroid calculation of the arc.

For an arc of angular width γ, the distance to the centroid is scaled by:

Efficiency = sinc(γ / 2) =
sin(γ / 2) γ / 2

Geometric Justification: The Origin of the Sinc Filter

Why does sinc(γ/2) appear? Because momentum transfer propagates at finite speed c, the instantaneous line-of-action from a source to a target is not a delta-direction; it occupies an arc of influence of angular width γ (phase accumulation).

The resolved momentum-transfer direction is therefore the Geometric Centroid of that arc. The centroid distance along the bisector is exactly scaled by:

Efficiency(γ) = sinc(
γ 2
) =
sin(γ/2) γ/2

This is not a fitted filter; it is the closed-form centroid factor for an arc of angular support γ. The Sagitta Drift arises when two sources produce two such centroid vectors whose Linear Average yields a net inward bias at the target.

3. The Drift Vector (Dij):
The net gravitational pull on the target is the Linear Average of these two centroids.

Dij =
CA + CB 2

Geometrically, this resultant vector points towards the midpoint of the chord connecting the two source points. This geometric offset (the "Sagitta") represents the drift.

2.1 Formalization: The Solenoidal Green's Function

The Green's Function in CMFT operates not merely as a decay filter, but as a Vector Selection Mechanism. It connects the Pure Momentum of the atomic flux to the Tension of the vacuum by isolating the specific geometric component that survives cancellation.

1. The Survival of Rotation:
While the radial "push-pull" influence of the flux effectively cancels out in the pressurized medium, the Solenoidal (Rotational) Influence at the target does not. This is because the flux is relativistic momentum independent of the medium, traveling at finite speed c.

2. Phase Accumulation & The Drift:
This finite speed introduces Phase Accumulation across the volume of the source. The influence arriving at the target is therefore not a vector point, but a phase-delayed Arc of Influence. The Green's Function calculates the Geometric Centroid of this rotating flux.

GCMFT : Flux(Jrot) → Phase Arc → Sagitta Drift (Tension)

The Sagitta Drift emerges because the linear average of these centroids lies inside the geometric chord. This offset represents a "ghost vector" or defect in the field. The vacuum, maintaining pressure in balance with the flux, exerts Tension to close this geometric tear, which we perceive as the gravitational pull.

This confirms that the CMFT model is a Constructive Lagrangian Solver—it reproduces the necessary curvature not by bending the coordinate system, but by solving the wave equation for a compressible fluid using kinematic geometry.

3. The General Equation: Unified Flux Integration

While the Geometric Seed (Section 2) defines the efficiency of the connection, we must rigorously define the Input being connected. To capture the full kinematic behavior of the stress tensor (including Frame Dragging and Pressure), we replace scalar mass with a Flux 4-Vector.

3.1 The Flux 4-Vector (Φ)

Every voxel i in the volume is defined as a generator of momentum flux:

Φi = [ Φ0 Φvec ]

3.2 The Unified Drift Calculation

The total drift force is derived by integrating the interaction of these 4-Vectors over every unique pair. The Seed Efficiency (sinc) is applied to the radial term, while the Kinematic Shear is applied to the transverse term.

For a target T and a source voxel i with unit vector :

Dtotal =
[
Φi0 · ΦT0 r2
· sinc(γ/2) ]
Radial Tension (The Seed)
+
[
Φivec × r2
· κ ]
Transverse Shear (Kinematic Memory)

The Integration Logic:

4. The Sampling Method: Voxel Grid

Because summing 1050 atoms is impossible, we utilize a Monte Carlo Voxel Approximation. The Earth is discretized into Representative Volume Elements (RVEs) forming a 3D Point Cloud.

The Grid Construction:

This reduces the Earth to a cloud of weighted points. The integration runs in O(N2) time, calculating the precise Sagitta Drift for every voxel pair.

5. Calibration: The Far-Field Anchor

To validate the Corley Momentum Flux profile against standard Newtonian gravity, we must establish a calibration baseline. This initial estimate attempts to trace the binding energy of the system via the distribution of electrons (Flux Generators) defined in Subsection 1 (Core vs. Mantle).

Why the Moon?
We initially select the Moon's distance (60 Earth Radii) as an anchor because the angular width of the Earth is negligible (γ ≈ 0). Since sinc(0) = 1.0, this represents the Newtonian Ideal. By pinning the two theories together at this "Clean" far-field point, we can observe how the CMFT profile diverges as we approach the "Messy" near-field surface.

The Calibration Formula:
We calculate the ratio of efficiency between the Surface and the Orbit.

Ratio ≈
( FSurfCMFT / FOrbitCMFT ) ( 1/RSurf2 ) / ( 1/ROrbit2 )

The Result: ~97%
This initial calculation indicates that while the Far Field (Moon) receives 100% of the Earth's potential flux, the Surface receives approximately 97%.

The missing 3% is not error; it is the Geometric Deficit caused by the large opening angles (γ) of flux pairs near the surface, where the "Arc Centroids" drift inward.

Crucially, the exact magnitude of this deficit depends on the density profile used. To understand the true fit, we must examine the entire curve rather than a single point. Readers should refer to Section 11 Simulation: Electron-Flux Coherency Test, which performs a live pairwise integration to visualize this profile and allows you to interactively test different calibration points (Surface vs. Moon).

----------------- cmft/section7.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 7

7. Simulation: Kinematic Mapping

In this first simulation, I visualize the Kinematic Geometry of the interaction. Here, I allow atoms to update their positions directly based on the calculated Sagitta vector of their neighbors.

Technical Note: Discrete Time as a Proxy

This simulation uses discrete time steps. I acknowledge that the universe is not discrete in this specific way. However, using discrete time here is a deliberate and valid mapping technique. In a continuous universe with delayed momentum transfer, interactions suffer from phase accumulation. In a discrete simulation, interactions suffer from integration error. I argue that on average, the "error" profile of discrete time acts as a faithful proxy for the "phase accumulation" profile of delayed momentum.

----------------- cmft/section8.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 8

8. Quantum Mechanics: The Hydrodynamic Resonance

Standard physics presents Quantum Mechanics as a realm of probabilistic magic, where particles exist in undefined states until observed. CMFT restores mechanical sanity by defining particles not as mathematical points, but as topological features of the pressurized fluid substrate.

Particles as Solitons (The Relativistic Curl)

Particles are formed by the hydrodynamics of the vacuum pressure. Because the substrate pressure is immense, momentum transfers at the "speed of sound" of the medium (c). This rapid transfer creates a shockwave that eventually hits a "wall" where it can no longer propagate linearly.

To conserve energy, the flow undergoes a Relativistic Curl, turning back on itself to form a closed, stable loop. This self-trapped vortex is the physical reality of the Dirac Spinor.

The Automatic Emergence of Electromagnetism

In standard physics, Charge is treated as an intrinsic "magic property" tacked onto a mass. In CMFT, Charge is strictly Hydrodynamic Chirality. The emergence of Electromagnetism is not an addition to the theory; it is the inevitable result of a rotating soliton interacting with a superfluid.

Because the particle is a Relativistic Curl (a closed flux loop), it inevitably disturbs the surrounding vacuum pressure. This disturbance creates two distinct, orthogonal vector fields that we historically mistook for separate forces:

The Hydrodynamic Nature of Time

In this framework, Time is not a fundamental dimension; it is a Direction of Flow within the substrate. It exists at a level below the soliton, arising from the bulk momentum transfer of the vacuum.

Spontaneous Symmetry Breaking: The vacuum substrate itself is neutral; it has no intrinsic "preferred" time. However, the formation of matter creates a massive, self-reinforcing momentum current. Once this flow is established in one direction (chirality), it locks in the "Arrow of Time" for that entire local region.

This explains why we see a universe dominated by matter. It is not a fundamental asymmetry, but a Segregation of Flow. An anti-matter universe could exist, but it would have to be physically distant—a separate nucleation event where the "river" happened to break in the opposite direction.

Maxwell's Equations  ≡  Euler Equations for Superfluid Flow

The Orthogonal Lock: Why are the Electric and Magnetic fields always perpendicular? This is not a law; it is geometry. The flow of a fluid (Magnetism) is always orthogonal to the gradient of its pressure (Electricity). The "Relativistic Curl" of the soliton effectively locks these two properties together.

Light as a Shear Soliton: This framework clarifies the nature of the Photon. It propagates as a Transverse Shear Wave (oscillating against the vacuum tension), but it maintains its structural integrity as an Open Soliton (a self-reinforcing helix). It does not disperse like a water ripple because the helical geometry creates a self-sustaining packet of shear stress.

Entanglement: The High-Q Resonance Antenna

CMFT resolves "spooky action at a distance" by replacing non-local magic with Structural Engineering. Entanglement is not a probability cloud; it is a high-tension physical bridge.

The "Impedance Pop": Resolving the Speed Limit

How does the collapse happen "instantly" if the medium has a speed limit (c)? The answer lies in the fragility of resonance.

Measurement is Destructive Testing: A detector is not a passive observer; it is a physical boundary condition. When you measure a particle, you impinge upon its Hard Wall, creating an Impedance Mismatch.

Because the "Entangled State" is a high-Q standing wave, it requires perfect impedance matching at both ends to exist. The moment you touch one end, the Condition for Resonance is violated. The standing wave does not need to send a signal to the other side to tell it to stop; the structural geometry required to sustain the wave has vanished.

State Collapse (Boolean Logic)  ≠  Energy Dissipation (Propagation Speed)

The energy of the broken streamline dissipates at c, but the Correlated State ceases to exist at t=0 because the bridge has been snapped. The "spooky action" is simply the structural failure of a taut system.

The Double Slit: The "River and the Boat"

The Double Slit experiment is widely considered the central mystery of quantum mechanics. In the Standard Model, it requires the particle to magically travel through both slits simultaneously to interfere with itself. CMFT offers a trivial hydrodynamic solution: The particle does not interfere; the vacuum does.

Why Observation Kills the Pattern: Why does placing a detector at the slit destroy the interference? Because the detector is also Matter (a Flux Generator). By placing a metal probe near the slit, you introduce a new, massive source of local flux. This "noise" washes out the delicate pressure ridges generated by the distant slit edges. The river becomes choppy, the guidance grooves vanish, and the particle reverts to a simple ballistic path.

----------------- cmft/section9.html ----------------- The Corley Momentum Flux Theory: A Unified Framework - Section 9

9. Macroscopic Simulation: The Cavendish Emergence

While the previous sections describe the microscopic cause, this simulation demonstrates the macroscopic effect. By binding atoms into crystalline lattices, we see how the chaotic atomic wobble averages out into a stable, directional pull between macroscopic bodies.

Technical Note: Dimensional Reduction & Discrete Time Mechanics

1. The "Slab" Integral: This simulation projects a 3D volumetric interaction onto a 2D plane. To maintain physical fidelity, we do not use the point-particle law (1/r2) nor the infinite line law (1/r). Instead, we model the particles as Finite Cylindrical Slices (Slabs) of thickness L.

The force law is derived by integrating the 3D gravitational stress over the finite z-axis thickness of the slab:

Fslab(r)  ∝  ∫-L/2+L/2 r dz / (r2 + z2)3/2  =  1 / (r √(1 + (r/L)2))

In the simulation regime where particle separation (r) is comparable to the slice thickness (L), the effective power law of this integral is F ∝ 1/r1.5. This guarantees that potential energy U(r) ∝ -1/r0.5 is strictly conserved within this dimensionality.

2. Discrete Time as a Proxy: Like the first simulation, this engine utilizes discrete time steps. In standard physics engines, integration error is viewed as a flaw to be corrected to simulate instantaneous action-at-a-distance (infinite signal speed). In the CMFT framework, these discrete steps act as a deliberate proxy for delayed momentum transfer. By allowing the 'error' of discrete updates to persist, we capture the physical consequences of the finite speed of light (c), where momentum phase accumulation creates the emergent directional bias we perceive as gravity. Discrete time steps are utilized as a deliberate proxy for Phase Accumulation to demonstrate the robustness of the drift emergence

Interactive: Click/Touch and drag any crystal to disrupt the system.