def energy_radiated_farfield2(self, trajectory, gamma, x, y, distance):
N = trajectory.nb_points()
if distance == None:
# in radian :
n_chap = np.array([x, y, 1.0 - 0.5 * (x ** 2 + y ** 2)])
X = np.sqrt(x ** 2 + y ** 2 )#TODO a changer
#in meters :
else :
X = np.sqrt(x ** 2 + y ** 2 + distance ** 2)
n_chap = np.array([x, y, distance]) / X
R= X/codata.c - n_chap[0] * trajectory.x- n_chap[1] * trajectory.y - n_chap[2] * trajectory.z
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))
Alpha1 = (1.0 / (1.0 - n_chap[0] * trajectory.v_x
- n_chap[1] * trajectory.v_y - n_chap[2] * trajectory.v_z)) ** 2
cst=codata.c/(R*gamma**2)
integrand[0] += (A1 * (n_chap[0] - trajectory.v_x) - A2 * trajectory.a_x
+ cst * (n_chap[0] - trajectory.v_x) ) * Alpha2 * Alpha1
integrand[1] += (A1 * (n_chap[1] - trajectory.v_y) - A2 * trajectory.a_y
+ cst * (n_chap[1] - trajectory.v_y) ) * Alpha2 * Alpha1
integrand[2] += (A1 * (n_chap[2] - trajectory.v_z) - A2 * trajectory.a_z
+ cst * (n_chap[2] - trajectory.v_z) ) * Alpha2 * Alpha1
for k in range(3):
# E[k] = np.trapz(integrand[k], self.trajectory.t)
E[k] = np.trapz(integrand[k], trajectory.t)
E *= -1j * np.exp(1j * self.photon_frequency / codata.c * (n_chap[0] * x + n_chap[1] * y + n_chap[2] * distance))
return E
评论列表
文章目录