# FULL COLLISION RUN

# ============================================================================= # FULL COLLISION RUN # ============================================================================= print("\n[Launching full collision run...]") t_max = 100.0 dt = 0.0005 n_steps = int(t_max / dt) # 200000 n_save = 400 # save every 0.2 time units save_interval = n_steps // n_save # 500 steps Psi = Psi_init.copy() Psi_dot = Psi_dot_init.copy() snapshots = [] times = [] energies = [] peaks = [] def save_snapshot(step, Psi): snapshots.append(Psi.astype(np.complex64).copy()) times.append(step * dt) energies.append(compute_energy(Psi)) peaks.append(float(np.max(np.abs(Psi)))) for step in range(n_steps + 1): if step % save_interval == 0: save_snapshot(step, Psi) print(f" step={step:7d}/{n_steps}, t={step*dt:8.3f}, " f"E={energies[-1]:.6e}, Peak={peaks[-1]:.4f}") acc = acceleration_real(Psi) Psi_dot_half = Psi_dot + 0.5 * dt * acc Psi_new = Psi + dt * Psi_dot_half acc_new = acceleration_real(Psi_new) Psi_dot_new = Psi_dot_half + 0.5 * dt * acc_new Psi = Psi_new Psi_dot = Psi_dot_new # ============================================================================= # SAVE COLLISION DATA # ============================================================================= timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") out_file = f"test_2_collision_0p30v_{timestamp}.npz" np.savez( out_file, Psi_snapshots=np.array(snapshots), times=np.array(times), energies=np.array(energies), peaks=np.array(peaks), r_grid=r_grid, z_grid=z_grid, dr=dr, dz=dz, v=v, v_boost=v_boost, mu=mu, lam=lam, kappa=kappa, m=m, S_max=S_max, Psi_sat=Psi_sat ) print(f"\n✓ Full collision run complete. Data saved to: {out_file}") print("="*80)

Popular posts from this blog

THE GOLDEN BALLROOM/BUNKER

Conceptual Summary #2: (∂t2​S−c2∇2S+βS3)=σ(x,t)⋅FR​(C[Ψ])

ICE PROUDLY ANNOUNCES NEW “ELITE” TASK FORCE COMMANDER JEREMY DEWITTE