Skip to content
Snippets Groups Projects

Faster CircularResistiveWall

Merged Keon Hee KIM requested to merge faster_circular_resistive_wall into develop
1 unresolved thread
1 file
+ 6
6
Compare changes
  • Side-by-side
  • Inline
@@ -172,8 +172,8 @@ class CircularResistiveWall(WakeField):
idx2 = time == 0
idx3 = np.logical_not(np.logical_or(idx1, idx2))
idx4 = np.isclose(0, time, atol=atol)
factor = 4 * self.Z0 * c / (np.pi * self.radius**2) * self.length
wl[idx2] = 0.25 * factor
factor = self.Z0 * c / (3 * np.pi * self.radius**2) * self.length
wl[idx2] = 3 * factor
wl[idx3] = self.__LongWakeExact(time[idx3], factor)
wl[idx4] *= 0.5
else:
@@ -220,8 +220,8 @@ class CircularResistiveWall(WakeField):
if exact == True:
idx2 = time == 0
idx3 = np.logical_not(np.logical_or(idx1, idx2))
factor = ((8 * self.Z0 * c**2 * self.t0) / (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)
@@ -229,7 +229,7 @@ class CircularResistiveWall(WakeField):
return wt
def __LongWakeExact(self, t, factor):
wl = np.real(factor / 12 * ( 4 * np.exp(-1 * 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))
@@ -237,7 +237,7 @@ class CircularResistiveWall(WakeField):
return wl
def __TransWakeExact(self, t, factor):
wt = np.real(factor / 24 * ( 2 * np.exp(-1 * 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))
Loading