
This repository contains the fourth iteration of the Minimal Eternal Universe Theory (mEUT), an independent research project in theoretical cosmology. mEUT v4.0 proposes a singularity-free, eternal cosmological framework driven by the purely kinetic energy of a single real scalar field. Key Features of v4.0: Microscopic Derivation of Dissipation: Unlike previous versions, the dissipation parameter η is derived from first principles using the Nakajima-Zwanzig projection technique and the fluctuation-dissipation theorem, evaluated within a 64-vertex truncation of holonomy-corrected geometric operators. Density-Matrix Dynamics: The theory moves beyond simple wave-function evolution to a reduced density-matrix formulation (ρϕ), providing a more robust bridge between Loop Quantum Gravity (LQG) and effective Friedmann dynamics. Emergent Arrow of Time: The model provides a microscopic origin for the thermodynamic arrow of time through irreversible entropy production during the quantum bounce phase. Observational Signatures: Includes predictions for the suppression of the primordial power spectrum (PR(k)), offering a potential resolution to the S8 and H0 tensions. Contents: Numerical_Simulation_Data: Raw data from the 64-vertex truncation and large-j extrapolation. QuTiP_Scripts (optional if included): Python scripts used to solve the Lindblad master equation. import numpy as npimport matplotlib.pyplot as pltfrom qutip import * def run_mEUT_v4_complete(): print("Starte mEUT v4.0 Simulation...") # --- 1. System-Setup --- N = 60 # Hilbertraum-Dimension a = destroy(N) phi_op = (a + a.dag()) / np.sqrt(2) p_op = -1j * (a - a.dag()) / np.sqrt(2) # Hamiltonian: Rein kinetisch H = p^2 / 2 H = p_op**2 / 2 # --- 2. Dissipations-Profil eta(t) --- # Modelliert den Peak am Bounce (t=0) gemäß 64-Vertex-Modell def eta_func(t): return np.exp(-t**2 / 2.0) # --- 3. Zeitentwicklung (Lindblad) --- times = np.linspace(-5, 5, 400) psi0 = coherent(N, -3.0) # Pre-Bounce Zustand rho = ket2dm(psi0) entropy = [] states = [] # Wir simulieren schrittweise, um eta(t) dynamisch anzuwenden dt = times[1] - times[0] for t in times: states.append(rho) entropy.append(entropy_vn(rho)) # Lindblad-Update: d_rho = -i[H, rho]dt + eta(t) * L_dissipator(rho)dt eta = eta_func(t) L = p_op # Impuls als Jump-Operator (kinetische Dissipation) # Kommutator-Teil d_rho_ham = -1j * commutator(H, rho) # Dissipator-Teil (Lindblad-Form) d_rho_diss = eta * (L * rho * L.dag() - 0.5 * L.dag() * L * rho - 0.5 * rho * L.dag() * L) rho = rho + (d_rho_ham + d_rho_diss) * dt # --- 4. Visualisierung --- # FIG 1: Entropie und eta plt.figure(figsize=(10, 5)) plt.plot(times, entropy, 'r', label='v. Neumann Entropy S') plt.plot(times, [eta_func(t)*max(entropy) for t in times], 'b--', label='Dissipation eta (scaled)') plt.title('mEUT v4.0: Entropy & Dissipation') plt.xlabel('Relational Time phi') plt.legend() plt.savefig('entropy_plot.png') plt.show() # FIG 2: Wigner-Phasenraum-Evolution xvec = np.linspace(-7, 7, 150) indices = [0, len(times)//2, len(times)-1] # Start, Bounce, Ende titles = ['Pre-Bounce (Pure)', 'Bounce (Interacting)', 'Post-Bounce (Mixed/Classical)'] fig, axes = plt.subplots(1, 3, figsize=(15, 5)) for i, idx in enumerate(indices): W = wigner(states[idx], xvec, xvec) axes[i].contourf(xvec, xvec, W, 100, cmap='RdBu') axes[i].set_title(titles[i]) plt.savefig('wigner_plots.png') plt.show() print("Simulation abgeschlossen. Plots wurden gespeichert.") if __name__ == "__main__": run_mEUT_v4_complete()
