diff --git a/mbtrack2/impedance/resistive_wall.py b/mbtrack2/impedance/resistive_wall.py index dcee93e4a36eb696fbb40dfa122637ced4983793..0c968ebfc37655eeb1d85e93733e9d81d48a1049 100644 --- a/mbtrack2/impedance/resistive_wall.py +++ b/mbtrack2/impedance/resistive_wall.py @@ -79,7 +79,6 @@ class CircularResistiveWall(WakeField): [4] : Zotter, Bruno W., and Semyon A. Kheifets (1998). Impedances and wakes in high-energy particle accelerators. World Scientific. - """ def __init__(self, @@ -168,7 +167,8 @@ class CircularResistiveWall(WakeField): if exact == True: idx2 = time == 0 idx3 = np.logical_not(np.logical_or(idx1, idx2)) - factor = self.Z0 * c / (3 * np.pi * self.radius**2) * self.length + factor = ( self.Z0 * c / (3 * np.pi * self.radius**2) * + self.length ) if np.any(idx2): # fundamental theorem of beam loading wl[idx2] = 3 * factor / 2 @@ -217,8 +217,9 @@ class CircularResistiveWall(WakeField): if exact == True: idx2 = time == 0 idx3 = np.logical_not(np.logical_or(idx1, idx2)) - factor = ( (self.Z0 * c**2 * self.t0) / (3 * np.pi * self.radius**4) * - self.length ) + factor = ( (self.Z0 * c**2 * self.t0) / + (3 * np.pi * self.radius**4) * + self.length ) wt[idx3] = self.__TransWakeExact(time[idx3], factor) else: idx2 = np.logical_not(idx1) @@ -226,22 +227,31 @@ class CircularResistiveWall(WakeField): return wt def __LongWakeExact(self, t, factor): - wl = np.real( factor * ( 4 * np.exp(-1 * t / self.t0) - * np.cos(np.sqrt(3) * t / self.t0) - + wofz(1j * np.sqrt(2 * t / self.t0)) - - wofz(np.exp(1j * np.pi / 6) * np.sqrt(2 * t / self.t0)) - - wofz(-1 * np.exp(-1j * np.pi / 6) * np.sqrt(2 * t / self.t0)) ) ) + wl = np.real( factor * + ( 4 * np.exp(-1 * t / self.t0) * + np.cos(np.sqrt(3) * t / self.t0) + + wofz( 1j * + np.sqrt(2 * t / self.t0) ) + - wofz( np.exp(1j * np.pi / 6) * + np.sqrt(2 * t / self.t0) ) + - wofz( -1 * np.exp(-1j * np.pi / 6) * + np.sqrt(2 * t / self.t0)) ) ) return wl def __TransWakeExact(self, t, factor): - wt = np.real( factor * ( 2 * np.exp(-1 * t / self.t0) - * ( np.sqrt(3) * np.sin(np.sqrt(3) * t / self.t0) - - np.cos(np.sqrt(3) * t / self.t0) ) - + wofz(1j * np.sqrt(2 * t / self.t0)) - + np.exp(-1j * np.pi / 3) * wofz( np.exp(1j * np.pi / 6) - * np.sqrt(2 * t / self.t0) ) - + np.exp(1j * np.pi / 3) * wofz( -1 * np.exp(-1j * np.pi / 6) - * np.sqrt(2 * t / self.t0) ) ) ) + wt = np.real( factor * + ( 2 * np.exp(-1 * t / self.t0) * + ( np.sqrt(3) * + np.sin(np.sqrt(3) * t / self.t0) - + np.cos(np.sqrt(3) * t / self.t0) ) + + wofz( 1j * + np.sqrt(2 * t / self.t0) ) + + np.exp(-1j * np.pi / 3) * + wofz( np.exp(1j * np.pi / 6) * + np.sqrt(2 * t / self.t0) ) + + np.exp(1j * np.pi / 3) * + wofz( -1 * np.exp(-1j * np.pi / 6) * + np.sqrt(2 * t / self.t0) ) ) ) return wt def __LongWakeApprox(self, t):