def energy_radiated_approx2(self,trajectory, gamma, x, y, distance):
N = trajectory.nb_points()
n_chap = np.array([x - trajectory.x * codata.c, y - trajectory.y * codata.c, distance - trajectory.z * codata.c])
# R = np.zeros(n_chap.shape[1])
# for i in range(n_chap.shape[1]):
# R[i] = np.linalg.norm(n_chap[:, i])
# n_chap[:, i] /= R[i]
R = np.sqrt( n_chap[0]**2 + n_chap[1]**2 + n_chap[2]**2 )
n_chap[0,:] /= R
n_chap[1,:] /= R
n_chap[2,:] /= R
E = np.zeros((3,), dtype=np.complex)
integrand = np.zeros((3, N), dtype=np.complex)
A1 = (n_chap[0] * trajectory.a_x + n_chap[1] * trajectory.a_y + n_chap[2] * trajectory.a_z)
A2 = (n_chap[0] * (n_chap[0] - trajectory.v_x) + n_chap[1] * (n_chap[1] - trajectory.v_y)
+ n_chap[2] * (n_chap[2] - trajectory.v_z))
Alpha2 = np.exp(0. + 1j * self.photon_frequency * (trajectory.t + R / codata.c))
Alpha1 = (1.0 / (1.0 - n_chap[0] * trajectory.v_x
- n_chap[1] * trajectory.v_y - n_chap[2] * trajectory.v_z)) ** 2
integrand[0] += ((A1 * (n_chap[0] - trajectory.v_x) - A2 * trajectory.a_x)
) * Alpha2 * Alpha1
integrand[1] += ((A1 * (n_chap[1] - trajectory.v_y) - A2 * trajectory.a_y)
) * Alpha2 * Alpha1
integrand[2] += ((A1 * (n_chap[2] - trajectory.v_z) - A2 * trajectory.a_z)
) * Alpha2 * Alpha1
for k in range(3):
E[k] = np.trapz(integrand[k], trajectory.t)
#E[k] = integrate.simps(integrand[k], trajectory.t)
return E
评论列表
文章目录