Example #1
0
def _efieldn_linearized(x, y, sig_x, sig_y):
    '''
    Returns linearized field
    '''
    a = pm.sqrt(2) * sig_x
    b = pm.sqrt(2) * sig_y
    amplitude = 1. / (2. * np.pi * epsilon_0 * (a + b))
    return x / a * amplitude, y / b * amplitude
Example #2
0
def _efieldn_wb(x, y, sigma_x, sigma_y):
    a = sigma_x * pm.sqrt(3)
    b = sigma_y * pm.sqrt(3)
    zs = x - 1j * y
    if x**2 / (a)**2 + y**2 / (b)**2 <= 1:
        chi = x / a + 1j * y / b
        omegs = b * x / a - 1j * a * y / b
        efield = 8.0*chi/(a+b) * \
            (1.0-(2.0*zs+omegs)*chi/(3.0*(a+b)))
    else:
        zs = pm.abs(x) + 1j * pm.abs(y)
        sqrt_diff = pm.sqrt(zs**2 - a**2 + b**2)
        first_term = 2.0 * zs / (zs + sqrt_diff)
        efield = 2.0 / zs * first_term * (zs + 2.0 * sqrt_diff) / (3.0 * zs)
        efield = efield.real * pm.sign(x) - 1.0j * efield.imag * pm.sign(y)
    denom = 4. * np.pi * epsilon_0
    return efield.real / denom, efield.imag / denom
Example #3
0
def _efieldn_kv_b(x, y, sigma_x, sigma_y):
    '''
        Field of a KV distrubition calculated as in here: https://cds.cern.ch/record/258225/files/P00020427.pdf
    '''
    a = sigma_x * pm.sqrt(2)
    b = sigma_y * pm.sqrt(2)
    if x == 0 and y == 0:
        return 0, 0
    elif (x / a)**2 + (y / b)**2 <= 1:
        efield_x = 4.0 / (a + b) * x / a
        efield_y = 4.0 / (a + b) * y / b
    else:
        zbar = x - 1j * y
        efield = 4.0 / (zbar + pm.sqrt(zbar * zbar - a * a + b * b))
        efield_x = efield.real
        efield_y = -efield.imag
    denom = 4 * np.pi * epsilon_0
    return efield_x / denom, efield_y / denom
Example #4
0
def _efieldn_kv_a(x, y, sigma_x, sigma_y):
    '''
        Field of a KV distrubition calculated as in here: https://cds.cern.ch/record/258225/files/P00020427.pdf
    '''
    a = sigma_x * pm.sqrt(2)
    b = sigma_y * pm.sqrt(2)
    if (x / a)**2 + (y / b)**2 <= 1:
        efield_x = 4.0 / (a + b) * x / a
        efield_y = 4.0 / (a + b) * y / b
    else:
        uxy = (x)**2 - (y)**2 - (a)**2 + (b)**2
        vxy = uxy**2 + (2.0 * x * y)**2
        efield_x = 4.0 / (a**2 - b**2) * (
            x - pm.sign(x) / pm.sqrt(2.0) * pm.sqrt(uxy + pm.sqrt(vxy)))
        uxy = (y)**2 - (x)**2 - (b)**2 + (a)**2
        efield_y = 4.0 / (b**2 - a**2) * (
            y - pm.sign(y) / pm.sqrt(2.0) * pm.sqrt(uxy + pm.sqrt(vxy)))
    denom = 4 * np.pi * epsilon_0
    return efield_x / denom, efield_y / denom
Example #5
0
def _sig_sqrt(sig_x, sig_y):
    return pm.sqrt(2 * (sig_x**2 - sig_y**2))