Nova & Gear
Gear Gear
Hey Nova, I’ve been building a little prototype that can simulate the extreme tidal forces you’d find near a black hole—thought you’d like to test it out?
Nova Nova
That sounds incredible—tuning in to the universe’s edge always gets my brain buzzing. Just send me the specs, and I’ll stare at the data until the stars start aligning. But be ready for a deep dive into the math; I’ll probably keep calculating orbital periods for a few hours. 😄
Gear Gear
Sure thing! Here’s the low‑down on the tidal‑force simulator: - **Model**: 3‑body system (black hole, satellite, test mass) - **Black hole mass**: 10 solar masses (≈1.99×10³⁰ kg) - **Event horizon radius**: 29 km - **Satellite orbit**: 200 km above the horizon, circular, speed 0.4 c - **Test mass**: 1 kg particle at the satellite’s perigee, starting 10 m behind - **Gravitational constant**: 6.674×10⁻¹¹ N·m²/kg² - **Time step**: 1 ms for numerical integration - **Output**: Position, velocity, tidal acceleration vs. time; plots for periastron precession and stretch factor - **Software**: Custom Python script with SciPy integrator (RK45) - **Run time**: ~10 s simulation, ~2 s compute on a mid‑range CPU Just plug the numbers into the script and you’ll see the test mass tear apart at periapsis. Let me know if you want the code or need tweaks!
Nova Nova
Wow, that’s right up my alley! The numbers look solid—just give me the script and I’ll run it, watching the 1 kg rock get shredded in that 0.4 c dance. If it blows up any more than expected, I’ll tweak the step size or maybe add a relativistic correction. Let’s see the plots—curious to see that periastron precession you mentioned. Send the code over, and I’ll get to work.
Gear Gear
import numpy as np from scipy.integrate import solve_ivp import matplotlib.pyplot as plt # Constants G = 6.674e-11 # m^3 kg^-1 s^-2 Mbh = 10 * 1.988e30 # 10 solar masses in kg Rh = 2 * G * Mbh / (3e8**2) # Schwarzschild radius (~29 km) r_orbit = Rh + 200e3 # 200 km above horizon v_orbit = 0.4 * 3e8 # 0.4c m_test = 1.0 # kg # Initial conditions: satellite position and velocity sat_pos = np.array([r_orbit, 0.0, 0.0]) sat_vel = np.array([0.0, v_orbit, 0.0]) # Test mass 10 m behind satellite test_pos = sat_pos + np.array([-10.0, 0.0, 0.0]) test_vel = sat_vel # State vector: [sat_x, sat_y, sat_z, sat_vx, sat_vy, sat_vz, # test_x, test_y, test_z, test_vx, test_vy, test_vz] y0 = np.hstack((sat_pos, sat_vel, test_pos, test_vel)) def accel(pos): r = np.linalg.norm(pos) return -G * Mbh * pos / r**3 def derivatives(t, y): # Satellite sat_p = y[0:3] sat_v = y[3:6] sat_a = accel(sat_p) # Test mass test_p = y[6:9] test_v = y[9:12] test_a = accel(test_p) # Tidal acceleration (difference) tidal = test_a - sat_a return np.hstack((sat_v, sat_a, test_v, tidal)) t_span = (0, 10) # seconds t_eval = np.arange(0, 10, 0.001) sol = solve_ivp(derivatives, t_span, y0, t_eval=t_eval, rtol=1e-8, atol=1e-10) # Extract positions sat_positions = sol.y[0:3, :] test_positions = sol.y[6:9, :] # Plot trajectories plt.figure(figsize=(8,6)) plt.plot(sat_positions[0], sat_positions[1], 'b', label='Satellite') plt.plot(test_positions[0], test_positions[1], 'r', label='Test mass') plt.scatter([sat_positions[0,0]], [sat_positions[1,0]], c='b', s=50) plt.scatter([test_positions[0,0]], [test_positions[1,0]], c='r', s=50) plt.xlabel('x (m)') plt.ylabel('y (m)') plt.title('Orbital trajectories') plt.legend() plt.axis('equal') plt.grid(True) plt.show() # Plot tidal acceleration magnitude vs time tidal_mag = np.linalg.norm(sol.y[9:12, :] - sol.y[3:6, :], axis=0) plt.figure() plt.plot(sol.t, tidal_mag) plt.xlabel('Time (s)') plt.ylabel('Tidal acceleration magnitude (m/s²)') plt.title('Tidal forces over time') plt.grid(True) plt.show()
Nova Nova
That looks solid—thanks for the code! I’ll run it right now and watch how the test mass stretches out at periastron. If the tidal spikes look a bit too sharp, maybe we could add a tiny relativistic correction to the acceleration. Let me know what the plots show; I’m curious to see the periastron precession you mentioned.
Gear Gear
Hey Nova, the plots will show the satellite looping in that 200‑km orbit and the test mass drifting away right as it hits the periastron. The tidal acceleration spikes right at that closest approach, stretching the rock. If you add a tiny relativistic term—something like 3 G Mbh/(c² r³)—you’ll see the periapsis precess a few degrees over each orbit. The precession will be subtle, but you’ll spot a shift in the trajectory if you overlay consecutive loops. Let me know how the curves look once you run it, and we can fine‑tune the correction!