Beispiel #1
0
import PyPIC.geom_impact_ellip as ell

from scipy import rand
import numpy as np

sigma = .5

R_cham = 10 * sigma
Dh = sigma / 20.

from scipy.constants import e, epsilon_0

qe = e
eps0 = epsilon_0

chamber = ell.ellip_cham_geom_object(x_aper=R_cham, y_aper=R_cham)

#~ picFD = PIC_FD.FiniteDifferences_Staircase_SquareGrid(chamb = chamber, Dh = Dh)
#~ picFDSW = PIC_FDSW.FiniteDifferences_ShortleyWeller_SquareGrid(chamb = chamber, Dh = Dh)
picFFT = PIC_FFT.FFT_OpenBoundary_SquareGrid(x_aper=chamber.x_aper,
                                             y_aper=chamber.y_aper,
                                             Dh=Dh)

YY, XX = np.meshgrid(picFFT.yg, picFFT.xg)
sigmax = sigma
sigmay = sigma
x_beam_pos = 0.
y_beam_pos = 0.
rho_mat = 1. / (2. * np.pi * sigmax * sigmay) * np.exp(-(XX - x_beam_pos)**2 /
                                                       (2. * sigmax**2) -
                                                       (YY - y_beam_pos)**2 /
# Bassetti-Erskine parameters
Dh_BE = 0.3 * bunch.sigma_x()

#  Multi grid parameters
Dh_single_ext = 1e-3
Sx_target = 10 * bunch.sigma_x()
Sy_target = 10 * bunch.sigma_y()
Dh_target = 0.5 * bunch.sigma_x()  #.3

# chamber parameters
x_aper = 22e-3
y_aper = 18e-3

# build chamber
chamber = ell.ellip_cham_geom_object(x_aper=x_aper, y_aper=y_aper)
Vx, Vy = chamber.points_on_boundary(N_points=200)

# build Bassetti Erskine
pic_BE = PIC_BE.Interpolated_Bassetti_Erskine(x_aper=x_aper,
                                              y_aper=y_aper,
                                              Dh=Dh_BE,
                                              sigmax=bunch.sigma_x(),
                                              sigmay=bunch.sigma_y(),
                                              n_imag_ellip=20,
                                              tot_charge=bunch.intensity *
                                              bunch.charge)

# build single grid pic
pic_singlegrid = PIC_FDSW.FiniteDifferences_ShortleyWeller_SquareGrid(
    chamb=chamber, Dh=Dh_single, sparse_solver=sparse_solver)