

:toc:



[[chp:opalcycl]]






:stem: latexmath



:sectnums:






[[chp:wakefields]]



Wakefields










_OPALt_ provides methods to compute CSR and shortrange geometric



wakefields.






[[sec:wakefields:shortrange]]



Geometric Wakefields



~~~~~~~~~~~~~~~~~~~~






Basically there are two different kind of wakefields that can be used.



The first one is the wakefield of a round, metallic beam pipe that can



be calculated numerically (see Sections [sec:wakefield]  [sec:TAU]).



Since this also limits the applications of wakefields we also provide a



way to import a discretized wakefield from a file The wakefield of a



round, metallic beam pipe with radius latexmath:[$a$] can be calculated



by inverse FFT of the beam pipe impedance. There are known models for



beam pipes with `DC` and `AC` conductivity. The `DC` conductivity of a



metal is given by



latexmath:[\[\sigma_{DC} = \frac{ne^2\tau}{m} \label{eq:dc_cond}\]] with



latexmath:[$n$] the density of conduction electrons with charge



latexmath:[$e$], latexmath:[$\tau$] the relaxation time, and



latexmath:[$m$] the electron mass. The `AC` conductivity, a response to



applied oscillation fields, is given by



latexmath:[\[\sigma_{AC} = \frac{\sigma_{DC}}{1i\omega\tau} \label{eq:ac_cond}\]]



with latexmath:[$\omega$] denoting the frequency of the fields.






The longitudinal impedance with `DC` conductivity is given by



latexmath:[\[\label{eq:Z[2]}



Z_{Ldc}(k) = \dfrac{1}{ca} \dfrac{2}{\frac{\lambda}{k}\frac{ika}{2}}\]]



where



latexmath:[\[\lambda=\sqrt{\dfrac{2\pi\sigma \vert k\vert}{c}}(i+sign(k))\]]



with latexmath:[$c$] denoting the speed of light and latexmath:[$k$] the



wave number.






The longitudinal wake can be obtained by an inverse Fourier



transformation of the impedance. Since latexmath:[$Re(Z_L(k))$] drops at



high frequencies faster than latexmath:[$Im(Z_L(k))$] the cosine



transformation can be used to calculate the wake. The following equation



holds in both, the `DC` and `AC`, case latexmath:[\[\label{eq:Calc_Wl}



W_L(s)=10^{12} \dfrac{2c}{\pi}Re\left(\int_0^\infty Re(Z_L(k))\cos (ks)dk\right)\]]



with latexmath:[$Z_L(k)$] either representing



latexmath:[$Z_{L_{DC}}(k)$] or latexmath:[$Z_{L_{AC}}(k)$] depending on



the conductivity. With help of the PanofskyWenzel theorem



latexmath:[\[Z_L(k) = \frac{k}{c}Z_T(k).\]] we can deduce the transverse



wakefield from Equation [Calc_Wl]: latexmath:[\[\label{eq:Calc_Wt}



W_T(s)= 10^{12} \dfrac{2c}{\pi}Re\left(\int_0^\infty Re( \frac{c}{k}Z_L(k))\cos (ks)dk\right).\]]






To calculate the integrals in Equation [Calc_Wl,Calc_Wt] numerically the



Simpson integration schema with equidistant mesh spacing is applied.



This leads to an integration with small latexmath:[$\Delta k$] with a



big latexmath:[$N$] which is computational not optimal with respect to



efficiency. Since we calculate the wakefield usually just once in the



initialization phase the overall performance will not be affected from



this.






[[csrwakefields]]



CSR Wakefields



~~~~~~~~~~~~~~






The electromagnetic field due to a particle moving on a circle in free



space can be calculated exactly with the LiénardWiechert potentials.



The field has been calculated for all points on the same circle



[bib:schott,bib:schwinger1949]. For high particle energies the radiated



power is almost exclusively emitted in forward direction, whereas for



low energies a fraction is also emitted in transverse and backward



direction. For the case of highenergetic particles an impedance in



forward direction can be calculated [bib:murphy1997]. The procedure is



then the same as for a regular wakefield with the important difference



that wakes exert forces on trailing particles only. The electromagnetic



fields of a particle propagating on the midplane between two parallel



metallic plates that stretch to infinity [bib:schwinger1949] and for



finite plates [bib:nodvick1954] can also be calculated. For the infinite



plates an impedance can be calculated [bib:murphy1997].






All of these approaches for CSR neglect any transient effects due to the



finite length of the bend. Instead they describe the steady state case



of a bunch circling infinitely long in the field of a dipole magnet. In



[bib:saldin1997] the four different stages of a bunch passing a bending



magnet are treated separately and for each a corresponding wake function



is derived. This model is used in _OPALt_ for `1DCSR`.






The 1dimensional approach also neglects any influence of the transverse



dimensions and of changes in current density between retarded and



current time. On the other hand it gives a good approximation of effects



due to CSR in short time.






In addition to the `1DCSR` model also one that makes use of an



integrated Green function [bib:mitchell2013], `1DCSRIGF`.






[[sec:wakecmd]]



The `WAKE` Command



~~~~~~~~~~~~~~~~~~






The general input format is






....



label:WAKE, TYPE=string, NBIN=real, CONST_LENGTH=bool,



CONDUCT=string, Z0=real, FORM=string, RADIUS=real,



SIGMA=real, TAU=real, FILTERS=stringarray;



....






The format for a CSR wake is






....



label:WAKE, TYPE=string, NBIN=real, FILTERS=stringarray;



....






.Wakefield command summary



[cols="<,<",options="header",]



=======================================================================



Command Purpose



`WAKE` Specify a wakefield






`TYPE` Specify the wake function [`1DCSR`, `1DCSRIGF`,



`LONGSHORTRANGE`, `TRANSVSHORTRANGE`, `LONGTRANSVSHORTRANGE`]






`NBIN` Number of bins used in the calculation of the line density






`CONST_LENGTH` `TRUE` if the length of the bunch is considered to be



constant






`CONDUCT` Conductivity [`AC`, `DC`]






`Z0` Impedance of the beam pipe in [latexmath:[$\Omega$]]






`FORM` The form of the beam pipe [`ROUND`]






`RADIUS` The radius of the beam pipe in [m]






`SIGMA` Material constant dependent on the beam pipe material in



[latexmath:[$\Omega^{1} m$]]






`TAU` Material constant dependent on the beam pipe material in



[latexmath:[$s$]]






`FNAME` Specify a file that provides a wake function






`FILTER` The names of the filters that should be applied



=======================================================================






[[sec:wakefield]]



Define the Wakefield to be used



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






The `WAKE` command defines data for a wake function on an element



see Section [Element:common].






[[sec:WTYPE]]



Define the wakefield type



~~~~~~~~~~~~~~~~~~~~~~~~~






A string value see Section [astring] to specify the wake function,



either `1DCSR`, `1DCSRIGF`, `LONGSHORTRANGE`, `TRANSVSHORTRANGE`



or `LONGTRANSVSHORTRANGE`.






[[sec:NBIN]]



Define the number of bins



~~~~~~~~~~~~~~~~~~~~~~~~~






The number of bins used in the calculation of the line density.






[[sec:CONSTLEN]]



Define the bunch length to be constant



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






With the `CONST_LENGTH` flag the bunch length can be set to be constant.



This has no effect on CSR wakefunctions.






[[sec:CONDUCT]]



Define the conductivity



~~~~~~~~~~~~~~~~~~~~~~~






The conductivity of the bunch which can be set to either `AC` or `DC`.



This has no effect on CSR wakefunctions.






[[sec:Z]]



Define the impedance



~~~~~~~~~~~~~~~~~~~~






The impedance latexmath:[$Z_0$] of the beam pipe in



[latexmath:[$\Omega$]]. This has no effect on CSR wakefunctions.






[[sec:FORM]]



Define the form of the beam pipe



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






The form of the beam pipe can be set to `ROUND`. This has no effect on



CSR wakefunctions.






[[sec:RADIUS]]



Define the radius of the beam pipe



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






The radius of the beam pipe in [m]. This has no effect on CSR



wakefunctions.






[[sec:SIGMA]]



Define the sigma of the beam pipe



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






The latexmath:[$\sigma$] of the beam pipe (material constant), see



Equation [dc_cond]. This has no effect on CSR wakefunctions.






[[sec:TAU]]



Define the relaxation time (tau) of the beam pipe



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






The latexmath:[$\tau$] defines the relaxation time and is needed to



calculate the impedance of the beam pipe see Equation [dc_cond]. This



has no effect on CSR wakefunctions.






[[sec:WFNAME]]



Import a wakefield from a file



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






Since we only need values of the wake function at several discreet



points to calculate the force on the particle it is also possible to



specify these in a file.To get required data points of the wakefield not



provide in the file we linearly interpolate the available function



values. The files are specified in the SDDS format



[bib:borland1995,bib:borland1998].






Whenever a file is specified _OPAL_ will use the wakefield found in the



file and ignore all other commands related to round beam pipes.






[[sec:FILTER]]



List of Filters



~~~~~~~~~~~~~~~






Array of names of filters to be applied to the longitudinal histogram of



the bunch to get rid of the noise and to calculate derivatives. All the



filters are applied to the line density in the order they appear in the



array. The last filter is also used for calculating the derivatives. The



actual filters have to be defined elsewhere.






[[thefiltercommand]]



The `FILTER` Command



~~~~~~~~~~~~~~~~~~~~






Filters can be defined which then are applied to the line density of the



bunch. The following smoothing filters are implemented:



`SavitzkyGolay`, `Stencil`, `FixedFFTLowPass`, `RelativFFTLowPass`. The



input format for them is






....



label:FILTER, TYPE=string, NFREQ=real, THRESHOLD=real,



NPOINTS=real, NLEFT=real, NRIGHT=real,



POLYORDER=real



....






TYPE::



The type of filter: `SavitzkyGolay`, `Stencil`, `FixedFFTLowPass`,



`RelativFFTLowPass`



NFREQ::



Only used in `FixedFFTLowPass`: the number of frequencies to keep



THRESHOLD::



Only used in `RelativeFFTLowPass`: the minimal strength of frequency



compared to the strongest to consider.



NPOINTS::



Only used in `SavitzkyGolay`: width of moving window in number of



points



NLEFT::



Only used in `SavitzkyGolay`: number of points to the left



NRIGHT::



Only used in `SavitzkyGolay`: number of points to the right



POLYORDER::



Only used in `SavitzkyGolay`: polynomial order to be used in least



square approximation






The `SavitzkyGolay` filter and the ones based on the FFT routine



provide a derivative on a natural way. For the `Stencil` filter a second



order stencil is used to calculate the derivative.






An implementation of the `SavitzkyGolay` filter can be found in the



Numerical Recipes. The `Stencil` filter uses the following two stencil



consecutively to smooth the line density:



latexmath:[\[f_i = \frac{7\cdot f_{i4} + 24\cdot f_{i2} + 34\cdot f_{i} + 24\cdot f_{i+2} + 7\cdot f_{i+4}}{96}\]]



and



latexmath:[\[f_i = \frac{7\cdot f_{i2} + 24\cdot f_{i1} + 34\cdot f_{i} + 24\cdot f_{i+1} + 7\cdot f_{i+2}}{96}.\]]



For the derivative a standard second order stencil is used:



latexmath:[\[f'_i = \frac{f_{i2}  8\cdot f_{i1} + 8\cdot f_{i+1}  f_{i+2}}{h}\]]



This filter was designed by Ilya Pogorelov for the ImpactT



implementation of the CSR 1D model.






The FFT based smoothers calculate the Fourier coefficients of the line



density. Then they set all coefficients corresponding to frequencies



above a certain threshold to zero. Finally the backtransformation is



calculate using this coefficients. The two filters differ in the way



they identify coefficients which should be set to zero.



`FixedFFTLowPass` uses the n lowest frequencies whereas



`RelativeFFTLowPass` searches for the coefficient which has the biggest



absolute value. All coefficients which, compared to this value, are



below a threshold (measure in percents) are set to zero. For the



derivative the coefficients are multiplied with the following function



(this is equivalent to a convolution): latexmath:[\[g_{i} =



\begin{cases}



i \frac{2\pi \imath}{N\cdot L} & i < N/2 \\



i \frac{2\pi \imath}{N\cdot L} & i > N/2



\end{cases}\]] where latexmath:[$N$] is the total number of



coefficients/sampling points and latexmath:[$L$] is the length of the



bunch. 