|
12 | 12 | from .inline_methods import get_plasma_ADK_ref |
13 | 13 | from .inline_methods import get_OFI_heating |
14 | 14 | from .inline_methods import wake_kernel_integrate |
| 15 | +from .inline_methods import laplacian_fd |
15 | 16 |
|
16 | 17 | r_e = e**2 / m_e / c**2 / 4 / pi /epsilon_0 |
17 | 18 | mc_m2 = 1. / ( m_e * c )**2 |
@@ -123,46 +124,25 @@ def get_density(self, E_ft ): |
123 | 124 | sim = self.sim |
124 | 125 | prop = self.sim.prop |
125 | 126 | n_pe = self.n_pe |
| 127 | + xi_ax = c * ScalarFieldEnvelope(*sim.EnvArgs).t |
| 128 | + r_ax = prop.r_new |
126 | 129 | k_p = np.sqrt( 4 * np.pi * r_e * n_pe ) |
127 | 130 |
|
128 | | - # normalized vector potential |
| 131 | + # get normalized vector potential |
129 | 132 | A_ft = -1j * prop.omega_inv * e_mc * E_ft |
130 | 133 | A_ft *= (prop.kz[:, None]>0.0) |
131 | 134 |
|
132 | | - # from frequency to time |
| 135 | + # bring from frequency to time domain |
133 | 136 | A_obj = ScalarFieldEnvelope(*sim.EnvArgs) |
134 | 137 | A_obj.t += sim.dt_shift |
135 | 138 | A_obj.t_loc += sim.dt_shift |
136 | 139 | A_t = A_obj.import_field_ft(A_ft).Field |
137 | 140 |
|
138 | 141 | # cycle-averaged square of normalized vector potential |
139 | | - A2_t = 0.5 * np.astype( np.abs(A_t)**2, A_t.dtype ) |
140 | | - |
141 | | - # from time to frequency |
142 | | - A2_obj = ScalarFieldEnvelope(*sim.EnvArgs) |
143 | | - A2_obj.t += sim.dt_shift |
144 | | - A2_obj.t_loc += sim.dt_shift |
145 | | - A2_ft = A2_obj.import_field(A2_t).Field_ft |
146 | | - |
147 | | - # transverse spectral transform |
148 | | - A2_ts = prop.perform_transfer_TST( A2_ft ) |
149 | | - |
150 | | - # wakefield kernel (spectral calculation of Laplacian) |
151 | | - k_env = ScalarFieldEnvelope(*sim.EnvArgs).k_freq_base |
152 | | - laplacian_ts = -( k_env[:, None]**2 + prop.kr[None,:]**2 ) |
153 | | - laplacian_ts = prop.bcknd.to_device(laplacian_ts) |
154 | | - |
155 | | - kernel_ts = 0.5 / k_p * laplacian_ts * A2_ts |
156 | | - kernel_ft = prop.perform_iTST_transfer(kernel_ts) |
157 | | - |
158 | | - kernel_obj = ScalarFieldEnvelope(*sim.EnvArgs) |
159 | | - kernel_obj.t += sim.dt_shift |
160 | | - kernel_obj.t_loc += sim.dt_shift |
161 | | - kernel_t = kernel_obj.import_field_ft(kernel_ft).Field |
162 | | - kernel_t = np.abs(kernel_t) |
| 142 | + A2_t = 0.5 * np.abs(A_t)**2 |
| 143 | + kernel_t = 0.5 / k_p * laplacian_fd(A2_t, xi_ax, r_ax) |
163 | 144 |
|
164 | 145 | # do the integral |
165 | | - xi_ax = c * kernel_obj.t.copy() |
166 | 146 | delta_n = np.zeros_like(kernel_t) |
167 | 147 | delta_n = wake_kernel_integrate(kernel_t, delta_n, k_p, xi_ax) |
168 | 148 |
|
|
0 commit comments