This commit is contained in:
Yael-II
2025-01-19 17:31:02 +01:00
parent 34371f3532
commit 6b06be4a6b
27 changed files with 337 additions and 32 deletions

View File

@@ -0,0 +1,58 @@
import numpy as np
import matplotlib.pyplot as plt
import potentials as pot
import energies as ene
import integrator as itg
import initial_conditions as init
import poincare_sections as pcs
h = 0.01
N_inter = 30000
eps = 1e-2
x_0 = 0.0
y_vals = np.linspace(0, 0.6, 50)
E = 0.125 # 1/12
# Initialize lists to store all Poincaré points across different initial conditions
all_pcs_pos_y = []
all_pcs_vel_y = []
for i in range(len(y_vals)):
y0 = y_vals[i]
W_part = init.one_part(x_0, y0, 0, 0)
POT = pot.hh_potential(W_part)[0]
u_0 = np.sqrt(2 * (E - POT))
v_0 = 0.0
W_part[1, 0] = u_0
W_part[1, 1] = v_0
# Perform integration
pos_t, positions = itg.rk4(0, W_part, h, N_inter, pot.hh_evolution)
# Extract positions and velocities
pos_x = positions[:, 0, 0]
pos_y = positions[:, 0, 1]
vel_x = positions[:, 1, 0]
vel_y = positions[:, 1, 1]
# Find Poincaré section points for the current initial condition
pcs_pos_y, pcs_vel_y = pcs.pcs_find(pos_x, pos_y, vel_x, vel_y)
# Append the current Poincaré section points to the overall lists
all_pcs_pos_y.extend(pcs_pos_y)
all_pcs_vel_y.extend(pcs_vel_y)
# Plotting all Poincaré section points on the same graph
fig, ax = plt.subplots()
ax.scatter(all_pcs_pos_y, all_pcs_vel_y, s=2, color="C4")
# Set labels and legend
ax.set_xlabel("coordinate y")
ax.set_ylabel("velocity v")
ax.set_title("Combined Poincaré Section for Multiple Initial y0 Values")
plt.show()