From 847202e1e1d3460914acf9a7e7510a20cc6245f2 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:52:27 +0100 Subject: [PATCH 01/64] Added 'verbose' variable to optionally turn off 'Transverse feedback damper on messages' --- PyHEADTAIL/feedback/transverse_damper.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/PyHEADTAIL/feedback/transverse_damper.py b/PyHEADTAIL/feedback/transverse_damper.py index 7ebbd80c..5528860d 100644 --- a/PyHEADTAIL/feedback/transverse_damper.py +++ b/PyHEADTAIL/feedback/transverse_damper.py @@ -10,12 +10,12 @@ from scipy.special import k0 from scipy.constants import c, e -from PyHEADTAIL.general.element import Element +from . import Element class TransverseDamper(Element): def __init__(self, dampingrate_x, dampingrate_y, phase=90, - local_beta_function=None, *args, **kwargs): + local_beta_function=None, verbose=True, *args, **kwargs): '''Ideal transverse damper with an in-place "measurement" (transverse "pick-up") of the transverse dipole moment. Note: a single bunch in the beam is assumed, i.e. this works on @@ -36,22 +36,26 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, assumed to be the same for both transverse planes, otherwise use two instances of the TransverseDamper. ''' - + self.verbose=verbose if dampingrate_x and not dampingrate_y: self.gain_x = 2/dampingrate_x self.track = self.track_horizontal - self.prints('Damper in horizontal plane active') + if self.verbose==True: + self.prints('Damper in horizontal plane active') elif not dampingrate_x and dampingrate_y: self.gain_y = 2/dampingrate_y self.track = self.track_vertical - self.prints('Damper in vertical plane active') + if self.verbose==True: + self.prints('Damper in vertical plane active') elif not dampingrate_x and not dampingrate_y: - self.prints('Dampers not active') + if self.verbose==True: + self.prints('Dampers not active') else: self.gain_x = 2/dampingrate_x self.gain_y = 2/dampingrate_y self.track = self.track_all - self.prints('Dampers active') + if self.verbose == True: + self.prints('Dampers active') if phase != 90 and phase != 270 and not local_beta_function: raise TypeError( 'TransverseDamper: numeric local_beta_function value at ' @@ -59,7 +63,6 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, 'reactive damper component.)') self.phase_in_2pi = phase / 360. * 2*np.pi self.local_beta_function = local_beta_function - # will be overwritten at initialisation def track(self, beam): pass From 21b26608dab1a6abf8c89c99ddcf298cea94e116 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:53:34 +0100 Subject: [PATCH 02/64] Moved static methods for calculation of electromagnetic fields from PyHEADTAIL/spacecharge/spacecharge.py to a PyHEADTAIL/field_maps/efields_funcs.py. This change allows other classes to use this functions without importing spacecharge module. Added Parabolic and Kapchinsky-Vladimirki distributions and linearized field. --- PyHEADTAIL/field_maps/efields_funcs.py | 266 +++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 PyHEADTAIL/field_maps/efields_funcs.py diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py new file mode 100644 index 00000000..2fdb58b7 --- /dev/null +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -0,0 +1,266 @@ +''' +@authors: Vadim Gubaidulin, Adrian Oeftiger +@date: 18.02.2020 +''' +from __future__ import division + +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles.slicing import clean_slices + +import numpy as np +from scipy.constants import c, epsilon_0, pi, m_e, m_p, e + +from scipy.interpolate import splrep, splev +from functools import wraps + +from PyHEADTAIL.general import pmath as pm + + +def _sig_sqrt(sig_x, sig_y): + return pm.sqrt(2 * (sig_x**2 - sig_y**2)) + +def _efieldn_mit(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses FADDEEVA C++ implementation from MIT (via SciPy >= 0.13.0). + ''' + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1re, w1im = pm.wofz(x / sig_sqrt, y / sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2re, w2im = pm.wofz(x * sig_y/(sig_x*sig_sqrt), + y * sig_x/(sig_y*sig_sqrt)) + denom = 2. * epsilon_0 * np.sqrt(pi) * sig_sqrt + return (w1im - ex * w2im) / denom, (w1re - ex * w2re) / denom + +def _efieldn_mitmod(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses erfc C++ implementation from MIT (via SciPy >= 0.13.0) + and calculates wofz (FADDEEVA function) explicitely. + ''' + # timing was ~1.01ms for same situation as _efieldn_mit + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1 = pm._errfadd((x + 1j * y) / sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2 = pm._errfadd(x * sig_y/(sig_x*sig_sqrt) + + y * sig_x/(sig_y*sig_sqrt) * 1j) + val = (w1 - ex * w2) / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) + return val.imag, val.real + +def _efieldn_koelbig(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses CERN library from K. Koelbig. + ''' + # timing was ~3.35ms for same situation as _efieldn_mit + if not pm._errf: + raise ImportError('errfff cannot be imported for using ' + + 'TransverseSpaceCharge._efield_koelbig .' + + 'Did you call make (or f2py general/errfff.f)?') + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1re, w1im = pm._errf(x/sig_sqrt, y/sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2re, w2im = pm._errf(x * sig_y/(sig_x*sig_sqrt), + y * sig_x/(sig_y*sig_sqrt)) + pref = 1. / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) + return pref * (w1im - ex * w2im), pref * (w1re - ex * w2re) + +def wfun(z): + '''FADDEEVA function as implemented in PyECLOUD, vectorised.''' + x=z.real + y=z.imag + if not pm._errf: + raise ImportError('errfff cannot be imported for using ' + + 'TransverseSpaceCharge._efield_pyecloud .' + + 'Did you f2py errfff.f?') + wx,wy=pm._errf(x,y) # in PyECLOUD only pm._errf_f (not vectorised) + return wx+1j*wy + +def _efieldn_pyecloud(xin, yin, sigmax, sigmay): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Effective copy of PyECLOUD.BassErsk.BassErsk implementation. + ''' + x=abs(xin); + y=abs(yin); + eps0=8.854187817620e-12; + if sigmax>sigmay: + S=np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)); + factBE=1/(2*eps0*np.sqrt(pi)*S); + etaBE=sigmay/sigmax*x+1j*sigmax/sigmay*y; + zetaBE=x+1j*y; + val=factBE*(wfun(zetaBE/S)- + np.exp( -x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay))* + wfun(etaBE/S) ); + Ex=abs(val.imag)*np.sign(xin); + Ey=abs(val.real)*np.sign(yin); + else: + S=np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)); + factBE=1/(2*eps0*np.sqrt(pi)*S); + etaBE=sigmax/sigmay*y+1j*sigmay/sigmax*x; + yetaBE=y+1j*x; + val=factBE*(wfun(yetaBE/S)- + np.exp( -y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax))* + wfun(etaBE/S) ); + Ey=abs(val.imag)*np.sign(yin); + Ex=abs(val.real)*np.sign(xin); + return Ex, Ey + +@np.vectorize +def _efieldn_kv_a(x, y, sigma_x, sigma_y): + 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 +# vectorize is bad for cuda + + +@np.vectorize +def _efieldn_kv_b(x, y, sigma_x, sigma_y): + 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 + +###Still far slower than Gaussian +@np.vectorize +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 + + +def _efieldn_gauss_round(x, y, sig_r): + '''Return (E_x / Q, E_y / Q) for a round distribution + with sigma_x == sigma_y == sig_r . + ''' + r2 = x*x + y*y + amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) + return x * amplitude, y * amplitude + +def _efieldn_linearized(x, y, sig_x, sig_y): + ''' + Returns linearized + ''' + a = np.sqrt(2)*sig_x + b = np.sqrt(2)*sig_y + amplitude = 1./(4.*np.pi*epsilon_0*a*b) + return x * amplitude, y * amplitude +@np.vectorize +def _efieldn_kv_round(x, y, r): + '''Return (E_x / Q, E_y / Q) for a round distribution + with sigma_x == sigma_y == sig_r . + ''' + r2 = x*x + y*y + if r2 < r**2: + amplitude = 1/(4*np.pi*r*r*epsilon_0) + else: + amplitude = 1/(4*np.pi*r2**(3/2)*epsilon_0) + return x * amplitude, y * amplitude + + +def add_sigma_check(efieldn, dist): + '''Wrapper for a normalised electric field function. + + Adds the following actions before calculating the field: + - exchange x and y quantities if sigma_x < sigma_y + - apply round beam field formula when sigma_x close to sigma_y + ''' + + '''Threshold for relative transverse beam size difference + below which the beam is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round beam + ''' + ratio_threshold = 1e-3 + + '''Threshold for absolute transverse beam size difference + below which the beam is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round beam + ''' + absolute_threshold = 1e-10 + if dist == 'GS': + efieldn_round = _efieldn_gauss_round + elif dist == 'KV': + efieldn_round = _efieldn_kv_round + elif dist == 'LN': + efieldn_round = _efieldn_linearized + + @wraps(efieldn) + def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): + tol_kwargs = dict( + rtol=ratio_threshold, + atol=absolute_threshold + ) + if pm.allclose(sig_y, sig_x, **tol_kwargs): + if pm.almost_zero(sig_y, **tol_kwargs): + en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) + else: + en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) + elif pm.all(sig_x < sig_y): + en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) + else: + en_x, en_y = efieldn(x, y, sig_x, sig_y, *args, **kwargs) + return en_x, en_y + return efieldn_checked From 36a1d1299999ddac5a9cfac0760e1b70afe5ee02 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:57:48 +0100 Subject: [PATCH 03/64] Added Electron Lens implementation to PyHEADTAIL. Electron lens is implemented as a kick with a weak-strong assumption, assuming that electron beam is unaffected by the main beam. --- .../elens/.vscode/.ropeproject/config.py | 114 +++++++++ PyHEADTAIL/elens/__init__.py | 1 + PyHEADTAIL/elens/elens.py | 222 ++++++++++++++++++ 3 files changed, 337 insertions(+) create mode 100644 PyHEADTAIL/elens/.vscode/.ropeproject/config.py create mode 100644 PyHEADTAIL/elens/__init__.py create mode 100644 PyHEADTAIL/elens/elens.py diff --git a/PyHEADTAIL/elens/.vscode/.ropeproject/config.py b/PyHEADTAIL/elens/.vscode/.ropeproject/config.py new file mode 100644 index 00000000..dee2d1ae --- /dev/null +++ b/PyHEADTAIL/elens/.vscode/.ropeproject/config.py @@ -0,0 +1,114 @@ +# The default ``config.py`` +# flake8: noqa + + +def set_prefs(prefs): + """This function is called before opening the project""" + + # Specify which files and folders to ignore in the project. + # Changes to ignored resources are not added to the history and + # VCSs. Also they are not returned in `Project.get_files()`. + # Note that ``?`` and ``*`` match all characters but slashes. + # '*.pyc': matches 'test.pyc' and 'pkg/test.pyc' + # 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc' + # '.svn': matches 'pkg/.svn' and all of its children + # 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o' + # 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o' + prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject', + '.hg', '.svn', '_svn', '.git', '.tox'] + + # Specifies which files should be considered python files. It is + # useful when you have scripts inside your project. Only files + # ending with ``.py`` are considered to be python files by + # default. + # prefs['python_files'] = ['*.py'] + + # Custom source folders: By default rope searches the project + # for finding source folders (folders that should be searched + # for finding modules). You can add paths to that list. Note + # that rope guesses project source folders correctly most of the + # time; use this if you have any problems. + # The folders should be relative to project root and use '/' for + # separating folders regardless of the platform rope is running on. + # 'src/my_source_folder' for instance. + # prefs.add('source_folders', 'src') + + # You can extend python path for looking up modules + # prefs.add('python_path', '~/python/') + + # Should rope save object information or not. + prefs['save_objectdb'] = True + prefs['compress_objectdb'] = False + + # If `True`, rope analyzes each module when it is being saved. + prefs['automatic_soa'] = True + # The depth of calls to follow in static object analysis + prefs['soa_followed_calls'] = 0 + + # If `False` when running modules or unit tests "dynamic object + # analysis" is turned off. This makes them much faster. + prefs['perform_doa'] = True + + # Rope can check the validity of its object DB when running. + prefs['validate_objectdb'] = True + + # How many undos to hold? + prefs['max_history_items'] = 32 + + # Shows whether to save history across sessions. + prefs['save_history'] = True + prefs['compress_history'] = False + + # Set the number spaces used for indenting. According to + # :PEP:`8`, it is best to use 4 spaces. Since most of rope's + # unit-tests use 4 spaces it is more reliable, too. + prefs['indent_size'] = 4 + + # Builtin and c-extension modules that are allowed to be imported + # and inspected by rope. + prefs['extension_modules'] = [] + + # Add all standard c-extensions to extension_modules list. + prefs['import_dynload_stdmods'] = True + + # If `True` modules with syntax errors are considered to be empty. + # The default value is `False`; When `False` syntax errors raise + # `rope.base.exceptions.ModuleSyntaxError` exception. + prefs['ignore_syntax_errors'] = False + + # If `True`, rope ignores unresolvable imports. Otherwise, they + # appear in the importing namespace. + prefs['ignore_bad_imports'] = False + + # If `True`, rope will insert new module imports as + # `from import ` by default. + prefs['prefer_module_from_imports'] = False + + # If `True`, rope will transform a comma list of imports into + # multiple separate import statements when organizing + # imports. + prefs['split_imports'] = False + + # If `True`, rope will remove all top-level import statements and + # reinsert them at the top of the module when making changes. + prefs['pull_imports_to_top'] = True + + # If `True`, rope will sort imports alphabetically by module name instead + # of alphabetically by import statement, with from imports after normal + # imports. + prefs['sort_imports_alphabetically'] = False + + # Location of implementation of + # rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general + # case, you don't have to change this value, unless you're an rope expert. + # Change this value to inject you own implementations of interfaces + # listed in module rope.base.oi.type_hinting.providers.interfaces + # For example, you can add you own providers for Django Models, or disable + # the search type-hinting in a class hierarchy, etc. + prefs['type_hinting_factory'] = ( + 'rope.base.oi.type_hinting.factory.default_type_hinting_factory') + + +def project_opened(project): + """This function is called after opening the project""" + # Do whatever you like here! diff --git a/PyHEADTAIL/elens/__init__.py b/PyHEADTAIL/elens/__init__.py new file mode 100644 index 00000000..d2d966e2 --- /dev/null +++ b/PyHEADTAIL/elens/__init__.py @@ -0,0 +1 @@ +from .. import __version__ diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py new file mode 100644 index 00000000..50968602 --- /dev/null +++ b/PyHEADTAIL/elens/elens.py @@ -0,0 +1,222 @@ +''' +@authors: Vadim Gubaidulin, Adrian Oeftiger +@date: 18.02.2020 +''' +from __future__ import division + +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles import slicing +from PyHEADTAIL.particles.slicing import clean_slices +import numpy as np +from scipy.constants import c, epsilon_0, pi, m_e, m_p, e + +from scipy.interpolate import splrep, splev +from functools import wraps + +from PyHEADTAIL.general import pmath as pm +from PyHEADTAIL.field_maps import efields_funcs as efields + + +class ElectronLens(Element): + ''' + Contains implemenation of electron lens generated electromagnetic field acting on a particle collection. + Acts as a localized kick of a thin element. This implementation assumes that an electromagnetic field of + electron lens beam is not affected by interaction with a bunch. + ''' + ''' + Alfven current, used in the expression for the maximum tune shift from an electron lens + as defined here: + Landau Damping of Beam Instabilities by Electron Lenses + V. Shiltsev, Y. Alexahin, A. Burov, and A. Valishev + Phys. Rev. Lett. 119, 134802 (2017) + ''' + I_a = 17e3 + '''Threshold for relative transverse bunch size difference + below which the bunch is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round bunch + ''' + ratio_threshold = 1e-3 + '''Threshold for absolute transverse bunch size difference + below which the bunch is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round bunch + ''' + absolute_threshold = 1e-10 + + def __init__(self, + L_e, + I_e, + sigma_x, + sigma_y, + beta_e, + dist, + offset_x=0, + offset_y=0, + sig_check=True): + '''Arguments: + L_e: the length of an electron lens beam and bunch interaction region + I_e: a list of floats defining slicewise electron lens current + sigma_x: transverse horizontal rms size of an electron beam + sigma_y: transverse vertical rms size of an electron beam + beta_e: relativistic beta of electron bunch. Negative value means electron beam is + counterpropagating the accelerator bunch + dist: electron beam transverse distribution from a list ['GS', 'WB', 'KV'] + sig_check: exchanges x and y quantities for sigma_x < sigma_y + and applies the round bunch formulae for sigma_x == sigma_y . + sig_check defaults to True and should not usually be False. + offset_x: Horizontal offset of an electron lens beam to the nominal beam. + Defaults to zero, i.e. the electron lens is ideally matched to beam. + offset_y: Vertical offset of an electron lens beam to the nominal beam + Defaults to zero, i.e. the electron lens is ideally matched to beam. + ''' + self.slicer = slicing.UniformBinSlicer(n_slices=len(I_e), n_sigma_z=4) + self.L_e = L_e + self.I_e = I_e + self.sigma_x = sigma_x + self.sigma_y = sigma_y + self.beta_e = beta_e + self.dist = dist + self.offset_x = offset_x + self.offset_y = offset_y + + assert dist in ['GS', 'WB', 'KV', 'LN' + ], ('The given distribution type is not understood.') + if self.dist == 'GS': + self._efieldn = efields._efieldn_mit + if sig_check: + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + elif self.dist == 'WB': + self._efieldn = efields._efieldn_wb + elif self.dist == 'KV': + self._efieldn = efields._efieldn_kv_a + if sig_check: + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + elif self.dist=='LN': + self._efieldn = efields._efieldn_linearized + + @classmethod + def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): + ''' + Returns an round electron lens matched with a given ratio of electron lens beam size to nominal beam size + Arguments: + L_e: the length of an electron lens beam and bunch interaction region + dQ_max: the maximum tune shift from an electron lens kick + ratio: the ratio of electron lens beam size to nominal beam size + beta_e: relativistic beta of electron bunch. Negative value means electron beam is + counterpropagating the accelerator bunch + dist: electron beam transverse distribution from a list ['GS', 'WB', 'KV'] + bunch: the nominal bunch + ''' + absolute_threshold = 1e-10 + I_a = 17e3 + + assert (bunch.sigma_y() - bunch.sigma_y() + ) < absolute_threshold, ('The given bunch is not round') + if dist == 'GS': + I_e = dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'WB': + I_e = 3 / 4 * dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'KV': + I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'LN': + I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + else: + I_e = 0 + return ElectronLens(L_e, [ + I_e, + ], + ratio * bunch.sigma_x(), + ratio * bunch.sigma_x(), + beta_e, + dist=dist, + sig_check=True) + + def get_max_tune_shift(self, bunch): + ''' + ''' + if self.dist == 'GS': + # not m_p but bunch.mass() also the charge + [ + dQmax, + ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * + bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + elif self.dist == 'WB': + [ + dQmax, + ] = 4 * self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + elif self.dist == 'KV': + [ + dQmax, + ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + + return dQmax + + def track(self, bunch): + '''Add the kick from electron lens electromagnetic field to the bunch's + transverse kicks. + ''' + slices = bunch.get_slices( + self.slicer, statistics=['mean_x', 'mean_y', 'sigma_x', 'sigma_y']) + # Prefactor for round Gaussian bunch from theory: + prefactor = -bunch.charge * self.L_e * ( + 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * m_p * + (bunch.beta * c)**2) + # Nlambda_i is the line density [Coul/m] for the current slice + for s_i, I_i in enumerate(self.I_e): + p_id = slices.particle_indices_of_slice(s_i) + if len(p_id) == 0: + continue + Nlambda_i = I_i / (self.beta_e * c) + # Offset for an electron lens + en_x, en_y = self.get_efieldn(pm.take(bunch.x, p_id), + pm.take(bunch.y, p_id), 0.0, 0.0, + self.sigma_x, self.sigma_y) + kicks_x = (en_x * Nlambda_i) * prefactor + kicks_y = (en_y * Nlambda_i) * prefactor + + kicked_xp = pm.take(bunch.xp, p_id) + kicks_x + kicked_yp = pm.take(bunch.yp, p_id) + kicks_y + + pm.put(bunch.xp, p_id, kicked_xp) + pm.put(bunch.yp, p_id, kicked_yp) + + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + ''' + x = xr - mean_x + y = yr - mean_y + + # absolute values for convergence reasons of erfc + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), sig_x, sig_y) + en_x = pm.abs(en_x) * pm.sign(x) + en_y = pm.abs(en_y) * pm.sign(y) + + return en_x, en_y From 7216ae8b5dcc9b8bd4ac5027348c4a411e260169 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 13:45:51 +0100 Subject: [PATCH 04/64] Fixed import from Element --- PyHEADTAIL/feedback/transverse_damper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/feedback/transverse_damper.py b/PyHEADTAIL/feedback/transverse_damper.py index 5528860d..6e96e31f 100644 --- a/PyHEADTAIL/feedback/transverse_damper.py +++ b/PyHEADTAIL/feedback/transverse_damper.py @@ -10,7 +10,7 @@ from scipy.special import k0 from scipy.constants import c, e -from . import Element +from PyHEADTAIL.general.element import Element class TransverseDamper(Element): From 4f080fdff84dbdb88cbfad88363e2de7117eae20 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 13:59:07 +0100 Subject: [PATCH 05/64] Rewrote imports to be consistent with new location of electromagnetic fields in PyHEADTAIL/field_maps/efields_funcs.py --- PyHEADTAIL/spacecharge/spacecharge.py | 195 +++----------------------- 1 file changed, 23 insertions(+), 172 deletions(-) diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index 7a68e618..929603ca 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -4,15 +4,16 @@ ''' +from . import Element, clean_slices +from PyHEADTAIL.field_maps import efields_funcs as efields import numpy as np from scipy.constants import c, epsilon_0, pi + from scipy.interpolate import splrep, splev from functools import wraps -from PyHEADTAIL.general.element import Element -from PyHEADTAIL.general import pmath as pm -from PyHEADTAIL.particles.slicing import clean_slices +from ..general import pmath as pm class LongSpaceCharge(Element): @@ -126,7 +127,24 @@ def potential(z): sliceset.lambda_z(z) * beam.p0) return potential +class TransverseLinearSpaceCharge(Element): + def __init__(self, length): + self.length = length + self._efieldn = efields._efieldn_linearized + def track(self, beam): + x = beam.x - beam.mean_x() + y = beam.y - beam.mean_y() + prefactor = (beam.charge * self.length / + (beam.p0 * beam.betagamma * beam.gamma * c)) + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), beam.sigma_x(), beam.sigma_y) + kicks_x = (en_x) * prefactor + kicks_y = (en_y) * prefactor + + kicked_xp = pm.take(beam.xp, p_id) + kicks_x + kicked_yp = pm.take(beam.yp, p_id) + kicks_y + pm.put(beam.xp, p_id, kicked_xp) + pm.put(beam.yp, p_id, kicked_yp) class TransverseGaussianSpaceCharge(Element): '''Contains transverse space charge for a Gaussian configuration. Applies the Bassetti-Erskine electric field expression slice-wise @@ -165,11 +183,11 @@ def __init__(self, slicer, length, sig_check=True, other_efieldn=None): self.slicer = slicer self.length = length if other_efieldn is None: - self._efieldn = self._efieldn_mit + self._efieldn = efields._efieldn_mit else: self._efieldn = other_efieldn if sig_check: - self._efieldn = self.add_sigma_check(self._efieldn) + self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') def track(self, beam): '''Add the transverse space charge contribution to the beam's @@ -219,170 +237,3 @@ def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): en_y = pm.abs(en_y) * pm.sign(y) return en_x, en_y - - @staticmethod - def _sig_sqrt(sig_x, sig_y): - return pm.sqrt(2 * (sig_x**2 - sig_y**2)) - - @staticmethod - def _efieldn_mit(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses FADDEEVA C++ implementation from MIT (via SciPy >= 0.13.0). - ''' - # timing was ~0.522 ms for: - # x = np.arange(-1e-5, 1e-5, 1e-8) - # y = np.empty(len(x)) - # sig_x = 1.2e-6 - # sig_y = 1e-6 - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1re, w1im = pm.wofz(x / sig_sqrt, y / sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2re, w2im = pm.wofz(x * sig_y/(sig_x*sig_sqrt), - y * sig_x/(sig_y*sig_sqrt)) - denom = 2. * epsilon_0 * np.sqrt(pi) * sig_sqrt - return (w1im - ex * w2im) / denom, (w1re - ex * w2re) / denom - - @staticmethod - def _efieldn_mitmod(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses erfc C++ implementation from MIT (via SciPy >= 0.13.0) - and calculates wofz (FADDEEVA function) explicitely. - ''' - # timing was ~1.01ms for same situation as _efieldn_mit - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1 = pm._errfadd((x + 1j * y) / sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2 = pm._errfadd(x * sig_y/(sig_x*sig_sqrt) + - y * sig_x/(sig_y*sig_sqrt) * 1j) - val = (w1 - ex * w2) / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) - return val.imag, val.real - - @staticmethod - def _efieldn_koelbig(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses CERN library from K. Koelbig. - ''' - # timing was ~3.35ms for same situation as _efieldn_mit - if not pm._errf: - raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_koelbig .' + - 'Did you call make (or f2py general/errfff.f)?') - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1re, w1im = pm._errf(x/sig_sqrt, y/sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2re, w2im = pm._errf(x * sig_y/(sig_x*sig_sqrt), - y * sig_x/(sig_y*sig_sqrt)) - pref = 1. / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) - return pref * (w1im - ex * w2im), pref * (w1re - ex * w2re) - - @staticmethod - def wfun(z): - '''FADDEEVA function as implemented in PyECLOUD, vectorised.''' - x=z.real - y=z.imag - if not pm._errf: - raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_pyecloud .' + - 'Did you f2py errfff.f?') - wx,wy=pm._errf(x,y) # in PyECLOUD only pm._errf_f (not vectorised) - return wx+1j*wy - - @staticmethod - def _efieldn_pyecloud(xin, yin, sigmax, sigmay): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Effective copy of PyECLOUD.BassErsk.BassErsk implementation. - ''' - # timing was ~3.52ms for same situation as _efieldn_mit - wfun = TransverseGaussianSpaceCharge.wfun - x=abs(xin); - y=abs(yin); - eps0=8.854187817620e-12; - if sigmax>sigmay: - S=np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmay/sigmax*x+1j*sigmax/sigmay*y; - zetaBE=x+1j*y; - val=factBE*(wfun(zetaBE/S)- - np.exp( -x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay))* - wfun(etaBE/S) ); - Ex=abs(val.imag)*np.sign(xin); - Ey=abs(val.real)*np.sign(yin); - else: - S=np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmax/sigmay*y+1j*sigmay/sigmax*x; - yetaBE=y+1j*x; - val=factBE*(wfun(yetaBE/S)- - np.exp( -y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax))* - wfun(etaBE/S) ); - Ey=abs(val.imag)*np.sign(yin); - Ex=abs(val.real)*np.sign(xin); - return Ex, Ey - - @staticmethod - def _efieldn_round(x, y, sig_r): - '''Return (E_x / Q, E_y / Q) for a round distribution - with sigma_x == sigma_y == sig_r . - ''' - r2 = x*x + y*y - amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) - return x * amplitude, y * amplitude - - @staticmethod - def add_sigma_check(efieldn): - '''Wrapper for a normalised electric field function. - - Adds the following actions before calculating the field: - - exchange x and y quantities if sigma_x < sigma_y - - apply round beam field formula when sigma_x close to sigma_y - ''' - efieldn_round = TransverseGaussianSpaceCharge._efieldn_round - @wraps(efieldn) - def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): - tol_kwargs = dict( - rtol=TransverseGaussianSpaceCharge.ratio_threshold, - atol=TransverseGaussianSpaceCharge.absolute_threshold - ) - if pm.allclose(sig_y, sig_x, **tol_kwargs): - if pm.almost_zero(sig_y, **tol_kwargs): - en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) - else: - en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) - elif pm.all(sig_x < sig_y): - en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) - else: - en_x, en_y = efieldn(x, y, sig_x, sig_y, *args, **kwargs) - return en_x, en_y - return efieldn_checked From 9a6d86fa511f40be68dfd4201c81cd348655dd8c Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 15:38:09 +0100 Subject: [PATCH 06/64] Added changed to import to be compatible with addition of PyHEADTAIL/field_maps/efields_funcs.py --- PyHEADTAIL/spacecharge/spacecharge.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index 929603ca..fd2b27c1 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -4,7 +4,8 @@ ''' -from . import Element, clean_slices +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles.slicing import clean_slices from PyHEADTAIL.field_maps import efields_funcs as efields import numpy as np From 7c453ecb0121a02b0c0fed5abf20f94f2f1a742e Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 28 May 2020 15:17:40 +0200 Subject: [PATCH 07/64] Changed an incorect use of super() function --- PyHEADTAIL/elens/elens.py | 18 +++---- PyHEADTAIL/field_maps/efields_funcs.py | 10 ++-- PyHEADTAIL/spacecharge/spacecharge.py | 69 ++++++++++++++++++-------- 3 files changed, 63 insertions(+), 34 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 50968602..36c4a341 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -88,7 +88,7 @@ def __init__(self, elif self.dist == 'WB': self._efieldn = efields._efieldn_wb elif self.dist == 'KV': - self._efieldn = efields._efieldn_kv_a + self._efieldn = efields._efieldn_kv_b if sig_check: self._efieldn = efields.add_sigma_check( self._efieldn, self.dist) @@ -114,22 +114,22 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): assert (bunch.sigma_y() - bunch.sigma_y() ) < absolute_threshold, ('The given bunch is not round') if dist == 'GS': - I_e = dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'WB': - I_e = 3 / 4 * dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*3 / 4 * dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'KV': - I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'LN': - I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) @@ -151,7 +151,7 @@ def get_max_tune_shift(self, bunch): # not m_p but bunch.mass() also the charge [ dQmax, - ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -159,7 +159,7 @@ def get_max_tune_shift(self, bunch): elif self.dist == 'WB': [ dQmax, - ] = 4 * self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*4 * self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -167,7 +167,7 @@ def get_max_tune_shift(self, bunch): elif self.dist == 'KV': [ dQmax, - ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -183,7 +183,7 @@ def track(self, bunch): self.slicer, statistics=['mean_x', 'mean_y', 'sigma_x', 'sigma_y']) # Prefactor for round Gaussian bunch from theory: prefactor = -bunch.charge * self.L_e * ( - 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * m_p * + 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * bunch.mass * (bunch.beta * c)**2) # Nlambda_i is the line density [Coul/m] for the current slice for s_i, I_i in enumerate(self.I_e): diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index 2fdb58b7..cdaa2a3d 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -204,9 +204,9 @@ def _efieldn_linearized(x, y, sig_x, sig_y): ''' Returns linearized ''' - a = np.sqrt(2)*sig_x - b = np.sqrt(2)*sig_y - amplitude = 1./(4.*np.pi*epsilon_0*a*b) + a = pm.sqrt(2)*sig_x + b = pm.sqrt(2)*sig_y + amplitude = 1./(2.*np.pi*epsilon_0*a*b) return x * amplitude, y * amplitude @np.vectorize def _efieldn_kv_round(x, y, r): @@ -215,9 +215,9 @@ def _efieldn_kv_round(x, y, r): ''' r2 = x*x + y*y if r2 < r**2: - amplitude = 1/(4*np.pi*r*r*epsilon_0) + amplitude = 1/(2*np.pi*r*r*epsilon_0) else: - amplitude = 1/(4*np.pi*r2**(3/2)*epsilon_0) + amplitude = 1/(2*np.pi*r2*epsilon_0) return x * amplitude, y * amplitude diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index fd2b27c1..cdca5a14 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -3,7 +3,6 @@ @date: 17/04/2015 ''' - from PyHEADTAIL.general.element import Element from PyHEADTAIL.particles.slicing import clean_slices from PyHEADTAIL.field_maps import efields_funcs as efields @@ -14,7 +13,7 @@ from scipy.interpolate import splrep, splev from functools import wraps -from ..general import pmath as pm +from PyHEADTAIL.general import pmath as pm class LongSpaceCharge(Element): @@ -128,24 +127,8 @@ def potential(z): sliceset.lambda_z(z) * beam.p0) return potential -class TransverseLinearSpaceCharge(Element): - def __init__(self, length): - self.length = length - self._efieldn = efields._efieldn_linearized - def track(self, beam): - x = beam.x - beam.mean_x() - y = beam.y - beam.mean_y() - prefactor = (beam.charge * self.length / - (beam.p0 * beam.betagamma * beam.gamma * c)) - en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), beam.sigma_x(), beam.sigma_y) - kicks_x = (en_x) * prefactor - kicks_y = (en_y) * prefactor - kicked_xp = pm.take(beam.xp, p_id) + kicks_x - kicked_yp = pm.take(beam.yp, p_id) + kicks_y - pm.put(beam.xp, p_id, kicked_xp) - pm.put(beam.yp, p_id, kicked_yp) class TransverseGaussianSpaceCharge(Element): '''Contains transverse space charge for a Gaussian configuration. Applies the Bassetti-Erskine electric field expression slice-wise @@ -198,7 +181,6 @@ def track(self, beam): self.slicer, statistics=["mean_x", "mean_y", "sigma_x", "sigma_y"]) prefactor = (beam.charge * self.length / (beam.p0 * beam.betagamma * beam.gamma * c)) - # Nlambda_i is the line density [Coul/m] for the current slice for s_i, (Nlambda_i, mean_x, mean_y, sig_x, sig_y) in enumerate(zip( slices.lambda_bins(smoothen=False)/slices.slice_widths, @@ -211,7 +193,6 @@ def track(self, beam): en_x, en_y = self.get_efieldn( pm.take(beam.x, p_id), pm.take(beam.y, p_id), mean_x, mean_y, sig_x, sig_y) - kicks_x = (en_x * Nlambda_i) * prefactor kicks_y = (en_y * Nlambda_i) * prefactor @@ -238,3 +219,51 @@ def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): en_y = pm.abs(en_y) * pm.sign(y) return en_x, en_y +class TransverseLinearSpaceCharge(TransverseGaussianSpaceCharge): + '''Contains transverse space charge for a Gaussian configuration. + Applies the Bassetti-Erskine electric field expression slice-wise + for each particle centred around the slice centre. + ''' + + '''Threshold for relative transverse beam size difference + below which the beam is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round beam + ''' + ratio_threshold = 1e-3 + + '''Threshold for absolute transverse beam size difference + below which the beam is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round beam + ''' + absolute_threshold = 1e-10 + + def __init__(self, slicer, length, sig_check=True): + '''Arguments: + - slicer determines the slicing parameters for the slices over + which the KV electric field expression is applied, + given a slicer with n_slices == 1, you can apply a + longitudinally averaged kick over the whole beam. + - length is an s interval along which the space charge force + is integrated. + - sig_check exchanges x and y quantities for sigma_x < sigma_y + and applies the round beam formula for sigma_x == sigma_y . + sig_check defaults to True and should not usually be False. + ''' + self.slicer = slicer + self.length = length + self._efieldn = efields._efieldn_kv_b + if sig_check: + self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') + + def track(self, beam): + '''Add the transverse space charge contribution to the beam's + transverse kicks. + ''' + return super().track(beam) + + + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): + ''' + Return (E_x / Q, E_y / Q). + ''' + return super().get_efieldn(xr, yr, mean_x, mean_y, sig_x, sig_y) \ No newline at end of file From 4ea27ca0b1af7851cff219df94b1f4e2a9166a03 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Tue, 7 Jul 2020 12:59:44 +0200 Subject: [PATCH 08/64] Minor changes and refactoring for elens.py, efields_funcs.py spacecharge.py --- PyHEADTAIL/elens/elens.py | 4 +++- PyHEADTAIL/field_maps/efields_funcs.py | 19 +++---------------- PyHEADTAIL/spacecharge/spacecharge.py | 4 ++-- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 36c4a341..b0756ea6 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -141,6 +141,8 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): ratio * bunch.sigma_x(), ratio * bunch.sigma_x(), beta_e, + offset_x=bunch.mean_x(), + offset_y=bunch.mean_y(), dist=dist, sig_check=True) @@ -193,7 +195,7 @@ def track(self, bunch): Nlambda_i = I_i / (self.beta_e * c) # Offset for an electron lens en_x, en_y = self.get_efieldn(pm.take(bunch.x, p_id), - pm.take(bunch.y, p_id), 0.0, 0.0, + pm.take(bunch.y, p_id), (self.offset_x), (self.offset_y), self.sigma_x, self.sigma_y) kicks_x = (en_x * Nlambda_i) * prefactor kicks_y = (en_y * Nlambda_i) * prefactor diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index cdaa2a3d..88688d73 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -192,11 +192,12 @@ def _efieldn_wb(x, y, sigma_x, sigma_y): return efield.real/denom, efield.imag/denom -def _efieldn_gauss_round(x, y, sig_r): +def _efieldn_gauss_round(x, y, sig_x, sig_y): '''Return (E_x / Q, E_y / Q) for a round distribution with sigma_x == sigma_y == sig_r . ''' r2 = x*x + y*y + sig_r = sig_x amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) return x * amplitude, y * amplitude @@ -208,18 +209,6 @@ def _efieldn_linearized(x, y, sig_x, sig_y): b = pm.sqrt(2)*sig_y amplitude = 1./(2.*np.pi*epsilon_0*a*b) return x * amplitude, y * amplitude -@np.vectorize -def _efieldn_kv_round(x, y, r): - '''Return (E_x / Q, E_y / Q) for a round distribution - with sigma_x == sigma_y == sig_r . - ''' - r2 = x*x + y*y - if r2 < r**2: - amplitude = 1/(2*np.pi*r*r*epsilon_0) - else: - amplitude = 1/(2*np.pi*r2*epsilon_0) - return x * amplitude, y * amplitude - def add_sigma_check(efieldn, dist): '''Wrapper for a normalised electric field function. @@ -243,8 +232,6 @@ def add_sigma_check(efieldn, dist): if dist == 'GS': efieldn_round = _efieldn_gauss_round elif dist == 'KV': - efieldn_round = _efieldn_kv_round - elif dist == 'LN': efieldn_round = _efieldn_linearized @wraps(efieldn) @@ -257,7 +244,7 @@ def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): if pm.almost_zero(sig_y, **tol_kwargs): en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) else: - en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) + en_x, en_y = efieldn_round(x, y, sig_x, sig_y, *args, **kwargs) elif pm.all(sig_x < sig_y): en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) else: diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index cdca5a14..4ea1ed12 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -251,9 +251,9 @@ def __init__(self, slicer, length, sig_check=True): ''' self.slicer = slicer self.length = length - self._efieldn = efields._efieldn_kv_b + self._efieldn = efields._efieldn_linearized if sig_check: - self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') + self._efieldn = efields.add_sigma_check(self._efieldn, 'KV') def track(self, beam): '''Add the transverse space charge contribution to the beam's From 66e296f4441f46d571ed740510a8f114447e0543 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:52:27 +0100 Subject: [PATCH 09/64] Added 'verbose' variable to optionally turn off 'Transverse feedback damper on messages' --- PyHEADTAIL/feedback/transverse_damper.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/PyHEADTAIL/feedback/transverse_damper.py b/PyHEADTAIL/feedback/transverse_damper.py index 7ebbd80c..5528860d 100644 --- a/PyHEADTAIL/feedback/transverse_damper.py +++ b/PyHEADTAIL/feedback/transverse_damper.py @@ -10,12 +10,12 @@ from scipy.special import k0 from scipy.constants import c, e -from PyHEADTAIL.general.element import Element +from . import Element class TransverseDamper(Element): def __init__(self, dampingrate_x, dampingrate_y, phase=90, - local_beta_function=None, *args, **kwargs): + local_beta_function=None, verbose=True, *args, **kwargs): '''Ideal transverse damper with an in-place "measurement" (transverse "pick-up") of the transverse dipole moment. Note: a single bunch in the beam is assumed, i.e. this works on @@ -36,22 +36,26 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, assumed to be the same for both transverse planes, otherwise use two instances of the TransverseDamper. ''' - + self.verbose=verbose if dampingrate_x and not dampingrate_y: self.gain_x = 2/dampingrate_x self.track = self.track_horizontal - self.prints('Damper in horizontal plane active') + if self.verbose==True: + self.prints('Damper in horizontal plane active') elif not dampingrate_x and dampingrate_y: self.gain_y = 2/dampingrate_y self.track = self.track_vertical - self.prints('Damper in vertical plane active') + if self.verbose==True: + self.prints('Damper in vertical plane active') elif not dampingrate_x and not dampingrate_y: - self.prints('Dampers not active') + if self.verbose==True: + self.prints('Dampers not active') else: self.gain_x = 2/dampingrate_x self.gain_y = 2/dampingrate_y self.track = self.track_all - self.prints('Dampers active') + if self.verbose == True: + self.prints('Dampers active') if phase != 90 and phase != 270 and not local_beta_function: raise TypeError( 'TransverseDamper: numeric local_beta_function value at ' @@ -59,7 +63,6 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, 'reactive damper component.)') self.phase_in_2pi = phase / 360. * 2*np.pi self.local_beta_function = local_beta_function - # will be overwritten at initialisation def track(self, beam): pass From f5bcc49d340524b5db6790284ef64bd0329718c5 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:53:34 +0100 Subject: [PATCH 10/64] Moved static methods for calculation of electromagnetic fields from PyHEADTAIL/spacecharge/spacecharge.py to a PyHEADTAIL/field_maps/efields_funcs.py. This change allows other classes to use this functions without importing spacecharge module. Added Parabolic and Kapchinsky-Vladimirki distributions and linearized field. --- PyHEADTAIL/field_maps/efields_funcs.py | 266 +++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 PyHEADTAIL/field_maps/efields_funcs.py diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py new file mode 100644 index 00000000..2fdb58b7 --- /dev/null +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -0,0 +1,266 @@ +''' +@authors: Vadim Gubaidulin, Adrian Oeftiger +@date: 18.02.2020 +''' +from __future__ import division + +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles.slicing import clean_slices + +import numpy as np +from scipy.constants import c, epsilon_0, pi, m_e, m_p, e + +from scipy.interpolate import splrep, splev +from functools import wraps + +from PyHEADTAIL.general import pmath as pm + + +def _sig_sqrt(sig_x, sig_y): + return pm.sqrt(2 * (sig_x**2 - sig_y**2)) + +def _efieldn_mit(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses FADDEEVA C++ implementation from MIT (via SciPy >= 0.13.0). + ''' + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1re, w1im = pm.wofz(x / sig_sqrt, y / sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2re, w2im = pm.wofz(x * sig_y/(sig_x*sig_sqrt), + y * sig_x/(sig_y*sig_sqrt)) + denom = 2. * epsilon_0 * np.sqrt(pi) * sig_sqrt + return (w1im - ex * w2im) / denom, (w1re - ex * w2re) / denom + +def _efieldn_mitmod(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses erfc C++ implementation from MIT (via SciPy >= 0.13.0) + and calculates wofz (FADDEEVA function) explicitely. + ''' + # timing was ~1.01ms for same situation as _efieldn_mit + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1 = pm._errfadd((x + 1j * y) / sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2 = pm._errfadd(x * sig_y/(sig_x*sig_sqrt) + + y * sig_x/(sig_y*sig_sqrt) * 1j) + val = (w1 - ex * w2) / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) + return val.imag, val.real + +def _efieldn_koelbig(x, y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. + For convergence reasons of the erfc, use only x > 0 and y > 0. + + Uses CERN library from K. Koelbig. + ''' + # timing was ~3.35ms for same situation as _efieldn_mit + if not pm._errf: + raise ImportError('errfff cannot be imported for using ' + + 'TransverseSpaceCharge._efield_koelbig .' + + 'Did you call make (or f2py general/errfff.f)?') + sig_sqrt = _sig_sqrt(sig_x, sig_y) + w1re, w1im = pm._errf(x/sig_sqrt, y/sig_sqrt) + ex = pm.exp(-x*x / (2 * sig_x*sig_x) + + -y*y / (2 * sig_y*sig_y)) + w2re, w2im = pm._errf(x * sig_y/(sig_x*sig_sqrt), + y * sig_x/(sig_y*sig_sqrt)) + pref = 1. / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) + return pref * (w1im - ex * w2im), pref * (w1re - ex * w2re) + +def wfun(z): + '''FADDEEVA function as implemented in PyECLOUD, vectorised.''' + x=z.real + y=z.imag + if not pm._errf: + raise ImportError('errfff cannot be imported for using ' + + 'TransverseSpaceCharge._efield_pyecloud .' + + 'Did you f2py errfff.f?') + wx,wy=pm._errf(x,y) # in PyECLOUD only pm._errf_f (not vectorised) + return wx+1j*wy + +def _efieldn_pyecloud(xin, yin, sigmax, sigmay): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + + Effective copy of PyECLOUD.BassErsk.BassErsk implementation. + ''' + x=abs(xin); + y=abs(yin); + eps0=8.854187817620e-12; + if sigmax>sigmay: + S=np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)); + factBE=1/(2*eps0*np.sqrt(pi)*S); + etaBE=sigmay/sigmax*x+1j*sigmax/sigmay*y; + zetaBE=x+1j*y; + val=factBE*(wfun(zetaBE/S)- + np.exp( -x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay))* + wfun(etaBE/S) ); + Ex=abs(val.imag)*np.sign(xin); + Ey=abs(val.real)*np.sign(yin); + else: + S=np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)); + factBE=1/(2*eps0*np.sqrt(pi)*S); + etaBE=sigmax/sigmay*y+1j*sigmay/sigmax*x; + yetaBE=y+1j*x; + val=factBE*(wfun(yetaBE/S)- + np.exp( -y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax))* + wfun(etaBE/S) ); + Ey=abs(val.imag)*np.sign(yin); + Ex=abs(val.real)*np.sign(xin); + return Ex, Ey + +@np.vectorize +def _efieldn_kv_a(x, y, sigma_x, sigma_y): + 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 +# vectorize is bad for cuda + + +@np.vectorize +def _efieldn_kv_b(x, y, sigma_x, sigma_y): + 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 + +###Still far slower than Gaussian +@np.vectorize +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 + + +def _efieldn_gauss_round(x, y, sig_r): + '''Return (E_x / Q, E_y / Q) for a round distribution + with sigma_x == sigma_y == sig_r . + ''' + r2 = x*x + y*y + amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) + return x * amplitude, y * amplitude + +def _efieldn_linearized(x, y, sig_x, sig_y): + ''' + Returns linearized + ''' + a = np.sqrt(2)*sig_x + b = np.sqrt(2)*sig_y + amplitude = 1./(4.*np.pi*epsilon_0*a*b) + return x * amplitude, y * amplitude +@np.vectorize +def _efieldn_kv_round(x, y, r): + '''Return (E_x / Q, E_y / Q) for a round distribution + with sigma_x == sigma_y == sig_r . + ''' + r2 = x*x + y*y + if r2 < r**2: + amplitude = 1/(4*np.pi*r*r*epsilon_0) + else: + amplitude = 1/(4*np.pi*r2**(3/2)*epsilon_0) + return x * amplitude, y * amplitude + + +def add_sigma_check(efieldn, dist): + '''Wrapper for a normalised electric field function. + + Adds the following actions before calculating the field: + - exchange x and y quantities if sigma_x < sigma_y + - apply round beam field formula when sigma_x close to sigma_y + ''' + + '''Threshold for relative transverse beam size difference + below which the beam is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round beam + ''' + ratio_threshold = 1e-3 + + '''Threshold for absolute transverse beam size difference + below which the beam is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round beam + ''' + absolute_threshold = 1e-10 + if dist == 'GS': + efieldn_round = _efieldn_gauss_round + elif dist == 'KV': + efieldn_round = _efieldn_kv_round + elif dist == 'LN': + efieldn_round = _efieldn_linearized + + @wraps(efieldn) + def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): + tol_kwargs = dict( + rtol=ratio_threshold, + atol=absolute_threshold + ) + if pm.allclose(sig_y, sig_x, **tol_kwargs): + if pm.almost_zero(sig_y, **tol_kwargs): + en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) + else: + en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) + elif pm.all(sig_x < sig_y): + en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) + else: + en_x, en_y = efieldn(x, y, sig_x, sig_y, *args, **kwargs) + return en_x, en_y + return efieldn_checked From e38d1fea09dddd7b2192f9e73757241caadbd4de Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 10:57:48 +0100 Subject: [PATCH 11/64] Added Electron Lens implementation to PyHEADTAIL. Electron lens is implemented as a kick with a weak-strong assumption, assuming that electron beam is unaffected by the main beam. --- .../elens/.vscode/.ropeproject/config.py | 114 +++++++++ PyHEADTAIL/elens/__init__.py | 1 + PyHEADTAIL/elens/elens.py | 222 ++++++++++++++++++ 3 files changed, 337 insertions(+) create mode 100644 PyHEADTAIL/elens/.vscode/.ropeproject/config.py create mode 100644 PyHEADTAIL/elens/__init__.py create mode 100644 PyHEADTAIL/elens/elens.py diff --git a/PyHEADTAIL/elens/.vscode/.ropeproject/config.py b/PyHEADTAIL/elens/.vscode/.ropeproject/config.py new file mode 100644 index 00000000..dee2d1ae --- /dev/null +++ b/PyHEADTAIL/elens/.vscode/.ropeproject/config.py @@ -0,0 +1,114 @@ +# The default ``config.py`` +# flake8: noqa + + +def set_prefs(prefs): + """This function is called before opening the project""" + + # Specify which files and folders to ignore in the project. + # Changes to ignored resources are not added to the history and + # VCSs. Also they are not returned in `Project.get_files()`. + # Note that ``?`` and ``*`` match all characters but slashes. + # '*.pyc': matches 'test.pyc' and 'pkg/test.pyc' + # 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc' + # '.svn': matches 'pkg/.svn' and all of its children + # 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o' + # 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o' + prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject', + '.hg', '.svn', '_svn', '.git', '.tox'] + + # Specifies which files should be considered python files. It is + # useful when you have scripts inside your project. Only files + # ending with ``.py`` are considered to be python files by + # default. + # prefs['python_files'] = ['*.py'] + + # Custom source folders: By default rope searches the project + # for finding source folders (folders that should be searched + # for finding modules). You can add paths to that list. Note + # that rope guesses project source folders correctly most of the + # time; use this if you have any problems. + # The folders should be relative to project root and use '/' for + # separating folders regardless of the platform rope is running on. + # 'src/my_source_folder' for instance. + # prefs.add('source_folders', 'src') + + # You can extend python path for looking up modules + # prefs.add('python_path', '~/python/') + + # Should rope save object information or not. + prefs['save_objectdb'] = True + prefs['compress_objectdb'] = False + + # If `True`, rope analyzes each module when it is being saved. + prefs['automatic_soa'] = True + # The depth of calls to follow in static object analysis + prefs['soa_followed_calls'] = 0 + + # If `False` when running modules or unit tests "dynamic object + # analysis" is turned off. This makes them much faster. + prefs['perform_doa'] = True + + # Rope can check the validity of its object DB when running. + prefs['validate_objectdb'] = True + + # How many undos to hold? + prefs['max_history_items'] = 32 + + # Shows whether to save history across sessions. + prefs['save_history'] = True + prefs['compress_history'] = False + + # Set the number spaces used for indenting. According to + # :PEP:`8`, it is best to use 4 spaces. Since most of rope's + # unit-tests use 4 spaces it is more reliable, too. + prefs['indent_size'] = 4 + + # Builtin and c-extension modules that are allowed to be imported + # and inspected by rope. + prefs['extension_modules'] = [] + + # Add all standard c-extensions to extension_modules list. + prefs['import_dynload_stdmods'] = True + + # If `True` modules with syntax errors are considered to be empty. + # The default value is `False`; When `False` syntax errors raise + # `rope.base.exceptions.ModuleSyntaxError` exception. + prefs['ignore_syntax_errors'] = False + + # If `True`, rope ignores unresolvable imports. Otherwise, they + # appear in the importing namespace. + prefs['ignore_bad_imports'] = False + + # If `True`, rope will insert new module imports as + # `from import ` by default. + prefs['prefer_module_from_imports'] = False + + # If `True`, rope will transform a comma list of imports into + # multiple separate import statements when organizing + # imports. + prefs['split_imports'] = False + + # If `True`, rope will remove all top-level import statements and + # reinsert them at the top of the module when making changes. + prefs['pull_imports_to_top'] = True + + # If `True`, rope will sort imports alphabetically by module name instead + # of alphabetically by import statement, with from imports after normal + # imports. + prefs['sort_imports_alphabetically'] = False + + # Location of implementation of + # rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general + # case, you don't have to change this value, unless you're an rope expert. + # Change this value to inject you own implementations of interfaces + # listed in module rope.base.oi.type_hinting.providers.interfaces + # For example, you can add you own providers for Django Models, or disable + # the search type-hinting in a class hierarchy, etc. + prefs['type_hinting_factory'] = ( + 'rope.base.oi.type_hinting.factory.default_type_hinting_factory') + + +def project_opened(project): + """This function is called after opening the project""" + # Do whatever you like here! diff --git a/PyHEADTAIL/elens/__init__.py b/PyHEADTAIL/elens/__init__.py new file mode 100644 index 00000000..d2d966e2 --- /dev/null +++ b/PyHEADTAIL/elens/__init__.py @@ -0,0 +1 @@ +from .. import __version__ diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py new file mode 100644 index 00000000..50968602 --- /dev/null +++ b/PyHEADTAIL/elens/elens.py @@ -0,0 +1,222 @@ +''' +@authors: Vadim Gubaidulin, Adrian Oeftiger +@date: 18.02.2020 +''' +from __future__ import division + +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles import slicing +from PyHEADTAIL.particles.slicing import clean_slices +import numpy as np +from scipy.constants import c, epsilon_0, pi, m_e, m_p, e + +from scipy.interpolate import splrep, splev +from functools import wraps + +from PyHEADTAIL.general import pmath as pm +from PyHEADTAIL.field_maps import efields_funcs as efields + + +class ElectronLens(Element): + ''' + Contains implemenation of electron lens generated electromagnetic field acting on a particle collection. + Acts as a localized kick of a thin element. This implementation assumes that an electromagnetic field of + electron lens beam is not affected by interaction with a bunch. + ''' + ''' + Alfven current, used in the expression for the maximum tune shift from an electron lens + as defined here: + Landau Damping of Beam Instabilities by Electron Lenses + V. Shiltsev, Y. Alexahin, A. Burov, and A. Valishev + Phys. Rev. Lett. 119, 134802 (2017) + ''' + I_a = 17e3 + '''Threshold for relative transverse bunch size difference + below which the bunch is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round bunch + ''' + ratio_threshold = 1e-3 + '''Threshold for absolute transverse bunch size difference + below which the bunch is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round bunch + ''' + absolute_threshold = 1e-10 + + def __init__(self, + L_e, + I_e, + sigma_x, + sigma_y, + beta_e, + dist, + offset_x=0, + offset_y=0, + sig_check=True): + '''Arguments: + L_e: the length of an electron lens beam and bunch interaction region + I_e: a list of floats defining slicewise electron lens current + sigma_x: transverse horizontal rms size of an electron beam + sigma_y: transverse vertical rms size of an electron beam + beta_e: relativistic beta of electron bunch. Negative value means electron beam is + counterpropagating the accelerator bunch + dist: electron beam transverse distribution from a list ['GS', 'WB', 'KV'] + sig_check: exchanges x and y quantities for sigma_x < sigma_y + and applies the round bunch formulae for sigma_x == sigma_y . + sig_check defaults to True and should not usually be False. + offset_x: Horizontal offset of an electron lens beam to the nominal beam. + Defaults to zero, i.e. the electron lens is ideally matched to beam. + offset_y: Vertical offset of an electron lens beam to the nominal beam + Defaults to zero, i.e. the electron lens is ideally matched to beam. + ''' + self.slicer = slicing.UniformBinSlicer(n_slices=len(I_e), n_sigma_z=4) + self.L_e = L_e + self.I_e = I_e + self.sigma_x = sigma_x + self.sigma_y = sigma_y + self.beta_e = beta_e + self.dist = dist + self.offset_x = offset_x + self.offset_y = offset_y + + assert dist in ['GS', 'WB', 'KV', 'LN' + ], ('The given distribution type is not understood.') + if self.dist == 'GS': + self._efieldn = efields._efieldn_mit + if sig_check: + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + elif self.dist == 'WB': + self._efieldn = efields._efieldn_wb + elif self.dist == 'KV': + self._efieldn = efields._efieldn_kv_a + if sig_check: + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + elif self.dist=='LN': + self._efieldn = efields._efieldn_linearized + + @classmethod + def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): + ''' + Returns an round electron lens matched with a given ratio of electron lens beam size to nominal beam size + Arguments: + L_e: the length of an electron lens beam and bunch interaction region + dQ_max: the maximum tune shift from an electron lens kick + ratio: the ratio of electron lens beam size to nominal beam size + beta_e: relativistic beta of electron bunch. Negative value means electron beam is + counterpropagating the accelerator bunch + dist: electron beam transverse distribution from a list ['GS', 'WB', 'KV'] + bunch: the nominal bunch + ''' + absolute_threshold = 1e-10 + I_a = 17e3 + + assert (bunch.sigma_y() - bunch.sigma_y() + ) < absolute_threshold, ('The given bunch is not round') + if dist == 'GS': + I_e = dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'WB': + I_e = 3 / 4 * dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'KV': + I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + elif dist == 'LN': + I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + 4 * np.pi * + bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( + 1 + np.abs(beta_e) * bunch.beta) + else: + I_e = 0 + return ElectronLens(L_e, [ + I_e, + ], + ratio * bunch.sigma_x(), + ratio * bunch.sigma_x(), + beta_e, + dist=dist, + sig_check=True) + + def get_max_tune_shift(self, bunch): + ''' + ''' + if self.dist == 'GS': + # not m_p but bunch.mass() also the charge + [ + dQmax, + ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * + bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + elif self.dist == 'WB': + [ + dQmax, + ] = 4 * self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + elif self.dist == 'KV': + [ + dQmax, + ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + bunch.sigma_x() / self.sigma_x())**2 * ( + 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * + bunch.beta) + + return dQmax + + def track(self, bunch): + '''Add the kick from electron lens electromagnetic field to the bunch's + transverse kicks. + ''' + slices = bunch.get_slices( + self.slicer, statistics=['mean_x', 'mean_y', 'sigma_x', 'sigma_y']) + # Prefactor for round Gaussian bunch from theory: + prefactor = -bunch.charge * self.L_e * ( + 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * m_p * + (bunch.beta * c)**2) + # Nlambda_i is the line density [Coul/m] for the current slice + for s_i, I_i in enumerate(self.I_e): + p_id = slices.particle_indices_of_slice(s_i) + if len(p_id) == 0: + continue + Nlambda_i = I_i / (self.beta_e * c) + # Offset for an electron lens + en_x, en_y = self.get_efieldn(pm.take(bunch.x, p_id), + pm.take(bunch.y, p_id), 0.0, 0.0, + self.sigma_x, self.sigma_y) + kicks_x = (en_x * Nlambda_i) * prefactor + kicks_y = (en_y * Nlambda_i) * prefactor + + kicked_xp = pm.take(bunch.xp, p_id) + kicks_x + kicked_yp = pm.take(bunch.yp, p_id) + kicks_y + + pm.put(bunch.xp, p_id, kicked_xp) + pm.put(bunch.yp, p_id, kicked_yp) + + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + ''' + x = xr - mean_x + y = yr - mean_y + + # absolute values for convergence reasons of erfc + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), sig_x, sig_y) + en_x = pm.abs(en_x) * pm.sign(x) + en_y = pm.abs(en_y) * pm.sign(y) + + return en_x, en_y From c5f8c0d92dc793225a0129bb7cd4977fd2a4267d Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 13:45:51 +0100 Subject: [PATCH 12/64] Fixed import from Element --- PyHEADTAIL/feedback/transverse_damper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/feedback/transverse_damper.py b/PyHEADTAIL/feedback/transverse_damper.py index 5528860d..6e96e31f 100644 --- a/PyHEADTAIL/feedback/transverse_damper.py +++ b/PyHEADTAIL/feedback/transverse_damper.py @@ -10,7 +10,7 @@ from scipy.special import k0 from scipy.constants import c, e -from . import Element +from PyHEADTAIL.general.element import Element class TransverseDamper(Element): From d7f25700ad5e2da7e189472d006941dceeee18d3 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 13:59:07 +0100 Subject: [PATCH 13/64] Rewrote imports to be consistent with new location of electromagnetic fields in PyHEADTAIL/field_maps/efields_funcs.py --- PyHEADTAIL/spacecharge/spacecharge.py | 195 +++----------------------- 1 file changed, 23 insertions(+), 172 deletions(-) diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index 7a68e618..929603ca 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -4,15 +4,16 @@ ''' +from . import Element, clean_slices +from PyHEADTAIL.field_maps import efields_funcs as efields import numpy as np from scipy.constants import c, epsilon_0, pi + from scipy.interpolate import splrep, splev from functools import wraps -from PyHEADTAIL.general.element import Element -from PyHEADTAIL.general import pmath as pm -from PyHEADTAIL.particles.slicing import clean_slices +from ..general import pmath as pm class LongSpaceCharge(Element): @@ -126,7 +127,24 @@ def potential(z): sliceset.lambda_z(z) * beam.p0) return potential +class TransverseLinearSpaceCharge(Element): + def __init__(self, length): + self.length = length + self._efieldn = efields._efieldn_linearized + def track(self, beam): + x = beam.x - beam.mean_x() + y = beam.y - beam.mean_y() + prefactor = (beam.charge * self.length / + (beam.p0 * beam.betagamma * beam.gamma * c)) + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), beam.sigma_x(), beam.sigma_y) + kicks_x = (en_x) * prefactor + kicks_y = (en_y) * prefactor + + kicked_xp = pm.take(beam.xp, p_id) + kicks_x + kicked_yp = pm.take(beam.yp, p_id) + kicks_y + pm.put(beam.xp, p_id, kicked_xp) + pm.put(beam.yp, p_id, kicked_yp) class TransverseGaussianSpaceCharge(Element): '''Contains transverse space charge for a Gaussian configuration. Applies the Bassetti-Erskine electric field expression slice-wise @@ -165,11 +183,11 @@ def __init__(self, slicer, length, sig_check=True, other_efieldn=None): self.slicer = slicer self.length = length if other_efieldn is None: - self._efieldn = self._efieldn_mit + self._efieldn = efields._efieldn_mit else: self._efieldn = other_efieldn if sig_check: - self._efieldn = self.add_sigma_check(self._efieldn) + self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') def track(self, beam): '''Add the transverse space charge contribution to the beam's @@ -219,170 +237,3 @@ def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): en_y = pm.abs(en_y) * pm.sign(y) return en_x, en_y - - @staticmethod - def _sig_sqrt(sig_x, sig_y): - return pm.sqrt(2 * (sig_x**2 - sig_y**2)) - - @staticmethod - def _efieldn_mit(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses FADDEEVA C++ implementation from MIT (via SciPy >= 0.13.0). - ''' - # timing was ~0.522 ms for: - # x = np.arange(-1e-5, 1e-5, 1e-8) - # y = np.empty(len(x)) - # sig_x = 1.2e-6 - # sig_y = 1e-6 - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1re, w1im = pm.wofz(x / sig_sqrt, y / sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2re, w2im = pm.wofz(x * sig_y/(sig_x*sig_sqrt), - y * sig_x/(sig_y*sig_sqrt)) - denom = 2. * epsilon_0 * np.sqrt(pi) * sig_sqrt - return (w1im - ex * w2im) / denom, (w1re - ex * w2re) / denom - - @staticmethod - def _efieldn_mitmod(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses erfc C++ implementation from MIT (via SciPy >= 0.13.0) - and calculates wofz (FADDEEVA function) explicitely. - ''' - # timing was ~1.01ms for same situation as _efieldn_mit - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1 = pm._errfadd((x + 1j * y) / sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2 = pm._errfadd(x * sig_y/(sig_x*sig_sqrt) + - y * sig_x/(sig_y*sig_sqrt) * 1j) - val = (w1 - ex * w2) / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) - return val.imag, val.real - - @staticmethod - def _efieldn_koelbig(x, y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. - For convergence reasons of the erfc, use only x > 0 and y > 0. - - Uses CERN library from K. Koelbig. - ''' - # timing was ~3.35ms for same situation as _efieldn_mit - if not pm._errf: - raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_koelbig .' + - 'Did you call make (or f2py general/errfff.f)?') - sig_sqrt = TransverseGaussianSpaceCharge._sig_sqrt(sig_x, sig_y) - w1re, w1im = pm._errf(x/sig_sqrt, y/sig_sqrt) - ex = pm.exp(-x*x / (2 * sig_x*sig_x) + - -y*y / (2 * sig_y*sig_y)) - w2re, w2im = pm._errf(x * sig_y/(sig_x*sig_sqrt), - y * sig_x/(sig_y*sig_sqrt)) - pref = 1. / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) - return pref * (w1im - ex * w2im), pref * (w1re - ex * w2re) - - @staticmethod - def wfun(z): - '''FADDEEVA function as implemented in PyECLOUD, vectorised.''' - x=z.real - y=z.imag - if not pm._errf: - raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_pyecloud .' + - 'Did you f2py errfff.f?') - wx,wy=pm._errf(x,y) # in PyECLOUD only pm._errf_f (not vectorised) - return wx+1j*wy - - @staticmethod - def _efieldn_pyecloud(xin, yin, sigmax, sigmay): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - - Return (E_x / Q, E_y / Q). - - Effective copy of PyECLOUD.BassErsk.BassErsk implementation. - ''' - # timing was ~3.52ms for same situation as _efieldn_mit - wfun = TransverseGaussianSpaceCharge.wfun - x=abs(xin); - y=abs(yin); - eps0=8.854187817620e-12; - if sigmax>sigmay: - S=np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmay/sigmax*x+1j*sigmax/sigmay*y; - zetaBE=x+1j*y; - val=factBE*(wfun(zetaBE/S)- - np.exp( -x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay))* - wfun(etaBE/S) ); - Ex=abs(val.imag)*np.sign(xin); - Ey=abs(val.real)*np.sign(yin); - else: - S=np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmax/sigmay*y+1j*sigmay/sigmax*x; - yetaBE=y+1j*x; - val=factBE*(wfun(yetaBE/S)- - np.exp( -y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax))* - wfun(etaBE/S) ); - Ey=abs(val.imag)*np.sign(yin); - Ex=abs(val.real)*np.sign(xin); - return Ex, Ey - - @staticmethod - def _efieldn_round(x, y, sig_r): - '''Return (E_x / Q, E_y / Q) for a round distribution - with sigma_x == sigma_y == sig_r . - ''' - r2 = x*x + y*y - amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) - return x * amplitude, y * amplitude - - @staticmethod - def add_sigma_check(efieldn): - '''Wrapper for a normalised electric field function. - - Adds the following actions before calculating the field: - - exchange x and y quantities if sigma_x < sigma_y - - apply round beam field formula when sigma_x close to sigma_y - ''' - efieldn_round = TransverseGaussianSpaceCharge._efieldn_round - @wraps(efieldn) - def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): - tol_kwargs = dict( - rtol=TransverseGaussianSpaceCharge.ratio_threshold, - atol=TransverseGaussianSpaceCharge.absolute_threshold - ) - if pm.allclose(sig_y, sig_x, **tol_kwargs): - if pm.almost_zero(sig_y, **tol_kwargs): - en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) - else: - en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) - elif pm.all(sig_x < sig_y): - en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) - else: - en_x, en_y = efieldn(x, y, sig_x, sig_y, *args, **kwargs) - return en_x, en_y - return efieldn_checked From 8d039f52ef1bba7e770f1cbb270d792461273b7d Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 12 Mar 2020 15:38:09 +0100 Subject: [PATCH 14/64] Added changed to import to be compatible with addition of PyHEADTAIL/field_maps/efields_funcs.py --- PyHEADTAIL/spacecharge/spacecharge.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index 929603ca..fd2b27c1 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -4,7 +4,8 @@ ''' -from . import Element, clean_slices +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles.slicing import clean_slices from PyHEADTAIL.field_maps import efields_funcs as efields import numpy as np From 432f4f67a67f846575c5cb1571de791bb8602f52 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Thu, 28 May 2020 15:17:40 +0200 Subject: [PATCH 15/64] Changed an incorect use of super() function --- PyHEADTAIL/elens/elens.py | 18 +++---- PyHEADTAIL/field_maps/efields_funcs.py | 10 ++-- PyHEADTAIL/spacecharge/spacecharge.py | 69 ++++++++++++++++++-------- 3 files changed, 63 insertions(+), 34 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 50968602..36c4a341 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -88,7 +88,7 @@ def __init__(self, elif self.dist == 'WB': self._efieldn = efields._efieldn_wb elif self.dist == 'KV': - self._efieldn = efields._efieldn_kv_a + self._efieldn = efields._efieldn_kv_b if sig_check: self._efieldn = efields.add_sigma_check( self._efieldn, self.dist) @@ -114,22 +114,22 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): assert (bunch.sigma_y() - bunch.sigma_y() ) < absolute_threshold, ('The given bunch is not round') if dist == 'GS': - I_e = dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'WB': - I_e = 3 / 4 * dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*3 / 4 * dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'KV': - I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'LN': - I_e = 2*dQ_max * I_a * (m_p / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * np.pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) @@ -151,7 +151,7 @@ def get_max_tune_shift(self, bunch): # not m_p but bunch.mass() also the charge [ dQmax, - ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -159,7 +159,7 @@ def get_max_tune_shift(self, bunch): elif self.dist == 'WB': [ dQmax, - ] = 4 * self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*4 * self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -167,7 +167,7 @@ def get_max_tune_shift(self, bunch): elif self.dist == 'KV': [ dQmax, - ] = self.I_e / self.I_a * m_e / m_p * self.L_e / ( + ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -183,7 +183,7 @@ def track(self, bunch): self.slicer, statistics=['mean_x', 'mean_y', 'sigma_x', 'sigma_y']) # Prefactor for round Gaussian bunch from theory: prefactor = -bunch.charge * self.L_e * ( - 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * m_p * + 1 + self.beta_e * bunch.beta) * 1. / (bunch.gamma * bunch.mass * (bunch.beta * c)**2) # Nlambda_i is the line density [Coul/m] for the current slice for s_i, I_i in enumerate(self.I_e): diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index 2fdb58b7..cdaa2a3d 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -204,9 +204,9 @@ def _efieldn_linearized(x, y, sig_x, sig_y): ''' Returns linearized ''' - a = np.sqrt(2)*sig_x - b = np.sqrt(2)*sig_y - amplitude = 1./(4.*np.pi*epsilon_0*a*b) + a = pm.sqrt(2)*sig_x + b = pm.sqrt(2)*sig_y + amplitude = 1./(2.*np.pi*epsilon_0*a*b) return x * amplitude, y * amplitude @np.vectorize def _efieldn_kv_round(x, y, r): @@ -215,9 +215,9 @@ def _efieldn_kv_round(x, y, r): ''' r2 = x*x + y*y if r2 < r**2: - amplitude = 1/(4*np.pi*r*r*epsilon_0) + amplitude = 1/(2*np.pi*r*r*epsilon_0) else: - amplitude = 1/(4*np.pi*r2**(3/2)*epsilon_0) + amplitude = 1/(2*np.pi*r2*epsilon_0) return x * amplitude, y * amplitude diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index fd2b27c1..cdca5a14 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -3,7 +3,6 @@ @date: 17/04/2015 ''' - from PyHEADTAIL.general.element import Element from PyHEADTAIL.particles.slicing import clean_slices from PyHEADTAIL.field_maps import efields_funcs as efields @@ -14,7 +13,7 @@ from scipy.interpolate import splrep, splev from functools import wraps -from ..general import pmath as pm +from PyHEADTAIL.general import pmath as pm class LongSpaceCharge(Element): @@ -128,24 +127,8 @@ def potential(z): sliceset.lambda_z(z) * beam.p0) return potential -class TransverseLinearSpaceCharge(Element): - def __init__(self, length): - self.length = length - self._efieldn = efields._efieldn_linearized - def track(self, beam): - x = beam.x - beam.mean_x() - y = beam.y - beam.mean_y() - prefactor = (beam.charge * self.length / - (beam.p0 * beam.betagamma * beam.gamma * c)) - en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), beam.sigma_x(), beam.sigma_y) - kicks_x = (en_x) * prefactor - kicks_y = (en_y) * prefactor - kicked_xp = pm.take(beam.xp, p_id) + kicks_x - kicked_yp = pm.take(beam.yp, p_id) + kicks_y - pm.put(beam.xp, p_id, kicked_xp) - pm.put(beam.yp, p_id, kicked_yp) class TransverseGaussianSpaceCharge(Element): '''Contains transverse space charge for a Gaussian configuration. Applies the Bassetti-Erskine electric field expression slice-wise @@ -198,7 +181,6 @@ def track(self, beam): self.slicer, statistics=["mean_x", "mean_y", "sigma_x", "sigma_y"]) prefactor = (beam.charge * self.length / (beam.p0 * beam.betagamma * beam.gamma * c)) - # Nlambda_i is the line density [Coul/m] for the current slice for s_i, (Nlambda_i, mean_x, mean_y, sig_x, sig_y) in enumerate(zip( slices.lambda_bins(smoothen=False)/slices.slice_widths, @@ -211,7 +193,6 @@ def track(self, beam): en_x, en_y = self.get_efieldn( pm.take(beam.x, p_id), pm.take(beam.y, p_id), mean_x, mean_y, sig_x, sig_y) - kicks_x = (en_x * Nlambda_i) * prefactor kicks_y = (en_y * Nlambda_i) * prefactor @@ -238,3 +219,51 @@ def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): en_y = pm.abs(en_y) * pm.sign(y) return en_x, en_y +class TransverseLinearSpaceCharge(TransverseGaussianSpaceCharge): + '''Contains transverse space charge for a Gaussian configuration. + Applies the Bassetti-Erskine electric field expression slice-wise + for each particle centred around the slice centre. + ''' + + '''Threshold for relative transverse beam size difference + below which the beam is assumed to be round: + abs(1 - sig_y / sig_x) < ratio_threshold ==> round beam + ''' + ratio_threshold = 1e-3 + + '''Threshold for absolute transverse beam size difference + below which the beam is assumed to be round: + abs(sig_y - sig_x) < absolute_threshold ==> round beam + ''' + absolute_threshold = 1e-10 + + def __init__(self, slicer, length, sig_check=True): + '''Arguments: + - slicer determines the slicing parameters for the slices over + which the KV electric field expression is applied, + given a slicer with n_slices == 1, you can apply a + longitudinally averaged kick over the whole beam. + - length is an s interval along which the space charge force + is integrated. + - sig_check exchanges x and y quantities for sigma_x < sigma_y + and applies the round beam formula for sigma_x == sigma_y . + sig_check defaults to True and should not usually be False. + ''' + self.slicer = slicer + self.length = length + self._efieldn = efields._efieldn_kv_b + if sig_check: + self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') + + def track(self, beam): + '''Add the transverse space charge contribution to the beam's + transverse kicks. + ''' + return super().track(beam) + + + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): + ''' + Return (E_x / Q, E_y / Q). + ''' + return super().get_efieldn(xr, yr, mean_x, mean_y, sig_x, sig_y) \ No newline at end of file From 419ed85095b604d45fff656db673680d2252e301 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Tue, 7 Jul 2020 12:59:44 +0200 Subject: [PATCH 16/64] Minor changes and refactoring for elens.py, efields_funcs.py spacecharge.py --- PyHEADTAIL/elens/elens.py | 4 +++- PyHEADTAIL/field_maps/efields_funcs.py | 19 +++---------------- PyHEADTAIL/spacecharge/spacecharge.py | 4 ++-- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 36c4a341..b0756ea6 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -141,6 +141,8 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): ratio * bunch.sigma_x(), ratio * bunch.sigma_x(), beta_e, + offset_x=bunch.mean_x(), + offset_y=bunch.mean_y(), dist=dist, sig_check=True) @@ -193,7 +195,7 @@ def track(self, bunch): Nlambda_i = I_i / (self.beta_e * c) # Offset for an electron lens en_x, en_y = self.get_efieldn(pm.take(bunch.x, p_id), - pm.take(bunch.y, p_id), 0.0, 0.0, + pm.take(bunch.y, p_id), (self.offset_x), (self.offset_y), self.sigma_x, self.sigma_y) kicks_x = (en_x * Nlambda_i) * prefactor kicks_y = (en_y * Nlambda_i) * prefactor diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index cdaa2a3d..88688d73 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -192,11 +192,12 @@ def _efieldn_wb(x, y, sigma_x, sigma_y): return efield.real/denom, efield.imag/denom -def _efieldn_gauss_round(x, y, sig_r): +def _efieldn_gauss_round(x, y, sig_x, sig_y): '''Return (E_x / Q, E_y / Q) for a round distribution with sigma_x == sigma_y == sig_r . ''' r2 = x*x + y*y + sig_r = sig_x amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) return x * amplitude, y * amplitude @@ -208,18 +209,6 @@ def _efieldn_linearized(x, y, sig_x, sig_y): b = pm.sqrt(2)*sig_y amplitude = 1./(2.*np.pi*epsilon_0*a*b) return x * amplitude, y * amplitude -@np.vectorize -def _efieldn_kv_round(x, y, r): - '''Return (E_x / Q, E_y / Q) for a round distribution - with sigma_x == sigma_y == sig_r . - ''' - r2 = x*x + y*y - if r2 < r**2: - amplitude = 1/(2*np.pi*r*r*epsilon_0) - else: - amplitude = 1/(2*np.pi*r2*epsilon_0) - return x * amplitude, y * amplitude - def add_sigma_check(efieldn, dist): '''Wrapper for a normalised electric field function. @@ -243,8 +232,6 @@ def add_sigma_check(efieldn, dist): if dist == 'GS': efieldn_round = _efieldn_gauss_round elif dist == 'KV': - efieldn_round = _efieldn_kv_round - elif dist == 'LN': efieldn_round = _efieldn_linearized @wraps(efieldn) @@ -257,7 +244,7 @@ def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): if pm.almost_zero(sig_y, **tol_kwargs): en_x = en_y = pm.zeros(x.shape, dtype=x.dtype) else: - en_x, en_y = efieldn_round(x, y, sig_x, *args, **kwargs) + en_x, en_y = efieldn_round(x, y, sig_x, sig_y, *args, **kwargs) elif pm.all(sig_x < sig_y): en_y, en_x = efieldn(y, x, sig_y, sig_x, *args, **kwargs) else: diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index cdca5a14..4ea1ed12 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -251,9 +251,9 @@ def __init__(self, slicer, length, sig_check=True): ''' self.slicer = slicer self.length = length - self._efieldn = efields._efieldn_kv_b + self._efieldn = efields._efieldn_linearized if sig_check: - self._efieldn = efields.add_sigma_check(self._efieldn, 'GS') + self._efieldn = efields.add_sigma_check(self._efieldn, 'KV') def track(self, beam): '''Add the transverse space charge contribution to the beam's From 7ca06edd37777244c7d6d2162dd5bb952e2904e4 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Wed, 29 Jul 2020 14:45:46 +0200 Subject: [PATCH 17/64] corrected error in _efieldn_linearized --- PyHEADTAIL/field_maps/efields_funcs.py | 13 +++++++++---- PyHEADTAIL/spacecharge/spacecharge.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index 88688d73..cf61705f 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -136,6 +136,9 @@ def _efieldn_pyecloud(xin, yin, sigmax, sigmay): @np.vectorize 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: @@ -156,6 +159,9 @@ def _efieldn_kv_a(x, y, sigma_x, sigma_y): @np.vectorize 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: @@ -171,7 +177,6 @@ def _efieldn_kv_b(x, y, sigma_x, sigma_y): denom = 4*np.pi*epsilon_0 return efield_x/denom, efield_y/denom -###Still far slower than Gaussian @np.vectorize def _efieldn_wb(x, y, sigma_x, sigma_y): a = sigma_x*pm.sqrt(3) @@ -203,12 +208,12 @@ def _efieldn_gauss_round(x, y, sig_x, sig_y): def _efieldn_linearized(x, y, sig_x, sig_y): ''' - Returns linearized + 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 * amplitude, y * amplitude + amplitude = 1./(2.*np.pi*epsilon_0*(a+b)) + return x/a * amplitude, y/b * amplitude def add_sigma_check(efieldn, dist): '''Wrapper for a normalised electric field function. diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index 4ea1ed12..d5fec7f0 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -251,7 +251,7 @@ def __init__(self, slicer, length, sig_check=True): ''' self.slicer = slicer self.length = length - self._efieldn = efields._efieldn_linearized + self._efieldn = efields._efieldn_kv_a if sig_check: self._efieldn = efields.add_sigma_check(self._efieldn, 'KV') From 429dbf35a8bb25c34ddbce4d8014a9377fa1e3e8 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Mon, 24 Aug 2020 11:24:07 +0200 Subject: [PATCH 18/64] Commented out printing in rfbucket_matching.py to declutter my own output. --- PyHEADTAIL/particles/rfbucket_matching.py | 18 +++++++++--------- PyHEADTAIL/spacecharge/spacecharge.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/PyHEADTAIL/particles/rfbucket_matching.py b/PyHEADTAIL/particles/rfbucket_matching.py index 559c9ee8..065b2da7 100644 --- a/PyHEADTAIL/particles/rfbucket_matching.py +++ b/PyHEADTAIL/particles/rfbucket_matching.py @@ -89,8 +89,8 @@ def error_from_target_epsn(ec): if np.isnan(emittance): raise ValueError - self.prints('... distance to target emittance: ' + - '{:.2e}'.format(emittance-epsn_z)) + # self.prints('... distance to target emittance: ' + + # '{:.2e}'.format(emittance-epsn_z)) return emittance-epsn_z @@ -106,9 +106,9 @@ def error_from_target_epsn(ec): self.psi_object.H0 = self.rfbucket.guess_H0( ec_bar, from_variable='epsn') emittance = self._compute_emittance(self.rfbucket, self.psi) - self.prints('--> Emittance: ' + str(emittance)) + # self.prints('--> Emittance: ' + str(emittance)) sigma = self._compute_sigma(self.rfbucket, self.psi) - self.prints('--> Bunch length: ' + str(sigma)) + # self.prints('--> Bunch length: ' + str(sigma)) def psi_for_bunchlength_newton_method(self, sigma): # Maximum bunch length @@ -120,7 +120,7 @@ def psi_for_bunchlength_newton_method(self, sigma): 'Using (maximum) full bucket RMS bunch length ' + str(sigma_max*0.99) + 'm instead.') sigma = sigma_max*0.99 - self.prints('*** Maximum RMS bunch length ' + str(sigma_max) + 'm.') + # self.prints('*** Maximum RMS bunch length ' + str(sigma_max) + 'm.') def error_from_target_sigma(sc): '''Width for bunch length''' @@ -130,8 +130,8 @@ def error_from_target_sigma(sc): if np.isnan(length): raise ValueError - self.prints('... distance to target bunch length: ' + - '{:.4e}'.format(length-sigma)) + # self.prints('... distance to target bunch length: ' + + # '{:.4e}'.format(length-sigma)) return length-sigma @@ -147,9 +147,9 @@ def error_from_target_sigma(sc): self.psi_object.H0 = self.rfbucket.guess_H0( sc_bar, from_variable='sigma') sigma = self._compute_sigma(self.rfbucket, self.psi) - self.prints('--> Bunch length: ' + str(sigma)) + # self.prints('--> Bunch length: ' + str(sigma)) emittance = self._compute_emittance(self.rfbucket, self.psi) - self.prints('--> Emittance: ' + str(emittance)) + # self.prints('--> Emittance: ' + str(emittance)) def linedensity(self, xx, quad_type=fixed_quad): L = [] diff --git a/PyHEADTAIL/spacecharge/spacecharge.py b/PyHEADTAIL/spacecharge/spacecharge.py index d5fec7f0..4ea1ed12 100644 --- a/PyHEADTAIL/spacecharge/spacecharge.py +++ b/PyHEADTAIL/spacecharge/spacecharge.py @@ -251,7 +251,7 @@ def __init__(self, slicer, length, sig_check=True): ''' self.slicer = slicer self.length = length - self._efieldn = efields._efieldn_kv_a + self._efieldn = efields._efieldn_linearized if sig_check: self._efieldn = efields.add_sigma_check(self._efieldn, 'KV') From cfbdaba934daa41047ee43ffc46ff4f56a8fd5b6 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 19 May 2021 17:37:13 +0200 Subject: [PATCH 19/64] Implemented a detuner version for electron lens --- PyHEADTAIL/elens/elens.py | 45 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index b0756ea6..669efc6e 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -11,12 +11,55 @@ from scipy.constants import c, epsilon_0, pi, m_e, m_p, e from scipy.interpolate import splrep, splev +from scipy.integrate import quad +from scipy.special import i0, i1 from functools import wraps from PyHEADTAIL.general import pmath as pm from PyHEADTAIL.field_maps import efields_funcs as efields +from PyHEADTAIL.trackers.detuners import DetunerCollection - +class ElectronLensDetuner(DetunerCollection): + def __init__(self, dQmax, r, beta_x, beta_y): + self.dQmax = dQmax + self.r = r + self.beta_x = beta_x + self.beta_y = beta_y + self.segment_detuners = [] + def generate_segment_detuner(self, dmu_x, dmu_y, **kwargs): + dapp_xz = self.dQmax + dapp_yz = self.dQmax + dapp_xz *= dmu_x + dapp_yz *= dmu_y + detuner = ElectronLensSegmentDetuner(dapp_xz, dapp_yz, self.r, self.beta_x, self.beta_y) + self.segment_detuners.append(detuner) +class ElectronLensSegmentDetuner(object): + def __init__(self, dapp_xz, dapp_yz, r, beta_x, beta_y): + self.dapp_xz = dapp_xz + self.dapp_yz = dapp_yz + self.beta_x = beta_x + self.beta_y = beta_y + self.r = r + + def detune(self, beam): + def _bessel_term(u, kx, ky): + return (i0(kx*u)-i1(kx*u))*i0(ky*u)*np.exp((kx+ky)*u) + Jx = 0.5*(1/self.beta_x*beam.x**2+self.beta_x*beam.xp**2) + Jy = 0.5*(1/self.beta_y*beam.x**2+self.beta_y*beam.yp**2) + ##proper implementation through integration + # Kx = Jx/beam.epsn_x()*self.r**2 + # Ky = Jy/beam.epsn_y()*self.r**2 + # K = tuple(zip(Kx, Ky)) + # bessel_term_X = np.array([quad(_bessel_term, 0, 1, args=(kx, ky))[0] for (kx, ky) in K]) + # bessel_term_Y = np.array([quad(_bessel_term, 0, 1, args=(ky, kx))[0] for (kx, ky) in K]) + ## approximate formula from Burov + ax = np.sqrt(2.0*Jx/beam.epsn_x()) + ay = np.sqrt(2.0*Jy/beam.epsn_y()) + bessel_term_X = (192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2)/(192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2+36.0*ax**2+21.0*ay**2) + bessel_term_Y = (192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2)/(192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2+36.0*ay**2+21.0*ax**2) + dQx = self.dapp_xz*bessel_term_X + dQy = self.dapp_yz*bessel_term_Y + return dQx, dQy class ElectronLens(Element): ''' Contains implemenation of electron lens generated electromagnetic field acting on a particle collection. From 78ed47f98484729dd8b91e2d5d6745afe709e532 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 20 May 2021 11:29:38 +0200 Subject: [PATCH 20/64] added a betagamma factor for the detuner model --- PyHEADTAIL/elens/elens.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 669efc6e..67d9cc3c 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -53,8 +53,8 @@ def _bessel_term(u, kx, ky): # bessel_term_X = np.array([quad(_bessel_term, 0, 1, args=(kx, ky))[0] for (kx, ky) in K]) # bessel_term_Y = np.array([quad(_bessel_term, 0, 1, args=(ky, kx))[0] for (kx, ky) in K]) ## approximate formula from Burov - ax = np.sqrt(2.0*Jx/beam.epsn_x()) - ay = np.sqrt(2.0*Jy/beam.epsn_y()) + ax = np.sqrt(2.0*Jx/(beam.epsn_x()/beam.betagamma)) + ay = np.sqrt(2.0*Jy/(beam.epsn_y()/beam.betagamma)) bessel_term_X = (192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2)/(192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2+36.0*ax**2+21.0*ay**2) bessel_term_Y = (192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2)/(192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2+36.0*ay**2+21.0*ax**2) dQx = self.dapp_xz*bessel_term_X From f09736a3965bb92a47c4a330954d16032be6832f Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Tue, 19 Oct 2021 16:27:11 +0200 Subject: [PATCH 21/64] Recompiled for gpu thrust.so --- .../cobra_functions/pdf_integrators_2d.py | 2 +- PyHEADTAIL/elens/elens.py | 23 +- PyHEADTAIL/feedback/Changelog.txt | 5 + PyHEADTAIL/feedback/__init__.py | 2 + PyHEADTAIL/feedback/core.py | 470 ++++ PyHEADTAIL/feedback/feedback.py | 683 +++++ PyHEADTAIL/feedback/original_feedback.py | 23 + PyHEADTAIL/feedback/processors/__init__.py | 0 .../processors/abstract_filter_responses.py | 82 + PyHEADTAIL/feedback/processors/addition.py | 229 ++ PyHEADTAIL/feedback/processors/convolution.py | 657 +++++ .../feedback/processors/cython_hacks.pyx | 26 + .../feedback/processors/linear_transform.py | 391 +++ PyHEADTAIL/feedback/processors/misc.py | 53 + .../feedback/processors/multiplication.py | 292 ++ PyHEADTAIL/feedback/processors/register.py | 753 +++++ PyHEADTAIL/feedback/processors/resampling.py | 714 +++++ PyHEADTAIL/feedback/transverse_damper.py | 109 +- PyHEADTAIL/field_maps/efields_funcs.py | 22 +- PyHEADTAIL/multipoles/multipoles.py | 1 - PyHEADTAIL/particles/rfbucket_matching.py | 4 +- PyHEADTAIL/rfq/rfq.py | 1 - docs/PyHEADTAIL.aperture.html | 714 ----- docs/PyHEADTAIL.cobra_functions.html | 329 --- docs/PyHEADTAIL.feedback.html | 362 --- docs/PyHEADTAIL.field_maps.html | 126 - docs/PyHEADTAIL.general.html | 878 ------ docs/PyHEADTAIL.gpu.html | 376 --- docs/PyHEADTAIL.html | 228 -- docs/PyHEADTAIL.impedances.html | 1064 ------- docs/PyHEADTAIL.machines.html | 459 ---- docs/PyHEADTAIL.monitors.html | 527 ---- docs/PyHEADTAIL.multipoles.html | 347 --- docs/PyHEADTAIL.particles.html | 1523 ---------- docs/PyHEADTAIL.radiation.html | 190 -- docs/PyHEADTAIL.rfq.html | 419 --- docs/PyHEADTAIL.spacecharge.html | 400 --- docs/PyHEADTAIL.trackers.html | 1659 ----------- docs/genindex.html | 2440 ----------------- docs/index.html | 135 - docs/py-modindex.html | 351 --- docs/search.html | 92 - 42 files changed, 4508 insertions(+), 12653 deletions(-) create mode 100644 PyHEADTAIL/feedback/Changelog.txt create mode 100644 PyHEADTAIL/feedback/core.py create mode 100644 PyHEADTAIL/feedback/feedback.py create mode 100644 PyHEADTAIL/feedback/original_feedback.py create mode 100644 PyHEADTAIL/feedback/processors/__init__.py create mode 100644 PyHEADTAIL/feedback/processors/abstract_filter_responses.py create mode 100644 PyHEADTAIL/feedback/processors/addition.py create mode 100644 PyHEADTAIL/feedback/processors/convolution.py create mode 100644 PyHEADTAIL/feedback/processors/cython_hacks.pyx create mode 100644 PyHEADTAIL/feedback/processors/linear_transform.py create mode 100644 PyHEADTAIL/feedback/processors/misc.py create mode 100644 PyHEADTAIL/feedback/processors/multiplication.py create mode 100644 PyHEADTAIL/feedback/processors/register.py create mode 100644 PyHEADTAIL/feedback/processors/resampling.py delete mode 100644 docs/PyHEADTAIL.aperture.html delete mode 100644 docs/PyHEADTAIL.cobra_functions.html delete mode 100644 docs/PyHEADTAIL.feedback.html delete mode 100644 docs/PyHEADTAIL.field_maps.html delete mode 100644 docs/PyHEADTAIL.general.html delete mode 100644 docs/PyHEADTAIL.gpu.html delete mode 100644 docs/PyHEADTAIL.html delete mode 100644 docs/PyHEADTAIL.impedances.html delete mode 100644 docs/PyHEADTAIL.machines.html delete mode 100644 docs/PyHEADTAIL.monitors.html delete mode 100644 docs/PyHEADTAIL.multipoles.html delete mode 100644 docs/PyHEADTAIL.particles.html delete mode 100644 docs/PyHEADTAIL.radiation.html delete mode 100644 docs/PyHEADTAIL.rfq.html delete mode 100644 docs/PyHEADTAIL.spacecharge.html delete mode 100644 docs/PyHEADTAIL.trackers.html delete mode 100644 docs/genindex.html delete mode 100644 docs/index.html delete mode 100644 docs/py-modindex.html delete mode 100644 docs/search.html diff --git a/PyHEADTAIL/cobra_functions/pdf_integrators_2d.py b/PyHEADTAIL/cobra_functions/pdf_integrators_2d.py index 92437b2e..58592edf 100644 --- a/PyHEADTAIL/cobra_functions/pdf_integrators_2d.py +++ b/PyHEADTAIL/cobra_functions/pdf_integrators_2d.py @@ -62,7 +62,7 @@ def compute_mean_quad(psi, ylimit_min, ylimit_max, xmin, xmax, direction='x'): M, error = dblquad(f, xmin, xmax, ylimit_min, ylimit_max) - return M/Q + return M/Q def compute_var_quad(psi, ylimit_min, ylimit_max, xmin, xmax, direction='x'): '''Compute the second moment (variance) with respect to the x or diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index b0756ea6..d2a94943 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -6,10 +6,8 @@ from PyHEADTAIL.general.element import Element from PyHEADTAIL.particles import slicing -from PyHEADTAIL.particles.slicing import clean_slices import numpy as np -from scipy.constants import c, epsilon_0, pi, m_e, m_p, e - +from scipy.constants import c, m_e, e, pi from scipy.interpolate import splrep, splev from functools import wraps @@ -115,22 +113,22 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): ) < absolute_threshold, ('The given bunch is not round') if dist == 'GS': I_e = e/bunch.charge*dQ_max * I_a * (bunch.mass / m_e) * ( - 4 * np.pi * + 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( - 1 + np.abs(beta_e) * bunch.beta) + 1 + pm.abs(beta_e) * bunch.beta) elif dist == 'WB': I_e = e/bunch.charge*3 / 4 * dQ_max * I_a * (bunch.mass / m_e) * ( - 4 * np.pi * + 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( - 1 + np.abs(beta_e) * bunch.beta) + 1 + pm.abs(beta_e) * bunch.beta) elif dist == 'KV': I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( - 4 * np.pi * + 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'LN': I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( - 4 * np.pi * + 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) else: @@ -150,11 +148,10 @@ def get_max_tune_shift(self, bunch): ''' ''' if self.dist == 'GS': - # not m_p but bunch.mass() also the charge [ dQmax, ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( - 4 * np.pi * + 4 * pi * bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * bunch.beta) @@ -162,7 +159,7 @@ def get_max_tune_shift(self, bunch): [ dQmax, ] = bunch.charge/e*4 * self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( - 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + 4 * pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * bunch.beta) @@ -170,7 +167,7 @@ def get_max_tune_shift(self, bunch): [ dQmax, ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( - 4 * np.pi * bunch.epsn_x()) * (1 / 3) * ( + 4 * pi * bunch.epsn_x()) * (1 / 3) * ( bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * bunch.beta) diff --git a/PyHEADTAIL/feedback/Changelog.txt b/PyHEADTAIL/feedback/Changelog.txt new file mode 100644 index 00000000..5354f9c1 --- /dev/null +++ b/PyHEADTAIL/feedback/Changelog.txt @@ -0,0 +1,5 @@ +# Changelog + +## v0.1.x -> v0.2.x + * almost completely rewritten + * significant API canges \ No newline at end of file diff --git a/PyHEADTAIL/feedback/__init__.py b/PyHEADTAIL/feedback/__init__.py index e69de29b..755dc727 100644 --- a/PyHEADTAIL/feedback/__init__.py +++ b/PyHEADTAIL/feedback/__init__.py @@ -0,0 +1,2 @@ +from PyHEADTAIL.feedback.core import version +# print ('PyHEADTAIL_feedback v' + version + '\n\n') \ No newline at end of file diff --git a/PyHEADTAIL/feedback/core.py b/PyHEADTAIL/feedback/core.py new file mode 100644 index 00000000..4fca7bbd --- /dev/null +++ b/PyHEADTAIL/feedback/core.py @@ -0,0 +1,470 @@ +import numpy as np +import types +import copy +version = '0.2' + +""" +@author Jani Komppula +@date: 11/10/2017 + +This file contains the core functions and variables for the signal processing +framework. + +The basic concept is that a signal compatible with the framework +is generated by using interfaces (e.g. see feedback.py for PyHEADTAIL) which +utilize the basic functions and tools from the core (this file). A signal +from the interfaces is processed by passing it through a list of signal +processors, which represents, for example, a model of a transverse feedback +system. The signal processors in the list represent elementary analog and +digital signal processing steps, e.g. from the pickup plate to the kicker. +The signal processing model of the system itself is independent of the +interfaces, i.e. it can be used with any signal source (e.g. PyHEADTAIL or +signal tools for testing). + +Both interfaces and signal processors can be developed separately and +dynamically without interfering with each other. This file contains an +example of a signal processor. More signal processors can be found from +the folder 'processors' + +This file has been divided into three sections. The sections "SIGNALS AND +PARAMETERS" and "SIGNAL PROCESSORS" contain specifications, generators and +examples for signals and signal processors. The core functions for processing +signals with the signal processors, which can be used in programming +interfaces and signal processors are presented in the section "TOOLS". +""" + + +""" +## SIGNALS AND PARAMETERS +========================= +The definition of signal depends on context. For example, in one context, a +signal might be a continuous, time-varying, quantity, i.e. an analog signal. In +another context, it might be a list of numbers which represent values of +certain moments of equally spaced time, i.e. a digital signal. There are also +situations, where signals are more complex. + +Unfortunately, the framework should work with all signals in all the mentioned +contexts. Because it is very unpractical if not almost impossible to develop +all signal processors to work with the all types of signals, different +definitions for a signal can be used in the framework. + +The basic definition of a signal is that it consists of discrete numbers +in time domain. More specifically, a signal is a numpy array of +floating point numbers in time domain, i.e. +""" + + +def Signal(signal=[]): + """ Returns a prototype for a signal.""" + return np.array(signal) + + +""" +Each number in the array corresponds to a signal value in the +specific time interval, *bin*. By default, the value of the bin +is a time average of the signal over the bin, but this is not +guaranteed because normalization of the signal processors depends +on the studied case. + +In order to simplify development of signal processors, signals are +categorized into three classes basing on the assumptions which can be made +from a signal. Thus, signal processors can be specified to receive and +transmit signals in the specific classes. Due to the hierarchy of the signal +classes, a signal processor designed for lower class signals is also able to +process signals from higher classes. + + ### Class 0 signals + ------------------- + There are no limitations for Class 0 signals, i.e. bin spacing and bin + length might vary randomly. If the signal can be divided into segments, + each segment must have an equal number of bins with equal bin spacing and + bin lengths. + + Class 0 signal gives a large freedom to use any kind of signal as an input + for the signal processors. Particularly it means that a single array of + the slice values from multiple bunches can be used directly as a signal. + + ### Class 1 signals + ------------------- + In this class, it is assumed that signal might be divided into equal + length sequences which are separated by empty spaces. Bin spacing and + width must be constant and equal in each segment. + + In practice, this means that signals from each bunch have an equal number + of equally spaced slices/samples. + + ### Class 2 signals + ------------------- + The signal is equally spaced and continuous in time. + + In practice, this means that the signal is continuously sliced/sampled over + all bunches including empty spaces between bunches. This also limits the + slicing/sampling rate to be a fraction of the bunch spacing in the case of + multi bunch simulations. + +The signal itself does not contain any information about what is the signal +class or how the bins are located in the physical space. Thus, this +information is given in parallel to the signal to the signal processors +by using a dictionary *parameters*. + +The standard (minimal) prototype for the parameter dictionary is following, +but it is also allowed to add additional information to be carried between +the signal processors: +""" + +def Parameters(signal_class=0, bin_edges=np.array([]), n_segments=0, + n_bins_per_segment=0, segment_ref_points=np.array([]), + previous_parameters = [], location=0, beta=1.): + """ + Returns a prototype for signal parameters. + + Parameters + ---------- + class : int + A signal class + bin_edges : NumPy array + A 2D numpy array, which is equal length to the signal. Each row + includes two floating point numbers, the edge positions of + the bin in the physical space (time [s]). + n_segments : int + A number of equal length and equally binned segments where to + the signal can be divided + n_bins_per_segment : int + A number of bins per segment. `len(bin_edges)/n_segments` + segment_ref_points : NumPy array + A numpy array of the reference point for the segments + previous_parameters : array + A list of Parameter objects, which tracks how the samping is changed + during the signal processing + location : float + A location of the signal in betatron phase. + beta : float + A vale of beta function in the source of the signal. Value 1 + is neutral for signal processing + """ + return {'class': signal_class, + 'bin_edges': bin_edges, + 'n_segments': n_segments, + 'n_bins_per_segment': n_bins_per_segment, + 'segment_ref_points': segment_ref_points, + 'previous_parameters': previous_parameters, + 'location': location, + 'beta': beta + } + + +""" +In prinicple, the framework can also be extended to work +in other domains (e.g. f, s or z, symbolic calculations or even influences +from functional programmin), if the definition of signal is extended and +specific processors for the signal conversion between the different domains are +programmed. + +""" + +""" +## SIGNAL PROCESSORS +==================== +A signal processor is a Python object which processes/modifies signals. The +signal is processed in the method process(parameters, signal, *args, **kwargs), +which takes arguments *parameters* and *signal* and returns (possibly) modified +versions of them. + +The constructor of a signal processor must include the following lines: + * Signal classes for the input and output signals + self.signal_classes = (int, int) + * A list of possible extensions used in the processors (an empty list by + default): + self.extensions = [] + * Default macros, which help debugging and assist the future development + self._macros = [] + default_macros(self, 'ProcessorName', **kwargs) + +An example code for a minimal signal processor, which only bypasses a signal is +following: +""" +class Bypass(object): + def __init__(self, **kwargs): + self.signal_classes = (0, 0) + self.extensions = [] + # a list of macros + self._macros = [] + default_macros(self, 'Bypass', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + + return parameters, signal + +""" +The framework supports extensions to the minimial layout. For example, +extensions can be used to provide extra simulation data to signal processors +(bunch extension), implement more complex signal transfer between simulation +objects (registers and combiners) or provide extra data for debugging and +data visualization. Names of the extensions supported by the core are listed +on the variable extensions. + +The following extensions are supported by the core of the +framework. + + ### Bunch extension + ------------------- + The bunch extensions allows use of additional slice set data from PyHEADTAIL + in the processor. Because calculations of the statistical variables of the + slice sets require a lot of computing power, the names of required + variables are listed on the variable required_variables. + + The slice set data can be found from kwargs['slice_sets'], which is + a list of slice set objects (emulations) of the simulated bunches. Note + that it is not quaranteed that the bin set of the signal corresponds to + the bin set used in the slice set. This can be checked by checking a + number of items in the element 'previous_parameters' of the input + parameters. + +""" +class MinimalChargeWeighter(object): + def __init__(self, **kwargs): + # Signal classes for incoming and outgoing signals + self.signal_classes = (0, 0) + + # A list of extensions supported by the processor + self.extensions = ['bunch'] + + # A list of PYHEADTAIL slice set variables required by the processor + self.required_variables = ['n_macroparticles_per_slice'] + + def process(self, parameters, signal, *args, **kwargs): + + slice_sets = kwargs['slice_sets'] + + output_signal = np.copy(signal) + + for i, slice_set in enumerate(slice_sets): + n_macroparticles = np.sum(slice_set.n_macroparticles_per_slice) + + j_from = i * parameters['n_bins_per_segment'] + j_to = (i + 1) * parameters['n_bins_per_segment'] + output_signal[j_from:j_to] *= slice_set.n_macroparticles_per_slice/n_macroparticles + + # The signal or the prameters could be modified here + return parameters, output_signal + + +""" + ### Register and combiner extensions + ---------------------- + Register and combiner processors are designed to save and combine data + from multiple turns. The basic principle of a register is that it is an + iterable object, i.e. data from the register can be riden by iterating it + in a for loop. As a part of the signal processor list, register by passes + the signal without modifications. A combiner uses a register as a signal + source and returns a combined signal, i.e. it reads the values from + register(s) and combines signals by applying possible betatron phase + advance correction algorithms. + + Details of these processors can be found from the + file processors/register.py. +""" + + +""" +## TOOLS +======== +""" + +def process(parameters, signal, processors, **kwargs): + """ + Processes a signal through the given signal processors + + Parameters + ---------- + parameters : dict + A standardized dict of the additional parameters describing the signal + signal : NumPy array + The signal + processors : list + A list of signal processors. + **kwargs : - + Other arguments which will be passed to the signal processors + + Returns + ------- + dict + Possibly modified dict of the signal parameters + NumPy array + The processed signal + """ + + for processor in processors: + parameters, signal = processor.process(parameters, signal, **kwargs) +# if signal is None: +# print 'None signal!' +# break + + return parameters, signal + + +def bin_widths(bin_edges): + return (bin_edges[:, 1]-bin_edges[:, 0]) + + +def bin_mids(bin_edges): + return (bin_edges[:, 0]+bin_edges[:, 1])/2. + + +def bin_edges_to_z_bins(bin_edges): + return np.append(bin_edges[:, 0], bin_edges[-1, 1]) + + +def z_bins_to_bin_edges(z_bins): + return np.transpose(np.array([z_bins[:-1], z_bins[1:]])) + + +def append_bin_edges(bin_edges_1, bin_edges_2): + return np.concatenate((bin_edges_1, bin_edges_2), axis=0) + + +def get_processor_extensions(processors, external_extensions=None): + """ + A function, which checks available extensions from the processors. + + Parameters + ---------- + processors : list + A list of signal processors. + external_extensions : list + A list of external extensions, which will be added to the list + + Returns + ------- + list + A list of found extensions + """ + + if external_extensions is None: + available_extensions = [] + else: + available_extensions = external_extensions + + for processor in processors: + if processor.extensions is not None: + available_extensions.extend(processor.extensions) + + available_extensions = list(set(available_extensions)) + + return available_extensions + +""" +### Extension specific functions +================================ +""" +def get_processor_variables(processors, required_variables=None): + """ + A function which checks the required PyHEADTAIL slice set variables + from the signal processors. + + Parameters + ---------- + processors : list + A list of signal processors. + external_variables : list + A list of external variables, which will be added to the list + + Returns + ------- + list + A list of found statistical variables + """ + + if required_variables is None: + required_variables = [] + + for processor in processors: + if 'bunch' in processor.extensions: + required_variables.extend(processor.required_variables) + + required_variables = list(set(required_variables)) + + if 'z_bins' in required_variables: + required_variables.remove('z_bins') + + return required_variables + + +""" +### MACROS +======== +""" +def default_macros(obj, label=None, **kwargs): + func_list = [] + + func_list = func_list + debug_macro(obj, label=label, **kwargs) + func_list = func_list + label_macro(obj, label=label, **kwargs) + func_list = func_list + init_vatiables_macro(obj, **kwargs) + + return func_list + + +def label_macro(obj, label=None, **kwargs): + setattr(obj, 'label', label) + return [] + + +def init_vatiables_macro(obj, **kwargs): + setattr(obj, 'time_scale', 0) + return [] + + +def debug_macro(obj, **kwargs): + """ + A debug macro. + + If input parameter debug = True is given to the signal + processor, the input and output parameters and signals are stored + to the signal processor. + + Parameters + ---------- + target_object : object + A object which is operated (virtually always self) + label : string + A name of the signal processor + + Returns + ------- + object + A macro function, which is run in the process(...) method in the debug + mode is turn on. + """ + def decorated_process(self, parameters, signal, *args, **kwargs): + input_parameters = parameters + input_signal = np.copy(signal) + + output_parameters, output_signal = self.process_org(parameters, signal, + *args, **kwargs) + + for macro in self._macros: + macro(self, input_parameters, input_signal, output_parameters, + output_signal, *args, **kwargs) + + return output_parameters, output_signal + + def store_data(target_object, input_parameters, input_signal, + output_parameters, output_signal, *args, **kwargs): + if target_object.debug: + target_object.input_parameters = copy.copy(input_parameters) + target_object.input_signal = np.copy(input_signal) + target_object.output_parameters = copy.copy(output_parameters) + target_object.output_signal = np.copy(output_signal) + + if 'debug' in kwargs: + obj.extensions.append('debug') + + setattr(obj, 'debug', kwargs['debug']) + setattr(obj, 'input_parameters', None) + setattr(obj, 'input_signal', None) + setattr(obj, 'output_parameters', None) + setattr(obj, 'output_signal', None) + + obj.process_org = obj.process + obj.process = types.MethodType(decorated_process, obj) + + return [store_data] + return [] diff --git a/PyHEADTAIL/feedback/feedback.py b/PyHEADTAIL/feedback/feedback.py new file mode 100644 index 00000000..ec7c3e41 --- /dev/null +++ b/PyHEADTAIL/feedback/feedback.py @@ -0,0 +1,683 @@ +import numpy as np +import collections +from PyHEADTAIL.mpi import mpi_data +from core import get_processor_variables, process, Parameters +from core import z_bins_to_bin_edges, append_bin_edges +from processors.register import VectorSumCombiner, CosineSumCombiner +from processors.register import HilbertCombiner, DummyCombiner +from scipy.constants import c +""" + This file contains objecst, which can be used as transverse feedback + systems in the one turn map in PyHEADTAIL. The signal processing in the + feedback systems can be modelled by giving a list of the necessary signal + processors describing the system to the objects. + + @author Jani Komppula + @date 11/10/2017 +""" + + +class IdealBunchFeedback(object): + """ The simplest possible feedback. It corrects a gain fraction of a mean xp/yp value of the bunch. + """ + def __init__(self,gain, multi_bunch=False): + if isinstance(gain, collections.Container): + self._gain_x = gain[0] + self._gain_y = gain[1] + else: + self._gain_x = gain + self._gain_y = gain + + self.multi_bunch = multi_bunch + + def track(self,bunch): + + if self.multi_bunch: + bunch_list = bunch.split_to_views() + + for b in bunch_list: + b.xp -= self._gain_x *b.mean_xp() + b.yp -= self._gain_y*b.mean_yp() + else: + bunch.xp -= self._gain_x *bunch.mean_xp() + bunch.yp -= self._gain_y*bunch.mean_yp() + + +class IdealSliceFeedback(object): + """Corrects a gain fraction of a mean xp/yp value of each slice in the bunch.""" + def __init__(self,gain,slicer, multi_bunch=False): + if isinstance(gain, collections.Container): + self._gain_x = gain[0] + self._gain_y = gain[1] + else: + self._gain_x = gain + self._gain_y = gain + + self.multi_bunch = multi_bunch + + self._slicer = slicer + + def track(self,bunch): + + if self.multi_bunch: + bunch_list = bunch.split_to_views() + + for b in bunch_list: + slice_set = b.get_slices(self._slicer, statistics = ['mean_xp', 'mean_yp']) + p_idx = slice_set.particles_within_cuts + s_idx = slice_set.slice_index_of_particle.take(p_idx) + + b.xp[p_idx] -= self._gain_x * slice_set.mean_xp[s_idx] + b.yp[p_idx] -= self._gain_y * slice_set.mean_yp[s_idx] + + else: + slice_set = bunch.get_slices(self._slicer, statistics = ['mean_xp', 'mean_yp']) + + # Reads a particle index and a slice index for each macroparticle + p_idx = slice_set.particles_within_cuts + s_idx = slice_set.slice_index_of_particle.take(p_idx) + + bunch.xp[p_idx] -= self._gain_x * slice_set.mean_xp[s_idx] + bunch.yp[p_idx] -= self._gain_y * slice_set.mean_yp[s_idx] + + + +class GenericOneTurnMapObject(object): + def __init__(self, gain, slicer, processors_x, processors_y=None, + pickup_axis='divergence', kicker_axis=None, mpi=False, + phase_x=None, phase_y=None, location_x=0., location_y=0., + beta_x=1., beta_y=1., **kwargs): + + if isinstance(gain, collections.Container): + self._gain_x = gain[0] + self._gain_y = gain[1] + else: + self._gain_x = gain + self._gain_y = gain + + self._slicer = slicer + + self._processors_x = processors_x + self._processors_y = processors_y + + # beam parameters + self._pickup_axis = pickup_axis + self._kicker_axis = kicker_axis + self._phase_x = phase_x + self._phase_y = phase_y + self._location_x = location_x + self._location_y = location_y + self._beta_x = beta_x + self._beta_y = beta_y + + self._local_sets = None + self._signal_sets_x = None + self._signal_sets_y = None + self._loc_signal_sets_x = None + self._loc_signal_sets_y = None + self._required_variables = [] + + if (self._pickup_axis == 'divergence') or (phase_x is not None): + self._required_variables.append('mean_xp') + if (self._pickup_axis == 'displacement') or (phase_x is not None): + self._required_variables.append('mean_x') + + self._required_variables = get_processor_variables(self._processors_x, + self._required_variables) + if self._processors_y is not None: + if (self._pickup_axis == 'divergence') or (phase_y is not None): + self._required_variables.append('mean_yp') + if (self._pickup_axis == 'displacement') or (phase_y is not None): + self._required_variables.append('mean_y') + + self._required_variables = get_processor_variables(self._processors_y, + self._required_variables) +# # TODO: Normally n_macroparticles_per_slice is removed from +# # the statistical variables. Check if it is not necessary. + + self._mpi = mpi + if self._mpi: + self._mpi_gatherer = mpi_data.MpiGatherer(self._slicer, + self._required_variables) + self._parameters_x = None + self._signal_x = None + + self._parameters_y = None + self._signal_y = None + + + def _init_signals(self, bunch_list, signal_slice_sets_x, signal_slice_sets_y): + + self._parameters_x = self._generate_parameters(signal_slice_sets_x, + self._location_x, + self._beta_x) + + n_segments = self._parameters_x['n_segments'] + n_bins_per_segment = self._parameters_x['n_bins_per_segment'] + self._signal_x = np.zeros(n_segments * n_bins_per_segment) + + + if self._processors_y is not None: + self._parameters_y = self._generate_parameters(signal_slice_sets_y, + self._location_y, + self._beta_y) + + n_segments = self._parameters_y['n_segments'] + n_bins_per_segment = self._parameters_y['n_bins_per_segment'] + self._signal_y = np.zeros(n_segments * n_bins_per_segment) + + def _get_slice_sets(self, superbunch): + if self._mpi: + self._mpi_gatherer.gather(superbunch) + all_slice_sets = self._mpi_gatherer.bunch_by_bunch_data + local_slice_sets = self._mpi_gatherer.slice_set_list + bunch_list = self._mpi_gatherer.bunch_list + self._local_sets = self._mpi_gatherer.local_bunch_indexes + else: + all_slice_sets = [superbunch.get_slices(self._slicer, + statistics=self._required_variables)] + local_slice_sets = all_slice_sets + bunch_list = [superbunch] + self._local_sets = [0] + + if self._signal_sets_x is None: + indexes = self._parse_relevant_bunches(local_slice_sets, + all_slice_sets, + self._processors_x) + self._signal_sets_x = indexes[0] + self._loc_signal_sets_x = indexes[1] + + if self._processors_y is not None: + indexes = self._parse_relevant_bunches(local_slice_sets, + all_slice_sets, + self._processors_y) + self._signal_sets_y = indexes[0] + self._loc_signal_sets_y = indexes[1] + + signal_slice_sets_x = [] + for idx in self._signal_sets_x: + signal_slice_sets_x.append(all_slice_sets[idx]) + + if self._processors_y is not None: + signal_slice_sets_y = [] + for idx in self._signal_sets_y: + signal_slice_sets_y.append(all_slice_sets[idx]) + else: + signal_slice_sets_y = None + + return bunch_list, local_slice_sets, signal_slice_sets_x, signal_slice_sets_y + + def _generate_parameters(self, signal_slice_sets, location=0., beta=1.): + + bin_edges = None + segment_ref_points = [] + + if len(signal_slice_sets) > 1: + circumference = signal_slice_sets[0].circumference + h_bunch = signal_slice_sets[0].h_bunch + else: + circumference=None + h_bunch=None + + for slice_set in signal_slice_sets: + z_bins = np.copy(slice_set.z_bins) + if circumference is not None: + z_bins -= slice_set.bucket_id*circumference/float(h_bunch) + + edges = -1.*z_bins_to_bin_edges(z_bins)/c + segment_ref_points.append(-1.*np.mean(z_bins)/c) + if bin_edges is None: + bin_edges = np.copy(edges) + else: + bin_edges = append_bin_edges(bin_edges, edges) + + bin_edges = bin_edges[::-1] + bin_edges = np.fliplr(bin_edges) + segment_ref_points = segment_ref_points[::-1] + + n_bins_per_segment = len(bin_edges)/len(signal_slice_sets) + segment_ref_points = np.array(segment_ref_points) + + parameters = Parameters() + parameters['class'] = 0 + parameters['bin_edges'] = bin_edges + parameters['n_segments'] = len(signal_slice_sets) + parameters['n_bins_per_segment'] = n_bins_per_segment + parameters['segment_ref_points'] = segment_ref_points + parameters['location'] = location + parameters['beta'] = beta + + return parameters + + def _parse_relevant_bunches(self, local_slice_sets, all_slice_sets, processors): + circumference = all_slice_sets[0].circumference + h_bunch = all_slice_sets[0].h_bunch + + time_scale = 0. + + for processor in processors: + if processor.time_scale > time_scale: + time_scale = processor.time_scale + local_set_edges = np.zeros((len(local_slice_sets), 2)) + + included_sets = [] + set_is_included = np.zeros(len(all_slice_sets), dtype=int) + set_counter = np.zeros(len(all_slice_sets), dtype=int) + + for i, slice_set in enumerate(local_slice_sets): + local_set_edges[i,0] = np.min(slice_set.z_bins-slice_set.bucket_id*circumference/float(h_bunch))/c + local_set_edges[i,1] = np.max(slice_set.z_bins-slice_set.bucket_id*circumference/float(h_bunch))/c + + + local_min = np.min(local_set_edges) + local_max = np.max(local_set_edges) + + counter = 0 + for i, slice_set in enumerate(all_slice_sets): + set_min = np.min(slice_set.z_bins-slice_set.bucket_id*circumference/float(h_bunch))/c + set_max = np.max(slice_set.z_bins-slice_set.bucket_id*circumference/float(h_bunch))/c + # print 'set_min ' + str(set_min) + ' and (local_min - time_scale)' + str((local_min - time_scale)) + if (set_max > (local_min - time_scale)) and (set_min < (local_max + time_scale)): + included_sets.append(i) + set_is_included[i] = 1 + set_counter[i] = counter + counter += 1 + else: + pass + # print('skip!!!') + + local_sets = [] + for idx in self._local_sets: + if set_is_included[idx] != 1: + raise ValueError('All local bunches are not included!') + else: + local_sets.append(set_counter[idx]) + + + return included_sets, local_sets + + + def _read_signal(self, signal, signal_slice_sets, plane, betatron_phase, + beta_value): + if self._mpi: + n_slices_per_bunch = signal_slice_sets[0]._n_slices + else: + n_slices_per_bunch = signal_slice_sets[0].n_slices + + total_length = len(signal_slice_sets) * n_slices_per_bunch + + if (signal is None) or (len(signal) != total_length): + raise ValueError('Wrong signal length') + + for idx, slice_set in enumerate(signal_slice_sets): + idx_from = idx * n_slices_per_bunch + idx_to = (idx + 1) * n_slices_per_bunch + + + if plane == 'x': + if self._pickup_axis == 'displacement' or (betatron_phase is not None): + x_values = np.copy(slice_set.mean_x) + if (self._pickup_axis == 'divergence') or (betatron_phase is not None): + xp_values = np.copy(slice_set.mean_xp) + elif plane == 'y': + if self._pickup_axis == 'displacement' or (betatron_phase is not None): + x_values = np.copy(slice_set.mean_y) + if (self._pickup_axis == 'divergence') or (betatron_phase is not None): + xp_values = np.copy(slice_set.mean_yp) + else: + raise ValueError('Unknown plane') + + if self._pickup_axis == 'divergence': + if betatron_phase is None: + np.copyto(signal[idx_from:idx_to], xp_values) + else: + np.copyto(signal[idx_from:idx_to], (-np.sin(betatron_phase)*x_values/beta_value + + np.cos(betatron_phase)*xp_values)) + elif self._pickup_axis == 'displacement': + if betatron_phase is None: + np.copyto(signal[idx_from:idx_to], x_values) + else: + np.copyto(signal[idx_from:idx_to], (np.cos(betatron_phase)*x_values + + beta_value*np.sin(betatron_phase)*xp_values)) + else: + raise ValueError('Unknown axis') + + if signal is not None: + np.copyto(signal, signal[::-1]) + + + def _kick_bunches(self, signal, plane, local_slice_sets, bunch_list, local_sets): + + if signal is not None: + np.copyto(signal, signal[::-1]) + + n_slices_per_bunch = local_slice_sets[0].n_slices + + for slice_set, bunch_idx, bunch in zip(local_slice_sets, + local_sets, bunch_list): + idx_from = bunch_idx * n_slices_per_bunch + idx_to = (bunch_idx + 1) * n_slices_per_bunch + + p_idx = slice_set.particles_within_cuts + s_idx = slice_set.slice_index_of_particle.take(p_idx) + + if self._kicker_axis == 'divergence': + if plane == 'x': + correction_x = np.array(signal[idx_from:idx_to], copy=False) + bunch.xp[p_idx] -= correction_x[s_idx] + elif plane == 'y': + correction_y = np.array(signal[idx_from:idx_to], copy=False) + bunch.yp[p_idx] -= correction_y[s_idx] + else: + raise ValueError('Unknown plane') + + elif self._kicker_axis == 'displacement': + if plane == 'x': + correction_x = np.array(signal[idx_from:idx_to], copy=False) + bunch.x[p_idx] -= correction_x[s_idx] + elif plane == 'y': + correction_y = np.array(signal[idx_from:idx_to], copy=False) + bunch.y[p_idx] -= correction_y[s_idx] + else: + raise ValueError('Unknown plane') + else: + raise ValueError('Unknown axis') + +class OneboxFeedback(GenericOneTurnMapObject): + """ An transverse feedback object for the one turn map in PyHEADTAIL. + + By using this object, the pickup and the kicker are in the same location + of the accelerator. Bandwidth limitations, turn delays, noise, etc can be + applied by using signal processors. The axises for the pickup signal and + the correction are by default same, but they can be also specified to be + different (e.g. displacement and divergence). + """ + + def __init__(self, gain, slicer, processors_x, processors_y, + pickup_axis='divergence', kicker_axis=None, mpi=False, + phase_x=None, phase_y=None, beta_x=1., beta_y=1., **kwargs): + """ + Parameters + ---------- + gain : float or tuple + A fraction of the oscillations is corrected, when the perfectly + betatron motion corrected pickup signal by passes the signal + processors without modifications, i.e. 2/(damping time [turns]). + Separate values can be set to x and y planes by giving two values + in a tuple. + slicer : PyHEADTAIL slicer object + processors_x : list + A list of signal processors for the x-plane + processors_y : list + A list of signal processors for the y-plane + pickup_axis : str + A axis, which values are used as a pickup signal + kicker_axis : str + A axis, to which the correction is applied. If None, the axis is + same as the pickup axis + mpi : bool + If True, data from multiple bunches are gathered by using MPI + phase_x : float + Initial betatron phase rotation for the signal in x-plane in the + units of radians + phase_y : float + Initial betatron phase rotation for the signal in y-plane in the + units of radians + beta_x : float + A value of the x-plane beta function in the feedback location + beta_y : float + A value of the y-plane beta function in the feedback location + """ + + if kicker_axis is None: + kicker_axis = pickup_axis + + super(self.__class__, self).__init__(gain, slicer, processors_x, + processors_y=processors_y, pickup_axis=pickup_axis, + kicker_axis=kicker_axis, mpi=mpi, phase_x=phase_x, + phase_y=phase_y, beta_x=beta_x, beta_y=beta_y, **kwargs) + + def track(self, bunch): + + bunch_list, local_slice_sets, signal_slice_sets_x, signal_slice_sets_y = self._get_slice_sets(bunch) + + if self._signal_x is None: + self._init_signals(bunch_list, signal_slice_sets_x, signal_slice_sets_y) + + self._read_signal(self._signal_x, signal_slice_sets_x, 'x', + self._phase_x, self._beta_x) + + kick_parameters_x, kick_signal_x = process(self._parameters_x, + self._signal_x, + self._processors_x, + slice_sets=signal_slice_sets_x) + + if kick_signal_x is not None: + kick_signal_x = kick_signal_x * self._gain_x + + if self._pickup_axis == 'displacement' and self._kicker_axis == 'divergence': + kick_signal_x = kick_signal_x / self._beta_x + elif self._pickup_axis == 'divergence' and self._kicker_axis == 'displacement': + kick_signal_x = kick_signal_x * self._beta_x + + self._kick_bunches(kick_signal_x, 'x', local_slice_sets, bunch_list, + self._loc_signal_sets_x) + + if self._processors_y is not None: + + self._read_signal(self._signal_y, signal_slice_sets_y, 'y', + self._phase_y, self._beta_y) + + kick_parameters_y, kick_signal_y = process(self._parameters_y, + self._signal_y, + self._processors_y, + slice_sets=signal_slice_sets_y) + + if kick_signal_y is not None: + kick_signal_y = kick_signal_y * self._gain_y + + if self._pickup_axis == 'displacement' and self._kicker_axis == 'divergence': + kick_signal_y = kick_signal_y / self._beta_y + elif self._pickup_axis == 'divergence' and self._kicker_axis == 'displacement': + kick_signal_y = kick_signal_y * self._beta_y + + self._kick_bunches(kick_signal_y, 'y', local_slice_sets, bunch_list, + self._loc_signal_sets_y) + + +class PickUp(GenericOneTurnMapObject): + """ A pickup object for the one turn map in PyHEADTAIL. + + This object can be used as a pickup in the trasverse feedback systems + consisting of separate pickup(s) and kicker(s). A model for signal + processing (including, for example, bandwidth limitations and noise) can be + implemented by using signal processors. The signal can be transferred to + kicker(s) by putting registers to the signal processor chains. + """ + + def __init__(self, slicer, processors_x, processors_y, location_x, beta_x, + location_y, beta_y, mpi=False, phase_x=None, phase_y=None, + **kwargs): + """ + Parameters + ---------- + slicer : PyHEADTAIL slicer object + processors_x : list + A list of signal processors for the x-plane + processors_y : list + A list of signal processors for the y-plane + used as a signal source in the y-plane + location_x : float + A location of the pickup in x-plane in the units of betatron phase + advance from a chosen reference point + beta_x : float + A value of the x-plane beta function in the pickup location + location_y : float + A location of the pickup in y-plane in the units of betatron phase + advance from a chosen reference point + beta_y : float + A value of the y-plane beta function in the pickup location + mpi : bool + If True, data from multiple bunches are gathered by using MPI + phase_x : float + Initial betatron phase rotation of the signal in x-plane in the + units of radians + phase_y : float + Initial betatron phase rotation of the signal in y-plane in the + units of radians + """ + + super(self.__class__, self).__init__(0, slicer, processors_x, + processors_y=processors_y, pickup_axis='displacement', + kicker_axis=None, mpi=mpi, phase_x=phase_x, location_x=location_x, + location_y=location_y, phase_y=phase_y, beta_x=beta_x, + beta_y=beta_y, **kwargs) + + def track(self, bunch): + + bunch_list, local_slice_sets, signal_slice_sets_x, signal_slice_sets_y = self._get_slice_sets(bunch) + + if self._signal_x is None: + self._init_signals(bunch_list, signal_slice_sets_x, signal_slice_sets_y) + + self._read_signal(self._signal_x, signal_slice_sets_x, 'x', + self._phase_x, self._beta_x) + + end_parameters_x, end_signal_x = process(self._parameters_x, + self._signal_x, + self._processors_x, + slice_sets=signal_slice_sets_x) + + if self._processors_y is not None: + + self._read_signal(self._signal_y, signal_slice_sets_y, 'y', + self._phase_y, self._beta_y) + + end_parameters_y, end_signal_y = process(self._parameters_y, + self._signal_y, + self._processors_y, + slice_sets=signal_slice_sets_y) + + +class Kicker(GenericOneTurnMapObject): + """ A Kicker object for the one turn map in PyHEADTAIL. + + This object can be used as a kicker in the trasverse feedback systems + consisting of separate pickup(s) and kicker(s). A model for signal + processing (including, for example, bandwidth limitations and noise) can be + implemented by using signal processors. The input signals for the kicker + are the lists of register objects given as a input paramter. + """ + def __init__(self, gain, slicer, processors_x, processors_y, + registers_x, registers_y, location_x, beta_x, + location_y, beta_y, combiner='vector_sum', mpi=False, + **kwargs): + """ + Parameters + ---------- + gain : float or tuple + A fraction of the oscillations is corrected, when the perfectly + betatron motion corrected pickup signal by passes the signal + processors without modifications, i.e. 2/(damping time [turns]). + Separate values can be set to x and y planes by giving two values + in a tuple. + slicer : PyHEADTAIL slicer object + processors_x : list + A list of signal processors for the x-plane + processors_y : list + A list of signal processors for the y-plane + registers_x : list + A list of register object(s) (from pickup(s) processor chain(s) + used as a signal source in the x-plane + registers_y : list + A list of register object(s) (from pickup(s) processor chain(s) + used as a signal source in the y-plane + location_x : float + A location of the kicker in x-plane in the units of betatron phase + advance from a chosen reference point + beta_x : float + A value of the x-plane beta function in the kicker location + location_y : float + A location of the kicker in y-plane in the units of betatron phase + advance from a chosen reference point + beta_y : float + A value of the y-plane beta function in the kicker location + combiner : string or object + A combiner, which is used for combining signals from + the registers. + mpi : bool + If True, data from multiple bunches are gathered by using MPI + """ + + if isinstance(combiner, (str,unicode)): + if combiner == 'vector_sum': + self._combiner_x = VectorSumCombiner(registers_x, + location_x, beta_x, + beta_conversion = '90_deg') + self._combiner_y = VectorSumCombiner(registers_y, + location_y, beta_y, + beta_conversion = '90_deg') + elif combiner == 'cosine_sum': + self._combiner_x = CosineSumCombiner(registers_x, + location_x, beta_x, + beta_conversion = '90_deg') + self._combiner_y = CosineSumCombiner(registers_y, + location_y, beta_y, + beta_conversion = '90_deg') + + elif combiner == 'hilbert': + self._combiner_x = HilbertCombiner(registers_x, + location_x, beta_x, + beta_conversion = '90_deg') + self._combiner_y = HilbertCombiner(registers_y, + location_y, beta_y, + beta_conversion = '90_deg') + + elif combiner == 'dummy': + self._combiner_x = DummyCombiner(registers_x, + location_x, beta_x, + beta_conversion = '90_deg') + self._combiner_y = DummyCombiner(registers_y, + location_y, beta_y, + beta_conversion = '90_deg') + else: + raise ValueError('Unknown combiner type') + else: + self._combiner_x = combiner(registers_x, location_x, beta_x, + beta_conversion = '90_deg') + self._combiner_y = combiner(registers_y, location_y, beta_y, + beta_conversion = '90_deg') + + super(self.__class__, self).__init__(gain, slicer, processors_x, + processors_y=processors_y, pickup_axis='divergence', + kicker_axis='divergence', mpi=mpi, location_x=location_x, + location_y=location_y,beta_x=beta_x, beta_y=beta_y, **kwargs) + + def track(self, bunch): + + bunch_list, local_slice_sets, signal_slice_sets_x, signal_slice_sets_y = self._get_slice_sets(bunch) + + if self._signal_x is None: + self._init_signals(bunch_list, signal_slice_sets_x, signal_slice_sets_y) + + parameters_x, signal_x = self._combiner_x.process() + parameters_x, signal_x = process(parameters_x, + signal_x, + self._processors_x, + slice_sets=signal_slice_sets_x) + if signal_x is not None: + + signal_x = signal_x * self._gain_x + self._kick_bunches(signal_x, 'x', local_slice_sets, + bunch_list, self._loc_signal_sets_x) + + if self._processors_y is not None: + self._parameters_y, self._signal_y = self._combiner_y.process() + kick_parameters_y, kick_signal_y = process(self._parameters_y, + self._signal_y, + self._processors_y, + slice_sets=signal_slice_sets_y) + if kick_signal_y is not None: + kick_signal_y = kick_signal_y * self._gain_y + self._kick_bunches(kick_signal_y, 'y', local_slice_sets, + bunch_list, self._loc_signal_sets_y) diff --git a/PyHEADTAIL/feedback/original_feedback.py b/PyHEADTAIL/feedback/original_feedback.py new file mode 100644 index 00000000..988f8ef8 --- /dev/null +++ b/PyHEADTAIL/feedback/original_feedback.py @@ -0,0 +1,23 @@ +import numpy as np + + +class TransverseDamper(object): + + def __init__(self, dampingrate_x, dampingrate_y, phase_x_deg=90, phase_y_deg=90, + beta_x=1, beta_y=1): + self.gain_x = 2./dampingrate_x + self.gain_y = 2./dampingrate_y + + self.phase_x = phase_x_deg * np.pi/180 + self.phase_y = phase_y_deg * np.pi/180 + + self.beta_x = beta_x + self.beta_y = beta_y + + def track(self, beam): + beam.xp -= self.gain_x * (np.cos(self.phase_x)*beam.mean_x()/self.beta_x + + np.sin(self.phase_x)*beam.mean_xp()) + beam.yp -= self.gain_y * (np.cos(self.phase_y)*beam.mean_y()/self.beta_y + + np.sin(self.phase_y)*beam.mean_yp()) + # beam.xp -= self.gain_x * beam.mean_xp() + # beam.yp -= self.gain_y * beam.mean_yp() diff --git a/PyHEADTAIL/feedback/processors/__init__.py b/PyHEADTAIL/feedback/processors/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/PyHEADTAIL/feedback/processors/abstract_filter_responses.py b/PyHEADTAIL/feedback/processors/abstract_filter_responses.py new file mode 100644 index 00000000..d95473e3 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/abstract_filter_responses.py @@ -0,0 +1,82 @@ +import numpy as np +import scipy.special as special + +""" This file contains dimensionless impulse responses function for different +analog filters, which can be used in different signal processor implementations +(e.g. based on convolution and linear transformation). + +@author Jani Komppula +@date: 11/10/2017 +""" + +def normalized_lowpass(max_impulse_length): + + def response_function(x): + if x < 0.: + return 0. + elif x > max_impulse_length: + return 0. + else: + return np.exp(-1. * x) + + return response_function + +def normalized_highpass(max_impulse_length): + + def response_function(x): + if x < 0.: + return 0. + elif x > max_impulse_length: + return 0. + else: + return np.exp(-1. * x) + + return response_function + +def normalized_phase_linearized_lowpass(max_impulse_length): + """Phase linearized version of the normal lowpass (RC, + singe poll roll-off) filter. Formula derived by Gerd Kotzian.""" + + def response_function(x): + if x == 0.: + return 0. + elif x < -max_impulse_length: + return 0. + elif x > max_impulse_length: + return 0. + else: + return special.k0(abs(x)) + + return response_function + +def normalized_Gaussian(max_impulse_length): + + def response_function(x): + if x < -max_impulse_length: + return 0. + elif x > max_impulse_length: + return 0. + else: + return np.exp(-x ** 2. / 2.* (2.*np.log(2))) / np.sqrt(2. * np.pi) + + return response_function + +def normalized_sinc(window_type, window_width): + + def blackman_window(x): + return 0.42-0.5*np.cos(2.*np.pi*(x/np.pi+window_width)/(2.*window_width))\ + +0.08*np.cos(4.*np.pi*(x/np.pi+window_width)/(2.*window_width)) + + def hamming_window(x): + return 0.54-0.46*np.cos(2.*np.pi*(x/np.pi+window_width)/(2.*window_width)) + + def response_function(x): + if np.abs(x/np.pi) > window_width: + return 0. + else: + if window_type == 'blackman': + return np.sinc(x/np.pi)*blackman_window(x) + elif window_type == 'hamming': + return np.sinc(x/np.pi)*hamming_window(x) + + return response_function \ No newline at end of file diff --git a/PyHEADTAIL/feedback/processors/addition.py b/PyHEADTAIL/feedback/processors/addition.py new file mode 100644 index 00000000..d3a1f0e3 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/addition.py @@ -0,0 +1,229 @@ +from abc import ABCMeta, abstractmethod, abstractproperty +import numpy as np +from scipy.constants import c, pi +from ..core import default_macros + +""" This file contains dimensionless impulse responses function for different +analog filters, which can be used in different signal processor implementations +(e.g. based on convolution and linear transformation). + +@author Jani Komppula +@date: 11/10/2017 +""" + +class Addition(object): + __metaclass__ = ABCMeta + """ An abstract class which adds an array to the input signal. The addend array is produced by taking + a slice property (determined by the input parameter 'seed') and passing it through the abstract method + addend_function(seed). + """ + + def __init__(self, seed, normalization = None, recalculate_addend = False, label='Addition', **kwargs): + """ + :param seed: a seed for the addend, which can be 'bin_length', 'bin_midpoint', 'signal' or any slice + property found from slice_set + :param normalization: + None: + 'total_sum': The sum over the addend is equal to 1 + 'segment_sum': The sum of the addend over each signal segment is equal to 1 + 'total_average': The total average of the addend is equal to 1 + 'segment_average': The average addend of each signal segment is equal to 1 + 'total_integral': The total integral over the addend is equal to 1 + 'segment_integral': The integral of the addend over each signal segment is equal to 1 + 'total_min': The minimum of the addend is equal to 1 + 'segment_min': The minimum of the addend in each signal segment is equal to 1 + 'total_max': The minimum of the addend is equal to 1 + 'segment_max': The minimum of the addend in each signal segment is equal to 1 + :param: recalculate_addend: if True, the weight is recalculated every time when process() is called + """ + + self._seed = seed + self._normalization = normalization + self._recalculate_addend = recalculate_addend + + self._addend = None + + self.signal_classes = (0,0) + + self.extensions = [] + self._macros = [] + default_macros(self, 'Addition', **kwargs) + + if self._seed not in ['bin_length','bin_midpoint','signal']: + self.extensions.append('bunch') + self.required_variables = [self._seed] + + @abstractmethod + def addend_function(self, seed): + pass + + def process(self,parameters, signal, slice_sets = None, *args, **kwargs): + + if (self._addend is None) or self._recalculate_addend: + self.__calculate_addend(parameters, signal, slice_sets) + + output_signal = signal + self._addend + + # process the signal + return parameters, output_signal + + def __calculate_addend(self,parameters, signal, slice_sets): + self._addend = np.zeros(len(signal)) + + if self._seed == 'ones': + self._addend = self._addend + 1. + elif self._seed == 'bin_length': + np.copyto(self._addend, (parameters.bin_edges[:,1]-parameters.bin_edges[:,0])) + elif self._seed == 'bin_midpoint': + np.copyto(self._addend, ((parameters.bin_edges[:,1]+parameters.bin_edges[:,0])/2.)) + elif self._seed == 'normalized_bin_midpoint': + + for i in xrange(parameters.n_segments): + i_from = i * parameters.n_bins_per_segment + i_to = (i + 1) * parameters.n_bins_per_segment + + np.copyto(self._addend[i_from:i_to], ((parameters.bin_edges[i_from:i_to,1]+ + parameters.bin_edges[i_from:i_to,0])/2. + -parameters.original_z_mids[i])) + + elif self._seed == 'signal': + np.copyto(self._addend,signal) + else: + if len(signal) == len(slice_sets) * (len(slice_sets[0].z_bins) - 1): + start_idx = 0 + for slice_set in slice_sets: + seed = getattr(slice_set,self._seed) + np.copyto(self._addend[start_idx:(start_idx+len(seed))],seed) + start_idx += len(seed) + np.copyto(self._addend, self._addend[::-1]) + else: + raise ValueError('Signal length does not correspond to the original signal length ' + 'from the slice sets in the method Addition') + + self._addend = self.addend_function(self._addend) + + # NOTE: add options for average bin integrals? + if self._normalization is None: + norm_coeff = 1. + + elif self._normalization == 'total_sum': + norm_coeff = float(np.sum(self._addend)) + + elif self._normalization == 'segment_sum': + norm_coeff = np.ones(len(self._addend)) + for i in xrange(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to])) + + elif self._normalization == 'total_average': + norm_coeff = float(np.sum(self._addend))/float(len(self._addend)) + + elif self._normalization == 'segment_average': + norm_coeff = np.ones(len(self._addend)) + for i in xrange(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to]))/float(parameters.n_bins_per_segment) + + elif self._normalization == 'total_integral': + bin_widths = parameters.bin_edges[:,1] - parameters.bin_edges[:,0] + norm_coeff = np.sum(self._addend*bin_widths) + + elif self._normalization == 'segment_integral': + bin_widths = parameters.bin_edges[:,1] - parameters.bin_edges[:,0] + norm_coeff = np.ones(len(self._addend)) + for i in xrange(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to]*bin_widths[i_from:i_to])) + + elif self._normalization == 'total_min': + norm_coeff = float(np.min(self._addend)) + + elif self._normalization == 'segment_min': + norm_coeff = np.ones(len(self._addend)) + for i in xrange(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.min(self._addend[i_from:i_to])) + + elif self._normalization == 'total_max': + norm_coeff = float(np.max(self._addend)) + + elif self._normalization == 'segment_max': + norm_coeff = np.ones(len(self._addend)) + for i in xrange(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.max(self._addend[i_from:i_to])) + else: + raise ValueError('Unknown value in Addition._normalization') + + # TODO: try to figure out why this can not be written as + # TODO: self._addend /= norm_coeff + self._addend = self._addend / norm_coeff + + def clear(self): + self._addend = None + +class AdditionFromFile(Addition): + """ Adds an array to the signal, which is produced by interpolation from the external data file. Note the seed + (unit) for the interpolation can be any of those available for the seed. + (i.e. location, sigma, or a number of macroparticles per slice, etc.) + """ + + def __init__(self,filename, x_axis='time', seed='bin_midpoint', **kwargs): + super(self.__class__, self).__init__(seed, label = 'Addition from file', **kwargs) + + self._filename = filename + self._x_axis = x_axis + self._data = np.loadtxt(self._filename) + + if self._x_axis == 'time': + pass + elif self._x_axis == 'position': + self._data[:, 0] = self._data[:, 0] / c + else: + raise ValueError('Unknown value in AdditionFromFile._x_axis') + + def addend_function(self, seed): + return np.interp(seed, self._data[:, 0], self._data[:, 1]) + + +class NoiseGenerator(Addition): + """ Adds noise. The noise level is given as an absolute RMS noise level in the units of signal + (reference_level = 'absolute') or a relative RMS level from the maximum value of the signal + (reference_level = 'maximum'). Options for the noise distribution are a Gaussian (normal) distribution + (distribution = 'normal') or an uniform distribution (distribution = 'uniform') + """ + + def __init__(self,RMS_noise_level,reference_level = 'absolute', distribution = 'normal', **kwargs): + super(self.__class__, self).__init__('signal', recalculate_addend=True, + label = 'Noise generator', **kwargs) + + self._RMS_noise_level = RMS_noise_level + self._reference_level = reference_level + self._distribution = distribution + + def signal_classes(self): + return (0,0) + + def addend_function(self,seed): + + if self._distribution == 'normal' or self._distribution is None: + randoms = np.random.randn(len(seed)) + elif self._distribution == 'uniform': + randoms = 1./0.577263*(-1.+2.*np.random.rand(len(seed))) + else: + raise ValueError('Unknown value in NoiseGenerator._distribution') + + if self._reference_level == 'absolute': + addend = self._RMS_noise_level*randoms + elif self._reference_level == 'maximum': + addend = self._RMS_noise_level*np.max(seed)*randoms + elif self._reference_level == 'local': + addend = seed*self._RMS_noise_level*randoms + else: + raise ValueError('Unknown value in NoiseGenerator._reference_level') + + return addend diff --git a/PyHEADTAIL/feedback/processors/convolution.py b/PyHEADTAIL/feedback/processors/convolution.py new file mode 100644 index 00000000..d7dbd7f8 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/convolution.py @@ -0,0 +1,657 @@ +import numpy as np +from abc import ABCMeta, abstractmethod + +from ..core import bin_widths, bin_mids, bin_edges_to_z_bins +from ..core import default_macros, Parameters +from scipy.constants import pi +import scipy.integrate as integrate +from scipy.interpolate import UnivariateSpline +import abstract_filter_responses + +"""Signal processors based on convolution operation. + +@author Jani Komppula +@date: 11/10/2017 +""" + +class Convolution(object): + __metaclass__ = ABCMeta + + def __init__(self,**kwargs): + + self._dashed_impulse_responses = None + self._impulses_from_segments = None + self._impulses_to_segments = None + + self._n_seg = None + self._n_bins = None + + self.extensions = [] + self._macros = [] + default_macros(self, 'Convolution', **kwargs) + + def _init_convolution(self, parameters): + + + # the parameters of the input signal + self._n_seg = parameters['n_segments'] + self._n_bins = parameters['n_bins_per_segment'] + bin_edges = parameters['bin_edges'] + + original_segment_length = bin_edges[self._n_bins-1,1] - bin_edges[0,0] + + # a number of impulse values added to the both side of the segments + extra_bins = int(np.ceil(self._n_bins/2.)) +# extra_bins = 0 + + # Reference bin edges for one segment + impulse_ref_edges = None + + # ipulse responses for individual segments + self._dashed_impulse_responses = [] + + # impulses caused by the segments + self._impulses_from_segments = [] + + # List of impulses to the corresponding segments + self._impulses_to_segments = [] + for i in xrange(self._n_seg): + self._impulses_to_segments.append([]) + + ref_points = [] + + for i in xrange(self._n_seg): + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins + + # original bins corresponing to the signal + org_edges = bin_edges[i_from:i_to, :] + offset = org_edges[-1,1] - org_edges[0,0] + edges = np.concatenate((org_edges[-extra_bins:]-offset,org_edges),axis=0) + edges = np.concatenate((edges,org_edges[:extra_bins]+offset),axis=0) + + # extra bins before the original bins +# prefix_offset = org_edges[(extra_bins-1), 1]-org_edges[0, 0] +# # extra bins after the original bins +# postfix_offset = org_edges[-extra_bins, 0]-org_edges[-1, 1] + +# edges = np.copy(org_edges) +# edges = np.concatenate(((org_edges[:extra_bins]-prefix_offset), org_edges), axis=0) +# edges = np.concatenate((edges, org_edges[extra_bins:]-postfix_offset), axis=0) + + # reference points of the segments, which correspond to midpoint of + # the bin sets in this case. + ref_points.append(np.mean(bin_edges_to_z_bins(org_edges))) + + if impulse_ref_edges is None: + impulse_ref_edges = edges + else: + impulse_ref_edges = np.concatenate((impulse_ref_edges, edges), axis=0) + + # calculats the impulse response values for each segment + for i, ref_point in enumerate(ref_points): + # sets the zero point of the bin set to be in the middle of the segment + impulse_edges = impulse_ref_edges-ref_point + + # sets the midpoint of the closest bin to the zero to be zero + mids = bin_mids(impulse_edges) + min_max = np.min(mids[mids>=0]) + max_min = np.min(-1.*mids[mids<0]) + mean_width = np.mean(bin_widths(impulse_edges)) + + mid_offset = 0. + idx_offset = 0 + + if min(min_max, max_min) < mean_width/10.: + pass + + elif min_max < max_min: + if min_max < mean_width: + mid_offset = min_max + idx_offset = 1 + else: + if max_min < mean_width: + mid_offset = -1 * max_min + + impulse_edges = impulse_edges - mid_offset + + # calculates impulse response for the determined bin set + dashed_impulse_response = self.response_function(impulse_edges, self._n_seg, + original_segment_length) + + cleaned_impulse = np.array([]) + # a list of segment indexes where impulse response is non zero + target_segments = [] + + # cleans the calculated impulse response, i.e. removes the segments where + # response is zero. + n_bins_per_segment = self._n_bins + 2*extra_bins + + for k in xrange(self._n_seg): + + i_from = k * n_bins_per_segment + i_to = (k+1) * n_bins_per_segment + +# target_segments.append(k) +# cleaned_impulse = np.append(cleaned_impulse, dashed_impulse_response[i_from:i_to]) + + if np.sum(np.abs(dashed_impulse_response[i_from:i_to])) > 0.: + target_segments.append(k) + cleaned_impulse = np.append(cleaned_impulse, dashed_impulse_response[i_from:i_to]) + + self._dashed_impulse_responses.append(cleaned_impulse) + + self._impulses_from_segments.append(np.zeros(len(cleaned_impulse)+idx_offset)) + + for idx, target_idx in enumerate(target_segments): + i_from = idx * n_bins_per_segment + idx_offset + extra_bins + i_to = i_from + self._n_bins + self._impulses_to_segments[target_idx].append(np.array(self._impulses_from_segments[-1][i_from:i_to], copy=False)) + + @abstractmethod + def response_function(self, impulse_ref_edges, n_seg, original_segment_length): + # A function which calculates the impulse response values for the + # the given bin set + pass + + def _apply_convolution(self, parameters, signal): + + if self._dashed_impulse_responses is None: + self._init_convolution(parameters) + + # calculates the impulses caused by the segments + for i in xrange(self._n_seg): + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins + np.copyto(self._impulses_from_segments[i][:len(self._dashed_impulse_responses[i])], + np.convolve(self._dashed_impulse_responses[i], + signal[i_from:i_to], mode='same')) + + # gathers the output signal + output_signal = np.zeros(len(signal)) + for i in xrange(self._n_seg): + + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins +# print np.sum(self._impulses_to_segments[i], axis=0) +# print len(np.sum(self._impulses_to_segments[i], axis=0)) +# print output_signal[i_from:i_to] +# print len(output_signal[i_from:i_to]) + np.copyto(output_signal[i_from:i_to], np.sum(self._impulses_to_segments[i], axis=0)) + + return output_signal + + def process(self, parameters, signal, *args, **kwargs): + + output_signal = self._apply_convolution(parameters, signal) + + return parameters, output_signal + +class Delay(Convolution): + """ Delays signal in the units of time + """ + + def __init__(self,delay, **kwargs): + + self._delay = delay + + super(self.__class__, self).__init__(**kwargs) + self.label = 'Delay' + + def response_function(self, impulse_ref_edges, n_segments, original_segment_length): + impulse_values = np.zeros(len(impulse_ref_edges)) + bin_spacing = np.mean(impulse_ref_edges[:,1]-impulse_ref_edges[:,0]) + + ref_bin_from = -0.5*bin_spacing+self._delay + ref_bin_to = 0.5*bin_spacing+self._delay + + for i, edges in enumerate(impulse_ref_edges): + impulse_values[i] = self._CDF(edges[1],ref_bin_from,ref_bin_to) - self._CDF(edges[0],ref_bin_from,ref_bin_to) + + return impulse_values + + def _CDF(self,x,ref_bin_from, ref_bin_to): + # FIXME: this is not gonna work for nagative delays? + + if x <= ref_bin_from: + return 0. + elif x < ref_bin_to: + return (x-ref_bin_from)/float(ref_bin_to-ref_bin_from) + else: + return 1. + + +class MovingAverage(Convolution): + """ Calculates a moving average + """ + + def __init__(self,window_length, **kwargs): + """ + Parameters + ---------- + window_length : float + Window width in the units of time [t] + n_copies : int + A number of copies + """ + + self._window = (-0.5 * window_length, 0.5 * window_length) + + super(self.__class__, self).__init__(**kwargs) + self.label = 'Average' + + def response_function(self, impulse_ref_edges, n_segments, original_segment_length): + impulse_values = np.zeros(len(impulse_ref_edges)) + + for i, edges in enumerate(impulse_ref_edges): + impulse_values[i] = self._CDF(edges[1], self._window[0], self._window[1]) \ + - self._CDF(edges[0], self._window[0], self._window[1]) + + return impulse_values + + def _CDF(self, x, ref_bin_from, ref_bin_to): + if x <= ref_bin_from: + return 0. + elif x < ref_bin_to: + return (x - ref_bin_from) / float(ref_bin_to - ref_bin_from) + else: + return 1. + + +class WaveletGenerator(Convolution): + """ Makes copies from the signal. + """ + + def __init__(self,spacing,n_copies, **kwargs): + """ + Parameters + ---------- + spacing : float + Gap between the copies [s] + n_copies : int + A number of copies + """ + + self._spacing = spacing + self._n_copies = n_copies + + if isinstance(self._n_copies,tuple): + self._i_from = self._n_copies[0] + self._i_to = self._n_copies[1] + + else: + self._i_from = min(self._n_copies,0) + self._i_to = max(self._n_copies,0) + + self._window = (self._i_from*self._spacing,self._i_to*self._spacing) + + super(self.__class__, self).__init__(**kwargs) + self.label = 'Wavelet generator' + + + def response_function(self, impulse_ref_edges, n_segments, original_segment_length): +# def calculate_response(self, impulse_bin_mids, impulse_bin_edges): + impulse_bin_mids = bin_mids(impulse_ref_edges) + bin_spacing = np.mean(impulse_ref_edges[:,1]-impulse_ref_edges[:,0]) + impulse_values = np.zeros(len(impulse_bin_mids)) + + for i in xrange(self._i_from,(self._i_to+1)): + copy_mid = i*self._spacing + copy_from = copy_mid - 0.5 * bin_spacing + copy_to = copy_mid + 0.5 * bin_spacing + + for j, edges in enumerate(impulse_ref_edges): + impulse_values[j] += (self._CDF(edges[1],copy_from,copy_to)-self._CDF(edges[0],copy_from,copy_to)) + + return impulse_values + + + def _CDF(self, x, ref_bin_from, ref_bin_to): + if x <= ref_bin_from: + return 0. + elif x < ref_bin_to: + return (x - ref_bin_from) / float(ref_bin_to - ref_bin_from) + else: + return 1. +# +#class ConvolutionFromFile(Convolution): +# """ Interpolates matrix columns by using inpulse response data from a file. """ +# +# def __init__(self,filename, x_axis = 'time', calc_type = 'mean', **kwargs): +# self._filename = filename +# self._x_axis = x_axis +# self._calc_type = calc_type +# +# self._data = np.loadtxt(self._filename) +# if self._x_axis == 'time': +# self._data[:, 0]=self._data[:, 0]*c +# +# impulse_range = (self._data[0,0],self._data[-1,0]) +# +# super(self.__class__, self).__init__(impulse_range, **kwargs) +# self.label = 'Convolution from external data' +# +# def calculate_response(self, impulse_response_bin_mid, impulse_response_bin_edges): +# +# if self._calc_type == 'mean': +# return np.interp(impulse_response_bin_mid, self._data[:, 0], self._data[:, 1]) +# elif self._calc_type == 'integral': +# s = UnivariateSpline(self._data[:, 0], self._data[:, 1]) +# response_values = np.zeros(len(impulse_response_bin_mid)) +# +# for i, edges in enumerate(impulse_response_bin_edges): +# response_values[i], _ = s.integral(edges[0],edges[1]) +# return response_values +# +# else: +# raise ValueError('Unknown value in ConvolutionFromFile._calc_type') + +class ConvolutionFilter(Convolution): + """ An abstract class for the filtes based on convolution.""" + + __metaclass__ = ABCMeta + + def __init__(self,scaling, zero_bin_value=None, normalization=None, + f_cutoff_2nd=None, **kwargs): + + self._f_cutoff_2nd = f_cutoff_2nd + + self._scaling = scaling + self._normalization = normalization + + self._zero_bin_value = zero_bin_value + super(ConvolutionFilter, self).__init__(**kwargs) + self.label='ConvolutionFilter' + # NOTE: is the tip cut needed? How to work with the sharp tips of the ideal filters? + + def response_function(self, impulse_ref_edges, n_segments, original_segment_length): + impulse = np.zeros(len(impulse_ref_edges)) + + for i, edges in enumerate(impulse_ref_edges): + # normalizes the edges to dimensioles units + integral_from = edges[0] * self._scaling + integral_to = edges[1] * self._scaling + + # calculates the impulse value for the bin by integrating the impulse + # response over the normalized bin + if (self._impulse_response(integral_from) == 0) and (self._impulse_response(integral_to) == 0) and (self._impulse_response((integral_from+integral_to)/2.) == 0): + # gives zero value if impulse response values are zero on the edges and middle of the bin + # (optimization for the FCC simulations) + impulse[i] = 0. + else: + impulse[i], _ = integrate.quad(self._impulse_response, integral_from, integral_to) + + # normalizes the impulse response + norm_coeff = self. _normalization_coefficient(impulse_ref_edges, impulse, original_segment_length) + impulse = impulse/norm_coeff + + if self._f_cutoff_2nd is not None: + impulse = self._filter_2nd_cutoff(impulse,impulse_ref_edges, n_segments, original_segment_length) + + # searches the zero bin and adds it the set zero bin value if it is + # determined + if self._zero_bin_value is not None: + for i, edges in enumerate(impulse_ref_edges): + if (edges[0] <= 0.) and (0. < edges[1]): + impulse[i] = impulse_ref_edges[i] + self._zero_bin_value + + return impulse + + def _filter_2nd_cutoff(self, impulse,impulse_ref_edges, n_segments, original_segment_length): + ref_points = [] + mids = bin_mids(impulse_ref_edges) + n_bins_per_segment = int(len(impulse)/n_segments) + for i in xrange(n_segments): + i_from = i * n_bins_per_segment + i_to = (i + 1) * n_bins_per_segment + ref_points.append(np.mean(mids[i_from:i_to])) + parameters = Parameters(signal_class=1, bin_edges=impulse_ref_edges, n_segments=n_segments, + n_bins_per_segment=n_bins_per_segment, segment_ref_points=ref_points, + previous_parameters=[], location=0, beta=1.) + + impulse_filter = Gaussian(self._f_cutoff_2nd) + + output_parameters, output_signal = impulse_filter.process(parameters,impulse) + return output_signal + + def _normalization_coefficient(self, impulse_ref_edges, impulse, segment_length): + + if self._normalization is None: + pass + elif isinstance(self._normalization, tuple): + if self._normalization[0] == 'integral': + norm_coeff, _ = integrate.quad(self._impulse_response, self._normalization[1][0], self._normalization[1][1]) + elif self._normalization[0] == 'bunch_by_bunch': + f_h = self._normalization[1] + + norm_coeff = 0. + for i in xrange(-1000,1000): + x = float(i)* (1./f_h) * self._scaling + norm_coeff += self._impulse_response(x) + #print norm_coeff + #print x + #print self._normalization[1] * self._scaling * c + #print self._normalization[1] * c + + + norm_coeff = norm_coeff*(segment_length * self._scaling) + else: + raise ValueError('Unknown normalization method!') + elif self._normalization == 'sum': + norm_coeff = np.sum(impulse) + + else: + raise ValueError('Unknown normalization method!') + + return norm_coeff +# +# if self._normalization is None: +# pass +# elif isinstance(self._normalization, float): +# impulse_values = impulse_values/self._normalization +# elif isinstance(self._normalization, tuple): +# if self._normalization[0] == 'bunch_by_bunch': +# bunch_spacing = self._normalization[1] * c +# +# bunch_locations = np.array([]) +# if (impulse_bin_edges[0,0] < 0): +# bunch_locations = np.append(bunch_locations, -1.*np.arange(0.,-1.*impulse_bin_edges[0,0],bunch_spacing)) +# if (impulse_bin_edges[-1,1] > 0): +# bunch_locations = np.append(bunch_locations, np.arange(0.,impulse_bin_edges[-1,1],bunch_spacing)) +# +# bunch_locations = np.unique(bunch_locations) +# +# min_mask = (bunch_locations >= impulse_bin_edges[0,0]) +# max_mask = (bunch_locations <= impulse_bin_edges[-1,1]) +# +# bunch_locations = bunch_locations[min_mask*max_mask] +# +# total_sum = 0. +# +# # TODO: check, which is the best way to calculate the normalization coefficient +# total_sum = np.sum(np.interp([bunch_locations], impulse_bin_mids, impulse_values)) +## for location in bunch_locations: +## min_mask = (impulse_bin_mids > (location - bunch_length/2.)) +## max_mask = (impulse_bin_mids < (location + bunch_length/2.)) +## +## total_sum += np.mean(impulse_values[min_mask*max_mask]) +# +# impulse_values = impulse_values/total_sum +# +# else: +# raise ValueError('Unknown normalization method') +# +# elif self._normalization == 'max': +# impulse_values = impulse_values/np.max(impulse_values) +# elif self._normalization == 'min': +# impulse_values = impulse_values/np.min(impulse_values) +# elif self._normalization == 'average': +# impulse_values = impulse_values/np.abs(np.mean(impulse_values)) +# elif self._normalization == 'sum': +# # TODO: check naming, this is not a sum, but an integral? +# impulse_values = impulse_values/np.abs(np.sum(impulse_values)) +# elif self._normalization == 'integral': +# bin_widths = impulse_bin_edges[:,1]-impulse_bin_edges[:,0] +# impulse_values = impulse_values / np.abs(np.sum(impulse_values*bin_widths)) +# else: +# raise ValueError('Unknown normalization method') +# +# if self._zero_bin_value is not None: +# for i, edges in enumerate(impulse_bin_edges): +# if (edges[0] <= 0.) and (0. < edges[1]): +# impulse_values[i] = impulse_values[i] + self._zero_bin_value +# +# return impulse_values + + def _impulse_response(x): + """ Impulse response of the filter. + :param x: normalized time (t*2.*pi*f_c) + :return: response at the given time + """ + pass + + + +class Lowpass(ConvolutionFilter): + """ A classical lowpass filter, which is also known as a RC-filter or one + poll roll off. + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_lowpass(max_impulse_length) + + super(self.__class__, self).__init__(scaling, normalization=normalization,**kwargs) + self.label = 'Lowpass filter' + self.time_scale = max_impulse_length/scaling + + +class Highpass(ConvolutionFilter): + """ A high pass version of the lowpass filter, which is constructed by + multiplying the lowpass filter by a factor of -1 and adding to the first + bin 1 + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_highpass(max_impulse_length) + + super(self.__class__, self).__init__( scaling, zero_bin_value= 1., normalization=normalization, **kwargs) + self.label = 'Highpass filter' + self.time_scale = max_impulse_length/scaling + +class PhaseLinearizedLowpass(ConvolutionFilter): + """ A phase linearized 1st order lowpass filter. Note that the narrow and + sharp peak of the impulse response makes the filter to be sensitive + to the bin width and may yield an unrealistically good response for the + short signals. Thus it is recommended to set a second order cut off + frequency, which smooths the impulse response by using a Gaussian filter. + """ + + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_phase_linearized_lowpass(max_impulse_length) + + super(self.__class__, self).__init__( scaling, normalization=normalization, **kwargs) + self.label = 'Phaselinearized lowpass filter' + self.time_scale = max_impulse_length/scaling + + +class Gaussian(ConvolutionFilter): + """ A Gaussian low pass filter, which impulse response is a Gaussian function. + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_Gaussian(max_impulse_length) + + super(self.__class__, self).__init__( scaling, normalization=normalization, **kwargs) + self.label = 'Gaussian lowpass filter' + self.time_scale = 1*max_impulse_length/scaling + + +class Sinc(ConvolutionFilter): + """ A nearly ideal lowpass filter, i.e. a windowed Sinc filter. The impulse response of the ideal lowpass filter + is Sinc function, but because it is infinite length in both positive and negative time directions, it can not be + used directly. Thus, the length of the impulse response is limited by using windowing. Properties of the filter + depend on the width of the window and the type of the windows and must be written down. Too long window causes + ripple to the signal in the time domain and too short window decreases the slope of the filter in the frequency + domain. The default values are a good compromise. More details about windowing can be found from + http://www.dspguide.com/ch16.htm and different options for the window can be visualized, for example, by using + code in example/test 004_analog_signal_processors.ipynb + """ + + def __init__(self, f_cutoff, window_width = 3., window_type = 'blackman', normalization=None, + **kwargs): + """ + :param f_cutoff: a cutoff frequency of the filter + :param delay: a delay of the filter [s] + :param window_width: a (half) width of the window in the units of zeros of Sinc(x) [2*pi*f_c] + :param window_type: a shape of the window, blackman or hamming + :param norm_type: see class LinearTransform + :param norm_range: see class LinearTransform + """ + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-window_width,window_width)) + + self._impulse_response = abstract_filter_responses.normalized_sinc(window_type, window_width) + + super(self.__class__, self).__init__(scaling,normalization=normalization, **kwargs) + self.label = 'Sinc filter' + self.time_scale = window_width/scaling + + +class FIRFilter(Convolution): + """ Calculates a convolution over the signal by using the given coefficients as a kernel. + """ + + def __init__(self, coefficients, zero_tap = 0, **kwargs): + """ + Parameters + ---------- + coefficients : array + A list of the filter coefficients + zero_tap : int + A list index for the coefficient at + """ + + self._zero_tap = zero_tap + + self._input_coefficients = coefficients + + super(FIRFilter, self).__init__(**kwargs) + self.label = 'FIR filter' + + + def response_function(self, impulse_ref_edges, n_segments, original_segment_length): + impulse = np.zeros(len(impulse_ref_edges)) + impulse_bin_widths = bin_widths(impulse_ref_edges) + impulse_bin_width = np.mean(impulse_bin_widths) + impulse_bin_mids = bin_mids(impulse_ref_edges) + + n_coefficients = len(self._input_coefficients) + min_filter_idx = -1*self._zero_tap + max_filter_idx = min_filter_idx + n_coefficients -1 + + for i, mid in enumerate(impulse_bin_mids): + filter_idx = mid/impulse_bin_width + filter_idx = int(np.round(filter_idx)) + + if (filter_idx >= min_filter_idx) and (filter_idx <= max_filter_idx): + impulse[i] = self._input_coefficients[filter_idx+self._zero_tap] + + return impulse \ No newline at end of file diff --git a/PyHEADTAIL/feedback/processors/cython_hacks.pyx b/PyHEADTAIL/feedback/processors/cython_hacks.pyx new file mode 100644 index 00000000..9a1140b0 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/cython_hacks.pyx @@ -0,0 +1,26 @@ +#TODO: maybe this could be simplified/avoided by using cimport scipy.linalg.cython_blas + +import numpy as np +cimport numpy as np +cimport cython + +""" The functions in this file have been written, because the dot product function of NumPy slowed down PyHEADTAIL + simulation in the CERN batch system by a factor of two or more. The only working solution which was found was to + write a new function for matrix product in Cython. +""" + +@cython.boundscheck(False) +@cython.wraparound(False) + +def cython_matrix_product(double[:, ::1] matrix not None, double[::1] vector not None): + + cdef np.intp_t i, j, dim_0, dim_1 + dim_0 = matrix.shape[0] + dim_1 = matrix.shape[1] + cdef double[::1] D = np.zeros(dim_0) + + for i in range(dim_0): + for j in range(dim_1): + D[i] += matrix[i,j]* vector[j] + + return D \ No newline at end of file diff --git a/PyHEADTAIL/feedback/processors/linear_transform.py b/PyHEADTAIL/feedback/processors/linear_transform.py new file mode 100644 index 00000000..dfe60969 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/linear_transform.py @@ -0,0 +1,391 @@ +from collections import deque +from abc import ABCMeta, abstractmethod +import numpy as np +from scipy.constants import c, pi +import scipy.integrate as integrate +from scipy import linalg +from cython_hacks import cython_matrix_product +from ..core import default_macros +import abstract_filter_responses + +"""Signal processors based on linear transformation. + +@author Jani Komppula +@date: 11/10/2017 +""" + +class LinearTransform(object): + __metaclass__ = ABCMeta + """ An abstract class for signal processors which are based on linear transformation. The signal is processed by + calculating a dot product of a transfer matrix and a signal. The transfer matrix is produced with an abstract + method, namely response_function(*args), which returns an elements of the matrix (an effect of + the ref_bin to the bin) + """ + + def __init__(self, mode = 'bunch_by_bunch', normalization=None, bin_middle = 'bin', **kwargs): + """ + + :param norm_type: Describes normalization method for the transfer matrix + 'bunch_average': an average value over the bunch is equal to 1 + 'fixed_average': an average value over a range given in a parameter norm_range is equal to 1 + 'bunch_integral': an integral over the bunch is equal to 1 + 'fixed_integral': an integral over a fixed range given in a parameter norm_range is equal to 1 + 'matrix_sum': a sum over elements in the middle column of the matrix is equal to 1 + None: no normalization + :param norm_range: Normalization length in cases of self.norm_type == 'fi + xed_length_average' or + self.norm_type == 'fixed_length_integral' + :param bin_check: if True, a change of the bin_set is checked every time process() is called and matrix is + recalculated if any change is found + :param bin_middle: defines if middle points of the bins are determined by a middle point of the bin + (bin_middle = 'bin') or an average place of macro particles (bin_middle = 'particles') + """ + + self._mode = mode + + self._normalization = normalization + self._bin_middle = bin_middle + + self._z_bin_set = None + self._matrix = None + + self._recalculate_matrix = True + + self.signal_classes = (0,0) + + self._n_segments = None + self._n_bins_per_segment = None + self._mid_bunch = None + + self.extensions = [] + self._macros = [] + default_macros(self, 'LinearTransform', **kwargs) + + if bin_middle == 'particles': + self.extensions.append('bunch') + self.required_variables = ['mean_z'] + + + @abstractmethod + def response_function(self, parameters, ref_bin_mid, ref_bin_from, ref_bin_to, bin_mid, bin_from, bin_to): + # Impulse response function of the processor + pass + + def process(self,parameters, signal, slice_sets = None, *args, **kwargs): + + if self._matrix is None: + + if self._bin_middle == 'particles': + bin_midpoints = np.array([]) + for slice_set in slice_sets: + bin_midpoints = np.append(bin_midpoints, slice_set.mean_z) + elif self._bin_middle == 'bin': + bin_midpoints = (parameters['bin_edges'][:, 1] + parameters['bin_edges'][:, 0]) / 2. + else: + raise ValueError('Unknown value for LinearTransform._bin_middle ') + + self._n_segments = parameters['n_segments'] + self._n_bins_per_segment = parameters['n_bins_per_segment'] + + self.__generate_matrix(parameters, parameters['bin_edges'],bin_midpoints) + + if self._mode == 'total': + output_signal = np.array(cython_matrix_product(self._matrix, signal)) + elif self._mode == 'bunch_by_bunch': + output_signal = np.zeros(len(signal)) + + for i in xrange(self._n_segments): + idx_from = i * self._n_bins_per_segment + idx_to = (i+1) * self._n_bins_per_segment + np.copyto(output_signal[idx_from:idx_to],cython_matrix_product(self._matrix, signal[idx_from:idx_to])) + else: + raise ValueError('Unknown value for LinearTransform._mode ') + + return parameters, output_signal + + # np.dot can't be used, because it slows down the calculations in LSF by a factor of two or more + # return np.dot(self._matrix,signal) + + def clear(self): + self._matrix = np.array([]) + self._recalculate_matrix = True + + def print_matrix(self): + for row in self._matrix: + print "[", + for element in row: + print "{:6.3f}".format(element), + print "]" + + def __generate_matrix(self,parameters, bin_edges, bin_midpoints): + + self._mid_bunch = int(self._n_segments/2) + + bunch_mid = (bin_edges[0,0]+bin_edges[(self._n_bins_per_segment - 1),1]) / 2. + + norm_bunch_midpoints = bin_midpoints[:self._n_bins_per_segment] + norm_bunch_midpoints = norm_bunch_midpoints - bunch_mid + norm_bin_edges = bin_edges[:self._n_bins_per_segment] + norm_bin_edges = norm_bin_edges - bunch_mid + + if self._mode == 'bunch_by_bunch': + + self._matrix = np.identity(len(norm_bunch_midpoints)) + + for i, midpoint_i in enumerate(norm_bunch_midpoints): + for j, midpoint_j in enumerate(norm_bunch_midpoints): + self._matrix[j][i] = self.response_function(parameters, + midpoint_i,norm_bin_edges[i,0],norm_bin_edges[i,1], + midpoint_j,norm_bin_edges[j,0],norm_bin_edges[j,1]) + elif self._mode == 'total': + self._matrix = np.identity(len(bin_midpoints)) + for i, midpoint_i in enumerate(bin_midpoints): + for j, midpoint_j in enumerate(bin_midpoints): + self._matrix[j][i] = self.response_function(parameters, + midpoint_i, bin_edges[i, 0], bin_edges[i, 1], + midpoint_j, bin_edges[j, 0], bin_edges[j, 1]) + + else: + raise ValueError('Unrecognized value in LinearTransform._mode') + + total_impulse = np.append(self._matrix[:,-1],self._matrix[1:,0]) + bin_widths = bin_edges[:, 1]-bin_edges[:, 0] + total_bin_widths = np.append(bin_widths,bin_widths[1:]) + + if self._normalization is None: + pass + elif self._normalization == 'max': + self._matrix = self._matrix/np.max(total_impulse) + elif self._normalization == 'min': + self._matrix = self._matrix/np.min(total_impulse) + elif self._normalization == 'average': + self._matrix = self._matrix/np.abs(np.mean(total_impulse)) + elif self._normalization == 'sum': + self._matrix = self._matrix/np.abs(np.sum(total_impulse)) + elif self._normalization == 'column_sum': + self._matrix = self._matrix/np.abs(np.sum(self._matrix[:,0])) + elif self._normalization == 'integral': + self._matrix = self._matrix / np.abs(np.sum(total_impulse* total_bin_widths)) + else: + raise ValueError('Unrecognized value in LinearTransform._normalization') + +class Averager(LinearTransform): + """ Returns a signal, which consists an average value of the input signal. A sums of the rows in the matrix + are normalized to be one (i.e. a sum of the input signal doesn't change). + """ + + def __init__(self, mode = 'bunch_by_bunch', normalization = 'column_sum', **kwargs): + super(self.__class__, self).__init__(mode, normalization, **kwargs) + self.label = 'Averager' + + def response_function(self, parameters, ref_bin_mid, ref_bin_from, ref_bin_to, bin_mid, bin_from, bin_to): + return 1 + +class Delay(LinearTransform): + """ Delays signal in the units of [second]. + """ + def __init__(self,delay, **kwargs): + self._delay = delay + super(self.__class__, self).__init__( **kwargs) + self.label = 'Delay' + + def response_function(self, parameters, ref_bin_mid, ref_bin_from, ref_bin_to, bin_mid, bin_from, bin_to): + + return self.__CDF(bin_to, ref_bin_from, ref_bin_to) - self.__CDF(bin_from, ref_bin_from, ref_bin_to) + + def __CDF(self,x,ref_bin_from, ref_bin_to): + if (x-self._delay) <= ref_bin_from: + return 0. + elif (x-self._delay) < ref_bin_to: + return ((x-self._delay)-ref_bin_from)/float(ref_bin_to-ref_bin_from) + else: + return 1. + +class LinearTransformFromFile(LinearTransform): + """ Interpolates matrix columns by using inpulse response data from a file. """ + + def __init__(self,filename, x_axis = 'time', **kwargs): + self._filename = filename + self._x_axis = x_axis + self._data = np.loadtxt(self._filename) + if self._x_axis == 'time': + self._data[:, 0]=self._data[:, 0] + + super(self.__class__, self).__init__( **kwargs) + self.label = 'LT from file' + + def response_function(self, parameters, ref_bin_mid, ref_bin_from, ref_bin_to, bin_mid, bin_from, bin_to): + return np.interp(bin_mid - ref_bin_mid, self._data[:, 0], self._data[:, 1]) + + +class LinearTransformFilter(LinearTransform): + __metaclass__ = ABCMeta + """ A general class for (analog) filters. Impulse response of the filter must be determined by overwriting + the function raw_impulse_response. + + This processor includes two additional properties. + + """ + + def __init__(self, scaling, zero_bin_value=None, normalization=None, **kwargs): + + self._scaling = scaling + + if normalization == 'sum': + self._filter_normalization = None + matrix_normalization = normalization + else: + self._filter_normalization = normalization + matrix_normalization = None + + self._zero_bin_value = zero_bin_value + super(LinearTransformFilter, self).__init__(normalization = matrix_normalization, **kwargs) + self.label='LinearTransformFilter' + + self._norm_coeff = None + + def response_function(self, parameters, ref_bin_mid, ref_bin_from, ref_bin_to, bin_mid, bin_from, bin_to): + # Frequency scaling must be done by scaling integral limits, because integration by substitution doesn't work + # with np.quad (see quad_problem.ipynbl). An ugly way, which could be fixed. + + temp, _ = integrate.quad(self._impulse_response, self._scaling * (bin_from - (ref_bin_mid)), + self._scaling * (bin_to - (ref_bin_mid))) + +# temp, _ = integrate.quad(self._impulse_response, self._scaling * (bin_from - (ref_bin_mid + self._delay_z)), +# self._scaling * (bin_to - (ref_bin_mid + self._delay_z))) + + if ref_bin_mid == bin_mid: + if self._zero_bin_value is not None: + temp += self._zero_bin_value + + if self._norm_coeff is None: + self._norm_coeff = self._normalization_coefficient(parameters) + + return temp/self._norm_coeff + + def _normalization_coefficient(self, parameters): + + if self._filter_normalization is None: + norm_coeff = 1. + elif isinstance(self._filter_normalization, tuple): + if self._filter_normalization[0] == 'integral': + norm_coeff, _ = integrate.quad(self._impulse_response, self._filter_normalization[1][0], self._filter_normalization[1][1]) + elif self._filter_normalization[0] == 'bunch_by_bunch': + f_h = self._filter_normalization[1] + + norm_coeff = 0. + for i in xrange(-1000,1000): + x = float(i)* (1./f_h) * self._scaling + norm_coeff += self._impulse_response(x) + + bin_edges = parameters['bin_edges'] + n_bins_per_segment = parameters['n_bins_per_segment'] + segment_length = bin_edges[n_bins_per_segment-1,1] - bin_edges[0,0] + + norm_coeff = norm_coeff*(segment_length * self._scaling) + else: + raise ValueError('Unknown normalization method!') +# elif self._normalization == 'sum': +# norm_coeff = np.sum(impulse) + + else: + raise ValueError('Unknown normalization method!') + + return norm_coeff + +class Lowpass(LinearTransformFilter): + """ A classical lowpass filter, which is also known as a RC-filter or one + poll roll off. + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_lowpass(max_impulse_length) + + super(self.__class__, self).__init__(scaling, normalization=normalization,**kwargs) + self.label = 'Lowpass filter' + + +class Highpass(LinearTransformFilter): + """ A high pass version of the lowpass filter, which is constructed by + multiplying the lowpass filter by a factor of -1 and adding to the first + bin 1 + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_highpass(max_impulse_length) + + super(self.__class__, self).__init__( scaling, zero_bin_value= 1., normalization=normalization, **kwargs) + self.label = 'Highpass filter' + +class PhaseLinearizedLowpass(LinearTransformFilter): + """ A phase linearized 1st order lowpass filter. Note that the narrow and + sharp peak of the impulse response makes the filter to be sensitive + to the bin width and may yield an unrealistically good response for the + short signals. Thus, it is recommended to use a higher bandwidth Gaussian + filter together with this filter. + """ + + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_phase_linearized_lowpass(max_impulse_length) + + super(self.__class__, self).__init__( scaling, normalization=normalization, **kwargs) + self.label = 'Phaselinearized lowpass filter' + + +class Gaussian(LinearTransformFilter): + """ A Gaussian low pass filter, which impulse response is a Gaussian function. + """ + def __init__(self,f_cutoff, normalization=None, max_impulse_length = 5., **kwargs): + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-max_impulse_length,max_impulse_length)) + + self._impulse_response = abstract_filter_responses.normalized_Gaussian(max_impulse_length) + + super(self.__class__, self).__init__( scaling, normalization=normalization, **kwargs) + self.label = 'Gaussian lowpass filter' + + +class Sinc(LinearTransformFilter): + """ A nearly ideal lowpass filter, i.e. a windowed Sinc filter. The impulse response of the ideal lowpass filter + is Sinc function, but because it is infinite length in both positive and negative time directions, it can not be + used directly. Thus, the length of the impulse response is limited by using windowing. Properties of the filter + depend on the width of the window and the type of the windows and must be written down. Too long window causes + ripple to the signal in the time domain and too short window decreases the slope of the filter in the frequency + domain. The default values are a good compromise. More details about windowing can be found from + http://www.dspguide.com/ch16.htm and different options for the window can be visualized, for example, by using + code in example/test 004_analog_signal_processors.ipynb + """ + + def __init__(self, f_cutoff, window_width = 3., window_type = 'blackman', normalization=None, + **kwargs): + """ + :param f_cutoff: a cutoff frequency of the filter + :param delay: a delay of the filter [s] + :param window_width: a (half) width of the window in the units of zeros of Sinc(x) [2*pi*f_c] + :param window_type: a shape of the window, blackman or hamming + :param norm_type: see class LinearTransform + :param norm_range: see class LinearTransform + """ + scaling = 2. * pi * f_cutoff + + if normalization is None: + normalization=('integral',(-window_width,window_width)) + + self._impulse_response = abstract_filter_responses.normalized_sinc(window_type, window_width) + + super(self.__class__, self).__init__(scaling,normalization=normalization, **kwargs) + self.label = 'Sinc filter' \ No newline at end of file diff --git a/PyHEADTAIL/feedback/processors/misc.py b/PyHEADTAIL/feedback/processors/misc.py new file mode 100644 index 00000000..25336424 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/misc.py @@ -0,0 +1,53 @@ +import numpy as np +from ..core import default_macros + +class Bypass(object): + """ A fast bypass processor, whichi does not modify the signal. A black sheep, which does not fit for + the abstract classes. + """ + + def __init__(self, **kwargs): + self.signal_classes = (0, 0) + + self.extensions = [] + self._macros = [] + default_macros(self, 'Bypass', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + + return parameters, signal + + +class Average(object): + + def __init__(self, avg_type = 'bunch', **kwargs): + self.label = 'Average' + self._avg_type = avg_type + + + self.signal_classes = (0, 0) + + self.extensions = [] + self._macros = [] + default_macros(self, 'Average', **kwargs) + + + def process(self, parameters, signal, *args, **kwargs): + + if self._avg_type == 'bunch': + n_segments = parameters.n_segments + n_slices_per_segment = parameters.n_slices_per_segment + + output_signal = np.zeros(len(signal)) + ones = np.ones(n_slices_per_segment) + + for i in xrange(n_segments): + idx_from = i * n_slices_per_segment + idx_to = (i + 1) * n_slices_per_segment + np.copyto(output_signal[idx_from:idx_to], ones * np.mean(signal[idx_from:idx_to])) + + elif self._avg_type == 'total': + output_signal = np.ones(len(signal))*np.mean(signal) + + else: + raise ValueError('Unknown value in Average._avg_type') + + return parameters, output_signal \ No newline at end of file diff --git a/PyHEADTAIL/feedback/processors/multiplication.py b/PyHEADTAIL/feedback/processors/multiplication.py new file mode 100644 index 00000000..c58ee422 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/multiplication.py @@ -0,0 +1,292 @@ +from abc import ABCMeta, abstractmethod +import numpy as np +from scipy.constants import c, pi +from ..core import default_macros + +"""Signal processors based on multiplication operation. + +@author Jani Komppula +@date: 11/10/2017 +""" + +class Multiplication(object): + __metaclass__ = ABCMeta + """ An abstract class which multiplies the input signal by an array. The multiplier array is produced by taking + a slice property (determined by the input parameter 'seed') and passing it through the abstract method + multiplication_function(seed). + """ + def __init__(self, seed, normalization = None, recalculate_multiplier = False, **kwargs): + """ + :param seed: a seed for the multiplier, which can be 'bin_length', 'bin_midpoint', 'signal' or any slice + property found from slice_set + :param normalization: normalization of the multiplier + 'total_sum': The sum over the multiplier is equal to 1 + 'segment_sum': The sum of the multiplier over each signal segment is equal to 1 + 'total_average': The average of the multiplier is equal to 1 + 'segment_average': The average multiplier of each signal segment is equal to 1 + 'total_integral': The total integral over the multiplier is equal to 1 + 'segment_integral': The integral of the multiplier over each signal segment is equal to 1 + 'total_min': The minimum of the multiplier is equal to 1 + 'segment_min': The minimum of the multiplier in each signal segment is equal to 1 + 'total_max': The minimum of the multiplier is equal to 1 + 'segment_max': The minimum of the multiplier in each signal segment is equal to 1 + :param recalculate_weight: if True, the weight is recalculated every time when process() is called + """ + + self._seed = seed + self._normalization = normalization + self._recalculate_multiplier = recalculate_multiplier + + self._multiplier = None + + self.signal_classes = (0,0) + + self.extensions = [] + self._macros = [] + default_macros(self, 'Multiplication', **kwargs) + + if self._seed not in ['bin_length','bin_midpoint','signal','ones']: + self.extensions.append('bunch') + self.required_variables = [self._seed] + + + @abstractmethod + def multiplication_function(self, seed): + pass + + def process(self,parameters, signal, slice_sets = None, *args, **kwargs): + + if (self._multiplier is None) or self._recalculate_multiplier: + self.__calculate_multiplier(parameters, signal, slice_sets) + + output_signal = self._multiplier*signal + + # process the signal + return parameters, output_signal + + def __calculate_multiplier(self,parameters, signal, slice_sets): + self._multiplier = np.zeros(len(signal)) + + if self._seed == 'ones': + self._multiplier = self._multiplier + 1. + elif self._seed == 'bin_width': + np.copyto(self._multiplier, (parameters['bin_edges'][:,1]-parameters['bin_edges'][:,0])) + elif self._seed == 'bin_midpoint': + np.copyto(self._multiplier, ((parameters['bin_edges'][:,1]+parameters['bin_edges'][:,0])/2.)) + elif self._seed == 'normalized_bin_midpoint': + + for i in xrange(parameters['n_segments']): + i_from = i * parameters['n_bins_per_segment'] + i_to = (i + 1) * parameters['n_bins_per_segment'] + + np.copyto(self._multiplier[i_from:i_to], ((parameters['bin_edges'][i_from:i_to,1]+ + parameters['bin_edges'][i_from:i_to,0])/2. + -parameters['segment_midpoints'][i])) + + elif self._seed == 'signal': + np.copyto(self._multiplier,signal) + else: + if len(signal) == len(slice_sets) * (len(slice_sets[0].z_bins) - 1): + start_idx = 0 + for slice_set in slice_sets: + seed = getattr(slice_set,self._seed) + np.copyto(self._multiplier[start_idx:(start_idx+len(seed))],seed) + start_idx += len(seed) + np.copyto(self._multiplier, self._multiplier[::-1]) + else: + raise ValueError('Signal length does not correspond to the original signal length ' + 'from the slice sets in the method Multiplication') + + self._multiplier = self.multiplication_function(self._multiplier) + + # NOTE: add options for average bin integrals? + if self._normalization is None: + norm_coeff = 1. + + elif self._normalization == 'total_sum': + norm_coeff = float(np.sum(self._multiplier)) + + elif self._normalization == 'segment_sum': + norm_coeff = np.ones(len(self._multiplier)) + for i in xrange(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to])) + + elif self._normalization == 'total_average': + norm_coeff = float(np.sum(self._multiplier))/float(len(self._multiplier)) + + elif self._normalization == 'segment_average': + norm_coeff = np.ones(len(self._multiplier)) + for i in xrange(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to]))/float(parameters['n_bins_per_segment']) + + elif self._normalization == 'total_integral': + bin_widths = parameters['bin_edges'][:,1] - parameters['bin_edges'][:,0] + norm_coeff = np.sum(self._multiplier*bin_widths) + + elif self._normalization == 'segment_integral': + bin_widths = parameters['bin_edges'][:,1] - parameters['bin_edges'][:,0] + norm_coeff = np.ones(len(self._multiplier)) + for i in xrange(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to]*bin_widths[i_from:i_to])) + + elif self._normalization == 'total_min': + norm_coeff = float(np.min(self._multiplier)) + + elif self._normalization == 'segment_min': + norm_coeff = np.ones(len(self._multiplier)) + for i in xrange(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.min(self._multiplier[i_from:i_to])) + + elif self._normalization == 'total_max': + norm_coeff = float(np.max(self._multiplier)) + + elif self._normalization == 'segment_max': + norm_coeff = np.ones(len(self._multiplier)) + for i in xrange(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.max(self._multiplier[i_from:i_to])) + else: + raise ValueError('Unknown value in Multiplication._normalization') + + # TODO: try to figure out why this can not be written as + # TODO: self._multiplier /= norm_coeff + self._multiplier = self._multiplier / norm_coeff + + def clear(self): + self._multiplier = None + + +class ChargeWeighter(Multiplication): + """ The signal is weighted by charge (a number of macroparticles per slice) + """ + + def __init__(self, normalization = 'segment_max', **kwargs): + super(self.__class__, self).__init__('n_macroparticles_per_slice', normalization,recalculate_multiplier = True + , **kwargs) + self.label = 'Charge weighter' + + def multiplication_function(self,weight): + return weight + + +class EdgeWeighter(Multiplication): + """ Use an inverse of the Fermi-Dirac distribution function to increase signal strength on the edges of the bunch + """ + + def __init__(self,bunch_length,bunch_decay_length,maximum_weight = 10., **kwargs): + """ + :param bunch_length: estimated width of the bunch + :param bunch_decay_length: slope of the function on the edge of the bunch. Smaller value, steeper slope. + :param maximum_weight: maximum value of the weight + """ + self._bunch_length = bunch_length + self._bunch_decay_length = bunch_decay_length + self._maximum_weight=maximum_weight + super(self.__class__, self).__init__('bin_midpoint', 'minimum', **kwargs) + self.label = 'Edge weighter' + + def multiplication_function(self,weight): + weight = np.exp((np.absolute(weight)-self._bunch_length/2.)/float(self._bunch_decay_length))+ 1. + weight = np.clip(weight,1.,self._maximum_weight) + return weight + + +class NoiseGate(Multiplication): + """ Passes a signal which is greater/less than the threshold level. + """ + + def __init__(self,threshold, operator = 'greater', threshold_ref = 'amplitude', **kwargs): + + self._threshold = threshold + self._operator = operator + self._threshold_ref = threshold_ref + super(self.__class__, self).__init__('signal',recalculate_multiplier = True, **kwargs) + self.label = 'Noise gate' + + def multiplication_function(self, seed): + multiplier = np.zeros(len(seed)) + + if self._threshold_ref == 'amplitude': + comparable = np.abs(seed) + elif self._threshold_ref == 'absolute': + comparable = seed + + if self._operator == 'greater': + multiplier[comparable > self._threshold] = 1 + elif self._operator == 'less': + multiplier[comparable < self._threshold] = 1 + + return multiplier + + +class SignalMixer(Multiplication): + """ Multiplies signal with a sine wave. Phase is locked to the midpoint of the each bunch shifted by the value of + phase_shift [radians]""" + def __init__(self,frequency,phase_shift, **kwargs): + + self._frequency = frequency + self._phase_shift = phase_shift + + super(self.__class__, self).__init__('normalized_bin_midpoint', **kwargs) + self.label = 'Signal mixer' + + def multiplication_function(self, seed): + multiplier = np.sin(2.*pi*self._frequency*seed + self._phase_shift) + return multiplier + + +class IdealAmplifier(Multiplication): + """ An ideal amplifier/attenuator, which multiplies signal by a value of gain""" + + def __init__(self,gain, **kwargs): + + self._gain = gain + + super(self.__class__, self).__init__('ones', **kwargs) + self.label = 'IdealAmplifier' + + def multiplication_function(self, seed): + return seed * self._gain + + +class SegmentAverage(Multiplication): + """An average of each signal segment is set to equal to 1. """ + def __init__(self,**kwargs): + + super(self.__class__, self).__init__('ones',normalization = 'segment_sum', **kwargs) + self.label = 'SegmentAverage' + + def multiplication_function(self, seed): + return seed + +class MultiplicationFromFile(Multiplication): + """ Multiplies the signal with an array, which is produced by interpolation from the external data file. Note the seed + (unit) for the interpolation can be any of those available for the seed + (i.e. location, sigma, or a number of macroparticles per slice, etc.) + """ + + def __init__(self,filename, x_axis='time', seed='bin_midpoint', **kwargs): + super(self.__class__, self).__init__(seed, **kwargs) + self.label = 'Multiplication from file' + + self._filename = filename + self._x_axis = x_axis + self._data = np.loadtxt(self._filename) + + if self._x_axis == 'time': + pass + elif self._x_axis == 'position': + self._data[:, 0] = self._data[:, 0] / c + else: + raise ValueError('Unknown value in MultiplicationFromFile._x_axis') + + def multiplication_function(self, seed): + return np.interp(seed, self._data[:, 0], self._data[:, 1]) diff --git a/PyHEADTAIL/feedback/processors/register.py b/PyHEADTAIL/feedback/processors/register.py new file mode 100644 index 00000000..2087f246 --- /dev/null +++ b/PyHEADTAIL/feedback/processors/register.py @@ -0,0 +1,753 @@ +import math, copy +from collections import deque +from abc import ABCMeta, abstractmethod +import numpy as np +from scipy.constants import pi + +from ..core import Parameters, default_macros + +"""Signal processors based on registers and combiners. + +@author Jani Komppula +@date: 11/10/2017 +""" + +class Register(object): + """ + Stores signals to the register. The obejct is iterable, i.e. iteration + returns the stored signals after the given delay. + """ + def __init__(self, n_values, tune, delay=0, **kwargs): + """ + Parameters + ---------- + n_values : number + A maximum number of signals stored and returned (in addition to + the delay) + tune : number + A real number value of a betatron tune + delay : number + A number of turns the signal kept in the register before returning it + + """ + + self._n_values = n_values + self._delay = delay + self._phase_advance_per_turn = 2. * np.pi * tune + + self._n_iter_left = 0 + self._signal_register = deque(maxlen=(n_values + delay)) + self._parameter_register = deque(maxlen=(n_values + delay)) + + self.extensions = ['register'] + self._macros = [] + default_macros(self, 'Register', **kwargs) + + @property + def parameters(self): + if len(self._parameter_register) > 0: + return self._parameter_register[0] + else: + return None + + @property + def phase_advance_per_turn(self): + return self._phase_advance_per_turn + + @property + def delay(self): + return self._delay + + @property + def maxlen(self): + return self._n_values + + def __len__(self): + """ + Returns a number of signals in the register after the delay. + """ + return max((len(self._signal_register) - self._delay), 0) + + def __iter__(self): + """ + Calculates how many iterations are required + """ + self._n_iter_left = len(self) + + return self + + def next(self): + if self._n_iter_left < 1: + raise StopIteration + + else: + delay = -1. * (len(self._signal_register) - self._n_iter_left) \ + * self._phase_advance_per_turn + self._n_iter_left -= 1 + + return (self._parameter_register[self._n_iter_left], + self._signal_register[self._n_iter_left], delay) + + def process(self, parameters, signal, *args, **kwargs): + self._parameter_register.append(parameters) + self._signal_register.append(signal) + + return parameters, signal + + +class UncorrectedDelay(object): + """ Delays the signal in the units of turns without any betatron pahse + advance correction + """ + def __init__(self, delay, **kwargs): + + self._delay = delay + self._register = Register(n_values=1, tune=1., delay=self._delay) + + self.extensions = ['register'] + self._macros = [] + default_macros(self, 'UncorrectedDelay', **kwargs) + + @property + def delay(self): + return self._delay + + def process(self, parameters, signal, *args, **kwargs): + self._register.process(parameters, signal, *args, **kwargs) + output_parameters = None + output_signal = None + + for (parameters_i, signal_i, delay_i) in self._register: + output_parameters = parameters_i + output_signal = signal_i + + if output_parameters is None: + output_parameters = parameters + output_signal = np.zeros(len(signal)) + + return output_parameters, output_signal + + + +class Combiner(object): + __metaclass__ = ABCMeta + + def __init__(self, registers, target_location, target_beta=None, + additional_phase_advance=0., beta_conversion = '0_deg', **kwargs): + """ + Parameters + ---------- + registers : list + A list of registers, which are a source for the signal + target_location : number + A target phase advance in radians of betatron motion + additional_phase_advance : number + Additional phase advance for the target location. + For example, np.pi/2. for shift from displacement in the pick up to + divergenve in the kicker + """ + + self._registers = registers + self._target_location = target_location + self._target_beta = target_beta + self._additional_phase_advance = additional_phase_advance + self._beta_conversion = beta_conversion + + if self._beta_conversion == '0_deg': + pass + elif self._beta_conversion == '90_deg': + self._additional_phase_advance += pi/2. + else: + raise ValueError('Unknown beta conversion type.') + + self._combined_parameters = None + + + self.extensions = ['combiner'] + self._macros = [] + default_macros(self, 'Combiner', **kwargs) + + @abstractmethod + def combine(self, registers, target_location, target_beta, additional_phase_advance, beta_conversion): + pass + + def process(self, parameters=None, signal=None, *args, **kwargs): + + output_signal = self.combine(self._registers, + self._target_location, + self._target_beta, + self._additional_phase_advance, + self._beta_conversion) + + if self._combined_parameters is None: + self._combined_parameters = copy.copy(self._registers[0].parameters) + self._combined_parameters['location'] = self._target_location + self._combined_parameters['beta'] = self._target_beta + + return self._combined_parameters, output_signal + +class CosineSumCombiner(Combiner): + """ A combiner, which utilizes "Cosine sum"- algorithm for the betatron + phase advance correction. + + In the other words, it can be proven that, the sum of the singnals + multiplied by cos(phase advance to the target) approaches a half value of + the correct signal, when the number of the singal with equally distributed + (random) phase advances increases. + """ + + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + registers : list + A list of registers, which are a source for the signal + target_location : number + A target phase advance in radians of betatron motion + additional_phase_advance : number + Additional phase advance for the target location. + For example, np.pi/2. for shift from displacement in the pick up to + divergenve in the kicker + """ + super(self.__class__, self).__init__(*args, **kwargs) + self.label = 'Cosine sum combiner' + + def combine(self, registers, target_location, target_beta, additional_phase_advance, beta_conversion): + combined_signal = None + n_signals = 0 + + for register in registers: + for (parameters, signal, delay) in register: + if combined_signal is None: + combined_signal = np.zeros(len(signal)) + delta_position = parameters['location'] \ + - target_location + + if delta_position > 0: + delta_position -= register.phase_advance_per_turn + + delta_phi = delay + delta_position - additional_phase_advance + n_signals += 1 + + if target_beta is not None: + beta_correction = 1. / np.sqrt(parameters['beta'] * target_beta) + else: + beta_correction = 1. + + combined_signal += beta_correction * 2. * math.cos(delta_phi) * signal + + if combined_signal is not None: + combined_signal = combined_signal/float(n_signals) + + return combined_signal + +class DummyCombiner(Combiner): + """ A combiner, which by passes the signal without any corrections + """ + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + registers : list + A list of registers, which are a source for the signal + target_location : number + A target phase advance in radians of betatron motion + additional_phase_advance : number + Additional phase advance for the target location. + For example, np.pi/2. for shift from displacement in the pick up to + divergenve in the kicker + """ + super(self.__class__, self).__init__(*args, **kwargs) + self.label = 'Dummy combiner' + + def combine(self, registers, target_location, target_beta, additional_phase_advance, beta_conversion): + combined_signal = None + + if len(registers[0]) > 0: + + for (parameters, signal, delay) in registers[0]: + combined_signal = signal + + if target_beta is not None: + beta_correction = 1. / np.sqrt(parameters['beta'] * target_beta) + else: + beta_correction = 1. + + return beta_correction*combined_signal + + else: + return combined_signal + +class HilbertCombiner(Combiner): + """ A combiner, which utilizes a algorithm based on the Hilbert transform. + """ + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + registers : list + A list of registers, which are a source for the signal + target_location : number + A target phase advance in radians of betatron motion + additional_phase_advance : number + Additional phase advance for the target location. + For example, np.pi/2. for shift from displacement in the pick up to + divergenve in the kicker + """ + if 'n_taps' in kwargs: + self._n_taps = kwargs['n_taps'] + else: + self._n_taps = None + + self._coefficients = None + super(self.__class__, self).__init__(*args, **kwargs) + self.label = 'Hilbert combiner' + + @property + def n_taps(self): + return self._n_taps + + @n_taps.setter + def n_taps(self, value): + self._n_taps = value + + + def combine(self, registers, target_location, target_beta, additional_phase_advance, beta_conversion): + if self._coefficients is None: +# print registers + if self._n_taps is None: + self._n_taps = registers[0].maxlen + self._coefficients = [None]*len(registers) + + combined_signal = None + + for i, register in enumerate(registers): + if len(register) >= len(self._coefficients): + if self._coefficients[i] is None: + self._coefficients[i] = self.__generate_coefficients( + register, target_location, target_beta, + additional_phase_advance) + + for j, (parameters, signal, delay) in enumerate(register): + + if target_beta is not None: + beta_correction = 1. / np.sqrt(parameters['beta'] * target_beta) + else: + beta_correction = 1. + + if combined_signal is None: + combined_signal = np.zeros(len(signal)) + + combined_signal += beta_correction * self._coefficients[i][j] * signal + + if combined_signal is not None: + combined_signal = combined_signal/float(len(registers)) + + return combined_signal + + def __generate_coefficients(self, register, target_location, target_beta, additional_phase_advance): + parameters = register.parameters + + delta_phi = -1. * float(register.delay) \ + * register.phase_advance_per_turn + + delta_phi -= float(self._n_taps/2) * register.phase_advance_per_turn + + delta_position = parameters['location'] - target_location + delta_phi += delta_position + if delta_position > 0: + delta_phi -= register.phase_advance_per_turn + + delta_phi -= additional_phase_advance + + coefficients = np.zeros(self._n_taps) + + for i in xrange(self._n_taps): + n = self._n_taps-i-1 + n -= self._n_taps/2 + h = 0. + + if n == 0: + h = np.cos(delta_phi) + elif n % 2 == 1: + h = -2. * np.sin(delta_phi) / (pi * float(n)) + coefficients[i] = h + return coefficients + + +class VectorSumCombiner(Combiner): + """ A combiner, which utilizes vector calculus for the correction. + + It can be proven that if the oscillation amplitude doesn't change + turn by turn (e.g. the damper gain is low), the correction is + ideal if the signal from two different phase advances (e.g. turns or + pickups) are available. + """ + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + registers : list + A list of registers, which are a source for the signal + target_location : number + A target phase advance in radians of betatron motion + additional_phase_advance : number + Additional phase advance for the target location. + For example, np.pi/2. for shift from displacement in the pick up to + divergenve in the kicker + """ + super(self.__class__, self).__init__(*args, **kwargs) + self.label = 'Vector sum combiner' + self._warning_printed = False + + def combine(self, registers, target_location, target_beta, + additional_phase_advance, beta_conversion): + + combined_signal = None + n_signals = 0 + + if len(registers) == 1: + prev_parameters = None + prev_signal = None + prev_delay = None + + if len(registers[0]) > 1: + + for i, (parameters, signal, delay) in enumerate(registers[0]): + if i == 0: + combined_signal = np.zeros(len(signal)) + prev_signal = np.zeros(len(signal)) + else: + phase_advance_per_turn = ( + registers[0].phase_advance_per_turn) + location_1 = prev_parameters['location'] + beta_1 = prev_parameters['beta'] + delay_1 = prev_delay + location_2 = parameters['location'] + beta_2 = prev_parameters['beta'] + delay_2 = delay + + combined_signal = combined_signal + \ + self.__combine_signals(prev_signal, delay_1, + location_1, beta_1, + signal, delay_2, + location_2, beta_2, + target_location, + target_beta, + beta_conversion, + phase_advance_per_turn, + additional_phase_advance) + n_signals += 1 + + np.copyto(prev_signal,signal) + prev_parameters = parameters + prev_delay = delay + + elif len(registers) > 1: + prev_register = registers[0] + + for register in registers[1:]: + for (parameters_1, signal_1, delay_1), (parameters_2, signal_2, delay_2) in zip(prev_register,register): + if combined_signal is None: + combined_signal = np.zeros(len(signal_1)) + + phase_advance_per_turn = ( + prev_register.phase_advance_per_turn) + location_1 = parameters_1['location'] + beta_1 = parameters_1['beta'] + location_2 = parameters_2['location'] + beta_2 = parameters_2['beta'] + + combined_signal = combined_signal + \ + self.__combine_signals(signal_1, delay_1, + location_1, beta_1, + signal_2, delay_2, + location_2, beta_2, + target_location, + target_beta, + beta_conversion, + phase_advance_per_turn, + additional_phase_advance + ) + n_signals += 1 + + prev_register = register + else: + raise ValueError('At least one register must be given.') + + if combined_signal is not None: + combined_signal = combined_signal / float(n_signals) + + return combined_signal + + def __combine_signals(self, signal_1, delay_1, location_1, beta_1, + signal_2, delay_2, location_2, beta_2, + target_location, target_beta, beta_conversion, + phase_advance_per_turn, additional_phase_advance): + + readings_angle_diff, final_rotation_angle = ( + self.__determine_angles(target_location, phase_advance_per_turn, + location_1, delay_1, location_2, delay_2) + ) + final_rotation_angle += additional_phase_advance + + re, im = self.__determine_vector(signal_1, beta_1, signal_2, beta_2, + readings_angle_diff) + + calculated_signal = self.__rotate_vector(re, im, final_rotation_angle) + + if target_beta is not None: + if beta_conversion == '90_deg': + beta_correction = 1./np.sqrt(beta_1*target_beta) + elif beta_conversion == '0_deg': + beta_correction = np.sqrt(target_beta/beta_1) + else: + beta_correction = 1. + + return beta_correction * calculated_signal + + def __determine_angles(self, target_location, phase_advance_per_turn, + signal_1_location, signal_1_delay, + signal_2_location, signal_2_delay): + + readings_location_difference = signal_2_location - signal_1_location + if readings_location_difference < 0.: + readings_location_difference += readings_location_difference + + readings_delay_difference = signal_2_delay - signal_1_delay + readings_phase_difference = readings_location_difference \ + + readings_delay_difference + + if self._warning_printed == False: + if (readings_phase_difference%(-1.*np.pi) > 0.2) or (readings_phase_difference%np.pi < 0.2): + self._warning_printed = True + print "WARNING: It is recommended that the angle between the readings is at least 12 deg" + + target_location_difference = target_location - signal_1_location + if target_location_difference < 0.: + target_location_difference += readings_location_difference + + target_delay_difference = -1. * signal_1_delay + target_phase_difference = target_location_difference \ + + target_delay_difference + + return readings_phase_difference, target_phase_difference + + def __determine_vector(self, signal_1, beta_1, signal_2, beta_2, + angle_difference): + """ + """ + s = np.sin(angle_difference) + c = np.cos(angle_difference) + + re = signal_1 + im = (1./s) * np.sqrt(beta_1/beta_2) * signal_2 - (c/s) * signal_1 + return re, im + + def __rotate_vector(self, re, im, rotation_angle): + + s = np.sin(rotation_angle) + c = np.cos(rotation_angle) + + return c*re+s*im + + +class FIRCombiner(Combiner): + """ A combiner object, which correct the betatron phase advance by using + the given coefficient. + """ + + def __init__(self, coefficients, *args, **kwargs): + """ + Parameters + ---------- + coefficients: list + A list of FIR coefficients + """ + self._coefficients = coefficients + super(FIRCombiner, self).__init__(*args, **kwargs) + self.label = 'FIR combiner' + + def combine(self, registers, target_location, target_beta, + additional_phase_advance, beta_conversion): + combined_signal = None + + for register in registers: + if len(register) >= len(self._coefficients): + for i, (parameters, signal, delay) in enumerate(register): + if combined_signal is None: + combined_signal = np.zeros(len(signal)) + if i < len(self._coefficients): + combined_signal += self._coefficients[i] * signal + + return combined_signal + + + +class DCRemovedVectorSumCombiner(FIRCombiner): + """ A 'notch filttered', i.e. DC-level removed, version of the vector sum + combiner. It is a three tap FIR filter, which has been derived by using + asumptions that a beam is a rotating vector in (x, xp)-plane and + x-values can be measured in different turns, but they contains an + unknown constant DC-offset. + + This version gives mathematically exact correction when tune + is well known. When tune error exists the version induces only low + noise in comparison to other types of combiners. + + Developed by J. Komppula @ 2017. + """ + def __init__(self, tune, delay=0, *args, **kwargs): + def calculate_coefficients(tune, delay): + ppt = -tune * 2.* np.pi + c12 = np.cos(1.*ppt) + s12 = np.sin(1.*ppt) + c13 = np.cos(2.*ppt) + s13 = np.sin(2.*ppt) + c14 = np.cos((2+delay)*ppt) + s14 = np.sin((2+delay)*ppt) + + divider = -1.*(-c12*s13+c13*s12-s12+s13) + + cx1 = c14*(1-(c12*s13-c13*s12)/divider)+s14*(-c12+c13)/divider + cx2 = (c14*(-(-s13))+s14*(-c13+1))/divider + cx3 = (c14*(-(s12))+s14*(c12-1))/divider + + return [cx3, cx2, cx1] + + coefficients = calculate_coefficients(tune, delay) + + super(DCRemovedVectorSumCombiner, self).__init__(coefficients,*args, **kwargs) + self.label = 'FIR combiner' + + + +class TurnFIRFilter(object): + """A signal processor, which can be used as a FIR filer in turn domain. + """ + + def __init__(self, coefficients, tune, delay = 0, additional_phase_advance = 0., **kwargs): + """ + Parameters + ---------- + coefficients: list + A list of FIR coefficients + tune: float + A betatron tune of the plane + delay: int + A delay of the signal in the units of turn before the filter + addtional_phase_advance: float + An additional betatron phase advance in radians to be taken into + account to the betatron phase correction. + """ + self._coefficients = coefficients + self._tune = tune + self._additional_phase_advance = additional_phase_advance + self._register = Register(len(self._coefficients), self._tune, delay) + self._combiner = None + + self.extensions = [] + self._macros = [] + default_macros(self, 'TurnFIRFilter', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + self._register.process(parameters, signal, *args, **kwargs) + if self._combiner is None: + self.__init_combiner(parameters) + + output_parameters, output_signal = self._combiner.process(parameters, + signal, + *args, + **kwargs) + + if output_signal is None: + output_parameters = parameters + output_signal = np.zeros(len(signal)) + + return output_parameters, output_signal + + def __init_combiner(self, parameters): + registers = [self._register] + target_location = parameters['location'] + target_beta = parameters['beta'] + extra_phase = self._additional_phase_advance + self._combiner = FIRCombiner(self._coefficients,registers, target_location, + target_beta, extra_phase) + +class TurnDelay(object): + """ Delays the signal a number of turns given as an input parameter. + """ + def __init__(self, delay, tune, n_taps=2, combiner='vector_sum', + additional_phase_advance=0, **kwargs): + """ + Parameters + ---------- + delay: int + A number of turns signal is delayed + tune: float + A betatron tune of the plane + n_taps: int + A number of turns of data used for betatron phase advance + correction of the delay. Note that typically the group delay is + delay + n_taps/2 depending on the correction algorithm. + combiner: str or object + Combiner object, which is used for betatron correction + addtional_phase_advance: float + An additional betatron phase advance in radians to be taken into + account to the betatron phase correction. + + """ + + self._delay = delay + self._tune = tune + self._n_taps = n_taps + self._combiner_type = combiner + self._additional_phase_advance = additional_phase_advance + + self._register = Register(self._n_taps, self._tune, self._delay) + self._combiner = None + + self.extensions = [] + self._macros = [] + default_macros(self, 'TurnDelay', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + self._register.process(parameters, signal, *args, **kwargs) + + if self._combiner is None: + self.__init_combiner(parameters) + + output_parameters, output_signal = self._combiner.process(parameters, + signal, + *args, + **kwargs) +# print output_signal + if output_signal is None: + output_parameters = parameters + output_signal = np.zeros(len(signal)) + + return output_parameters, output_signal + + def __init_combiner(self, parameters): + registers = [self._register] + target_location = parameters['location'] + target_beta = parameters['beta'] + extra_phase = self._additional_phase_advance + + if isinstance(self._combiner_type, (str,unicode)): + if self._combiner_type == 'vector_sum': + self._combiner = VectorSumCombiner(registers, target_location, + target_beta, extra_phase) + elif self._combiner_type == 'cosine_sum': + self._combiner = CosineSumCombiner(registers, target_location, + target_beta, extra_phase) + elif self._combiner_type == 'hilbert': + self._combiner = HilbertCombiner(registers, target_location, + target_beta, extra_phase) + elif self._combiner_type == 'DCrem_vector_sum': + self._combiner = DCRemovedVectorSumCombiner(self._tune, + self._delay, + registers, + target_location, + target_beta, + extra_phase) + else: + raise ValueError('Unknown combiner type') + else: + self._combiner = self._combiner_type(registers, target_location, + extra_phase) diff --git a/PyHEADTAIL/feedback/processors/resampling.py b/PyHEADTAIL/feedback/processors/resampling.py new file mode 100644 index 00000000..586e06ac --- /dev/null +++ b/PyHEADTAIL/feedback/processors/resampling.py @@ -0,0 +1,714 @@ +import numpy as np +import copy +from scipy import interpolate +from scipy.sparse import csr_matrix + +from ..core import Parameters, bin_edges_to_z_bins, z_bins_to_bin_edges +from ..core import append_bin_edges, bin_mids, default_macros + +"""Signal processors for resampling a signal. + +@author Jani Komppula +@date: 11/10/2017 +""" + +class Resampler(object): + + def __init__(self, method, n_samples=None, offset=0., data_conversion='sum', + n_extras = 0, **kwargs): + """ + Resamples the input signal into a new bin set + + Parameters + ---------- + method : tuple + Resampling method. Possible options are: + ('harmonic', double) + The input signal is converted into one continously sampled + segment. The given number corresponds to the segment spacing + frequency of the input signal (e.g. the harmonic or bunch + frequency of the accelerator). + ('sequenced', double) + Each segment of the signal is resampled by using a given + sampling frequency. + ('previous', int) + The signal is resampled into the previous bin set. The given + number corresponds to an index of the previous parameters in + the input signal paramters. + ('upsampling', int) + Multiplies the original sampling rate by the given number + ('downsampling', int) + Reduces the original sampling rate by the given number. If + the given number is not an harmonic of the number of bins + per segment, the last bins of the segments are skipped. + n_samples : int + A number of samples per input segment when options 'harmonic' or + 'sequenced' have been used. If the given value is None, the number + of samples corresponds to the ceil(segment_length*f_sampling) + offset : double + By default the mid points of the new bin set for the segments have + been set to the found segment reference points from the input signal + parameters. The give value correspods the mid point offsets to the + reference points in the units of bins. + data_conversion : string + A method how the data of the input signal are converted to the output + binset. The output signal can be converted by using: + 'interpolation' + interpolates from the input data. + 'sum' + calculates a bin value sum over the over lapping bins + 'integral' + integrates the input signal over an output bin + 'average' + calculates a bin width weighted average of the overlaping bins + 'average_bin_value' + calculates an average value of the overlaping bins + 'value' + returns a value of the overlapping bin + ('upsampler_kernel', list) + uses a kernel to map an old value to a corresponding + section of upsampled bins + n_extras : int + A number of extra samples added before the first segment and after + the last segment + """ + + self._method = method + self._n_samples = n_samples + self._offset = offset + + self._n_extras = n_extras + + self._data_conversion = data_conversion + + self._output_parameters = None + self._output_signal = None + + self._convert_signal = None + + self.extensions = [] + self._macros = [] + default_macros(self, 'Resampler', **kwargs) + self.signal_classes = None + + def _init_harmonic_bins(self, parameters, signal): + self.signal_classes = (1,2) + base_frequency = self._method[1] + + if parameters['n_segments'] > 1: + min_ref_point = np.min(parameters['segment_ref_points']) + max_ref_point = np.max(parameters['segment_ref_points']) + start_mid = parameters['segment_ref_points'][0] + else: + mids = bin_mids(parameters['bin_edges']) + min_ref_point = np.min(mids) + max_ref_point = np.max(mids) + start_mid = mids[0] + + if self._n_samples is not None: + n_bins_per_segment = self._n_samples + else: + n_bins_per_segment = 1 + + segment_length = 1./base_frequency + bin_width = segment_length/float(n_bins_per_segment) + + n_sampled_sequencies = (max_ref_point-min_ref_point) / segment_length + 1 + n_sampled_sequencies = int(np.round(n_sampled_sequencies)) + + total_n_samples = int((n_sampled_sequencies + 2*self._n_extras) * n_bins_per_segment) + + segment_z_bins = np.linspace(0, segment_length, n_bins_per_segment+1) + segment_z_bins = segment_z_bins + (self._offset - np.floor(n_bins_per_segment/2.)-0.5)*bin_width + segment_bin_edges = z_bins_to_bin_edges(segment_z_bins) + + bin_edges = None + + for i in xrange(self._n_extras): + offset = start_mid - (self._n_extras-i)*segment_length + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + + for i in xrange(n_sampled_sequencies): + offset = i*segment_length + start_mid + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + + for i in xrange(self._n_extras): + offset = start_mid + (i+n_sampled_sequencies)*segment_length + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + + signal_class = 2 + n_segments = 1 + n_bins_per_segment = total_n_samples + segment_ref_points = [np.mean(bin_edges_to_z_bins(bin_edges))] + previous_parameters = [] + location = parameters['location'] + beta = parameters['beta'] + + self._output_parameters = Parameters(signal_class, bin_edges, n_segments, + n_bins_per_segment, segment_ref_points, + previous_parameters, location, beta) + temp_parameters = copy.deepcopy(parameters) + temp_parameters['previous_parameters'] = [] + self._output_parameters['previous_parameters'] = copy.deepcopy(parameters['previous_parameters']) + self._output_parameters['previous_parameters'].append(temp_parameters) + self._output_signal = np.zeros(total_n_samples) + + + def _init_sequenced_bins(self, parameters, signal): + self.signal_classes = (0,1) + bin_width = 1./self._method[1] + if self._n_samples is not None: + n_bins_per_segment = self._n_samples + else: + segment_from = parameters['bin_edges'][0,0] + segment_to = parameters['bin_edges'][parameters['n_bins_per_segment']-1,1] + raw_segment_length = segment_to - segment_from + n_bins_per_segment = int(np.ceil(raw_segment_length/bin_width)) + + segment_z_bins = np.linspace(0, n_bins_per_segment/self._method[1], n_bins_per_segment+1) + segment_z_bins = segment_z_bins - np.mean(segment_z_bins) + self._offset*bin_width + segment_bin_edges = z_bins_to_bin_edges(segment_z_bins) + + bin_edges = None + for offset in parameters['segment_ref_points']: + if bin_edges is None: + temp = (segment_bin_edges+offset) + bin_edges = temp + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + signal_class = 1 + n_segments = parameters['n_segments'] + segment_ref_points = parameters['segment_ref_points'] + previous_parameters = [] + location = parameters['location'] + beta = parameters['beta'] + self._output_parameters = Parameters(signal_class, bin_edges, n_segments, + n_bins_per_segment, segment_ref_points, + previous_parameters, location, beta) + temp_parameters = copy.deepcopy(parameters) + temp_parameters['previous_parameters'] = [] + self._output_parameters['previous_parameters'] = copy.deepcopy(parameters['previous_parameters']) + self._output_parameters['previous_parameters'].append(temp_parameters) + self._output_signal = np.zeros(self._output_parameters['n_segments'] * self._output_parameters['n_bins_per_segment']) + + def _init_previous_bins(self, parameters, signal): + self.signal_classes = (0,0) + self._output_parameters = copy.deepcopy(parameters['previous_parameters'][self._method[1]]) + self._output_parameters['previous_parameters'] = copy.deepcopy(parameters['previous_parameters'][0:self._method[1]]) + + self._output_signal = np.zeros(self._output_parameters['n_segments'] * self._output_parameters['n_bins_per_segment']) + + def _init_upsampling(self, parameters, signal): + self.signal_classes = (0,0) + multiplier = self._method[1] + + original_edges = parameters['bin_edges'] + new_edges = None + + for edges in original_edges: + new_bin_width = (edges[1]-edges[0])/float(multiplier) + + temp_edges = np.zeros((multiplier, 2)) + + for i in xrange(multiplier): + temp_edges[i,0] = edges[0] + i * new_bin_width + temp_edges[i,1] = edges[0] + (i + 1) * new_bin_width + + if new_edges is None: + new_edges = temp_edges + else: + new_edges = append_bin_edges(new_edges,temp_edges) + + + signal_class = parameters['class'] + n_segments = parameters['n_segments'] + n_bins_per_segment = parameters['n_bins_per_segment']*multiplier + segment_ref_points = parameters['segment_ref_points'] + previous_parameters = [] + location = parameters['location'] + beta = parameters['beta'] + self._output_parameters = Parameters(signal_class, new_edges, n_segments, + n_bins_per_segment, segment_ref_points, + previous_parameters, location, beta) + temp_parameters = copy.deepcopy(parameters) + temp_parameters['previous_parameters'] = [] + self._output_parameters['previous_parameters'] = copy.deepcopy(parameters['previous_parameters']) + self._output_parameters['previous_parameters'].append(temp_parameters) + self._output_signal = np.zeros(len(signal)*multiplier) + + def _init_downsampling(self, parameters, signal): + self.signal_classes = (0,0) + multiplier = self._method[1] + + original_edges = parameters['bin_edges'] + original_n_bins_per_segment = parameters['n_bins_per_segment'] + + n_bins_per_segment = int(np.floor(original_n_bins_per_segment/multiplier)) + new_edges = None + + for j in xrange(parameters['n_segments']): + for i in xrange(n_bins_per_segment): + first_edge = j * original_n_bins_per_segment + i * multiplier + last_edge = j * original_n_bins_per_segment + (i + 1) * multiplier -1 + + temp_edges = np.zeros((1, 2)) + temp_edges[0,0] = original_edges[first_edge,0] + temp_edges[0,1] = original_edges[last_edge,1] + + if new_edges is None: + new_edges = temp_edges + else: + new_edges = append_bin_edges(new_edges,temp_edges) + + + signal_class = parameters['class'] + n_segments = parameters['n_segments'] + segment_ref_points = parameters['segment_ref_points'] + previous_parameters = [] + location = parameters['location'] + beta = parameters['beta'] + self._output_parameters = Parameters(signal_class, new_edges, n_segments, + n_bins_per_segment, segment_ref_points, + previous_parameters, location, beta) + temp_parameters = copy.deepcopy(parameters) + temp_parameters['previous_parameters'] = [] + self._output_parameters['previous_parameters'] = copy.deepcopy(parameters['previous_parameters']) + self._output_parameters['previous_parameters'].append(temp_parameters) + self._output_signal = np.zeros(n_bins_per_segment*n_segments) + + + def _init_interp_conversion(self, parameters, signal): + conversion_map = np.zeros(len(self._output_signal), dtype=bool) + + input_bin_mids = bin_mids(parameters['bin_edges']) + output_bin_mids = bin_mids(self._output_parameters['bin_edges']) + + for i in xrange(parameters['n_segments']): + i_min = i * parameters['n_bins_per_segment'] + i_max = (i + 1) * parameters['n_bins_per_segment'] - 1 + segment_min_z = input_bin_mids[i_min] + segment_max_z = input_bin_mids[i_max] + + map_below_max = (output_bin_mids < segment_max_z) + map_above_min = (output_bin_mids > segment_min_z) + + conversion_map = conversion_map + map_below_max*map_above_min + + def convert_signal(input_signal): + output_signal = np.zeros(len(output_bin_mids)) + tck = interpolate.splrep(input_bin_mids, input_signal, s=0) + output_signal[conversion_map] = interpolate.splev(output_bin_mids[conversion_map], tck, der=0) + return output_signal + + return convert_signal + + def _init_sum_conversion(self, parameters, signal): + def CDF(x, ref_edges): + if x <= ref_edges[0]: + return 0. + elif x < ref_edges[1]: + return (x-ref_edges[0])/float(ref_edges[1]-ref_edges[0]) + else: + return 1. + + big_matrix = np.zeros((len(self._output_signal), len(signal))) + for i, output_edges in enumerate(self._output_parameters['bin_edges']): + for j, input_edges in enumerate(parameters['bin_edges']): + big_matrix[i, j] = CDF(output_edges[1], input_edges) - CDF(output_edges[0], input_edges) + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + + def _init_upsampler_kernel_conversion(self, parameters, signal): + kernel = self._data_conversion[1] + big_matrix = np.zeros((len(self._output_signal), len(signal))) + for j, input_edges in enumerate(parameters['bin_edges']): + for k in range(len(kernel)): + i = j*len(kernel) + k + big_matrix[i, j] = kernel[k] + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + + def _init_integral_conversion(self, parameters, signal): + def CDF(x, ref_edges): + if x <= ref_edges[0]: + return 0. + elif x < ref_edges[1]: + return (x-ref_edges[0])/float(ref_edges[1]-ref_edges[0]) + else: + return 1. + + big_matrix = np.zeros((len(self._output_signal), len(signal))) + + for i, output_edges in enumerate(self._output_parameters['bin_edges']): + for j, input_edges in enumerate(parameters['bin_edges']): + bin_width = input_edges[1] - input_edges[0] + big_matrix[i, j] = (CDF(output_edges[1], input_edges) - CDF(output_edges[0], input_edges))*bin_width + + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + + def _init_avg_conversion(self, parameters, signal): + def CDF(x, ref_edges): + if x <= ref_edges[0]: + return 0. + elif x < ref_edges[1]: + return (x-ref_edges[0])/float(ref_edges[1]-ref_edges[0]) + else: + return 1. + + big_matrix = np.zeros((len(self._output_signal), len(signal))) + + + for i, output_edges in enumerate(self._output_parameters['bin_edges']): + for j, input_edges in enumerate(parameters['bin_edges']): + width_coeff =(input_edges[1]-input_edges[0])/(output_edges[1]-output_edges[0]) + big_matrix[i, j] = (CDF(output_edges[1], input_edges) - CDF(output_edges[0], input_edges))*width_coeff + + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + + def _init_avg_bin_conversion(self, parameters, signal): + def CDF(x, ref_edges): + if x <= ref_edges[0]: + return 0. + elif x < ref_edges[1]: + return (x-ref_edges[0])/float(ref_edges[1]-ref_edges[0]) + else: + return 1. + + big_matrix = np.zeros((len(self._output_signal), len(signal))) + + + for i, output_edges in enumerate(self._output_parameters['bin_edges']): + for j, input_edges in enumerate(parameters['bin_edges']): + big_matrix[i, j] = (CDF(output_edges[1], input_edges) - CDF(output_edges[0], input_edges)) + if np.sum(big_matrix[i, :]) != 0.: + big_matrix[i, :] = big_matrix[i, :]/np.sum(big_matrix[i, :]) + + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + + + def _init_value_conversion(self, parameters, signal): + def CDF(x, ref_edges): + if x <= ref_edges[0]: + return 0. + elif x < ref_edges[1]: + return (x-ref_edges[0])/float(ref_edges[1]-ref_edges[0]) + else: + return 1. + + big_matrix = np.zeros((len(self._output_signal), len(signal))) + output_bin_mids = bin_mids(self._output_parameters['bin_edges']) + + for i, mid in enumerate(output_bin_mids): + for j, edges in enumerate(parameters['bin_edges']): + if (mid >= edges[0]) and (mid < edges[1]) : + big_matrix[i, j] = 1 + + sparse_matrix = csr_matrix(big_matrix) + + def convert_signal(input_signal): + return sparse_matrix.dot(input_signal) + + return convert_signal + def _init_extremum_conversion(self, parameters, signal): + # use np.split etc + pass + + def _init_variables(self, parameters, signal): + if isinstance(self._method, tuple): + if self._method[0] == 'harmonic': + self._init_harmonic_bins(parameters, signal) + elif self._method[0] == 'sequenced': + self._init_sequenced_bins(parameters, signal) + elif self._method[0] == 'previous': + self._init_previous_bins(parameters, signal) + elif self._method[0] == 'upsampling': + self._init_upsampling(parameters, signal) + elif self._method[0] == 'downsampling': + self._init_downsampling(parameters, signal) + else: + raise ValueError('Unknown sampling method') + else: + raise ValueError('Unknown sampling method') + + if self._data_conversion == 'interpolation': + self._convert_signal = self._init_interp_conversion(parameters, signal) + elif self._data_conversion == 'sum': + self._convert_signal = self._init_sum_conversion(parameters, signal) + elif self._data_conversion == 'integral': + self._convert_signal = self._init_integral_conversion(parameters, signal) + elif self._data_conversion == 'average': + self._convert_signal = self._init_avg_conversion(parameters, signal) + elif self._data_conversion == 'average_bin_value': + self._convert_signal = self._init_avg_bin_conversion(parameters, signal) + elif self._data_conversion == 'value': + self._convert_signal = self._init_value_conversion(parameters, signal) + elif isinstance(self._method, tuple): + if self._data_conversion[0] == 'upsampler_kernel': + self._convert_signal = self._init_upsampler_kernel_conversion(parameters, signal) + else: + raise ValueError('Unknown data conversion method') + else: + raise ValueError('Unknown data conversion method') + + def process(self, parameters, signal, *args, **kwargs): + if self._convert_signal is None: + self._init_variables(parameters,signal) + + output_signal = self._convert_signal(signal) + + return self._output_parameters, output_signal + +class Quantizer(object): + def __init__(self, n_bits, input_range, **kwargs): + """ + Quantizates the input signal into discrete levels + + Parameters + ---------- + n_bits : int + A number of bits in the output signal. In the other + worlds the singal is rounded into 2^n_bits levels. + input_range : tuple + A range which is divided into the n bits. The signal values exceed + the range are limited into the range values + """ + + self._n_bits = n_bits + self._n_steps = np.power(2,self._n_bits)-1. + self._input_range = input_range + self._step_size = (self._input_range[1]-self._input_range[0])/float(self._n_steps) + + self.signal_classes = (0, 0) + + self.extensions = [] + self._macros = [] + default_macros(self, 'Quantizer', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + output_signal = self._step_size*np.floor(signal/self._step_size+0.5) + + output_signal[output_signal < self._input_range[0]] = self._input_range[0] + output_signal[output_signal > self._input_range[1]] = self._input_range[1] + + return parameters, output_signal + + +class ADC(object): + def __init__(self, sampling_rate, n_bits=None, input_range=None, n_samples=None, + data_conversion='sum', **kwargs): + """ + A model for an analog to digital converter. The input signal is + resamapled segment by segment by using a given sampling rate. + If both n_bits and input_range have been given, the output signal is also + quantitized. + + + Parameters + ---------- + sampling rate : float + A number of samples per second. + n_bits : int + A number of bits for the quantizer + input_range : tuple + A range for the quantizer + n_samples : int + A number of bins per segment is set. If None, the number + of samples corresponds to the ceil(segment_length*f_sampling) + """ + + self.signal_classes = (0, 1) + self._resampler = Resampler(('sequenced', sampling_rate) , n_samples, + data_conversion=data_conversion, **kwargs) + + self._digitizer = None + if (n_bits is not None) and (input_range is not None): + self._digitizer = Quantizer(n_bits,input_range, **kwargs) + elif (n_bits is not None) or (input_range is not None): + raise ValueError('Both n_bits and input_range are required for the Quantizer.') + + self.extensions = [] + self._macros = [] + default_macros(self, 'ADC', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + output_parameters, output_signal = self._resampler.process(parameters, signal, *args, **kwargs) + + if self._digitizer is not None: + output_parameters, output_signal = self._digitizer.process(output_parameters, output_signal + , *args, **kwargs) + + return output_parameters, output_signal + +class HarmonicADC(object): + def __init__(self, base_frequency, n_bits=None, input_range=None, + multiplier = 1, data_conversion='average_bin_value', **kwargs): + """ + A model for an analog to digital converter, which is simular to the + regular ADC object expect that the input signal is continously resampled + ovet the segments. If both n_bits and input_range have been given, + the output signal is also quantitized. + + Parameters + ---------- + base_frequency : float + A base frequency, which corresponds to segment spacing (e.g. + a harmonic frequency of the accelerator) + n_bits : int + A number of bits for the quantizer + input_range : tuple + A range for the quantizer + multiplier : int + A multiplier for the base frequnecy, which together define + the sampling rate, i.e. f_sampling = f_base * multiplier + """ + self.signal_classes = (0, 2) + self._resampler = Resampler(('harmonic', (base_frequency)) , multiplier, + data_conversion=data_conversion, **kwargs) + + self._digitizer = None + if (n_bits is not None) and (input_range is not None): + self._digitizer = Quantizer(n_bits,input_range, **kwargs) + elif (n_bits is not None) or (input_range is not None): + raise ValueError('Both n_bits and input_range are required for the Quantizer.') + + self.extensions = [] + self._macros = [] + default_macros(self, 'HarmonicADC', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + output_parameters, output_signal = self._resampler.process(parameters, signal, *args, **kwargs) + + if self._digitizer is not None: + output_parameters, output_signal = self._digitizer.process(output_parameters, output_signal + , *args, **kwargs) + + return output_parameters, output_signal + + +class DAC(object): + def __init__(self, n_bits = None, output_range = None, method = ('upsampling', 4), + data_conversion='value', **kwargs): + """ + An model for a digital to analog converter, which quantitizes and + and upsamples the signal by default. The bin set is upsampled by default, + because the sampling rate is often minimized in the real life applications, + but after the DAC the signal is reprocessed by using analog electronics. An + analog signal is continous, which modelling requres higher smapling rate. + + Parameters + ---------- + n_bits : int + A number of bits for the quantizer + output_range : tuple + A range for the quantizer + method : tuple + Resampling method. Possible options are: + ('upsampling', int) + Multiplies the original sampling rate by the given number + ('previous', int) + Returns the previous bin set, which index is given + ('downsampling', int) + Reduces the sampling rate by the given factor + + """ + self._resampler = Resampler(method, + data_conversion=data_conversion, **kwargs) + self.signal_classes = self._resampler.signal_classes + + self._digitizer = None + if (n_bits is not None) and (output_range is not None): + self._digitizer = Quantizer(n_bits,output_range, **kwargs) + elif (n_bits is not None) or (output_range is not None): + raise ValueError('Both n_bits and input_range are required for the Quantizer.') + + self.extensions = [] + self._macros = [] + default_macros(self, 'DAC', **kwargs) + + def process(self, parameters, signal, *args, **kwargs): + output_parameters, output_signal = self._resampler.process(parameters, signal, *args, **kwargs) + + if self._digitizer is not None: + output_parameters, output_signal = self._digitizer.process(output_parameters, output_signal, + *args, **kwargs) + + + return output_parameters, output_signal + +class Upsampler(Resampler): + def __init__(self, multiplier, kernel=None, **kwargs): + """ + Multiplies sampling rate by a given number + + Parameters + ---------- + multiplier : int + A number of new samples per old sample + kernel : list + A list of number, which is used as a kernel (map) to determine + values to the upsampled bins + """ + if kernel is None: + data_conversion = 'value' + else: + if multiplier != len(kernel): + raise ValueError('Kernel length must match the multiplier ') + + data_conversion = ('upsampler_kernel',kernel) + + + super(self.__class__, self).__init__(('upsampling', multiplier), + data_conversion=data_conversion, **kwargs) + self.label='Upsampler' + +class BackToOriginalBins(Resampler): + def __init__(self, data_conversion='interpolation', target_binset = 0, **kwargs): + """ + Returns signal to the original bin set. + Parameters + ---------- + data_conversion : str + The method how the input signal values are converted + taget_binset : int + Index of the target bin set. Index 0 correspons to the first bin + set used. + """ + super(self.__class__, self).__init__(('previous',target_binset), + data_conversion=data_conversion, **kwargs) + self.label='BackToOriginalBins' + + +class BunchByBunchSampler(Resampler): + def __init__(self,f_harmonic, multiplier=1, data_conversion='average_bin_value', **kwargs): + super(self.__class__, self).__init__(('harmonic', (f_harmonic)) , multiplier, + data_conversion=data_conversion, **kwargs) + self.label = 'Bunch by bunch sampler' + + diff --git a/PyHEADTAIL/feedback/transverse_damper.py b/PyHEADTAIL/feedback/transverse_damper.py index 6e96e31f..3712a579 100644 --- a/PyHEADTAIL/feedback/transverse_damper.py +++ b/PyHEADTAIL/feedback/transverse_damper.py @@ -5,12 +5,13 @@ ''' - import numpy as np from scipy.special import k0 from scipy.constants import c, e from PyHEADTAIL.general.element import Element +from PyHEADTAIL.general import pmath as pm + class TransverseDamper(Element): @@ -36,19 +37,19 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, assumed to be the same for both transverse planes, otherwise use two instances of the TransverseDamper. ''' - self.verbose=verbose + self.verbose = verbose if dampingrate_x and not dampingrate_y: self.gain_x = 2/dampingrate_x self.track = self.track_horizontal - if self.verbose==True: + if self.verbose == True: self.prints('Damper in horizontal plane active') elif not dampingrate_x and dampingrate_y: self.gain_y = 2/dampingrate_y self.track = self.track_vertical - if self.verbose==True: + if self.verbose == True: self.prints('Damper in vertical plane active') elif not dampingrate_x and not dampingrate_y: - if self.verbose==True: + if self.verbose == True: self.prints('Dampers not active') else: self.gain_x = 2/dampingrate_x @@ -64,6 +65,7 @@ def __init__(self, dampingrate_x, dampingrate_y, phase=90, self.phase_in_2pi = phase / 360. * 2*np.pi self.local_beta_function = local_beta_function # will be overwritten at initialisation + def track(self, beam): pass @@ -95,3 +97,100 @@ def horizontal(cls, dampingrate_x, *args, **kwargs): @classmethod def vertical(cls, dampingrate_y, *args, **kwargs): return cls(0, dampingrate_y, *args, **kwargs) + + +class NonRigidTransverseDamper(Element): + + def __init__(self, slicer, dampingrate_x, dampingrate_y, phase=90, + local_beta_function=None, verbose=True, *args, **kwargs): + '''Ideal transverse damper with an in-place "measurement" + (transverse "pick-up") of the transverse dipole moment. + Note: a single bunch in the beam is assumed, i.e. this works on + the entire beam's moments. + + Arguments: + - dampingrate_x, dampingrate_y: horizontal and vertical + damping rates in turns (e.g. 50 turns for a typical 2018 + LHC ADT set-up) + - phase: phase of the damper kick in degrees with respect to + the transverse position "pick-up". The default value of + 90 degrees corresponds to a typical resistive damper. + - local_beta_function: the optics beta function at the + transverse position "pick-up" (e.g. in the local place + of this Element). This is required if the damper is not + a purely resistive damper (or exciter), i.e. if the + phase is not 90 (or 270) degrees. The beta function is + assumed to be the same for both transverse planes, + otherwise use two instances of the TransverseDamper. + ''' + self.verbose = verbose + self.slicer = slicer + if dampingrate_x and not dampingrate_y: + self.gain_x = 2/dampingrate_x + self.track = self.track_horizontal + if self.verbose == True: + self.prints('Damper in horizontal plane active') + elif not dampingrate_x and dampingrate_y: + self.gain_y = 2/dampingrate_y + self.track = self.track_vertical + if self.verbose == True: + self.prints('Damper in vertical plane active') + elif not dampingrate_x and not dampingrate_y: + if self.verbose == True: + self.prints('Dampers not active') + else: + self.gain_x = 2/dampingrate_x + self.gain_y = 2/dampingrate_y + self.track = self.track_all + if self.verbose == True: + self.prints('Dampers active') + if phase != 90 and phase != 270 and not local_beta_function: + raise TypeError( + 'TransverseDamper: numeric local_beta_function value at ' + 'position of damper missing! (Required because of non-zero ' + 'reactive damper component.)') + self.phase_in_2pi = phase / 360. * 2*np.pi + self.local_beta_function = local_beta_function + # will be overwritten at initialisation + + def track(self, beam): + pass + + def track_horizontal(self, beam): + slices = beam.get_slices( + self.slicer, statistics=["mean_x", "mean_y", "mean_z"]) + for s_i, (mean_x, mean_y, mean_z) in enumerate(zip( + slices.mean_x, slices.mean_y, slices.mean_z)): + p_id = slices.particle_indices_of_slice(s_i) + if len(p_id) == 0: + continue + kicks_x = -(self.gain_x*np.sin(self.phase_in_2pi) * + beam.mean_xp())*np.sin(np.pi*mean_z/(3*beam.sigma_z())) + kicked_xp = pm.take(beam.xp, p_id) + kicks_x + pm.put(beam.xp, p_id, kicked_xp) + if self.local_beta_function: + beam.xp -= (self.gain_x * np.cos(self.phase_in_2pi) * + beam.mean_x() / self.local_beta_function)*np.sin(np.pi*mean_z/(3*beam.sigma_z())) + + def track_vertical(self, beam): + beam.yp -= self.gain_y * np.sin(self.phase_in_2pi) * beam.mean_yp() + if self.local_beta_function: + beam.yp -= (self.gain_y * np.cos(self.phase_in_2pi) * + beam.mean_y() / self.local_beta_function) + + def track_all(self, beam): + beam.xp -= self.gain_x * np.sin(self.phase_in_2pi) * beam.mean_xp() + beam.yp -= self.gain_y * np.sin(self.phase_in_2pi) * beam.mean_yp() + if self.local_beta_function: + beam.xp -= (self.gain_x * np.cos(self.phase_in_2pi) * + beam.mean_x() / self.local_beta_function) + beam.yp -= (self.gain_y * np.cos(self.phase_in_2pi) * + beam.mean_y() / self.local_beta_function) + + @classmethod + def horizontal(cls, dampingrate_x, *args, **kwargs): + return cls(dampingrate_x, 0, *args, **kwargs) + + @classmethod + def vertical(cls, dampingrate_y, *args, **kwargs): + return cls(0, dampingrate_y, *args, **kwargs) diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index cf61705f..51261ee8 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -182,17 +182,17 @@ 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) + # 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 diff --git a/PyHEADTAIL/multipoles/multipoles.py b/PyHEADTAIL/multipoles/multipoles.py index 6eac3064..5d5a8436 100644 --- a/PyHEADTAIL/multipoles/multipoles.py +++ b/PyHEADTAIL/multipoles/multipoles.py @@ -72,7 +72,6 @@ def __init__(self, k3l, *args, **kwargs): ''' self.kL = k3l self.kL6 = k3l / 6. - def track(self, beam): beam.xp -= self.kL6 * (beam.x*beam.x*beam.x - 3*beam.x*beam.y*beam.y) beam.yp -= self.kL6 * (beam.y*beam.y*beam.y - 3*beam.x*beam.x*beam.y) diff --git a/PyHEADTAIL/particles/rfbucket_matching.py b/PyHEADTAIL/particles/rfbucket_matching.py index 065b2da7..c8ac9e46 100644 --- a/PyHEADTAIL/particles/rfbucket_matching.py +++ b/PyHEADTAIL/particles/rfbucket_matching.py @@ -130,8 +130,8 @@ def error_from_target_sigma(sc): if np.isnan(length): raise ValueError - # self.prints('... distance to target bunch length: ' + - # '{:.4e}'.format(length-sigma)) + self.prints('... distance to target bunch length: ' + + '{:.4e}'.format(length-sigma)) return length-sigma diff --git a/PyHEADTAIL/rfq/rfq.py b/PyHEADTAIL/rfq/rfq.py index 592e3a81..a2575c87 100644 --- a/PyHEADTAIL/rfq/rfq.py +++ b/PyHEADTAIL/rfq/rfq.py @@ -172,7 +172,6 @@ def track(self, beam): """ cos_term = (2. * e * self.v_2 / self.omega * pm.cos(self.omega / (beam.beta * c) * beam.z + self.phi_0)) - beam.xp += -beam.x * cos_term / beam.p0 beam.yp += beam.y * cos_term / beam.p0 diff --git a/docs/PyHEADTAIL.aperture.html b/docs/PyHEADTAIL.aperture.html deleted file mode 100644 index 853731bd..00000000 --- a/docs/PyHEADTAIL.aperture.html +++ /dev/null @@ -1,714 +0,0 @@ - - - - - - - PyHEADTAIL.aperture package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.aperture package

-
-

Submodules

-
-
-

PyHEADTAIL.aperture.aperture module

-

Aperture module to manage particle losses. An aperture is -defined as a condition on the phase space coordinates. Particles -not fulfilling this condition are tagged as lost and are removed -from the beam. Parts of this module are implemented in cython -under aperture_cython.pyx for better performance.

-

@date: Created on 23.03.2016 -@author: Hannes Bartosik, Giovanni Iadarola, Kevin Li, Adrian Oeftiger,

-
-

Michael Schenk

-
-
-
-class PyHEADTAIL.aperture.aperture.Aperture(*args, **kwargs)
-

Abstract base class for Aperture elements. An aperture is -generally defined as a condition on the phase space coordinates. -Particles not fulfilling this condition are tagged as lost and -are removed from the beam directly after.

-
-
-__abstractmethods__ = frozenset({'tag_lost_particles'})
-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-static relocate_lost_particles(beam, alive)
-

Relocate particles marked as lost to the end of the beam.u arrays -(u = x, y, z, …). Return the number of alive particles -n_alive_post after considering the losses.

-
-
Parameters
-
    -
  • beam (-) – Particles instance

  • -
  • alive (-) – boolean mask with length n_particles where 1 means alive

  • -
-
-
-
- -
-
-abstract tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
-
-track(beam)
-

Tag particles not passing through the aperture as lost. If -there are any losses, the corresponding particles are removed -from the beam by updating the beam.u arrays, s.t. -beam.u = beam.u[:n_alive] after relocating lost particles to -the end of these arrays. ‘n_alive’ denotes the number of alive -particles after the given aperture element. In addition, the -currently cached slice_sets of the beam are cleaned since losses -change its (longitudinal) state.

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture.CircularApertureXY(radius, *args, **kwargs)
-

Mark particles with transverse spatial coords (x, y) outside a -circle of specified radius, i.e. x**2 + y**2 > radius**2, as lost -and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(radius, *args, **kwargs)
-

The argument radius defines the radius of the circular -(transverse) aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture.EllipticalApertureXY(x_aper, y_aper, *args, **kwargs)
-

Mark particles with transverse spatial coords (x, y) outside a -ellipse of specified radius, i.e. (x/x_aper)**2 + (y/y_aper)**2 > 1., -as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(x_aper, y_aper, *args, **kwargs)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture.RectangularApertureX(x_low, x_high, *args, **kwargs)
-

Mark particles with transverse spatial coord (x) outside the -interval (x_high, x_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(x_low, x_high, *args, **kwargs)
-

The arguments x_low and x_high define the interval of -horizontal spatial coordinates for which particles pass through -the rectangular horizontal aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture.RectangularApertureY(y_low, y_high, *args, **kwargs)
-

Mark particles with transverse spatial coord (y) outside the -interval (y_high, y_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(y_low, y_high, *args, **kwargs)
-

The arguments y_low and y_high define the interval of -vertical spatial coordinates for which particles pass through -the rectangular vertical aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture.RectangularApertureZ(z_low, z_high, *args, **kwargs)
-

Mark particles with longitudinal spatial coord (z) outside the -interval (z_high, z_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(z_low, z_high, *args, **kwargs)
-

The arguments z_low and z_high define the interval of -longitudinal spatial coordinates for which particles pass -through the rectangular longitudinal aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles(beam)
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-PyHEADTAIL.aperture.aperture.make_int32(array)
-
- -
-
-PyHEADTAIL.aperture.aperture.tag_lost_circular(u, v, radius_square)
-

Identify and tag particles lost at a circular transverse aperture -element of a given radius, i.e. particles with -spatial coords u, v (usually (beam.x, beam.y)) fulfilling -u**2 + v**2 > radius_square. Return a np array mask ‘alive’ -containing the information of alive / lost for each particle in the -beam after the aperture.

-
- -
-
-PyHEADTAIL.aperture.aperture.tag_lost_ellipse(u, v, u_aper, v_aper)
-

Identify and tag particles lost at an elliptical transverse -aperture element. Return a np array mask ‘alive’ -containing the information of alive / lost for each particle in the -beam after the aperture.

-
- -
-
-PyHEADTAIL.aperture.aperture.tag_lost_rectangular(u, low_lim, high_lim)
-

Identify and tag particles lost at a rectangular aperture -element, i.e. particles with -a spatial coord u (beam.x, beam.y or beam.z) lying outside the -interval (low_lim, high_lim). Return a np array mask ‘alive’ -containing the information of alive / lost for each particle in the -beam after the aperture.

-
- -
-
-

PyHEADTAIL.aperture.aperture_cython module

-
-
-class PyHEADTAIL.aperture.aperture_cython.Aperture(*args, **kwargs)
-

Pendant to aperture.Aperture with the relocate algorithm -implemented in cython for more efficiency.

-
-
-__abstractmethods__ = frozenset({'tag_lost_particles'})
-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-relocate_lost_particles
-

Memory efficient (and fast) cython function to relocate -particles marked as lost to the end of the beam.u arrays (u = x, y, -z, …). Returns the number of alive particles n_alive_post after -considering the losses.

-

Precondition: -- At least one particle must be tagged as alive, otherwise bad things

-
-

might happen…

-
-

Description of the algorithm: -(1) Starting from the end of the numpy array ‘alive’, find the index

-
-

of the last particle in the array which is still alive. Store its -array index in last_alive.

-
-
    -
  1. Loop through the ‘alive’ array from there (continuing in reverse -order). If a particle i is found for which alive[i] == 0, i.e. -it is a lost one, swap its position (and data x, y, z, …) with -the one located at index last_alive.

  2. -
  3. Move last_alive by -1. Due to the chosen procedure, the particle -located at the new last_alive index is known to be alive.

  4. -
  5. Repeat steps (2) and (3) until index i = 0 is reached.

  6. -
-
- -
- -
-
-class PyHEADTAIL.aperture.aperture_cython.CircularApertureXY
-

Mark particles with transverse spatial coords (x, y) outside a -circle of specified radius, i.e. x**2 + y**2 > radius**2, as lost -and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__
-

The argument radius defines the radius of the circular -(transverse) aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture_cython.EllipticalApertureXY
-

Mark particles with transverse spatial coords (x, y) outside a -ellipse of specified radius, i.e. (x/x_aper)**2 + (y/y_aper)**2 > 1., -as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__
-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture_cython.RectangularApertureX
-

Mark particles with transverse spatial coord (x) outside the -interval (x_high, x_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__
-

The arguments x_low and x_high define the interval of -horizontal spatial coordinates for which particles pass through -the rectangular horizontal aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture_cython.RectangularApertureY
-

Mark particles with transverse spatial coord (y) outside the -interval (y_high, y_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__
-

The arguments y_low and y_high define the interval of -vertical spatial coordinates for which particles pass through -the rectangular vertical aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-class PyHEADTAIL.aperture.aperture_cython.RectangularApertureZ
-

Mark particles with longitudinal spatial coord (z) outside the -interval (z_high, z_low) as lost and remove them from the beam.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__
-

The arguments z_low and z_high define the interval of -longitudinal spatial coordinates for which particles pass -through the rectangular longitudinal aperture.

-
- -
-
-__module__ = 'PyHEADTAIL.aperture.aperture_cython'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-tag_lost_particles
-

This method is called by Aperture.track(beam) to identify -particles not passing through the aperture. The aperture condition -on the phase space coordinates is defined by the given Aperture -element. Returns a np.int32 array ‘alive’ which contains the -information on whether a particle is lost (0) or not (1).

-
- -
- -
-
-PyHEADTAIL.aperture.aperture_cython.cytag_lost_circular(double[::1] u, double[::1] v, double radius_square)
-

Cython function for fast identification and tagging of particles -lost at a circular transverse aperture element of a given radius, -i.e. it tags particles with spatial coords u, v (usually (beam.x, -beam.y)) fulfilling u**2 + v**2 > radius_square as lost. Returns a -np array ‘alive’ containing the information of alive / lost for -each particle in the beam after the aperture.

-
- -
-
-PyHEADTAIL.aperture.aperture_cython.cytag_lost_ellipse(double[::1] u, double[::1] v, double u_aper, double v_aper)
-

Cython function for fast identification and tagging of particles -lost at a elliptical transverse aperture element. Returns a -np array ‘alive’ containing the information of alive / lost for -each particle in the beam after the aperture.

-
- -
-
-PyHEADTAIL.aperture.aperture_cython.cytag_lost_rectangular(double[::1] u, double low_lim, double high_lim)
-

Cython function for fast identification and tagging of particles -lost at a rectangular aperture element, i.e. it tags particles with -a spatial coord u (beam.x, beam.y or beam.z) lying outside the -interval (low_lim, high_lim) as lost. Returns a np array ‘alive’ -containing the information of alive / lost for each particle in the -beam after the aperture.

-
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.cobra_functions.html b/docs/PyHEADTAIL.cobra_functions.html deleted file mode 100644 index 6eafda81..00000000 --- a/docs/PyHEADTAIL.cobra_functions.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - PyHEADTAIL.cobra_functions package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.cobra_functions package

-
-

Submodules

-
-
-

PyHEADTAIL.cobra_functions.c_sin_cos module

-
-
-PyHEADTAIL.cobra_functions.c_sin_cos.cm_cos(double[::1] x)
-
- -
-
-PyHEADTAIL.cobra_functions.c_sin_cos.cm_sin(double[::1] x)
-
- -
-
-

PyHEADTAIL.cobra_functions.curve_tools module

-
-
-PyHEADTAIL.cobra_functions.curve_tools.extrema(x, y=None)
-

Get extrema of curve x

-
- -
-
-PyHEADTAIL.cobra_functions.curve_tools.zero_crossings(f, x)
-

Get root of function f in intervall x

-
- -
-
-

PyHEADTAIL.cobra_functions.interp_sin_cos module

-
-
-PyHEADTAIL.cobra_functions.interp_sin_cos.interpolated_mod2pi(fn, xmin, xmax, steps)
-
- -
-
-

PyHEADTAIL.cobra_functions.pdf_integrators_2d module

-
-
-
members
-

-
private-members
-

-
special-members
-

-
undoc-members
-

-
-
-
-
-

PyHEADTAIL.cobra_functions.stats module

-

@author Kevin Li, Michael Schenk, Stefan Hegglin -@date 31. January 2014 -@brief Collection of cython functions to calculate statistics

-
-

of bunch and slice_set data.

-
-

@copyright CERN

-
-
-PyHEADTAIL.cobra_functions.stats.calc_cell_stats(double[::1] x, double[::1] xp, double[::1] y, double[::1] yp, double[::1] z, double[::1] dp, double beta_z, double radial_cut, int n_rings, int n_azim_slices)
-
- -
-
-PyHEADTAIL.cobra_functions.stats.count_macroparticles_per_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles)
-

Cython function to count the number of macroparticles in -each slice.

-
- -
-
-PyHEADTAIL.cobra_functions.stats.cov(double[::1] a, double[::1] b) → double
-

Cython function which calculates the covariance -(not the covariance matrix!) of two data sets -a and b using a shifted single pass algorithm -definition: cov(a,b) = E[(A - E[A])*(B - E[B])] -implementation: cov(a,b) = 1/(n-1) sum_{i=1}^n (a_i -<a>)*(b_i -<b>) -a and b do not necessarily have to reference different data -> var -shifts are for makeing the algorithm more stable against cancellation -:param a: numpy array, a.shape[0] defines n. n must be > 1 -:param b: numpy array, at least with length a.shape[0]

-

~ 3 times faster than cov() for n > 1e5 (timed using %timeit) -Faster than np.cov() because it does not compute the whole cov matrix

-
- -
-
-PyHEADTAIL.cobra_functions.stats.cov_per_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles, double[::1] a, double[::1] b, double[::1] result)
-

Cov per slice. Cannot make use of cov() because the particles -per slice are not contiguous in memory

-
- -
-
-PyHEADTAIL.cobra_functions.stats.dispersion(double[::1] u, double[::1] dp) → double
-

Cython function to compute the statistial dispersion: -disp = <u*dp>/<dp**2> -:param u a coordinate array, typically x or y spatial coordinates: it is also possible to pass xp or yp

-
- -
-
-PyHEADTAIL.cobra_functions.stats.emittance(double[::1] u, double[::1] up, double[::1] dp) → double
-

Cython function to calculate the effective (neglecting dispersion) -emittance of datasets u and up, i.e. a coordinate-momentum pair. -To calculate the emittance, one needs the mean values of quantities u and -up. -:param u spatial coordinate array: -:param up momentum coordinate array: -:param dp momentum deviation array: (p-p_0)/p_0. If None, the effective

-
-

emittance is computed instead (dispersion is set to 0)

-
-
- -
-
-PyHEADTAIL.cobra_functions.stats.emittance_per_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles, double[::1] u, double[::1] up, double[::1] dp, double[::1] emittance)
-

Iterate once through all the particles within the -slicing region and calculate simultaneously the emittance -of quantities u and up, i.e. a coordinate-momentum pair, -for each slice separately. To calculate the emittance per -slice, one needs the mean values of quantities u and up -for each slice.

-
- -
-
-PyHEADTAIL.cobra_functions.stats.emittance_per_slice_old(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles, double[::1] u, double[::1] up, double[::1] epsn_u)
-

Iterate once through all the particles within the -slicing region and calculate simultaneously the emittance -of quantities u and up, i.e. a coordinate-momentum pair, -for each slice separately. To calculate the emittance per -slice, one needs the mean values of quantities u and up -for each slice.

-
- -
-
-PyHEADTAIL.cobra_functions.stats.get_alpha(double[::1] u, double[::1] up, double[::1] dp) → double
-

Cython function to calculate the statistical alpha (Twiss) -If dp=None, the effective alpha is computed -:param u: spatial coordinate array -:param up: momentum coordinate array -:param dp: (p-p0)/p0

-
- -
-
-PyHEADTAIL.cobra_functions.stats.get_beta(double[::1] u, double[::1] up, double[::1] dp) → double
-

Cython function to calculate the statistical beta (Twiss) -If dp=None, the effective beta is computed -:param u: spatial coordinate array -:param up: momentum coordinate array -:param dp: (p-p0)/p0

-
- -
-
-PyHEADTAIL.cobra_functions.stats.get_gamma(double[::1] u, double[::1] up, double[::1] dp) → double
-

Cython function to calculate the statistical gamma (Twiss) -If dp=None, the effective gamma is computed -:param u: spatial coordinate array -:param up: momentum coordinate array -:param dp: (p-p0)/p0

-
- -
-
-PyHEADTAIL.cobra_functions.stats.mean_per_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles, double[::1] u, double[::1] mean_u)
-

Iterate once through all the particles within the -slicing region and calculate simultaneously the mean -value of quantity u for each slice separately.

-
- -
-
-PyHEADTAIL.cobra_functions.stats.sort_particle_indices_by_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] slice_positions, int[::1] particle_indices_by_slice)
-

Iterate once through all the particles within the slicing -region and assign their position in the bunch.z array to the -respective slice they are in. -This is to provide a method to the user that allows to see -which particles are in a specific slice (see -particle_indices_of_slice in SliceSet class).

-
- -
-
-PyHEADTAIL.cobra_functions.stats.std(double[::1] u) → double
-

Cython function to calculate the standard deviation of -dataset u. The dataset must consist of at least 2 samples

-
- -
-
-PyHEADTAIL.cobra_functions.stats.std_per_slice(int[::1] slice_index_of_particle, int[::1] particles_within_cuts, int[::1] n_macroparticles, double[::1] u, double[::1] std_u)
-

Iterate once through all the particles within the -slicing region and calculate simultaneously the -standard deviation of quantity u for each slice -separately.

-
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.feedback.html b/docs/PyHEADTAIL.feedback.html deleted file mode 100644 index c4808751..00000000 --- a/docs/PyHEADTAIL.feedback.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - PyHEADTAIL.feedback package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.feedback package

-
-

Submodules

-
-
-

PyHEADTAIL.feedback.transverse_damper module

-

@author Kevin Li -@date 20/06/2014 -@copyright CERN

-
-
-class PyHEADTAIL.feedback.transverse_damper.TransverseDamper(dampingrate_x, dampingrate_y, phase=90, local_beta_function=None, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(dampingrate_x, dampingrate_y, phase=90, local_beta_function=None, *args, **kwargs)
-

Ideal transverse damper with an in-place “measurement” -(transverse “pick-up”) of the transverse dipole moment. -Note: a single bunch in the beam is assumed, i.e. this works on -the entire beam’s moments.

-
-
Parameters
-
    -
  • dampingrate_x, dampingrate_y (-) – horizontal and vertical -damping rates in turns (e.g. 50 turns for a typical 2018 -LHC ADT set-up)

  • -
  • phase (-) – phase of the damper kick in degrees with respect to -the transverse position “pick-up”. The default value of -90 degrees corresponds to a typical resistive damper.

  • -
  • local_beta_function (-) – the optics beta function at the -transverse position “pick-up” (e.g. in the local place -of this Element). This is required if the damper is not -a purely resistive damper (or exciter), i.e. if the -phase is not 90 (or 270) degrees. The beta function is -assumed to be the same for both transverse planes, -otherwise use two instances of the TransverseDamper.

  • -
-
-
-
- -
-
-__module__ = 'PyHEADTAIL.feedback.transverse_damper'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-classmethod horizontal(dampingrate_x, *args, **kwargs)
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
-
-track_all(beam)
-
- -
-
-track_horizontal(beam)
-
- -
-
-track_vertical(beam)
-
- -
-
-classmethod vertical(dampingrate_y, *args, **kwargs)
-
- -
- -
-
-

PyHEADTAIL.feedback.widebandfeedback module

-

@author Kevin Li -@date 20/06/2014 -@copyright CERN

-
-
-class PyHEADTAIL.feedback.widebandfeedback.Kicker(pickup, plane='y', transfer_function=None, filter_fir=[0], filter_iir=[1], closedloop=False, gain=0, slices=None)
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.feedback.widebandfeedback', '__doc__': '\n ', '__init__': <function Kicker.__init__>, 'controller_fir': <function Kicker.controller_fir>, 'controller_iir': <function Kicker.controller_iir>, 'kicker': <function Kicker.kicker>, 'track': <function Kicker.track>, '_prepare_registers': <function Kicker._prepare_registers>, '_check_slices': <function Kicker._check_slices>, '__dict__': <attribute '__dict__' of 'Kicker' objects>, '__weakref__': <attribute '__weakref__' of 'Kicker' objects>})
-
- -
-
-__init__(pickup, plane='y', transfer_function=None, filter_fir=[0], filter_iir=[1], closedloop=False, gain=0, slices=None)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.feedback.widebandfeedback'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-_check_slices(beam)
-
- -
-
-_prepare_registers(n_taps_forward, n_taps_reverse, n_slices)
-
- -
-
-controller_fir(beam)
-
- -
-
-controller_iir(beam)
-
- -
-
-kicker(beam)
-
- -
-
-track(beam)
-
- -
- -
-
-class PyHEADTAIL.feedback.widebandfeedback.Pickup(slices, plane='y')
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.feedback.widebandfeedback', '__doc__': '\n ', '__init__': <function Pickup.__init__>, 'track': <function Pickup.track>, '__dict__': <attribute '__dict__' of 'Pickup' objects>, '__weakref__': <attribute '__weakref__' of 'Pickup' objects>})
-
- -
-
-__init__(slices, plane='y')
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.feedback.widebandfeedback'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-track(beam)
-
- -
- -
-
-class PyHEADTAIL.feedback.widebandfeedback.TransferFunction(slices)
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.feedback.widebandfeedback', '__init__': <function TransferFunction.__init__>, 'one_pole_roll_off': <function TransferFunction.one_pole_roll_off>, 'convert': <function TransferFunction.convert>, 'convert_as_one_pole': <function TransferFunction.convert_as_one_pole>, 'convert_as_table': <function TransferFunction.convert_as_table>, '__dict__': <attribute '__dict__' of 'TransferFunction' objects>, '__weakref__': <attribute '__weakref__' of 'TransferFunction' objects>, '__doc__': None})
-
- -
-
-__init__(slices)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.feedback.widebandfeedback'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-convert()
-
- -
-
-convert_as_one_pole(x)
-
- -
-
-convert_as_table()
-
- -
-
-one_pole_roll_off(frequency)
-
- -
- -
-
-PyHEADTAIL.feedback.widebandfeedback.one_pole(fr, xmax=0)
-
- -
-
-PyHEADTAIL.feedback.widebandfeedback.one_pole_symmetric(fr, xmax=0)
-
- -
-
-PyHEADTAIL.feedback.widebandfeedback.one_pole_symmetric_gerd(fr, xmax=0)
-
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.field_maps.html b/docs/PyHEADTAIL.field_maps.html deleted file mode 100644 index b4c27eea..00000000 --- a/docs/PyHEADTAIL.field_maps.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - PyHEADTAIL.field_maps package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.field_maps package

-
-

Submodules

-
-
-

PyHEADTAIL.field_maps.Transverse_Efield_map module

-
-
-

PyHEADTAIL.field_maps.field_map module

-
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.general.html b/docs/PyHEADTAIL.general.html deleted file mode 100644 index ef818109..00000000 --- a/docs/PyHEADTAIL.general.html +++ /dev/null @@ -1,878 +0,0 @@ - - - - - - - PyHEADTAIL.general package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.general package

-
-

Submodules

-
-
-

PyHEADTAIL.general.contextmanager module

-

Context manager classes -@author Stefan Hegglin -@data 30.09.2015

-
-
-class PyHEADTAIL.general.contextmanager.CPU(bunch)
-

Dummy class to run the code on the CPU. -Does nothing but has the same interface as the GPU contextmanager

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.contextmanager', '__doc__': '\n Dummy class to run the code on the CPU.\n Does nothing but has the same interface as the GPU contextmanager\n ', '__init__': <function CPU.__init__>, '__enter__': <function CPU.__enter__>, '__exit__': <function CPU.__exit__>, '__dict__': <attribute '__dict__' of 'CPU' objects>, '__weakref__': <attribute '__weakref__' of 'CPU' objects>})
-
- -
-
-__enter__()
-

Remove slice records from bunch.

-
- -
-
-__exit__(exc_type, exc_value, traceback)
-

Remove slice records from bunch.

-
- -
-
-__init__(bunch)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.contextmanager'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-class PyHEADTAIL.general.contextmanager.Context
-

Example contextmanager class providing enter and exit methods

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.contextmanager', '__doc__': '\n Example contextmanager class providing enter and exit methods\n ', '__init__': <function Context.__init__>, '__enter__': <function Context.__enter__>, '__exit__': <function Context.__exit__>, '__dict__': <attribute '__dict__' of 'Context' objects>, '__weakref__': <attribute '__weakref__' of 'Context' objects>})
-
- -
-
-__enter__()
-
- -
-
-__exit__(exc_type, exc_value, traceback)
-
- -
-
-__init__()
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.contextmanager'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-class PyHEADTAIL.general.contextmanager.GPU(bunch)
-

Class providing enter/exit methods to move/get data from/to the gpu or -provide a general base framework for all decorated function calls -All data after must be in the same state after exiting as before entering -this context!

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.contextmanager', '__doc__': '\n Class providing enter/exit methods to move/get data from/to the gpu or\n provide a general base framework for all decorated function calls\n All data after must be in the same state after exiting as before entering\n this context!\n ', '__init__': <function GPU.__init__>, '__enter__': <function GPU.__enter__>, '__exit__': <function GPU.__exit__>, '__dict__': <attribute '__dict__' of 'GPU' objects>, '__weakref__': <attribute '__weakref__' of 'GPU' objects>})
-
- -
-
-__enter__()
-

Move all data to the GPU (and monkey patch methods?) -Returns self (eg. to provide info about gpu/status/…)

-

Remove slice records from bunch.

-
- -
-
-__exit__(exc_type, exc_value, traceback)
-

Move all data back to the CPU (and un-patch the methods?) -Reestablish state of everything as it was before entering

-

Remove slice records from bunch.

-
- -
-
-__init__(bunch)
-

Pass the bunch to the context s.t. the context knows what to copy -to the gpu. The problem with this approach: not very nice for the user: -with GPU(bunch) as context:

-
- -
-
-__module__ = 'PyHEADTAIL.general.contextmanager'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-

PyHEADTAIL.general.decorators module

-

@authors: Adrian Oeftiger -@date: 02/10/2014

-

Provide useful decorators for PyHEADTAIL.

-
-
-PyHEADTAIL.general.decorators.deprecated(message)
-

Deprecation warning as described in warnings documentation.

-
- -
-
-PyHEADTAIL.general.decorators.memoize(function)
-

Memoizes the output of a function for given arguments (no keyword arguments) -and returns the correspondingly saved value after the first evaluation.

-
- -
-
-PyHEADTAIL.general.decorators.synchronize_gpu_streams_after(func)
-

Use this decorator if you need the results of all the streams -synchronized after this function is called

-
- -
-
-PyHEADTAIL.general.decorators.synchronize_gpu_streams_before(func)
-

Use this decorator if you need the results of all the streams -synchronized before this function is called

-
- -
-
-

PyHEADTAIL.general.element module

-

@authors: Adrian Oeftiger -@date: 12/09/2014

-

Provide abstract element as part of the tracking layout (e.g. circular -accelerator) for PyHeadtail. All implemented elements derive from this. -Can be used for implementing general features that every derived element -in PyHEADTAIL should have.

-
-
-class PyHEADTAIL.general.element.Element(*args, **kwargs)
-

Abstract element as part of the tracking layout. Guarantees -to fulfil its tracking contract via the method track(beam).

-
-
-__abstractmethods__ = frozenset({'track'})
-
- -
-
-__module__ = 'PyHEADTAIL.general.element'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
-class PyHEADTAIL.general.element.Printing(*args, **kwargs)
-

Provides prints(output) method in order to communicate any output -to the user. Use for instance

-
>>> self.prints("Example message to console.")
-
-
-

instead of

-
>>> print ("Example message to console.")
-
-
-

in order to obtain full flexibility over output channels.

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.element', '__doc__': 'Provides prints(output) method in order to communicate any output\n to the user. Use for instance\n\n >>> self.prints("Example message to console.")\n\n instead of\n\n >>> print ("Example message to console.")\n\n in order to obtain full flexibility over output channels.\n ', '__init__': <function Printing.__init__>, '__new__': <staticmethod object>, 'prints': <function Printing.prints>, 'warns': <function Printing.warns>, '__dict__': <attribute '__dict__' of 'Printing' objects>, '__weakref__': <attribute '__weakref__' of 'Printing' objects>})
-
- -
-
-__init__(*args, **kwargs)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.element'
-
- -
-
-static __new__(cls, *args, **kwargs)
-

Factory method makes sure that inheriting elements always -have a Printer available for output redirection. -If an inheriting element constructor gets the keyword argument -‘printer’, an individual Printer as defined in the -PyHEADTAIL.general.printers module can be attached to this -instance. Standard is console output, i.e. ConsolePrinter.

-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-prints(output)
-

Communicate any output to the user. Use for instance

-
>>> self.prints("Example message to console.")
-
-
-

instead of

-
>>> print ("Example message to console.")
-
-
-

in order to obtain full flexibility over output channels.

-
- -
-
-warns(output)
-

Communicate warnings to the user. Use for instance

-
>>> self.warns("Example warning to console.")
-
-
-

instead of

-
>>> print ("Example message to console.")
-
-
-
- -
- -
-
-

PyHEADTAIL.general.pmath module

-

PyHEADTAIL math functions -Dispatches for CPU/GPU versions -@author Stefan Hegglin -@date 05.10.2015

-
-
-exception PyHEADTAIL.general.pmath.UnknownContextManagerError(message='Failed to determine current context, e.g. whether pmath.device is "CPU" or "GPU".')
-

Raise if context manager is not found, e.g. cannot determine -whether on CPU or on GPU.

-
-
-__init__(message='Failed to determine current context, e.g. whether pmath.device is "CPU" or "GPU".')
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.pmath'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-PyHEADTAIL.general.pmath._count_macroparticles_per_slice_cpu(sliceset)
-
- -
-
-PyHEADTAIL.general.pmath._emittance_per_slice_cpu(sliceset, u, up, dp=None, **kwargs)
-

CPU Wrapper for the emittance per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath._errfadd(z)
-
- -
-
-PyHEADTAIL.general.pmath._init_bunch_buffer(bunch_stats, buffer_size)
-
- -
-
-PyHEADTAIL.general.pmath._init_slice_buffer(slice_stats, n_slices, buffer_size)
-
- -
-
-PyHEADTAIL.general.pmath._mean_per_slice_cpu(sliceset, u, **kwargs)
-

CPU Wrapper for the mean per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath._searchsortedleft(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.general.pmath._searchsortedright(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.general.pmath._slice_to_particles(sliceset, slice_array, particle_array=None)
-

Convert slice_array with entries for each slice to a -particle array with the respective entry of each particle -given by its slice_array value via the slice that the -particle belongs to. If provided, particle_array should be a -zero-filled destination array.

-
- -
-
-PyHEADTAIL.general.pmath._std_per_slice_cpu(sliceset, u, **kwargs)
-

CPU Wrapper for the cov per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath._wofz(x, y)
-
- -
-
-PyHEADTAIL.general.pmath.almost_zero(array, *args, **kwargs)
-
- -
-
-PyHEADTAIL.general.pmath.apply_permutation(array, permutation)
-
- -
-
-PyHEADTAIL.general.pmath.emittance(*args, **kwargs)
-
- -
-
-PyHEADTAIL.general.pmath.emittance_per_slice(sliceset, u, up, dp=None, **kwargs)
-

CPU Wrapper for the emittance per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath.ensure_CPU(array)
-

Accept a GPUArray or a NumPy.ndarray and return a NumPy.ndarray.

-
- -
-
-PyHEADTAIL.general.pmath.ensure_same_device(array)
-

Accept a GPUarray or a NumPy.ndarray, check which device we -are currently running on in the context manager, and return -a possibly transferred GPUarray or a NumPy.ndarray accordingly.

-
- -
-
-PyHEADTAIL.general.pmath.indexify(array)
-
- -
-
-PyHEADTAIL.general.pmath.init_bunch_buffer(bunch, bunch_stats, buffer_size)
-
- -
-
-PyHEADTAIL.general.pmath.init_slice_buffer(slice_set, slice_stats, buffer_size)
-
- -
-
-PyHEADTAIL.general.pmath.macroparticles_per_slice(sliceset)
-
- -
-
-PyHEADTAIL.general.pmath.mean_per_slice(sliceset, u, **kwargs)
-

CPU Wrapper for the mean per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath.np_sincos(x)
-
- -
-
-PyHEADTAIL.general.pmath.particles_outside_cuts(sliceset)
-
- -
-
-PyHEADTAIL.general.pmath.particles_within_cuts(sliceset)
-
- -
-
-PyHEADTAIL.general.pmath.searchsortedleft(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.general.pmath.searchsortedright(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.general.pmath.seq(stop)
-
- -
-
-PyHEADTAIL.general.pmath.sincos(x)
-
- -
-
-PyHEADTAIL.general.pmath.slice_to_particles(sliceset, slice_array, particle_array=None)
-

Convert slice_array with entries for each slice to a -particle array with the respective entry of each particle -given by its slice_array value via the slice that the -particle belongs to. If provided, particle_array should be a -zero-filled destination array.

-
- -
-
-PyHEADTAIL.general.pmath.std_per_slice(sliceset, u, **kwargs)
-

CPU Wrapper for the cov per slice function. -TODO: Find a good spot where to put this function (equiv to gpu_wrap) -–> Directly into cobra_functions/stats.pyx?

-
- -
-
-PyHEADTAIL.general.pmath.update_active_dict(new_dict)
-

Update the currently active dictionary. Removes the keys of the currently -active dictionary from globals() and spills the keys -from new_dict to globals() -:param new_dict A dictionary which contents will be spilled to globals():

-
- -
-
-PyHEADTAIL.general.pmath.wofz(x, y)
-
- -
-
-

PyHEADTAIL.general.printers module

-

@authors: Adrian Oeftiger -@date: 12/09/2014

-

Printer functionality provides different means to control the flow of -output streams.

-
-
-class PyHEADTAIL.general.printers.AccumulatorPrinter(*args, **kwargs)
-

Accumulates all calls to prints in a list ‘log’

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(*args, **kwargs)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.printers'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-prints(output)
-

Stores warnings in list log

-
- -
- -
-
-class PyHEADTAIL.general.printers.ConsolePrinter
-

Redirects to console, equivalent to the print statement

-
>>> print (output)
-
-
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.general.printers'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-prints(output)
-

Directs the output to console.

-
- -
- -
-
-class PyHEADTAIL.general.printers.Printer
-

A generic printer knows where to redirect text for print. -Use Printer.prints(output) to print the output instead of -using the standard keyword

-
>>> print (output)
-
-
-

in order to gain flexibility in redirecting output centrally. -E.g. instead of directing output to console one could specify -a file or use different streams for errors, warnings and content -related output etc.

-
-
-__abstractmethods__ = frozenset({'prints'})
-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.printers', '__doc__': '\n A generic printer knows where to redirect text for print.\n Use Printer.prints(output) to print the output instead of\n using the standard keyword\n\n >>> print (output)\n\n in order to gain flexibility in redirecting output centrally.\n E.g. instead of directing output to console one could specify\n a file or use different streams for errors, warnings and content\n related output etc.\n ', 'prints': <function Printer.prints>, '__dict__': <attribute '__dict__' of 'Printer' objects>, '__weakref__': <attribute '__weakref__' of 'Printer' objects>, '__abstractmethods__': frozenset({'prints'}), '_abc_impl': <_abc_data object>})
-
- -
-
-__module__ = 'PyHEADTAIL.general.printers'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract prints(output)
-

Direct the output to the internally defined printing stream.

-
- -
- -
-
-class PyHEADTAIL.general.printers.SilentPrinter
-

Mutes output.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.general.printers'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-prints(output)
-

Accepts output and does nothing.

-
- -
- -
-
-

PyHEADTAIL.general.utils module

-

@authors: Kevin Li, Adrian Oeftiger -@date: 10/02/2015

-

Provide useful conceptual classes and logics for PyHEADTAIL.

-
-
-class PyHEADTAIL.general.utils.ListProxy(list_of_objects, attr_name)
-

Is a list of object attributes. Accessing ListProxy entries -evaluates the object attributes each time it is accessed, -i.e. this list “proxies” the object attributes.

-

Attention: -If accessed via slicing, e.g. ->>> original = ListProxy(…) ->>> part = original[2:5] -then part created a new list of references, a new _list_of_objects. -Consequently, any change to the direct contents of -original._list_of_objects (such as popping or adding elements) -is not reflected in part.

-
-
-__getitem__(index)
-

Return a ListProxy for slice arguments, -otherwise return the requested value at the given index.

-
- -
-
-__init__(list_of_objects, attr_name)
-

Provide a list of object instances and a name of a commonly -shared attribute that should be proxied by this ListProxy -instance.

-
- -
-
-__len__()
-
- -
-
-__module__ = 'PyHEADTAIL.general.utils'
-
- -
-
-__repr__()
-

Return repr(self).

-
- -
-
-__setitem__(index, value)
-
- -
-
-_rewritable_setitem(index, value)
-

This setter method may be overwritten.

-
- -
-
-pop(index)
-

Remove the object from the internal list and return the -corresponding attribute, analogous to list.pop .

-
- -
- -
-
-class PyHEADTAIL.general.utils.MutableNumber(value)
-

Documentation for MutableNumber

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.general.utils', '__doc__': 'Documentation for MutableNumber\n\n ', '__init__': <function MutableNumber.__init__>, '__dict__': <attribute '__dict__' of 'MutableNumber' objects>, '__weakref__': <attribute '__weakref__' of 'MutableNumber' objects>})
-
- -
-
-__init__(value)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.general.utils'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.gpu.html b/docs/PyHEADTAIL.gpu.html deleted file mode 100644 index cd6d4d60..00000000 --- a/docs/PyHEADTAIL.gpu.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - - - - PyHEADTAIL.gpu package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.gpu package

-
-

Submodules

-
-
-

PyHEADTAIL.gpu.gpu_utils module

-

GPU Utils -Memory pool, … -This could also be the place to store the context, device, streams, etc… -The module is automatically a singleton -@author Stefan Hegglin

-
-
-

PyHEADTAIL.gpu.gpu_wrap module

-

@author Stefan Hegglin, Adrian Oeftiger -@date 20.10.2015 -Python functions which wrap GPU functionality. -Use in dispatch of general/pmath -All functions assume GPU arrays as arguments!

-
-
-PyHEADTAIL.gpu.gpu_wrap._add_bounds_to_sliceset(sliceset)
-

Adds the lower_bounds and upper_bounds members to the sliceset -They must not present before the function call, otherwise undefined behaviour

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap._empty_like(gpuarray)
-
- -
-
-PyHEADTAIL.gpu.gpu_wrap._inplace_pow(x_gpu, p, stream=None)
-

Perform an in-place x_gpu = x_gpu ** p -Courtesy: scikits.cuda

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.apply_permutation(array, permutation)
-

Permute the entries in array according to the permutation array. -Return a new (permuted) array which is equal to array[permutation] -:param array gpuarray to be permuted. Either float64 or int32: -:param permutation permutation array: must be np.int32 (or int32), is asserted

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.argsort(to_sort)
-

Return the permutation required to sort the array. -:param to_sort: gpuarray for which the permutation array to sort

-
-

it is returned

-
-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.atleast_1d(*arrays)
-

Return input arrays unless they are scalars. Ensure the results have -ndim >= 1.

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.convolve(a, v, mode='full')
-

Compute the convolution of the two arrays a,v. See np.convolve

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.covariance(a, b, stream=None)
-

Covariance (not covariance matrix) -:param a: pycuda.GPUArray -:param b: pycuda.GPUArray

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.covariance_old(a, b)
-

Covariance (not covariance matrix) -:param a: pycuda.GPUArray -:param b: pycuda.GPUArray

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.cumsum(array, dest=None)
-

Return cumulative sum of 1-dimensional GPUArray data. -Works for dtypes np.int32 and np.float64. Wrapper for thrust -prefix sum via thrust::inclusive_scan.

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.emittance(u, up, dp, stream=None)
-

Compute the emittance of GPU arrays. Check the algorithm above for -a more readable version, this one has been ‘optimized’, e.g. mean->sum -and multiplication at the end to minimize kernel calls/inits of gpuarrs -:param u coordinate array: -:param up conjugate momentum array: -:param dp longitudinal momentum variation: -:type dp longitudinal momentum variation: can be None -:param stream: In which cuda stream to perform the computations

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.emittance_(u, up, dp)
-

Compute the emittance of GPU arrays. Check the algorithm above for -a more readable version, this one has been ‘optimized’, e.g. mean->sum -and multiplication at the end to minimize kernel calls/inits of gpuarrs -:param u coordinate array: -:param up conjugate momentum array: -:param dp longitudinal momentum variation:

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.emittance_reference(u, up, dp)
-

Compute the emittance of GPU arrays. Reference implementation, slow -but readable -:param u coordinate array: -:param up conjugate momentum array: -:param dp longitudinal momentum variation:

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.init_bunch_buffer(bunch, bunch_stats, buffer_size)
-

Call bunch.[stats], match the buffer type with the returned type

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.init_slice_buffer(slice_set, slice_stats, buffer_size)
-

Call sliceset.[‘stats’], match the buffer type with the returned type

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.macroparticles_per_slice(sliceset)
-

Return the number of macroparticles per slice. Assumes a sorted beam!

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.mean(a, stream=None)
-

Compute the mean of the gpuarray a -Replacement for skcuda.misc.mean(), which does not allow to specify -the stream (because gpuarray.__div__ does not have a stream -argument).

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.particles_outside_cuts(sliceset)
-

Return np.where((array < minimum) and (array > maximum)) -Assumes a sorted beam!

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.particles_within_cuts(sliceset)
-

Return np.where((array >= minimum) and (array <= maximum)) -Assumes a sorted beam!

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.searchsortedleft(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.searchsortedright(array, values, dest_array=None)
-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sincos(array)
-

Return a tuple with the sin and the cos of the input array.

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sorted_cov_per_slice(sliceset, u, v, stream=None)
-

Computes the covariance of the quantities u,v per slice -:param sliceset specifying slices: -:param u, v the arrays of which to compute the covariance:

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sorted_emittance_per_slice(sliceset, u, up, dp=None, stream=None)
-

Computes the emittance per slice. -If dp is None, the effective emittance is computed -:param sliceset specifying slices: -:param u, up the quantities of which to compute the emittance, e.g. x,xp:

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sorted_emittance_per_slice_slow(sliceset, u, up, dp=None, stream=None)
-

Computes the emittance per slice. -If dp is None, the effective emittance is computed -:param sliceset specifying slices: -:param u, up the quantities of which to compute the emittance, e.g. x,xp:

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sorted_mean_per_slice(sliceset, u, stream=None)
-

Computes the mean per slice of the array u -:param sliceset specifying slices, has .n_slices and .slice_index_of_particle: -:param u the array of which to compute the mean:

-

Return the an array, res[i] stores the mean of slice i

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.sorted_std_per_slice(sliceset, u, stream=None)
-

Computes the cov per slice of the array u -:param sliceset specifying slices: -:param u the array of which to compute the cov:

-

Return an array, res[i] stores the cov of slice i

-
- -
-
-PyHEADTAIL.gpu.gpu_wrap.std(a, stream=None)
-

Std of a vector

-
- -
-
-

PyHEADTAIL.gpu.oldinit module

-
-
-

PyHEADTAIL.gpu.particles module

-
-
-

PyHEADTAIL.gpu.pypic module

-
-
-

PyHEADTAIL.gpu.slicing module

-
-
-

PyHEADTAIL.gpu.thrust_interface module

-
-
-

PyHEADTAIL.gpu.wrapper module

-
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.html b/docs/PyHEADTAIL.html deleted file mode 100644 index cc395bc9..00000000 --- a/docs/PyHEADTAIL.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - PyHEADTAIL package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL package

-
-

Subpackages

-
- -
-
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.impedances.html b/docs/PyHEADTAIL.impedances.html deleted file mode 100644 index ec1bee2e..00000000 --- a/docs/PyHEADTAIL.impedances.html +++ /dev/null @@ -1,1064 +0,0 @@ - - - - - - - PyHEADTAIL.impedances package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.impedances package

-
-

Submodules

-
-
-

PyHEADTAIL.impedances.wake_kicks module

-

@class WakeKick -@author Kevin Li, Michael Schenk -@date July 2014 -@brief Implementation of the wake kicks, i.e. of the elementary objects

-
-

describing the effects of a wake field.

-
-

@copyright CERN

-
-
-class PyHEADTAIL.impedances.wake_kicks.ConstantWakeKickX(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a constant wake kick to bunch.xp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.ConstantWakeKickY(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a constant wake kick to bunch.yp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.ConstantWakeKickZ(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a constant wake kick to bunch.dp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.DipoleWakeKickX(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a dipolar wake kick to bunch.xp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.DipoleWakeKickXY(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a dipolar (cross term x-y) wake kick -to bunch.xp using the given slice_set. Only particles within -the slicing region, i.e particles_within_cuts (defined by the -slice_set) experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.DipoleWakeKickY(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a dipolar wake kick to bunch.yp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.DipoleWakeKickYX(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a dipolar (cross term y-x) wake kick -to bunch.yp using the given slice_set. Only particles within -the slicing region, i.e particles_within_cuts (defined by the -slice_set) experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.QuadrupoleWakeKickX(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a quadrupolar wake kick to bunch.xp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.QuadrupoleWakeKickXY(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a quadrupolar (cross term x-y) wake -kick to bunch.xp using the given slice_set. Only particles -within the slicing region, i.e particles_within_cuts (defined by -the slice_set) experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.QuadrupoleWakeKickY(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a quadrupolar wake kick to bunch.yp -using the given slice_set. Only particles within the slicing -region, i.e particles_within_cuts (defined by the slice_set) -experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.QuadrupoleWakeKickYX(wake_function, slicer, n_turns_wake, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply a quadrupolar (cross term y-x) wake -kick to bunch.yp using the given slice_set. Only particles -within the slicing region, i.e particles_within_cuts (defined by -the slice_set) experience the kick.

-
- -
- -
-
-class PyHEADTAIL.impedances.wake_kicks.WakeKick(wake_function, slicer, n_turns_wake, *args, **kwargs)
-

Abstract base class for wake kick classes, like e.g. the -DipoleWakeKickX. -Provides the basic and universal methods to calculate the strength -of a wake kick. Two implementations of the convolution are -available. Based on what slicer mode (uniform_bin, uniform_charge) -is used, the self._convolution method is bound to one or the other. -The self.apply(bunch, slice_set) method calculates and applies the -corresponding kick to the particles of the bunch that are located -inside the slicing region defined by a slice_set. This should be -the only method to be implemented for a child class inheriting from -the WakeKick class.

-
-
-__abstractmethods__ = frozenset({'apply'})
-
- -
-
-__init__(wake_function, slicer, n_turns_wake, *args, **kwargs)
-

Universal constructor for WakeKick objects. The slicer_mode -is passed only to decide about which of the two implementations -of the convolution the self._convolution method is bound to.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wake_kicks'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_accumulate_source_signal(bunch, times_list, ages_list, moments_list, betas_list)
-

Accumulate (multiturn-)wake signals left by source slices. -Takes a list of slice set attributes and adds up all -convolutions weighted by the respective moments. Also updates -the age of each slice set.

-
- -
-
-_convolution_dot_product(target_times, source_times, source_moments, source_beta)
-

Implementation of the convolution of wake and source_moments -(beam profile) using the numpy dot product. To be used with the -‘uniform_charge’ slicer mode.

-
- -
-
-_convolution_numpy(target_times, source_times, source_moments, source_beta)
-

Implementation of the convolution of wake and source_moments -(longitudinal beam profile) using the numpy built-in -numpy.convolve method. Recommended use with the ‘uniform_bin’ -slicer mode (in case of multiturn wakes, additional conditions -must be fulfilled: fixed z_cuts and no acceleration!) for -higher performance. Question: how about interpolation to avoid -expensive dot product in most cases?

-
- -
-
-static _wake_factor(bunch)
-

Universal scaling factor for the strength of a wake field -kick.

-
- -
-
-abstract apply(bunch, slice_set_list, slice_set_age_list)
-

Calculate and apply the corresponding wake kick to the -bunch conjugate momenta using the given slice_set. Only -particles within the slicing region, i.e particles_within_cuts -(defined by the slice_set) experience a kick.

-
- -
- -
-
-

PyHEADTAIL.impedances.wakes module

-

This module includes the description of a (multiturn) WakeField as well -as the implementation of the WakeSource objects.

-

A WakeField is defined as a composition of the elementary WakeKick -objects (see .wake_kicks module). They originate from WakeSources, -e.g. a WakeTable, Resonator and/or a ResistiveWall. The WakeField does -not directly accept the WakeKick objects, but takes a list of -WakeSources first (can be of different kinds), each of which knows how -to generate its WakeKick objects via the factory method -WakeSource.get_wake_kicks(..). The collection of WakeKicks from all the -WakeSources define the WakeField and are the elementary objects that are -stored, (i.e. the WakeField forgets about the origin of the WakeKicks -once they have been created).

-

@author Hannes Bartosik, Kevin Li, Giovanni Rumolo, Michael Schenk -@date March 2014 -@brief Implementation of a WakeField as a composition of WakeKicks

-
-

originating from different WakeSources.

-
-

@copyright CERN

-
-
-class PyHEADTAIL.impedances.wakes.CircularResistiveWall(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Circular resistive wall.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Special case of a circular resistive wall.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.CircularResonator(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Circular Resonator.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Special case of circular resonator.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.ParallelHorizontalPlatesResistiveWall(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Resistive wall impedance for horizontal parallel plates.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Special case of a parallel plates resistive wall.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.ParallelHorizontalPlatesResonator(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Broad-band resonator for horizontal parallel plates.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Special case of parallel plate resonator.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-PyHEADTAIL.impedances.wakes.ParallelPlatesResistiveWall(*args, **kwargs)
-
- -
-
-PyHEADTAIL.impedances.wakes.ParallelPlatesResonator(*args, **kwargs)
-
- -
-
-class PyHEADTAIL.impedances.wakes.ParallelVerticalPlatesResistiveWall(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Resistive wall impedance for vertical parallel plates.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(pipe_radius, resistive_wall_length, conductivity, dt_min, n_turns_wake=1, *args, **kwargs)
-

Special case of a parallel plates resistive wall.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.ParallelVerticalPlatesResonator(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Broad-band resonator for vertical parallel plates.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(R_shunt, frequency, Q, n_turns_wake=1, *args, **kwargs)
-

Special case of parallel plate resonator.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.ResistiveWall(pipe_radius, resistive_wall_length, conductivity, dt_min, Yokoya_X1, Yokoya_Y1, Yokoya_X2, Yokoya_Y2, n_turns_wake=1, *args, **kwargs)
-

Class to describe the wake functions originating from a -resistive wall impedance.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(pipe_radius, resistive_wall_length, conductivity, dt_min, Yokoya_X1, Yokoya_Y1, Yokoya_X2, Yokoya_Y2, n_turns_wake=1, *args, **kwargs)
-

General constructor to create a ResistiveWall WakeSource -object describing the wake functions of a resistive wall -impedance. -The parameter ‘n_turns_wake’ defines how many turns are -considered for the multiturn wakes. It is 1 by default, i.e. -multiturn wakes are off.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-function_transverse(Yokoya_factor)
-

Define the wake function (transverse) of a resistive wall -with the given parameters.

-
- -
-
-get_wake_kicks(slicer)
-

Factory method. Creates instances of the appropriate -WakeKick objects for the ResistiveWall WakeSource with the -specified parameters. A WakeKick object is instantiated only if -the corresponding Yokoya factor is non-zero. The WakeKick -objects are returned as a list wake_kicks.

-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.Resonator(R_shunt, frequency, Q, Yokoya_X1, Yokoya_Y1, Yokoya_X2, Yokoya_Y2, switch_Z, n_turns_wake=1, *args, **kwargs)
-

Class to describe the wake functions originating from a -resonator impedance. Alex Chao’s resonator model (Eq. 2.82) is used -as well as the definitions from HEADTAIL.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(R_shunt, frequency, Q, Yokoya_X1, Yokoya_Y1, Yokoya_X2, Yokoya_Y2, switch_Z, n_turns_wake=1, *args, **kwargs)
-

General constructor to create a Resonator WakeSource object -describing the wake functions of a resonator impedance. Alex -Chao’s resonator model (Eq. 2.82) is used as well as definitions -from HEADTAIL. -Note that it is no longer allowed to pass a LIST of parameters -to generate a number of resonators with different parameters -within the same Resonator object. Instead, create the Resonator -objects and pass all of them to the WakeField constructor. -The parameter ‘n_turns_wake’ defines how many turns are -considered for the multiturn wakes. It is 1 by default, i.e. -multiturn wakes are off.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-function_longitudinal()
-

Define the wake function (longitudinal) of a resonator with -the given parameters according to Alex Chao’s resonator model -(Eq. 2.82) and definitions of the resonator in HEADTAIL.

-
- -
-
-function_transverse(Yokoya_factor)
-

Define the wake function (transverse) of a resonator with -the given parameters according to Alex Chao’s resonator model -(Eq. 2.82) and definitions of the resonator in HEADTAIL.

-
- -
-
-get_wake_kicks(slicer)
-

Factory method. Creates instances of the appropriate -WakeKick objects for a Resonator WakeSource with the specified -parameters. A WakeKick object is instantiated only if the -corresponding Yokoya factor is non-zero. The WakeKick objects -are returned as a list wake_kicks.

-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.WakeField(slicer, *wake_sources)
-

A WakeField is defined by elementary WakeKick objects that may -originate from different WakeSource objects. Usually, there is -no need for the user to define more than one instance of the -WakeField class in a simulation - except if one wants to use -different slicing configurations (one WakeField object is allowed -to have exactly one slicing configuration, i.e. only one instance -of the Slicer class). A WakeField also is able to calculate the wake -forces coming from earlier turns (multiturn wakes) by archiving the -longitudinal bunch distribution (SliceSet instances) a number of -turns back.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(slicer, *wake_sources)
-

Accepts a list of WakeSource objects. Each WakeSource object -knows how to generate its corresponding WakeKick objects. The -collection of all the WakeKick objects of each of the passed -WakeSource objects defines the WakeField. -When instantiating the WakeField object, the WakeKick objects -for each WakeSource defined in wake_sources are requested. The -returned WakeKick lists are all stored in the -WakeField.wake_kicks list. The WakeField itself forgets about -the origin (WakeSource) of the kicks as soon as they have been -generated. -Exactly one instance of the Slicer class must be passed to the -WakeField constructor. All the wake field components (kicks) -hence use the same slicing and thus the same slice_set to -calculate the strength of the kicks. -To calculate the contributions from multiturn wakes, the -longitudinal beam distributions (SliceSet instances) are -archived in a deque. In parallel to the slice_set_deque, -there is a slice_set_age_deque to keep track of the age of -each of the SliceSet instances.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(bunch)
-

Calls the WakeKick.apply(bunch, slice_set) method of each of -the WakeKick objects stored in self.wake_kicks. A slice_set is -necessary to perform this operation. It is requested from the -bunch (instance of the Particles class) using the -Particles.get_slices(self.slicer) method, where self.slicer is -the instance of the Slicer class used for this particluar -WakeField object. A slice_set is returned according to the -self.slicer configuration. The statistics mean_x and mean_y are -requested to be calculated and saved in the SliceSet instance, -too, s.t. the first moments x, y can be calculated by the -WakeKick instances.

-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.WakeSource(*args, **kwargs)
-

Abstract base class for wake sources, such as WakeTable, -Resonator or ResistiveWall.

-
-
-__abstractmethods__ = frozenset({'get_wake_kicks'})
-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract get_wake_kicks(slicer_mode)
-

Factory method. Creates instances of the WakeKick objects -for the given WakeSource and returns them as a list wake_kicks. -This method is usually only called by a WakeField object to -collect and create all the WakeKick objects originating from the -different sources. (The slicer mode Slicer.mode must be passed -at instantiation of a WakeKick object only to set the -appropriate convolution method. See docstrings of WakeKick -class.)

-
- -
- -
-
-class PyHEADTAIL.impedances.wakes.WakeTable(wake_file, wake_file_columns, n_turns_wake=1, *args, **kwargs)
-

Class to define wake functions and WakeKick objects using wake -data from a table.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(wake_file, wake_file_columns, n_turns_wake=1, *args, **kwargs)
-

Load data from the wake_file and store them in a dictionary -self.wake_table. Keys are the names specified by the user in -wake_file_columns and describe the names of the wake field -components (e.g. dipole_x or dipole_yx). The dict values are -given by the corresponding data read from the table. The -nomenclature of the wake components must be strictly obeyed. -Valid names for wake components are:

-

‘constant_x’, ‘constant_y’, ‘dipole_x’, ‘dipole_y’, ‘dipole_xy’, -‘dipole_yx’, ‘quadrupole_x’, ‘quadrupole_y’, ‘quadrupole_xy’, -‘quadrupole_yx’, ‘longitudinal’.

-

The order of wake_file_columns is relevant and must correspond -to the one in the wake_file. There is no way to check this here -and it is in the responsibility of the user to ensure it is -correct. Two checks made here are whether the length of -wake_file_columns corresponds to the number of columns in the -wake_file and whether a column ‘time’ is specified.

-

The units and signs of the wake table data are assumed to follow -the HEADTAIL conventions, i.e.

-
-

time: [ns] -transverse wake components: [V/pC/mm] -longitudinal wake component: [V/pC].

-
-

The parameter ‘n_turns_wake’ defines how many turns are -considered for the multiturn wakes. It is 1 by default, i.e. -multiturn wakes are off.

-
- -
-
-__module__ = 'PyHEADTAIL.impedances.wakes'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_is_provided(wake_component)
-

Check whether wake_component is a valid name and available -in wake table data. Return ‘True’ if yes and ‘False’ if no.

-
- -
-
-function_longitudinal()
-

Defines and returns the wake(dt) function for the given -wake_component (longitudinal). Data from the wake table are -used, but first converted to SI units assuming that time is -specified in [ns] and longitudinal wake field strength in -[V/pC]. Sign conventions are applied (HEADTAIL conventions). -The wake(dt) uses the scipy.interpolate.interp1d linear -interpolation to calculate the wake strength at an arbitrary -value of dt (provided it is in the valid range). The valid range -of dt is given by the time range from the wake table. If values -of wake(dt) are requested for dt outside the valid range, a -ValueError is raised by interp1d. -The beam loading theorem is respected and applied for dt=0.

-
- -
-
-function_transverse(wake_component)
-

Defines and returns the wake(beta, dz) function for the -given wake_component (transverse). Data from the wake table are -used, but first converted to SI units assuming that time is -specified in [ns] and transverse wake field strengths in -[V/pC/mm]. Sign conventions are applied (HEADTAIL conventions). -dz is related to wake table time data by dz = beta c dt (dz < 0 -for the ultrarelativistic case). -The wake(dt) uses the scipy.interpolate.interp1d linear -interpolation to calculate the wake strength at an arbitrary -value of dt (provided it is in the valid range). The valid range -of dt is given by the time range from the wake table. If values -of wake(dt) are requested for dt outside the valid range, a -ValueError is raised by interp1d. -Very basic conformity checks for the wake table data are already -performed at definition time of the wake(dt) method. E.g. -whether the specified wake is valid only for ultrarelativistic -cases or low beta cases. In the former case, the wake strength -at time 0 must be defined by the user!

-
- -
-
-get_wake_kicks(slicer)
-

Factory method. Creates instances of the appropriate -WakeKick objects for all the wake components provided by the -user (and the wake table data). The WakeKick objects are -returned as a list wake_kicks.

-
- -
- -
-
-PyHEADTAIL.impedances.wakes.check_wake_sampling(bunch, slicer, wakes, beta=1, wake_column=None, bins=False)
-

Handy function for quick visual check of sampling of the wake functions. -For now only implemented for wake table type wakes.

-
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.machines.html b/docs/PyHEADTAIL.machines.html deleted file mode 100644 index 128545ad..00000000 --- a/docs/PyHEADTAIL.machines.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - PyHEADTAIL.machines package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.machines package

-
-

Submodules

-
-
-

PyHEADTAIL.machines.synchrotron module

-
-
-class PyHEADTAIL.machines.synchrotron.BasicSynchrotron(*args, **kwargs)
-
-
-__init__(*args, **kwargs)
-

Creates a synchrotron.

-
-
Parameters
-
    -
  • optics_mode ('smooth', 'non-smooth') –

      -
    • ‘smooth’: the optics parameters are the same for all segments;

    • -
    • ’non-smooth’: the optics parameters are different for each segment.

    • -
    -

  • -
  • charge (C) – reference particle charge in Coulomb.

  • -
  • mass (kg) – reference particle mass in Kg.

  • -
  • p0 (kg m/s) – reference particle momentum.

  • -
  • circumference (m) – ring circumference (to be provided only if optics_mode is ‘smooth’).

  • -
  • n_segments – Number of segments in the machine (to be provided if -optics_mode is ‘smooth’, otherwise it is inferred by the length of s).

  • -
  • name – Name of the locations in between segments. The length of the array -should be n_segments + 1.

  • -
  • s (m, array) – Longitudinal positions at which the machine is cut -in segments. The length of the array should be n_segments + 1. -The last value in the array provides the ring circumference.

  • -
  • alpha_x – Horizontal alpha twiss parameter at each segment -(cannot be provided if optics_mode is ‘smooth’). In this case, -the length of the array should be n_segments + 1. The last point of -the array should be equal to the first (periodic condition).

  • -
  • beta_x (m) – Horizontal beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • D_x (m) – Horizontal beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • alpha_y – Vertical alpha twiss parameter at each segment -(cannot be provided if optics_mode is ‘smooth’). In this case, -the length of the array should be n_segments + 1. The last point of -the array should be equal to the first (periodic condition).

  • -
  • beta_y (m) – Vertical beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • D_y (m) – Vertical beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • accQ_x

    Horizontal tune or phase advance:

    -
      -
    • for ‘optics_mode’ = ‘smooth’ this is the horizontal tune;

    • -
    • for ‘optics_mode’ = ‘non-smooth’ this is the horizontal phase advance -per segment in units of (2*pi). The length of the array should be -n_segments + 1. The last point of the array should be the -horizontal tune.

    • -
    -

  • -
  • accQ_y

    Vertical tune or phase advance:

    -
    -
      -
    • for ‘optics_mode’ = ‘smooth’ this is the vertical tune;

    • -
    • for ‘optics_mode’ = ‘non-smooth’ this is the vertical phase advance -per segment in units of (2*pi). The length of the array should be -n_segments + 1. The last point of the array should be the -vertical tune.

    • -
    -
    -

  • -
  • Qp_x,Qp_y – Horizontal and vertical chromaticity (dQ/dp), the detuning -is shared over segments.

  • -
  • app_x,app_y,app_xy – Amplitude detuning coefficients (anharmonicities).

  • -
  • longitudinal_mode ('linear', 'non-linear') –

    -
    Longitudinal mode:
      -
    • ’linear’: linear longitudinal force (RF cavity)

    • -
    • -
      ’non-linear’: sinusoidal longitudinal force (RF cavities). Multiple

      harmonics can be defined in this case.

      -
      -
      -
    • -
    -
    -
    -

  • -
  • Q_s – Synchrotron tune. It can be defined only if longitudinal_mode is -‘linear’. If Q_s is provided, V_RF cannot be provided.

  • -
  • alpha_mom_compaction – Momentum compaction factor (dL/L)/(dp)

  • -
  • h_RF – Harmonic number. For multiple-harmonic RF systems this can be -an array.

  • -
  • V_RF (V) – RF voltage. For multiple-harmonic RF systems this can be -an array.

  • -
  • dphi_RF (rad) –

    Phase of the RF system with respect to the reference -particle (z=0). For a single harmonic, in the absence of acceleration -or energy losses:

    -
    -
      -
    • above transition z = 0 is the stable fixed-point if dphi_RF = 0;

    • -
    • below transition z = 0 is the stable fixed-point if dphi_RF = pi.

    • -
    -
    -

  • -
  • p_increment (kg m / s) – Acceleration, reference particle momentum change -per turn.

  • -
  • RF_at ('middle', 'end_of_transverse') – Position of the longitudinal map in the ring.

  • -
  • wrap_z (True, False) – Wrap longitudinal position using the accelerator length.

  • -
  • other_detuners – List of other detuners to be applied -(default is other_detuners = []).

  • -
-
-
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
- -
-
-class PyHEADTAIL.machines.synchrotron.Synchrotron(optics_mode, charge=None, mass=None, p0=None, circumference=None, n_segments=None, name=None, s=None, alpha_x=None, beta_x=None, D_x=None, alpha_y=None, beta_y=None, D_y=None, accQ_x=None, accQ_y=None, Qp_x=0, Qp_y=0, app_x=0, app_y=0, app_xy=0, longitudinal_mode=None, Q_s=None, alpha_mom_compaction=None, h_RF=None, V_RF=None, dphi_RF=None, p_increment=None, RF_at='middle', wrap_z=False, other_detuners=[], use_cython=False)
-
-
-property Q_s
-
- -
-
-property Q_x
-
- -
-
-property Q_y
-
- -
-
-__init__(optics_mode, charge=None, mass=None, p0=None, circumference=None, n_segments=None, name=None, s=None, alpha_x=None, beta_x=None, D_x=None, alpha_y=None, beta_y=None, D_y=None, accQ_x=None, accQ_y=None, Qp_x=0, Qp_y=0, app_x=0, app_y=0, app_xy=0, longitudinal_mode=None, Q_s=None, alpha_mom_compaction=None, h_RF=None, V_RF=None, dphi_RF=None, p_increment=None, RF_at='middle', wrap_z=False, other_detuners=[], use_cython=False)
-

Creates a synchrotron.

-
-
Parameters
-
    -
  • optics_mode ('smooth', 'non-smooth') –

      -
    • ‘smooth’: the optics parameters are the same for all segments;

    • -
    • ’non-smooth’: the optics parameters are different for each segment.

    • -
    -

  • -
  • charge (C) – reference particle charge in Coulomb.

  • -
  • mass (kg) – reference particle mass in Kg.

  • -
  • p0 (kg m/s) – reference particle momentum.

  • -
  • circumference (m) – ring circumference (to be provided only if optics_mode is ‘smooth’).

  • -
  • n_segments – Number of segments in the machine (to be provided if -optics_mode is ‘smooth’, otherwise it is inferred by the length of s).

  • -
  • name – Name of the locations in between segments. The length of the array -should be n_segments + 1.

  • -
  • s (m, array) – Longitudinal positions at which the machine is cut -in segments. The length of the array should be n_segments + 1. -The last value in the array provides the ring circumference.

  • -
  • alpha_x – Horizontal alpha twiss parameter at each segment -(cannot be provided if optics_mode is ‘smooth’). In this case, -the length of the array should be n_segments + 1. The last point of -the array should be equal to the first (periodic condition).

  • -
  • beta_x (m) – Horizontal beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • D_x (m) – Horizontal beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • alpha_y – Vertical alpha twiss parameter at each segment -(cannot be provided if optics_mode is ‘smooth’). In this case, -the length of the array should be n_segments + 1. The last point of -the array should be equal to the first (periodic condition).

  • -
  • beta_y (m) – Vertical beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • D_y (m) – Vertical beta twiss parameter at each segment. It has -to be a scalar if optics_mode is ‘smooth’, an array if optics_mode -is ‘non-smooth’. In this case, the length of the array should be -n_segments + 1. The last point of the array should be equal to the -first (periodic condition).

  • -
  • accQ_x

    Horizontal tune or phase advance:

    -
      -
    • for ‘optics_mode’ = ‘smooth’ this is the horizontal tune;

    • -
    • for ‘optics_mode’ = ‘non-smooth’ this is the horizontal phase advance -per segment in units of (2*pi). The length of the array should be -n_segments + 1. The last point of the array should be the -horizontal tune.

    • -
    -

  • -
  • accQ_y

    Vertical tune or phase advance:

    -
    -
      -
    • for ‘optics_mode’ = ‘smooth’ this is the vertical tune;

    • -
    • for ‘optics_mode’ = ‘non-smooth’ this is the vertical phase advance -per segment in units of (2*pi). The length of the array should be -n_segments + 1. The last point of the array should be the -vertical tune.

    • -
    -
    -

  • -
  • Qp_x,Qp_y – Horizontal and vertical chromaticity (dQ/dp), the detuning -is shared over segments.

  • -
  • app_x,app_y,app_xy – Amplitude detuning coefficients (anharmonicities).

  • -
  • longitudinal_mode ('linear', 'non-linear') –

    -
    Longitudinal mode:
      -
    • ’linear’: linear longitudinal force (RF cavity)

    • -
    • -
      ’non-linear’: sinusoidal longitudinal force (RF cavities). Multiple

      harmonics can be defined in this case.

      -
      -
      -
    • -
    -
    -
    -

  • -
  • Q_s – Synchrotron tune. It can be defined only if longitudinal_mode is -‘linear’. If Q_s is provided, V_RF cannot be provided.

  • -
  • alpha_mom_compaction – Momentum compaction factor (dL/L)/(dp)

  • -
  • h_RF – Harmonic number. For multiple-harmonic RF systems this can be -an array.

  • -
  • V_RF (V) – RF voltage. For multiple-harmonic RF systems this can be -an array.

  • -
  • dphi_RF (rad) –

    Phase of the RF system with respect to the reference -particle (z=0). For a single harmonic, in the absence of acceleration -or energy losses:

    -
    -
      -
    • above transition z = 0 is the stable fixed-point if dphi_RF = 0;

    • -
    • below transition z = 0 is the stable fixed-point if dphi_RF = pi.

    • -
    -
    -

  • -
  • p_increment (kg m / s) – Acceleration, reference particle momentum change -per turn.

  • -
  • RF_at ('middle', 'end_of_transverse') – Position of the longitudinal map in the ring.

  • -
  • wrap_z (True, False) – Wrap longitudinal position using the accelerator length.

  • -
  • other_detuners – List of other detuners to be applied -(default is other_detuners = []).

  • -
-
-
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_add_wrapper_and_buncher()
-

Add longitudinal z wrapping around the circumference as -well as a UniformBinSlicer for bunching the beam.

-
- -
-
-_construct_longitudinal_map(longitudinal_mode=None, h_RF=None, V_RF=None, dphi_RF=None, alpha_mom_compaction=None, Q_s=None, p_increment=None, RF_at=None)
-
- -
-
-_construct_transverse_map(optics_mode=None, circumference=None, n_segments=None, s=None, name=None, alpha_x=None, beta_x=None, D_x=None, alpha_y=None, beta_y=None, D_y=None, accQ_x=None, accQ_y=None, Qp_x=None, Qp_y=None, app_x=None, app_y=None, app_xy=None, other_detuners=None, use_cython=None)
-
- -
-
-property beta
-
- -
-
-property betagamma
-
- -
-
-property gamma
-
- -
-
-generate_6D_Gaussian_bunch(n_macroparticles, intensity, epsn_x, epsn_y, sigma_z)
-

Generate a 6D Gaussian distribution of particles which is -transversely matched to the Synchrotron. Longitudinally, the -distribution is matched only in terms of linear focusing. -For a non-linear bucket, the Gaussian distribution is cut along -the separatrix (with some margin). It will gradually filament -into the bucket. This will change the specified bunch length.

-
- -
-
-generate_6D_Gaussian_bunch_matched(n_macroparticles, intensity, epsn_x, epsn_y, sigma_z=None, epsn_z=None)
-

Generate a 6D Gaussian distribution of particles which is -transversely as well as longitudinally matched. -The distribution is found iteratively to exactly yield the -given bunch length while at the same time being stationary in -the non-linear bucket. Thus, the bunch length should amount -to the one specificed and should not change significantly -during the synchrotron motion.

-

Requires self.longitudinal_mode == ‘non-linear’ -for the bucket.

-
- -
-
-install_after_each_transverse_segment(element_to_add)
-

Attention: Do not add any elements which update the dispersion!

-
- -
-
-property p0
-
- -
-
-track(bunch, verbose=False)
-

Perform tracking of beam through this Element.

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.monitors.html b/docs/PyHEADTAIL.monitors.html deleted file mode 100644 index 87226cc3..00000000 --- a/docs/PyHEADTAIL.monitors.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - - - - PyHEADTAIL.monitors package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.monitors package

-
-

Submodules

-
-
-

PyHEADTAIL.monitors.monitors module

-

@author Kevin Li, Michael Schenk, Stefan Hegglin -@date 11. February 2014 -@brief Implementation of monitors to store bunch-, slice- or particle-

-
-

specific data to a HDF5 file.

-
-

@copyright CERN

-
-
-class PyHEADTAIL.monitors.monitors.BunchMonitor(filename, n_steps, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Class to store bunch-specific data to a HDF5 file. This monitor -uses a buffer (a shift register) to reduce the number of writing -operations to file. This also helps to avoid IO errors and loss of -data when writing to a file that may become temporarily unavailable -(e.g. if file is located on network) during the simulation.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(filename, n_steps, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Create an instance of a BunchMonitor class. Apart from -initializing the HDF5 file, a self.buffer dictionary is -prepared to buffer the data before writing them to file.

-
-
-
filename: Path and name of HDF5 file. Without file

extension.

-
-
n_steps: Number of entries to be reserved for each

of the quantities in self.stats_to_store.

-
-
parameters_dict: Metadata for HDF5 file containing main

simulation parameters.

-
-
write_buffer_every: Number of steps after which buffer

contents are actually written to file.

-
-
-

buffer_size: Number of steps to be buffered.

-

Optionally pass a list called stats_to_store which specifies -which members/methods of the bunch will be called/stored.

-
-
- -
-
-__module__ = 'PyHEADTAIL.monitors.monitors'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_create_file_structure(parameters_dict)
-

Initialize HDF5 file and create its basic structure (groups -and datasets). One group is created for bunch-specific data. -One dataset for each of the quantities defined in -self.stats_to_store is generated. -If specified by the user, write the contents of the -parameters_dict as metadata (attributes) to the file. -Maximum file compression is activated.

-
- -
-
-_init_buffer(bunch)
-

Init the correct buffer type (np.zeros, gpuarrays.zeros)

-
- -
-
-_write_buffer_to_file()
-

Write buffer contents to the HDF5 file. The file is opened and -closed each time the buffer is written to file to prevent from -loss of data in case of a crash. -buffer_tmp is an extra buffer which is always on the CPU. If -self.buffer is on the GPU, copy the data to buffer_tmp and write -the result to the file.

-
- -
-
-_write_data_to_buffer(**kwargs)
-
- -
-
-dump(bunch)
-

Evaluate the statistics like mean and standard deviation for -the given bunch and write the data to the HDF5 file. Make use of -a buffer to reduce the number of writing operations to file. -This helps to avoid IO errors and loss of data when writing data -to a file that may become temporarily unavailable (e.g. if file -is on network). during the simulation. Buffer contents are -written to file only every self.write_buffer_every steps. -The buffer gets initialized in the first dump() call. This allows -for a dynamic creation of the buffer memory on either CPU or GPU

-
- -
- -
-
-class PyHEADTAIL.monitors.monitors.CellMonitor(filename, n_steps, n_azimuthal_slices, n_radial_slices, radial_cut, beta_z, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Class to store cell (z, dp) specific data (for the moment only -mean_x, mean_y, mean_z, mean_dp and n_particles_in_cell) to a HDF5 -file. This monitor uses a buffer (shift register) to reduce the -number of writing operations to file. This also helps to avoid IO -errors and loss of data when writing to a file that may become -temporarily unavailable (e.g. if file is located on network) during -the simulation.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(filename, n_steps, n_azimuthal_slices, n_radial_slices, radial_cut, beta_z, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Create an instance of a CellMonitor class. Apart from -initializing the HDF5 file, a buffer self.buffer_cell is -prepared to buffer the cell-specific data before writing them -to file.

-
-
-
filename: Path and name of HDF5 file. Without file

extension.

-
-
n_steps: Number of entries to be reserved for each

of the quantities in self.stats_to_store.

-
-
-

n_azimuthal_slices: Number of pizza slices (azimuthal slicing). -n_radial_slices: Number of rings (radial slicing). -radial_cut: ‘Radius’ of the outermost ring in

-
-

longitudinal phase space (using beta_z*dp)

-
-
-
parameters_dict: Metadata for HDF5 file containing main

simulation parameters.

-
-
write_buffer_every: Number of steps after which buffer

contents are actually written to file.

-
-
-

buffer_size: Number of steps to be buffered.

-
-
- -
-
-__module__ = 'PyHEADTAIL.monitors.monitors'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_create_file_structure(parameters_dict)
-

Initialize HDF5 file and create its basic structure (groups -and datasets). One dataset for each of the quantities defined -in self.stats_to_store is generated. If specified by -the user, write the contents of the parameters_dict as metadata -(attributes) to the file. Maximum file compression is -activated.

-
- -
-
-_write_buffer_to_file()
-

Write buffer contents to the HDF5 file. The file is opened -and closed each time the buffer is written to file to prevent -from loss of data in case of a crash.

-
- -
-
-_write_data_to_buffer(bunch)
-

Store the data in the self.buffer dictionary before writing -them to file. The buffer is implemented as a shift register. The -cell-specific data are computed by a cython function.

-
- -
-
-dump(bunch)
-

Evaluate the statistics for the given cells and write the -data to the buffer and/or to the HDF5 file. The buffer is used -to reduce the number of writing operations to file. This helps -to avoid IO errors and loss of data when writing data to a file -that may become temporarily unavailable (e.g. if file is on -network) during the simulation. Buffer contents are written to -file only every self.write_buffer_every steps.

-
- -
- -
-
-class PyHEADTAIL.monitors.monitors.Monitor(*args, **kwargs)
-

Abstract base class for monitors. A monitor can request -statistics data such as mean value and standard deviation and store -the results in an HDF5 file.

-
-
-__abstractmethods__ = frozenset({'dump'})
-
- -
-
-__module__ = 'PyHEADTAIL.monitors.monitors'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract dump()
-

Write particle data given by bunch (instance of Particles -class) to buffer and/or file at the specific time the method is -called. Data can e.g. be bunch-specific, slice_set-specific or -particle-specific.

-
- -
- -
-
-class PyHEADTAIL.monitors.monitors.ParticleMonitor(filename, stride=1, parameters_dict=None, *args, **kwargs)
-

Class to store particle-specific data to a HDF5 file, i.e. the -coordinates and conjugate momenta as well as the id of individual -macroparticles of a bunch.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(filename, stride=1, parameters_dict=None, *args, **kwargs)
-

Create an instance of a ParticleMonitor class. The HDF5 file -is initialized, and if specified, the parameters_dict is written -to file.

-
-
-
filename: Path and name of HDF5 file. Without file

extension.

-
-
stride: Only store data of macroparticles for which

id % stride == 0.

-
-
parameters_dict: Metadata for HDF5 file containing main

simulation parameters.

-
-
-

Optionally pass a list called quantities_to_store which -specifies which members of the bunch will be called/stored.

-
-
- -
-
-__module__ = 'PyHEADTAIL.monitors.monitors'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_create_file_structure(parameters_dict)
-

Initialize HDF5 file. If specified by the user, write the -contents of the parameters_dict as metadata (attributes) -to the file. Maximum file compression is activated.

-
- -
-
-_write_data_to_file(bunch, arrays_dict)
-

Write macroparticle data (x, xp, y, yp, z, dp, id) of a -selection of particles to the HDF5 file. Optionally, data in -additional_quantities can also be added if provided in the -constructor. The file is opened and closed every time to prevent -from loss of data in case of a crash. -For each simulation step, a new group with name ‘Step#..’ is -created. It contains one dataset for each of the quantities -given in self.quantities_to_store.

-
- -
-
-dump(bunch, arrays_dict=None)
-

Write particle data to file. See docstring of method -self._write_data_to_file .

-
- -
- -
-
-class PyHEADTAIL.monitors.monitors.SliceMonitor(filename, n_steps, slicer, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Class to store bunch- and slice_set-specific data to a HDF5 -file. This monitor uses two buffers (shift registers) to reduce the -number of writing operations to file. This also helps to avoid IO -errors and loss of data when writing to a file that may become -temporarily unavailable (e.g. if file is located on network) during -the simulation.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(filename, n_steps, slicer, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs)
-

Create an instance of a SliceMonitor class. Apart from -initializing the HDF5 file, two buffers self.buffer_bunch and -self.buffer_slice are prepared to buffer the bunch-specific and -slice_set-specific data before writing them to file.

-
-
-
filename: Path and name of HDF5 file. Without file

extension.

-
-
n_steps: Number of entries to be reserved for each

of the quantities in self.stats_to_store.

-
-
slicer: Instance of the Slicer class containing

the configuration defining a slice_set.

-
-
parameters_dict: Metadata for HDF5 file containing main

simulation parameters.

-
-
write_buffer_every: Number of steps after which buffer

contents are actually written to file.

-
-
-

buffer_size: Number of steps to be buffered.

-

optionally pass a list called bunch_stats_to_store or -slice_stats_to_store which specifie -which members/methods of the bunch will be called/stored.

-
-
- -
-
-__module__ = 'PyHEADTAIL.monitors.monitors'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_create_file_structure(parameters_dict)
-

Initialize HDF5 file and create its basic structure (groups -and datasets). Two groups are created, one for slice_set- -specific and one for bunch-specific data. One dataset for each -of the quantities defined in self.bunch_stats_to_store and -self.slice_stats_to_store resp. is generated. If specified by -the user, write the contents of the parameters_dict as metadata -(attributes) to the file. Maximum file compression is -activated.

-
- -
-
-_init_buffer(bunch, slice_set)
-
- -
-
-_write_buffer_to_file()
-

Write buffer contents to the HDF5 file. The file is opened -and closed each time the buffer is written to file to prevent -from loss of data in case of a crash.

-
- -
-
-_write_data_to_buffer(bunch)
-

Store the data in the self.buffer dictionary before writing -them to file. The buffer is implemented as a shift register. To -find the slice_set-specific data, a slice_set, defined by the -slicing configuration self.slicer must be requested from the -bunch (instance of the Particles class), including all the -statistics that are to be saved.

-
- -
-
-dump(bunch)
-

Evaluate the statistics like mean and standard deviation for -the given slice_set and the bunch and write the data to the -buffers and/or to the HDF5 file. The buffers are used to reduce -the number of writing operations to file. This helps to avoid IO -errors and loss of data when writing data to a file that may -become temporarily unavailable (e.g. if file is on network) -during the simulation. Buffer contents are written to file only -every self.write_buffer_every steps.

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.multipoles.html b/docs/PyHEADTAIL.multipoles.html deleted file mode 100644 index a65d21d4..00000000 --- a/docs/PyHEADTAIL.multipoles.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - PyHEADTAIL.multipoles package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.multipoles package

-
-

Submodules

-
-
-

PyHEADTAIL.multipoles.multipoles module

-

Collection of localised thin multipole maps. -For formulae see e.g. SIXTRACK:

-

SixTrack Physics Manual -R. De. Maria and M. Fjellstrom -August 18, 2015

-

or, likewise,

-

A Symplectic Six-Dimensional Thin-Lens Formalism for Tracking -G. Ripken, F. Schmidt -April 5, 1995

-

@authors: Adrian Oeftiger -@date: 23/03/2016

-
-
-class PyHEADTAIL.multipoles.multipoles.ThinMultipole(knl, ksl=[], *args, **kwargs)
-

Implements the Horner scheme to efficiently calculate the -polynomials for any order multipole maps.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(knl, ksl=[], *args, **kwargs)
-

MAD style counting of of normal and skew multipole strengths: -[dipolar, quadrupolar, sextupolar, octupolar, …] components. -:param - knl: list of normalised normal strengths times the length

-
-

of the multipole magnet [1/m^order] in ascending -order

-
-
-
Optional arguments:
    -
  • -
    ksl: list of normalised skew strengths times the length

    of the multipole magnet [1/m^order] in ascending -order

    -
    -
    -
  • -
-
-
-

N.B.: If knl and ksl have different lengths, zeros are appended -until they are equally long.

-
- -
-
-__module__ = 'PyHEADTAIL.multipoles.multipoles'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-static ctaylor(x, y, kn, ks)
-

Efficient Horner scheme.

-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
-
-static ztaylor(x, y, kn, ks)
-

Same as ctaylor but using complex numbers, slower but more -readable – added for the sake of clarity.

-
- -
- -
-
-class PyHEADTAIL.multipoles.multipoles.ThinOctupole(k3l, *args, **kwargs)
-

Thin octupolar map.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(k3l, *args, **kwargs)
-

Arguments: -- k3l: normalised strength times the length of the

-
-

octupole magnet [1/m^3]

-
-
- -
-
-__module__ = 'PyHEADTAIL.multipoles.multipoles'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
-class PyHEADTAIL.multipoles.multipoles.ThinQuadrupole(k1l, *args, **kwargs)
-

Thin quadrupolar map.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(k1l, *args, **kwargs)
-

Arguments: -- k1l: normalised strength times the length of the

-
-

quadrupole magnet [1/m]

-
-
- -
-
-__module__ = 'PyHEADTAIL.multipoles.multipoles'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
-class PyHEADTAIL.multipoles.multipoles.ThinSextupole(k2l, *args, **kwargs)
-

Thin sextupolar map.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(k2l, *args, **kwargs)
-

Arguments: -- k2l: normalised strength times the length of the

-
-

sextupole magnet [1/m^2]

-
-
- -
-
-__module__ = 'PyHEADTAIL.multipoles.multipoles'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
-class PyHEADTAIL.multipoles.multipoles.ThinSkewQuadrupole(k1sl, *args, **kwargs)
-

Thin skew quadrupolar map.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(k1sl, *args, **kwargs)
-

Arguments: -- k1sl: normalised strength times the length of the

-
-

skew quadrupole magnet [1/m]

-
-
- -
-
-__module__ = 'PyHEADTAIL.multipoles.multipoles'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.particles.html b/docs/PyHEADTAIL.particles.html deleted file mode 100644 index ef0e7886..00000000 --- a/docs/PyHEADTAIL.particles.html +++ /dev/null @@ -1,1523 +0,0 @@ - - - - - - - PyHEADTAIL.particles package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.particles package

-
-

Submodules

-
-
-

PyHEADTAIL.particles.generators module

-

@author Kevin Li, Michael Schenk, Adrian Oeftiger, Stefan Hegglin -@date 30.03.2015 -@brief module for generating & matching particle distributions

-
-
-class PyHEADTAIL.particles.generators.HEADTAILcoords
-

The classic HEADTAIL phase space.

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.particles.generators', '__doc__': 'The classic HEADTAIL phase space.', 'coordinates': ('x', 'xp', 'y', 'yp', 'z', 'dp'), 'transverse': ('x', 'xp', 'y', 'yp'), 'longitudinal': ('z', 'dp'), '__dict__': <attribute '__dict__' of 'HEADTAILcoords' objects>, '__weakref__': <attribute '__weakref__' of 'HEADTAILcoords' objects>})
-
- -
-
-__module__ = 'PyHEADTAIL.particles.generators'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-coordinates = ('x', 'xp', 'y', 'yp', 'z', 'dp')
-
- -
-
-longitudinal = ('z', 'dp')
-
- -
-
-transverse = ('x', 'xp', 'y', 'yp')
-
- -
- -
-
-class PyHEADTAIL.particles.generators.ParticleGenerator(macroparticlenumber, intensity, charge, mass, circumference, gamma, distribution_x=None, alpha_x=0.0, beta_x=1.0, D_x=None, distribution_y=None, alpha_y=0.0, beta_y=1.0, D_y=None, distribution_z=None, Qs=None, eta=None, *args, **kwargs)
-

Factory to generate Particle instances according to distributions -specified by the parameters in the initializer. -The Particle instance can be generated via the .generate() method

-
-
-__init__(macroparticlenumber, intensity, charge, mass, circumference, gamma, distribution_x=None, alpha_x=0.0, beta_x=1.0, D_x=None, distribution_y=None, alpha_y=0.0, beta_y=1.0, D_y=None, distribution_z=None, Qs=None, eta=None, *args, **kwargs)
-

Specify the distribution for each phase space seperately. Only -the phase spaces for which a distribution has been specified -will be generated. -The transverse phase space can be matched by specifying the Twiss -parameters alpha and/or beta. The dispersion will be take into -account after the beam has been matched longitudinally (if matched). -The longitudinal phase space will only get matched -if both Qs and eta are specified. -:param distribution_[x,y,z]: a function which takes the n_particles

-
-

as a parameter and returns a list-like object containing -a 2D phase space. result[0] should stand for the spatial, -result[1] for the momentum coordinate

-
-
-
Parameters
-
    -
  • alpha_[x,y] – Twiss parameter. The corresponding transverse phase -space gets matched to (alpha_[], beta_[])

  • -
  • beta_[x,y] – Twiss parameter. The corresponding transverse phase -space gets matched to (alpha_[], beta_[])

  • -
  • D_[x,y] – Dispersion. Only valid in combination with a longitudinal -phase space.

  • -
  • Qs – Synchrotron tune. If Qs and eta are specified the -longitudinal phase space gets matched to these parameters.

  • -
  • eta – Slippage factor (zeroth order).If Qs and eta are specified -the longitudinal phase space gets matched to these parameters.

  • -
-
-
-
- -
-
-__module__ = 'PyHEADTAIL.particles.generators'
-
- -
-
-_create_phase_space()
-
- -
-
-_linear_match_phase_space(beam)
-
- -
-
-generate()
-

Returns a particle object with the parameters specified -in the constructor of the Generator object

-
- -
-
-update(beam)
-

Updates the beam coordinates specified in the constructor of the -Generator object. Existing coordinates will be overriden, new ones -will be added. Calls beam.update()

-
- -
- -
-
-PyHEADTAIL.particles.generators.RF_bucket_distribution(rfbucket, sigma_z=None, epsn_z=None, margin=0, distribution_type=<class 'PyHEADTAIL.particles.rfbucket_matching.ThermalDistribution'>, *args, **kwargs)
-

Return a distribution function which generates particles -which are matched to the specified bucket and target emittance or std -Specify only one of sigma_z, epsn_z -:param rfbucket: An object of type RFBucket -:param sigma_z: target std -:param epsn_z: target normalized emittance in z-direction -:param margin: relative margin from the separatrix towards the

-
-

inner stable fix point in which particles are avoided

-
-
-
Parameters
-

distribution_type – longitudinal distribution type from -rfbucket_matching (default is ThermalDistribution which -produces a Gaussian-like matched Boltzmann distribution)

-
-
Returns
-

A matcher with the specified bucket properties (closure)

-
-
Raises
-

ValueError – If neither or both of sigma_z, epsn_z are specified

-
-
-
- -
-
-PyHEADTAIL.particles.generators.cut_distribution(distribution, is_accepted)
-

Generate coordinates according to some distribution inside the -region specified by where the function is_accepted returns 1. -(Wrapper for distributions, based on RF_cut..) -:param distribution: a function which takes the n_particles as a

-
-

parameter and returns a list-like object -containing a 2D phase space. result[0] should -stand for the spatial, result[1] for the momentum -coordinate

-
-
-
Parameters
-

is_accepted – function taking two parameters (z, dp) -[vectorised as arrays] and returning a boolean -specifying whether the coordinate lies -inside the desired phase space volume. A possible -source to provide such an is_accepted function -is the RFBucket.make_is_accepted or -generators.make_is_accepted_within_n_sigma .

-
-
Returns
-

A matcher with the specified bucket properties (closure)

-
-
-
- -
-
-PyHEADTAIL.particles.generators.gaussian2D(emittance_geo)
-

Closure which generates a gaussian distribution with the given -geometrical emittance. Uncorrelated and symmetrical. -:param -emittance_geo: geometrical emittance (normalized emittance/betagamma

-
-

for transverse, emittance*e/(4*pi*p0) for longitudinal)

-
-
-
Returns
-

A function generating a 2d gaussian with the desired parameters

-
-
-
- -
-
-PyHEADTAIL.particles.generators.gaussian2D_asymmetrical(sigma_u, sigma_up)
-

Closure which generates a gaussian distribution with the given -standard deviations. No correlation between u and up -:param - sigma_u: standard deviation of the marginal spatial distribution -:param - sigma_up: standard deviation of the marginal momentum distribution

-
-
Returns
-

A function generating a 2d gaussian with the desired parameters

-
-
-
- -
-
-PyHEADTAIL.particles.generators.generate_Gaussian6DTwiss(macroparticlenumber, intensity, charge, mass, circumference, gamma, alpha_x, alpha_y, beta_x, beta_y, beta_z, epsn_x, epsn_y, epsn_z, dispersion_x=None, dispersion_y=None, limit_n_rms_x=None, limit_n_rms_y=None, limit_n_rms_z=None)
-

Convenience wrapper generating a 6D Gaussian phase space -distribution of macro-particles with the specified parameters:

-
-
Parameters
-
    -
  • macroparticlenumber – number of macro-particles in the beam

  • -
  • intensity – number of represented beam particles

  • -
  • charge – charge per particle [SI unit Coul]

  • -
  • mass – mass per particle [SI unit kg]

  • -
  • circumference – ring circumference (needed for effective models)

  • -
  • gamma – relativistic Lorentz factor

  • -
  • alpha_[x,y] – Twiss parameter. The corresponding transverse phase -space gets matched to (alpha_[], beta_[])

  • -
  • beta_[x,y] – Twiss parameter. The corresponding transverse phase -space gets matched to (alpha_[], beta_[])

  • -
  • beta_z – corresponding longitudinal Twiss parameter -amounting to |eta| * circumference / (2 * pi * Qs)

  • -
  • epsn_x – horizontal normalised RMS emittance [m.rad]

  • -
  • epsn_y – vertical normalised RMS emittance [m.rad]

  • -
  • epsn_z – longitudinal 90% emittance (4x the RMS emittance) [eV.s]

  • -
-
-
-
-
Optional args:

dispersion_x: horizontal optics dispersion value for matching -dispersion_y: vertical optics dispersion value for matching -limit_n_rms_[x,y]: number of RMS amplitudes to cut distribution -limit_n_rms_z: longitudinal number of RMS amplitudes to cut

-
-

distribution (remember that epsn_z is already 4x the RMS -value, i.e. 2 amplitudes)

-
-
-
-

Return a Particles instance with the phase space matched to the -arguments.

-
- -
-
-PyHEADTAIL.particles.generators.import_distribution2D(coords)
-

Return a closure which generates the phase space specified -by the coords list -:param coords: list containing the coordinates to use

-
-

coords[0] is the space, coords[1] the momentum coordinate

-
-
- -
-
-PyHEADTAIL.particles.generators.kv2D(r_u, r_up)
-

Closure which generates a Kapchinski-Vladimirski-type uniform -distribution in 2D. The extent is determined by the arguments.

-
-
Parameters
-
    -
  • r_u (-) – envelope edge radius for the spatial axis

  • -
  • r_up (-) – envelope edge angle for the momentum axis

  • -
-
-
-
- -
-
-PyHEADTAIL.particles.generators.kv4D(r_x, r_xp, r_y, r_yp)
-

Closure which generates a Kapchinski-Vladimirski-type uniform -distribution in 4D. The extent of the phase space ellipses is -determined by the arguments.

-
-
Parameters
-
    -
  • r_x (-) – envelope edge radius for the horizontal spatial axis

  • -
  • r_xp (-) – envelope edge angle for the horizontal momentum axis

  • -
  • r_y (-) – envelope edge radius for the vertical spatial axis

  • -
  • r_yp (-) – envelope edge angle for the vertical momentum axis

  • -
-
-
-
- -
-
-PyHEADTAIL.particles.generators.longitudinal_linear_matcher(Qs, eta, C)
-

Return simple longitudinal matcher -Internally calls the transverse linear matcher with beta=beta_z -and alpha = 0. -beta_z = |eta| * C / (2*pi*Qs)t p -:param Qs: synchroton tune -:param eta: slippage factor (zeroth order),

-
-

is lpha_c - gamma^2 (lpha_c = momentum compaction factor)

-
-
-
Parameters
-

C – circumference

-
-
Returns
-

A matcher with the specified Qs, eta (closure)

-
-
-
- -
-
-PyHEADTAIL.particles.generators.make_is_accepted_within_n_sigma(rms_amplitude=None, limit_n_rms=None, epsn_rms=None)
-

Closure creating an is_accepted function (e.g. for -cut_distribution). The is_accepted function will return whether -the canonical coordinate and momentum pair lies within the phase -space region limited by the action value -limit_n_rms * rms_amplitude. -The closure acts on normalised Floquet space, i.e. do apply this -function to the particles before matching to the optics values.

-

Coordinate u and momentum up are squared to give the action -amplitude -J = u^2 + up^2 . -The amplitude is required to be below the limit to be accepted, -J < limit_n_rms * rms_amplitude. -The usual use case will be generating u and up in normalised Floquet -space (i.e. before the normalised phase space coordinates -get matched to the optics or longitudinal eta and Qs). -Consequently, the 1 sigma RMS reference value -epsn_rms corresponds to the normalised 1 sigma RMS emittance -(i.e. amounting to beam.epsn_x() and beam.epsn_y() in the transverse -plane, and beam.epsn_z()/4 in the longitudinal plane).

-
- -
-
-PyHEADTAIL.particles.generators.transverse_linear_matcher(alpha, beta, dispersion=None)
-

Return a transverse matcher with the desired parameters. -:param alpha: Twiss parameter -:param beta: Twiss parameter -:param dispersion: (optional) only use in combination with a longitudinal

-
-

phase space

-
-

Returns: Matcher(closure) taking two parameters: coords and direction

-
- -
-
-PyHEADTAIL.particles.generators.uniform2D(low, high)
-

Closure which generates a uniform distribution for the space coords. -All momenta are 0.

-
- -
-
-

PyHEADTAIL.particles.particles module

-

Created on 17.10.2014 -@author: Kevin Li, Michael Schenk, Adrian Oeftiger -@copyright CERN

-
-
-class PyHEADTAIL.particles.particles.Particles(macroparticlenumber, particlenumber_per_mp, charge, mass, circumference, gamma, coords_n_momenta_dict={}, *args, **kwargs)
-

Contains the basic properties of a particle ensemble with -their coordinate and conjugate momentum arrays, energy and the like. -Designed to describe beams, electron clouds, …

-
-
-__add__(other)
-

Merges two beams.

-
- -
-
-__init__(macroparticlenumber, particlenumber_per_mp, charge, mass, circumference, gamma, coords_n_momenta_dict={}, *args, **kwargs)
-

The dictionary coords_n_momenta_dict contains the coordinate -and conjugate momenta names and assigns to each the -corresponding array. -e.g.: coords_n_momenta_dict = {‘x’: array(..), ‘xp’: array(..)}

-
- -
-
-__module__ = 'PyHEADTAIL.particles.particles'
-
- -
-
-__radd__(other)
-
- -
-
-_slice_sets = None
-

Set of coordinate and momentum attributes of this Particles -instance.

-
- -
-
-add(coords_n_momenta_dict)
-

Add the coordinates and momenta with their according arrays -to the attributes of the Particles instance (via -self.update(coords_n_momenta_dict)). Does not allow existing -coordinate or momentum attributes to be overwritten.

-
- -
-
-alpha_Twiss_x()
-
- -
-
-alpha_Twiss_y()
-
- -
-
-property beta
-
- -
-
-beta_Twiss_x()
-
- -
-
-beta_Twiss_y()
-
- -
-
-property betagamma
-
- -
-
-property charge_per_mp
-
- -
-
-clean_slices()
-

Erases the SliceSet records of this Particles instance. -Any longitudinal trackers (or otherwise modifying elements) -should use this method to clean the recorded SliceSet objects.

-
- -
-
-coords_n_momenta = None
-

ID of particles in order to keep track of single entries -in the coordinate and momentum arrays.

-
- -
-
-dispersion_x()
-
- -
-
-dispersion_y()
-
- -
-
-effective_normalized_emittance_x(**kwargs)
-
- -
-
-effective_normalized_emittance_y(**kwargs)
-
- -
-
-effective_normalized_emittance_z(**kwargs)
-
- -
-
-epsn_x(**kwargs)
-
- -
-
-epsn_y(**kwargs)
-
- -
-
-epsn_z(**kwargs)
-
- -
-
-extract_slices(slicer, include_non_sliced='if_any', *args, **kwargs)
-

Return a list Particles object with the different slices. -The last element of the list contains particles not assigned to any slice.

-

include_non_sliced : {‘always’, ‘never’, ‘if_any’}, optional -‘always’:

-
-

extra element in the list with particles not belonging to any slice -is always inserted (it can be empty).

-
-
-
‘never’:

extra element in the list with particles not belonging to any slice -is never inserted.

-
-
‘if_any’:

extra element in the list with particles not belonging to any slice -is inserted only if such particles exist.

-
-
-
- -
-
-property gamma
-

Dictionary of SliceSet objects which are retrieved via -self.get_slices(slicer) by a client. Each SliceSet is recorded -only once for a specific longitudinal state of Particles. -Any longitudinal trackers (or otherwise modifying elements) -should clean the saved SliceSet dictionary via -self.clean_slices().

-
- -
-
-gamma_Twiss_x()
-
- -
-
-gamma_Twiss_y()
-
- -
-
-get_coords_n_momenta_dict()
-

Return a dictionary containing the coordinate and conjugate -momentum arrays.

-
- -
-
-get_slices(slicer, *args, **kwargs)
-

For the given Slicer, the last SliceSet is returned. -If there is no SliceSet recorded (i.e. the longitudinal -state has changed), a new SliceSet is requested from the Slicer -via Slicer.slice(self) and stored for future reference.

-

Arguments: -- statistics=True attaches mean values, standard deviations -and emittances to the SliceSet for all planes. -- statistics=[‘mean_x’, ‘sigma_dp’, ‘epsn_z’] only adds the -listed statistics values (can be used to save time). -Valid list entries are all statistics functions of Particles.

-

Note: Requesting statistics after calling get_slices w/o -the statistics keyword results in creating a new SliceSet!

-
- -
-
-property intensity
-
- -
-
-mean_dp(**kwargs)
-
- -
-
-mean_x(**kwargs)
-
- -
-
-mean_xp(**kwargs)
-
- -
-
-mean_y(**kwargs)
-
- -
-
-mean_yp(**kwargs)
-
- -
-
-mean_z(**kwargs)
-
- -
-
-property p0
-
- -
-
-reorder(permutation, except_for_attrs=[])
-

Reorder all particle coordinate and momentum arrays -(in self.coords_n_momenta) and ids except for except_for_attrs -according to the given index array permutation.

-
- -
-
-sigma_dp(**kwargs)
-
- -
-
-sigma_x(**kwargs)
-
- -
-
-sigma_xp(**kwargs)
-
- -
-
-sigma_y(**kwargs)
-
- -
-
-sigma_yp(**kwargs)
-
- -
-
-sigma_z(**kwargs)
-
- -
-
-sort_for(attr)
-

Sort the named particle attribute (coordinate / momentum) -array and reorder all particles accordingly.

-
- -
-
-update(coords_n_momenta_dict)
-

Assigns the keys of the dictionary coords_n_momenta_dict as -attributes to this Particles instance and puts the corresponding -values. Pretty much the same as dict.update({…}) . -Attention: overwrites existing coordinate / momentum attributes.

-
- -
-
-property z_beamframe
-
- -
- -
-
-

PyHEADTAIL.particles.rfbucket_matching module

-

@author Kevin Li, Adrian Oeftiger, Stefan Hegglin -@date 16.06.2017 -@brief module for matching longitudinal particle distributions to an RFBucket instance

-
-
-class PyHEADTAIL.particles.rfbucket_matching.ParabolicDistribution(H, Hmax=None, Hcut=0, H0=1)
-

The parabolic profile distribution is a specific case of the -present implementation of the q-Gaussian distribution for n = 1/2, -psi ~ sqrt(1 - H/H0). -For a quadratic harmonic oscillator Hamiltonian this distribution -provides a parabolic line density.

-
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-_psi(H)
-

Define the distribution value for the given H, the output -lies in the interval [0,1]. This is the central function to -be implemented by stationary distributions.

-
- -
- -
-
-class PyHEADTAIL.particles.rfbucket_matching.QGaussianDistribution(H, Hmax=None, Hcut=0, H0=1)
-

Specific Tsallis q-Gaussian distribution for q=3/5 for now, -leading to psi ~ (1 - H/H0)^2, this may be generalised.

-
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-_psi(H)
-

Define the distribution value for the given H, the output -lies in the interval [0,1]. This is the central function to -be implemented by stationary distributions.

-
- -
-
-n = 2
-
- -
- -
-
-class PyHEADTAIL.particles.rfbucket_matching.RFBucketMatcher(rfbucket, distribution_type=None, sigma_z=None, epsn_z=None, verbose_regeneration=False, psi=None, *args, **kwargs)
-
-
-__init__(rfbucket, distribution_type=None, sigma_z=None, epsn_z=None, verbose_regeneration=False, psi=None, *args, **kwargs)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-_compute_emittance(rfbucket, psi)
-
- -
-
-_compute_sigma(rfbucket, psi)
-
- -
-
-generate(macroparticlenumber, cutting_margin=0)
-

Generate a 2d phase space of n_particles particles randomly distributed -according to the particle distribution function psi within the region -[xmin, xmax, ymin, ymax].

-
- -
-
-get_moment_integrators()
-

Return moment integrators from -cobra_functions.pdf_integrators_2d according to the chosen -self.integrationmethod. Allows to change integration method -for RFBucket matching.

-
- -
-
-integrationmethod = 'quad'
-
- -
-
-linedensity(xx, quad_type=<function fixed_quad>)
-
- -
-
-psi_for_bunchlength_newton_method(sigma)
-
- -
-
-psi_for_emittance_newton_method(epsn_z)
-
- -
- -
-
-class PyHEADTAIL.particles.rfbucket_matching.StationaryDistribution(H, Hmax=None, Hcut=0, H0=1)
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.particles.rfbucket_matching', '__init__': <function StationaryDistribution.__init__>, '_psi': <function StationaryDistribution._psi>, 'function': <function StationaryDistribution.function>, '__dict__': <attribute '__dict__' of 'StationaryDistribution' objects>, '__weakref__': <attribute '__weakref__' of 'StationaryDistribution' objects>, '__doc__': None})
-
- -
-
-__init__(H, Hmax=None, Hcut=0, H0=1)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-abstract _psi(H)
-

Define the distribution value for the given H, the output -lies in the interval [0,1]. This is the central function to -be implemented by stationary distributions.

-
- -
-
-function(z, dp)
-
- -
- -
-
-class PyHEADTAIL.particles.rfbucket_matching.ThermalDistribution(H, Hmax=None, Hcut=0, H0=1)
-

Thermal Boltzmann distribution psi ~ exp(-H/H0). -For a quadratic harmonic oscillator Hamiltonian this gives the -bi-Gaussian phase space distribution.

-
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-_psi(H)
-

Define the distribution value for the given H, the output -lies in the interval [0,1]. This is the central function to -be implemented by stationary distributions.

-
- -
- -
-
-class PyHEADTAIL.particles.rfbucket_matching.WaterbagDistribution(H, Hmax=None, Hcut=0, H0=1)
-

The waterbag distribution has a constant Hamiltonian distribution -until a cutoff, psi ~ Theta(H - H0) with Theta the Heaviside -step function.

-
-
-__module__ = 'PyHEADTAIL.particles.rfbucket_matching'
-
- -
-
-_psi(H)
-

Define the distribution value for the given H, the output -lies in the interval [0,1]. This is the central function to -be implemented by stationary distributions.

-
- -
- -
-
-

PyHEADTAIL.particles.slicing module

-
-
@authors: Hannes Bartosik,

Stefan Hegglin, -Giovanni Iadarola, -Kevin Li, -Adrian Oeftiger, -Michael Schenk

-
-
-

@date: 01/10/2014 -@copyright CERN

-
-
-exception PyHEADTAIL.particles.slicing.ModeIsUniformCharge(message)
-
-
-__init__(message)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.particles.slicing'
-
- -
-
-__str__()
-

Return str(self).

-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-class PyHEADTAIL.particles.slicing.SliceSet(z_bins, slice_index_of_particle, mode, n_macroparticles_per_slice=None, beam_parameters={})
-

Defines a set of longitudinal slices. It’s a blueprint or photo -of a beam’s longitudinal profile. It knows where the slices are -located, how many and which particles there are in which slice. All -its attributes refer to the state of the beam at creation time of -the SliceSet. Hence, it must never be updated with new -distributions, rather, a new SliceSet needs to be created.

-
-
-__init__(z_bins, slice_index_of_particle, mode, n_macroparticles_per_slice=None, beam_parameters={})
-

Is intended to be created by the Slicer factory method. -A SliceSet is given a set of intervals defining the slicing -region and the histogram over the thereby defined slices.

-

beam_parameters is a dictionary containing certain beam -parameters to be recorded with this SliceSet. -(e.g. beta being saved via beam_parameters[‘beta’] = beam.beta)

-
- -
-
-__module__ = 'PyHEADTAIL.particles.slicing'
-
- -
-
-age = None
-

Array of z values of each bin, goes from the left bin edge -of the first bin to the right bin edge of the last bin.

-
- -
-
-property charge_per_slice
-

Array of slice charges, i.e. summing up all the -particle charges for each slice.

-
- -
-
-convert_to_particles(slice_array, empty_particles=None)
-

Convert slice_array with entries for each slice to a -particle array with the respective entry of each particle -given by its slice_array value via the slice that the -particle belongs to.

-
- -
-
-convert_to_time(z)
-

Convert longitudinal quantity from length to time units using -the relativistic beta saved at creation time of the SliceSet.

-
- -
-
-lambda_bins(sigma=None, smoothen=True)
-

Line charge density with respect to bins along the slices.

-
- -
-
-lambda_prime_bins(sigma=None, smoothen_before=True, smoothen_after=True)
-

Return array of length (n_slices - 1) containing -the derivative of the line charge density lambda -w.r.t. the slice bins while smoothing via a Gaussian filter. -(i.e. the smoothened derivative of the n_macroparticles array -times the macroparticle charge.)

-
- -
-
-lambda_prime_z(z, sigma=None, smoothen_before=True, smoothen_after=True)
-

Line charge density derivative with respect to z along -the slices.

-
- -
-
-lambda_z(z=None, sigma=None, smoothen=True)
-

Line charge density with respect to z along the slices. -If z is None, return the line charge density along the slice -centres.

-
- -
-
-mode = None
-

Numpy array containing the number of macroparticles in each -slice.

-
- -
-
-property n_macroparticles_per_slice
-

Slice distribution, i.e. number of macroparticles in each -slice.

-
- -
-
-property n_slices
-
- -
-
-property particle_indices_by_slice
-

Array of particle indices arranged / sorted according to -their slice affiliation.

-
- -
-
-particle_indices_of_slice(slice_index)
-

Return an array of particle indices which are located in the -slice defined by the given slice_index.

-
- -
-
-property particles_outside_cuts
-

All particle indices which are situated outside the slicing -region defined by [z_cut_tail, z_cut_head).

-
- -
-
-property particles_within_cuts
-

All particle indices which are situated within the slicing -region defined by [z_cut_tail, z_cut_head).

-
- -
-
-property particles_within_cuts_slice
-

Returns a continous slice(first,last,1) of particles indices -between [z_cut_tail, z_cut_head] -Required for gpuarrays slicing syntax, i.e. x[slice] += 2 -Only use when beam is sorted!

-
- -
-
-property pidx_begin
-

particle index of the first particle within the sliceset region

-
- -
-
-property pidx_end
-

particle index of the last+1 particle within the sliceset region

-
- -
-
-slice_index_of_particle = None
-

How is the slicing done? For the moment it is either -‘uniform_charge’ or ‘uniform_bin’.

-
- -
-
-property slice_positions
-

Position of the respective slice start within the array -self.particle_indices_by_slice .

-
- -
-
-property slice_widths
-

Array of the widths of the slices.

-
- -
-
-property smoothing_sigma
-
- -
-
-z_bins = None
-

Array of slice indices for each particle, positions (indices) -are the same as in beam.z .

-
- -
-
-property z_centers
-
- -
-
-property z_cut_head
-
- -
-
-property z_cut_tail
-
- -
- -
-
-class PyHEADTAIL.particles.slicing.Slicer(*args, **kwargs)
-

Slicer class that controls longitudinal binning of a beam. -Factory for SliceSet objects.

-
-
-__abstractmethods__ = frozenset({'compute_sliceset_kwargs'})
-
- -
-
-__eq__(other)
-

Return self==value.

-
- -
-
-__hash__()
-

Identifies different instantiations of Slicer objects via -their configuration (instead of their instance ID).

-
- -
-
-__module__ = 'PyHEADTAIL.particles.slicing'
-
- -
-
-__ne__(other)
-

Return self!=value.

-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_eff_epsn_x(sliceset, beam, **kwargs)
-
- -
-
-_eff_epsn_y(sliceset, beam, **kwargs)
-
- -
-
-_epsn(sliceset, u, up, dp, **kwargs)
-
- -
-
-_epsn_x(sliceset, beam, **kwargs)
-
- -
-
-_epsn_y(sliceset, beam, **kwargs)
-
- -
-
-_epsn_z(sliceset, beam, **kwargs)
-
- -
-
-_mean(sliceset, u, **kwargs)
-
- -
-
-_mean_dp(sliceset, beam, **kwargs)
-
- -
-
-_mean_x(sliceset, beam, **kwargs)
-
- -
-
-_mean_xp(sliceset, beam, **kwargs)
-
- -
-
-_mean_y(sliceset, beam, **kwargs)
-
- -
-
-_mean_yp(sliceset, beam, **kwargs)
-
- -
-
-_mean_z(sliceset, beam, **kwargs)
-
- -
-
-_sigma(sliceset, u, **kwargs)
-
- -
-
-_sigma_dp(sliceset, beam, **kwargs)
-
- -
-
-_sigma_x(sliceset, beam, **kwargs)
-
- -
-
-_sigma_y(sliceset, beam, **kwargs)
-
- -
-
-_sigma_z(sliceset, beam, **kwargs)
-
- -
-
-add_statistics(**kwargs)
-
- -
-
-abstract compute_sliceset_kwargs(beam)
-

Return argument dictionary to create a new -SliceSet object according to the saved configuration. -This method defines the slicing behaviour of inheriting -Slicer implementations.

-
- -
-
-property config
-
- -
-
-static extract_beam_parameters(beam)
-

Return a dictionary of beam parameters to be stored -in a SliceSet instance. (such as beam.beta etc.)

-
- -
-
-get_long_cuts(beam)
-

Return boundaries of slicing region, -(z_cut_tail, z_cut_head). If they have been set at -instantiation, self.z_cuts is returned. -If n_sigma_z is given, a cut of -n_sigma_z * beam.sigma_z to the left and to the right -respectively is applied, otherwise the longitudinally first and -last particle define the full region.

-
- -
-
-slice(beam, *args, **kwargs)
-

Return a SliceSet object according to the saved -configuration. Generate it using the keywords of the -self.compute_sliceset_kwargs(beam) method. -Defines interface to create SliceSet instances -(factory method).

-

Arguments: -- statistics=True attaches mean values, standard deviations -and emittances to the SliceSet for all planes. -- statistics=[‘mean_x’, ‘sigma_dp’, ‘epsn_z’] only adds the -listed statistics values (can be used to save time). -Valid list entries are all statistics functions of Particles.

-
- -
-
-update_slices(beam)
-

non-existent anymore!

-
- -
- -
-
-class PyHEADTAIL.particles.slicing.UniformBinSlicer(n_slices, n_sigma_z=None, z_cuts=None, z_sample_points=None, *args, **kwargs)
-

Slices with respect to uniform bins along the slicing region.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(n_slices, n_sigma_z=None, z_cuts=None, z_sample_points=None, *args, **kwargs)
-

Return a UniformBinSlicer object. Set and store the -corresponding slicing configuration in self.config. -Note that either n_sigma_z or z_cuts and/or z_sampling_point -can be set. If both are given, a ValueError will be raised.

-
- -
-
-__module__ = 'PyHEADTAIL.particles.slicing'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_get_slicing_from_z_sample_points(z_sample_points, z_cuts=None)
-

Alternative slicing function for UniformBinSlicer. The function -takes a given array of sampling points and ensures that the -slice centers lie at those sampling points. If z_cuts is -given and is beyond the sampling points, it furthermore extends -the given sampling points at the same sampling frequency to -include the range given by z_cuts. Very useful if one wants -to ensure that certain points or regions of a wakefield are -included or correctl sampled.

-
- -
-
-compute_sliceset_kwargs(beam)
-

Return argument dictionary to create a new SliceSet -according to the saved configuration for -uniformly binned SliceSet objects.

-
- -
- -
-
-class PyHEADTAIL.particles.slicing.UniformChargeSlicer(n_slices, n_sigma_z=None, z_cuts=None, *args, **kwargs)
-

Slices with respect to uniform charge for each bin along the -slicing region.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(n_slices, n_sigma_z=None, z_cuts=None, *args, **kwargs)
-

Return a UniformChargeSlicer object. Set and store the -corresponding slicing configuration in self.config . -Note that either n_sigma_z or z_cuts can be set. If both are -given, a ValueError will be raised.

-
- -
-
-__module__ = 'PyHEADTAIL.particles.slicing'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-compute_sliceset_kwargs(beam)
-

Return argument dictionary to create a new SliceSet -according to the saved configuration for a uniform charge -distribution along the bins.

-
- -
- -
-
-PyHEADTAIL.particles.slicing.clean_slices(long_track_method)
-

Adds the beam.clean_slices() to any track(beam) method of -longitudinal elements (elements that change beam.z, the -longitudinal position of any particles).

-
- -
-
-PyHEADTAIL.particles.slicing.make_int32(array)
-
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.radiation.html b/docs/PyHEADTAIL.radiation.html deleted file mode 100644 index 5b2743ab..00000000 --- a/docs/PyHEADTAIL.radiation.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - PyHEADTAIL.radiation package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.radiation package

-
-

Submodules

-
-
-

PyHEADTAIL.radiation.radiation module

-

@author Andrea Passarelli -@date 23. February 2016 -@brief Synchrotron radiation damping effect in transverse and longitudinal planes. -@copyright CERN

-
-
-class PyHEADTAIL.radiation.radiation.SynchrotronRadiationLongitudinal(eq_sig_dp, damping_time_z_turns, E_loss_eV)
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.radiation.radiation', '__init__': <function SynchrotronRadiationLongitudinal.__init__>, 'track': <function SynchrotronRadiationLongitudinal.track>, '__dict__': <attribute '__dict__' of 'SynchrotronRadiationLongitudinal' objects>, '__weakref__': <attribute '__weakref__' of 'SynchrotronRadiationLongitudinal' objects>, '__doc__': None})
-
- -
-
-__init__(eq_sig_dp, damping_time_z_turns, E_loss_eV)
-

We are assuming no alpha, no dispersion, etc.

-
- -
-
-__module__ = 'PyHEADTAIL.radiation.radiation'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-track(bunch)
-
- -
- -
-
-class PyHEADTAIL.radiation.radiation.SynchrotronRadiationTransverse(eq_emit_x, eq_emit_y, damping_time_x_turns, damping_time_y_turns, beta_x, beta_y)
-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.radiation.radiation', '__init__': <function SynchrotronRadiationTransverse.__init__>, 'track': <function SynchrotronRadiationTransverse.track>, '__dict__': <attribute '__dict__' of 'SynchrotronRadiationTransverse' objects>, '__weakref__': <attribute '__weakref__' of 'SynchrotronRadiationTransverse' objects>, '__doc__': None})
-
- -
-
-__init__(eq_emit_x, eq_emit_y, damping_time_x_turns, damping_time_y_turns, beta_x, beta_y)
-

We are assuming no alpha, no dispersion, etc.

-
- -
-
-__module__ = 'PyHEADTAIL.radiation.radiation'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-track(bunch)
-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.rfq.html b/docs/PyHEADTAIL.rfq.html deleted file mode 100644 index c0b7ec40..00000000 --- a/docs/PyHEADTAIL.rfq.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - - PyHEADTAIL.rfq package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.rfq package

-
-

Submodules

-
-
-

PyHEADTAIL.rfq.rfq module

-

This module contains the Python implementation of a pillbox-cavity RF -quadrupole - referred to as the RFQ - as it was proposed by Alexej -Grudiev in ‘Radio frequency quadrupole for Landau damping in -accelerators’, Phys. Rev. Special Topics - Accelerators and Beams 17, -011001 (2014) [1]. Similar to a ‘Landau’ octupole magnet, this device -is intended to introduce an incoherent tune spread such that Landau -damping can prevent the growth of transverse collective instabilities.

-

The formulae that are used are based on [1] and make use of the thin- -lens approximation. On the one hand, the RFQ introduces a longitudinal -spread of the betatron frequency and on the other hand, a transverse -spread of the synchrotron frequency.

-

The effect in the transverse plane is modelled in two different -ways

-
    -
  1. RFQ as a detuner acting directly on each particles’ betatron -tunes,

  2. -
  3. RFQ as a localized kick acting on each particles’ momenta xp -and yp.

  4. -
-

The effect in the longitudinal plane is always modelled as a localized -kick, i.e. a change in a particle’s normalized momentum dp. For model -(II), the incoherent betatron detuning is not applied directly, but is -a consequence of the change in momenta xp and yp.

-

@author Michael Schenk, Adrian Oeftiger -@date July, 10th 2014 -@brief Python implementation of a pillbox cavity RF quadrupole for

-
-

Landau damping.

-
-

@copyright CERN

-
-
-class PyHEADTAIL.rfq.rfq.RFQKick
-

Python base class to describe the RFQ element in the -localized kick model for both the transverse and the -longitudinal coordinates.

-
-
-__abstractmethods__ = frozenset({'track'})
-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.rfq.rfq', '__doc__': 'Python base class to describe the RFQ element in the\n localized kick model for both the transverse and the\n longitudinal coordinates.\n ', 'track': <function RFQKick.track>, '__dict__': <attribute '__dict__' of 'RFQKick' objects>, '__weakref__': <attribute '__weakref__' of 'RFQKick' objects>, '__abstractmethods__': frozenset({'track'}), '_abc_impl': <_abc_data object>})
-
- -
-
-__module__ = 'PyHEADTAIL.rfq.rfq'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract track(beam)
-
- -
- -
-
-class PyHEADTAIL.rfq.rfq.RFQLongitudinalKick(v_2, omega, phi_0)
-

Python implementation of the RFQ element acting on the -particles’ longitudinal coordinate dp.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(v_2, omega, phi_0)
-

An RFQ element is fully characterized by the parameters -v_2: quadrupolar expansion coefficient of the

-
-

accelerating voltage (~strength of the RFQ), in -[V/m^2].

-
-

omega: Angular frequency of the RF wave, in [rad/s]. -phi_0: Constant phase offset wrt. bunch center (z=0), in

-
-

[rad].

-
-
- -
-
-__module__ = 'PyHEADTAIL.rfq.rfq'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

The formula used to describe the longitudinal kick is given -by

-
-
-
Delta p_z = -(x^2 - y^2) (e v_2 / (beta c)) *

sin(omega z / (beta c) + phi_0).

-
-
-
-
- -
- -
-
-class PyHEADTAIL.rfq.rfq.RFQTransverseDetuner(v_2, omega, phi_0, beta_x_RFQ, beta_y_RFQ)
-

Collection class to contain/manage the segment-wise defined -RFQ elements RFQTransverseDetunerSegment acting on the -betatron tunes (detuner model of the RFQ). This is a pure -Python class and it derives from the DetunerCollection class -defined in the module PyHEADTAIL.trackers.detuners.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(v_2, omega, phi_0, beta_x_RFQ, beta_y_RFQ)
-
-
An RFQ element is fully characterized by the parameters
-
v_2: quadrupolar expansion coefficient of the accelerating

voltage (~strength of the RFQ), in [V/m^2]. One-turn -value.

-
-
-

omega: Angular frequency of the RF wave, in [rad/s]. -phi_0: Constant phase offset wrt. bunch center (z=0), in

-
-

[rad].

-
-
-
-

beta_x_RFQ and beta_y_RFQ are the beta functions at the -position of the RFQ, although in the detuner model of the RFQ, -the RFQ should not actually be understood as being localized.

-
- -
-
-__module__ = 'PyHEADTAIL.rfq.rfq'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-generate_segment_detuner(dmu_x, dmu_y, **kwargs)
-

Instantiate a RFQTransverseSegmentDetuner for the -specified segment of the accelerator ring. -Note that the bare betatron -phase advances over the current segment, dmu_x and dmu_y, are -given as relative values, i.e. in units of the overall phase -advance around the whole accelerator (the betatron tune). -The method is called by the TransverseMap object which manages -the creation of a detuner for every defined segment.

-
- -
- -
-
-class PyHEADTAIL.rfq.rfq.RFQTransverseDetunerSegment(dapp_xz, dapp_yz, omega, phi_0)
-

Python implementation of the RFQ element acting directly on the -particles’ betatron tunes (i.e. RFQ detuner model).

-
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.rfq.rfq', '__doc__': "Python implementation of the RFQ element acting directly on the\n particles' betatron tunes (i.e. RFQ detuner model).\n ", '__init__': <function RFQTransverseDetunerSegment.__init__>, 'detune': <function RFQTransverseDetunerSegment.detune>, '__dict__': <attribute '__dict__' of 'RFQTransverseDetunerSegment' objects>, '__weakref__': <attribute '__weakref__' of 'RFQTransverseDetunerSegment' objects>})
-
- -
-
-__init__(dapp_xz, dapp_yz, omega, phi_0)
-

Creates an instance of the RFQTransverseDetunerSegment -class. The RFQ is characterized by

-
-

omega: Angular frequency of the RF wave, in [rad/s]. -phi_0: Constant phase offset wrt. bunch center (z=0), in

-
-

[rad].

-
-
-
dapp_xz: Strength of detuning in the horizontal plane, scaled

to the relative bare betatron phase advance in x.

-
-
dapp_yz: Strength of detuning in the vertical plane, scaled

to the relative bare betatron phase advance in y.

-
-
-
-
- -
-
-__module__ = 'PyHEADTAIL.rfq.rfq'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-detune(beam)
-

Calculates for each particle its betatron detuning -dQ_x, dQ_y according to formulae taken from [1] (see -above).

-
-

dQ_x = dapp_xz / p * cos(omega / (beta c) z + phi_0) -dQ_y = dapp_yz / p * cos(omega / (beta c) z + phi_0)

-
-
-
with

dapp_xz = beta_x_RFQ * v_2 * e / (2 Pi * omega) -dapp_yz = -beta_y_RFQ * v_2 * e / (2 Pi * omega)

-
-
-

and p the particle momentum p = (1 + dp) p0. -(Probably, it would make sense to approximate p by p0 for better -performance).

-
- -
- -
-
-class PyHEADTAIL.rfq.rfq.RFQTransverseKick(v_2, omega, phi_0)
-

Python implementation of the RFQ element acting on the -particles’ transverse coordinates (i.e. localized kick -model).

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(v_2, omega, phi_0)
-

An RFQ element is fully characterized by the parameters -v_2: quadrupolar expansion coefficient of the

-
-

accelerating voltage (~strength of the RFQ), in -[V/m^2].

-
-

omega: Angular frequency of the RF wave, in [rad/s]. -phi_0: Constant phase offset wrt. bunch center (z=0), in

-
-

[rad].

-
-
- -
-
-__module__ = 'PyHEADTAIL.rfq.rfq'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

The formula that describes the transverse kick experienced -by an ultra-relativistic particle traversing the RFQ -longitudinally is based on the thin-lens approximation

-
-
-
Delta p_x = -x*(2 e v_2 / omega) *

cos(omega z / (beta c) + phi_0),

-
-
Delta p_y = y*(2 e v_2 / omega) *

cos(omega z / (beta c) + phi_0).

-
-
-
-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.spacecharge.html b/docs/PyHEADTAIL.spacecharge.html deleted file mode 100644 index 180385fd..00000000 --- a/docs/PyHEADTAIL.spacecharge.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - PyHEADTAIL.spacecharge package — PyHEADTAIL documentation - - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.spacecharge package

-
-

Submodules

-
-
-

PyHEADTAIL.spacecharge.pypic_factory module

-
-
-

PyHEADTAIL.spacecharge.pypic_spacecharge module

-
-
-

PyHEADTAIL.spacecharge.spacecharge module

-

@authors: Adrian Oeftiger -@date: 17/04/2015

-
-
-class PyHEADTAIL.spacecharge.spacecharge.LongSpaceCharge(slicer, pipe_radius, length, n_slice_sigma=3, *args, **kwargs)
-

Contains longitudinal space charge (SC) via Chao’s expression:

-

dp’ = - e^2 * g * lambda’(z) / (2 * pi * eps_0 * gamma^2 * p_0)

-

cf. the original HEADTAIL version.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(slicer, pipe_radius, length, n_slice_sigma=3, *args, **kwargs)
-

Arguments: -- pipe_radius is the the radius of the vacuum pipe in metres. -- length is an s interval (in metres) along which the SC force -is integrated. Usually you want to set this to circumference -in conjunction with the LongitudinalOneTurnMap RFSystems. -- n_slice_sigma indicates the number of slices taken as a -sigma for the Gaussian kernel that smoothens the line charge -density derivative (see SliceSet.lambda_prime_bins for more -info).

-
- -
-
-__module__ = 'PyHEADTAIL.spacecharge.spacecharge'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_gfactor0(beam)
-

Geometry factor for circular vacuum pipe.

-
- -
-
-static _prefactor(beam)
-
- -
-
-directSC = 0.67
-
- -
-
-make_force(beam)
-

Return the electric force field due to space charge -of the given SliceSet instance as a function of z -in units of Coul*Volt/metre.

-
- -
-
-make_potential(beam)
-

Return the electric potential energy due to space charge -of the given SliceSet instance as a function of z -in units of Coul*Volt.

-
- -
-
-track(beam)
-

Add the longitudinal space charge contribution to the beam’s -dp kick.

-
- -
- -
-
-class PyHEADTAIL.spacecharge.spacecharge.TransverseGaussianSpaceCharge(slicer, length, sig_check=True, other_efieldn=None)
-

Contains transverse space charge for a Gaussian configuration. -Applies the Bassetti-Erskine electric field expression slice-wise -for each particle centred around the slice centre.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(slicer, length, sig_check=True, other_efieldn=None)
-

Arguments: -- slicer determines the slicing parameters for the slices over -which the Bassetti-Erskine electric field expression is applied, -given a slicer with n_slices == 1, you can apply a -longitudinally averaged kick over the whole beam. -- length is an s interval along which the space charge force -is integrated. -- sig_check exchanges x and y quantities for sigma_x < sigma_y -and applies the round beam formula for sigma_x == sigma_y . -sig_check defaults to True and should not usually be False. -- other_efieldn can be used to use a different implementation of -the charge-normalised electric field expression (there are four -different implementations to choose from in this class: -_efieldn_mit, _efield_mitmod, _efieldn_koelbig, -_efieldn_pyecloud; in order of computational time consumption)

-
- -
-
-__module__ = 'PyHEADTAIL.spacecharge.spacecharge'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-static _efieldn_koelbig(x, y, sig_x, sig_y)
-

The charge-normalised electric field components of a -two-dimensional Gaussian charge distribution according to -M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06.

-

Return (E_x / Q, E_y / Q).

-

Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. -For convergence reasons of the erfc, use only x > 0 and y > 0.

-

Uses CERN library from K. Koelbig.

-
- -
-
-static _efieldn_mit(x, y, sig_x, sig_y)
-

The charge-normalised electric field components of a -two-dimensional Gaussian charge distribution according to -M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06.

-

Return (E_x / Q, E_y / Q).

-

Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. -For convergence reasons of the erfc, use only x > 0 and y > 0.

-

Uses FADDEEVA C++ implementation from MIT (via SciPy >= 0.13.0).

-
- -
-
-static _efieldn_mitmod(x, y, sig_x, sig_y)
-

The charge-normalised electric field components of a -two-dimensional Gaussian charge distribution according to -M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06.

-

Return (E_x / Q, E_y / Q).

-

Assumes sig_x > sig_y and mean_x == 0 as well as mean_y == 0. -For convergence reasons of the erfc, use only x > 0 and y > 0.

-

Uses erfc C++ implementation from MIT (via SciPy >= 0.13.0) -and calculates wofz (FADDEEVA function) explicitely.

-
- -
-
-static _efieldn_pyecloud(xin, yin, sigmax, sigmay)
-

The charge-normalised electric field components of a -two-dimensional Gaussian charge distribution according to -M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06.

-

Return (E_x / Q, E_y / Q).

-

Effective copy of PyECLOUD.BassErsk.BassErsk implementation.

-
- -
-
-static _efieldn_round(x, y, sig_r)
-

Return (E_x / Q, E_y / Q) for a round distribution -with sigma_x == sigma_y == sig_r .

-
- -
-
-static _sig_sqrt(sig_x, sig_y)
-
- -
-
-absolute_threshold = 1e-10
-
- -
-
-static add_sigma_check(efieldn)
-

Wrapper for a normalised electric field function.

-

Adds the following actions before calculating the field: -- exchange x and y quantities if sigma_x < sigma_y -- apply round beam field formula when sigma_x close to sigma_y

-
- -
-
-get_efieldn(xr, yr, mean_x, mean_y, sig_x, sig_y)
-

The charge-normalised electric field components of a -two-dimensional Gaussian charge distribution according to -M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06.

-

Return (E_x / Q, E_y / Q).

-
- -
-
-ratio_threshold = 0.001
-

Threshold for absolute transverse beam size difference -below which the beam is assumed to be round: -abs(sig_y - sig_x) < absolute_threshold ==> round beam

-
- -
-
-track(beam)
-

Add the transverse space charge contribution to the beam’s -transverse kicks.

-
- -
-
-static wfun(z)
-

FADDEEVA function as implemented in PyECLOUD, vectorised.

-
- -
- -
-
-

PyHEADTAIL.spacecharge.transverse_spacecharge module

-
-
-class PyHEADTAIL.spacecharge.transverse_spacecharge.TransverseSpaceCharge(L_interaction, slicer, pyPICsolver, flag_clean_slices=False, *args, **kwargs)
-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(L_interaction, slicer, pyPICsolver, flag_clean_slices=False, *args, **kwargs)
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.spacecharge.transverse_spacecharge'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-get_beam_x(beam)
-
- -
-
-get_beam_y(beam)
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/PyHEADTAIL.trackers.html b/docs/PyHEADTAIL.trackers.html deleted file mode 100644 index 121dd02d..00000000 --- a/docs/PyHEADTAIL.trackers.html +++ /dev/null @@ -1,1659 +0,0 @@ - - - - - - - PyHEADTAIL.trackers package — PyHEADTAIL documentation - - - - - - - - - - - - - - -
-
-
-
- -
-

PyHEADTAIL.trackers package

-
-

Submodules

-
-
-

PyHEADTAIL.trackers.detuners module

-

Module to describe devices/effects, such as chromaticity or octupole -magnets, leading to an incoherent detuning of the particles in the beam. -A detuner is (in general) present along the full circumference of the -accelerator and the detuning is applied proportionally along the ring.

-

The structure of this module is such that there is a DetunerCollection -object for each type of detuning effect present in the accelerator. It -provides a description of the detuning along the full circumference. The -accelerator is divided into segments (1 or more) and the -DetunerCollection can create and store a SegmentDetuner object of the -given type of detuning for each of these segments. A SegmentDetuner -object has a detune(beam) method that defines how the phase advance of -each particle in the beam is changed according to the formula describing -the effect.

-

@author Kevin Li, Michael Schenk, Adrian Oeftiger -@date 23. June 2014 -@brief Module to describe elements/effects in an accelerator leading to

-
-

an incoherent detuning.

-
-

@copyright CERN

-
-
-class PyHEADTAIL.trackers.detuners.AmplitudeDetuning(app_x, app_y, app_xy)
-

Collection class to contain/manage the segment-wise defined -amplitude detuning elements (octupoles). They are stored in the -self.segment_detuners list.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(app_x, app_y, app_xy)
-

Return an instance of the AmplitudeDetuning -DetunerCollection class. The coefficients app_x, app_y, app_xy -are the detuning strengths (one-turn values). Note that the -convention used here is such that they are NOT normalized to -the reference momentum beam.p0. The normalization to beam.p0 -is done only in the detune(beam) method of the -AmplitudeDetuningSegment.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-classmethod from_octupole_currents_LHC(i_focusing, i_defocusing)
-

Calculate the constants of proportionality app_x, app_y and -app_xy (== app_yx) for the amplitude detuning introduced by the -LHC octupole magnets (aka. LHC Landau octupoles) from the -electric currents i_focusing [A] and i_defocusing [A] flowing -through the magnets. The maximum current is given by -i_max = +/- 550 [A]. The values app_x, app_y, app_xy obtained -from the formulae are proportional to the strength of detuning -for one complete turn around the accelerator, i.e. one-turn -values.

-

The calculation is based on formulae (3.6) taken from ‘The LHC -transverse coupled-bunch instability’ by N. Mounet, EPFL PhD -Thesis, 2012. Values (hard-coded numbers below) are valid for -LHC Landau octupoles before LS1. Beta functions in x and y are -correctly taken into account. Note that here, the values of -app_x, app_y and app_xy are not normalized to the reference -momentum p0. This is done only during the calculation of the -detuning in the corresponding detune method of the -AmplitudeDetuningSegment.

-

More detailed explanations and references on how the formulae -were obtained are given in the PhD thesis (pg. 85ff) cited -above.

-
- -
-
-generate_segment_detuner(dmu_x, dmu_y, **kwargs)
-

Instantiate an AmplitudeDetuningSegment for the specified -segment of the accelerator ring. Note that the bare betatron -phase advances over the current segment, dmu_x and dmu_y, are -given as relative values, i.e. in units of the overall phase -advance around the whole accelerator (the betatron tune).

-
- -
- -
-
-class PyHEADTAIL.trackers.detuners.AmplitudeDetuningSegment(dapp_x, dapp_y, dapp_xy, dapp_yx, alpha_x, beta_x, alpha_y, beta_y)
-

Detuning object for a segment of the accelerator ring to -describe amplitude detuning (introduced by octupoles).

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(dapp_x, dapp_y, dapp_xy, dapp_yx, alpha_x, beta_x, alpha_y, beta_y)
-

Return an instance of an AmplitudeDetuningSegment by passing -the coefficients of detuning strength dapp_x, dapp_y, dapp_xy, -dapp_yx (scaled to the segment length. NOT normalized to -beam.p0 yet). -Note that beta_{x,y} are only used to correctly calculate the -transverse actions J_{x,y}. Although they have an influence on -the strength of detuning, they have no actual effect on the -integrated strength of the octupoles -(dapp_x, dapp_y, dapp_xy, dapp_yx).

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-detune(beam)
-

Linear amplitude detuning formula, usually used for detuning -introduced by octupoles. The normalization of dapp_x, dapp_y, -dapp_xy, dapp_yx to the reference momentum is done here (compare -documentation of AmplitudeDetuning class). -J_x and J_y resp. denote the horizontal and vertical action of -a specific particle.

-
- -
- -
-
-class PyHEADTAIL.trackers.detuners.Chromaticity(Qp_x, Qp_y)
-

Collection class to contain/manage the segment-wise defined -elements that introduce detuning as a result of chromaticity -effects. They are stored in the self.segment_detuners list.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(Qp_x, Qp_y)
-

Return an instance of a Chromaticity DetunerCollection -class. The Qp_{x,y} are resp. scalars / lists (or tuples, numpy -arrays) containing first, second, third, … order chromaticity -coefficients (one-turn values), aka. Q’_{x,y}, Q’’_{x,y} -(Q-prime, Q-double-prime), …

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-generate_segment_detuner(dmu_x, dmu_y, **kwargs)
-

Instantiate a ChromaticitySegment for the specified -segment of the accelerator ring. Note that the bare betatron -phase advances over the current segment, dmu_x and dmu_y, are -given as relative values, i.e. in units of the overall phase -advance around the whole accelerator (the betatron tune).

-
- -
- -
-
-class PyHEADTAIL.trackers.detuners.ChromaticitySegment(dQp_x, dQp_y)
-

Detuning object for a segment of the accelerator ring to -describe the detuning introduced by chromaticity effects.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(dQp_x, dQp_y)
-

Return an instance of a ChromaticitySegment. The dQp_{x,y} -denote resp. scalars / lists (or tuples, numpy arrays) -containing first, second, third, … order chromaticity -coefficients scaled to the relative bare phase advance.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-static _make_calc_detuning(Qp)
-

Define the polynomial used to calculate the chromaticity -up to higher orders. The polynomials are explicitly defined up -to order 3 for performance reasons (order 3 is the highest -usually used). Above order 3, the numpy polyval is used to -evaluate the polynomial. np.polynomial polyval is considerably -slower for low order polynomials.

-
- -
-
-detune(beam)
-

Calculate for every particle the change in phase advance -(detuning) dQ_{x,y} caused by chromaticity effects.

-
- -
- -
-
-class PyHEADTAIL.trackers.detuners.DetunerCollection
-

Abstract base class for a collection of SegmentDetuner objects -(see above). A detuner collection object defines the detuning for -one complete turn around the accelerator ring for the given -detuning element. Hence, the strength of detuning must be specified -by the user as integrated over one turn. -The accelerator ring is divided into a number of segments (often -there is just 1). To apply the detuning segment-wise, a -SegmentDetuner object is instantiated for each of the accelerator -segments and the detuning strength is chosen to be proportional to -the bare betatron phase advance per segment (normalized to the -respective tunes of the accelerator). -The instantiation of SegmentDetuner objects is -handled by the generate_segment_detuner method. This method is -called by the TransverseSegmentMap object as it contains the -information of how the segments of the accelerator are defined by -the user. The SegmentDetuner objects are stored in the -segment_detuners list (in order of segments along the ring) within -the DetunerCollection.

-

Since the DetunerCollection is implemented as a sequence, the -individual SegmentDetuner objects stored by a DetunerCollection can -be accessed via square brackets [i] where i is the index of the -segment.

-
-
-__abstractmethods__ = frozenset({'generate_segment_detuner'})
-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.trackers.detuners', '__doc__': 'Abstract base class for a collection of SegmentDetuner objects\n (see above). A detuner collection object defines the detuning for\n one complete turn around the accelerator ring for the given\n detuning element. Hence, the strength of detuning must be specified\n by the user as integrated over one turn.\n The accelerator ring is divided into a number of segments (often\n there is just 1). To apply the detuning segment-wise, a\n SegmentDetuner object is instantiated for each of the accelerator\n segments and the detuning strength is chosen to be proportional to\n the bare betatron phase advance per segment (normalized to the\n respective tunes of the accelerator).\n The instantiation of SegmentDetuner objects is\n handled by the generate_segment_detuner method. This method is\n called by the TransverseSegmentMap object as it contains the\n information of how the segments of the accelerator are defined by\n the user. The SegmentDetuner objects are stored in the\n segment_detuners list (in order of segments along the ring) within\n the DetunerCollection.\n\n Since the DetunerCollection is implemented as a sequence, the\n individual SegmentDetuner objects stored by a DetunerCollection can\n be accessed via square brackets [i] where i is the index of the\n segment.\n ', 'generate_segment_detuner': <function DetunerCollection.generate_segment_detuner>, '__len__': <function DetunerCollection.__len__>, '__getitem__': <function DetunerCollection.__getitem__>, '__dict__': <attribute '__dict__' of 'DetunerCollection' objects>, '__weakref__': <attribute '__weakref__' of 'DetunerCollection' objects>, '__abstractmethods__': frozenset({'generate_segment_detuner'}), '_abc_impl': <_abc_data object>})
-
- -
-
-__getitem__(key)
-
- -
-
-__len__()
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract generate_segment_detuner(dmu_x, dmu_y, **kwargs)
-

Instantiate a SegmentDetuner of the given type for a -segment of the accelerator ring. Note that the bare betatron -phase advances over the current segment, dmu_x and dmu_y, are -given as relative values, i.e. in units of the overall phase -advance around the whole accelerator (the betatron tune). -The method is called by the TransverseMap object which manages -the creation of a detuner for every defined segment. -The kwargs are used e.g. to pass the beta functions from the -TransverseMap where necessary (e.g. for AmplitudeDetuning).

-
- -
- -
-
-class PyHEADTAIL.trackers.detuners.SegmentDetuner
-

Abstract base class for detuning elements and effects defined -only for a segment of the accelerator ring (NB. The segment can also -be given by the full circumference). -Every detuner element/effect inheriting from this class must -implement the detune(beam) method to describe the change in phase -advance for each particle of the beam.

-
-
-__abstractmethods__ = frozenset({'detune'})
-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.trackers.detuners', '__doc__': 'Abstract base class for detuning elements and effects defined\n only for a segment of the accelerator ring (NB. The segment can also\n be given by the full circumference).\n Every detuner element/effect inheriting from this class must\n implement the detune(beam) method to describe the change in phase\n advance for each particle of the beam.\n ', 'detune': <function SegmentDetuner.detune>, '__dict__': <attribute '__dict__' of 'SegmentDetuner' objects>, '__weakref__': <attribute '__weakref__' of 'SegmentDetuner' objects>, '__abstractmethods__': frozenset({'detune'}), '_abc_impl': <_abc_data object>})
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.detuners'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract detune(beam)
-
- -
- -
-
-

PyHEADTAIL.trackers.libTPSA module

-

Copyright CERN 2014 -Author: Adrian Oeftiger, oeftiger@cern.ch Adrian Oeftiger, oeftiger@cern.ch

-

This module provides a two-dimensional Truncated Power Series -up until first order as suited for algebraical Jacobian determination -for two given variables.

-

The TPS class supports elementary operations such as +, -, /, * -(and true division according to “from __future__ import division”).

-

Functions such as sin, cos, exp, log etc are envisaged -to be implemented in a later version.

-
-
-class PyHEADTAIL.trackers.libTPSA.TPS(vector=array([0, 1, 0]))
-

Truncated Power Series which obeys a TPS Algebra, -cf. “DIFFERENTIAL ALGEBRAIC DESCRIPTION OF BEAM -DYNAMICS TO VERY HIGH ORDERS” by M. BERZ, -Particle Accelerators, 1989. Vol. 24, pp. 109-124.

-
-
-__add__(other)
-

this TPS + (other TPS or scalar)

-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.trackers.libTPSA', '__doc__': 'Truncated Power Series which obeys a TPS Algebra,\n cf. "DIFFERENTIAL ALGEBRAIC DESCRIPTION OF BEAM\n DYNAMICS TO VERY HIGH ORDERS" by M. BERZ,\n Particle Accelerators, 1989. Vol. 24, pp. 109-124.', '__init__': <function TPS.__init__>, 'get_instance': <classmethod object>, '__add__': <function TPS.__add__>, '__radd__': <function TPS.__radd__>, '__mul__': <function TPS.__mul__>, '__rmul__': <function TPS.__rmul__>, '__div__': <function TPS.__div__>, '__rdiv__': <function TPS.__rdiv__>, '__truediv__': <function TPS.__truediv__>, '__rtruediv__': <function TPS.__rtruediv__>, '__sub__': <function TPS.__sub__>, '__rsub__': <function TPS.__rsub__>, '__eq__': <function TPS.__eq__>, '__ne__': <function TPS.__ne__>, '__neg__': <function TPS.__neg__>, 'invert': <function TPS.invert>, 'real': <property object>, 'diff': <property object>, 'getvector': <function TPS.getvector>, '__dict__': <attribute '__dict__' of 'TPS' objects>, '__weakref__': <attribute '__weakref__' of 'TPS' objects>, '__hash__': None})
-
- -
-
-__div__(other)
-

this TPS / (other TPS or scalar)

-
- -
-
-__eq__(other)
-

this TPS == other TPS or this TPS real value == other scalar.

-
- -
-
-__hash__ = None
-
- -
-
-__init__(vector=array([0, 1, 0]))
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.libTPSA'
-
- -
-
-__mul__(other)
-

this TPS * (other TPS or scalar)

-
- -
-
-__ne__(other)
-

this TPS != other TPS

-
- -
-
-__neg__()
-
    -
  • (this TPS)

  • -
-
- -
-
-__radd__(other)
-

(other TPS or scalar) + this TPS

-
- -
-
-__rdiv__(other)
-

(other TPS or scalar) / this TPS

-
- -
-
-__rmul__(other)
-

(other TPS or scalar) * TPS

-
- -
-
-__rsub__(other)
-

other TPS - this TPS

-
- -
-
-__rtruediv__(other)
-

(other TPS or scalar) / this TPS

-
- -
-
-__sub__(other)
-

this TPS - other TPS

-
- -
-
-__truediv__(other)
-

this TPS / (other TPS or scalar)

-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
-
-property diff
-

First-order entries, the first differential values

-
- -
-
-classmethod get_instance(vector)
-
- -
-
-getvector()
-

returns all TPS coefficients in an np.ndarray

-
- -
-
-invert()
-

1 / (this TPS)

-
- -
-
-property real
-

Zero-order entry, the main value

-
- -
- -
-
-class PyHEADTAIL.trackers.libTPSA.TPS4(vector=array([0, 1, 0, 0, 0]))
-

1D4, 1st order and 4 variables

-
-
-__init__(vector=array([0, 1, 0, 0, 0]))
-

Initialize self. See help(type(self)) for accurate signature.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.libTPSA'
-
- -
-
-__mul__(other)
-

this TPS * (other TPS or scalar)

-
- -
-
-property diff
-

returns the first-order entries, the first differential values

-
- -
-
-invert()
-

1 / (this TPS)

-
- -
- -
-
-

PyHEADTAIL.trackers.libintegrators module

-

Copyright CERN 2014 -Author: Adrian Oeftiger, oeftiger@cern.ch

-

This module provides various numerical integration methods -for Hamiltonian vector fields on (currently two-dimensional) phase space. -The integrators are separated according to symplecticity. -The method is_symple() is provided to check for symplecticity -of a given integration method – it may be used generically -for any integration method with the described signature.

-
-
-PyHEADTAIL.trackers.libintegrators.is_symple(integrator)
-

returns whether the given integrator is symplectic w.r.t. to a certain -numerical tolerance (fixed by numpy.allclose). -The decision is taken on whether the Jacobian determinant remains 1 -(after a time step of 1 while modelling a harmonic oscillator). -The integrator input should be a function taking the argument -signature (x_initial, p_initial, timestep, H_p, H_x), where -the first three arguments are numbers and H_p(p) and H_x(x) are -functions taking one argument.

-
- -
-
-class PyHEADTAIL.trackers.libintegrators.non_symple
-

Contains non-symplectic integrator algorithms. -The integrator input should be a function taking the argument -signature (x_initial, p_initial, timestep, H_p, H_x). -H_x(x) = dH/dx is a function of x only while -H_p(p) = dH/dp is a function of p only.

-
-
-static Euler(x_initial, p_initial, timestep, H_p, H_x)
-

Non-symplectic one-dimensional Euler O(T^2) Algorithm.

-
- -
-
-static RK2(x_initial, p_initial, timestep, H_p, H_x)
-

Non-symplectic one-dimensional Runge Kutta 2 O(T^3) Algorithm.

-
- -
-
-static RK4(x_initial, p_initial, timestep, H_p, H_x)
-

Non-symplectic one-dimensional Runge Kutta 4 O(T^5) Algorithm.

-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.trackers.libintegrators', '__doc__': 'Contains *non-symplectic* integrator algorithms.\n\tThe integrator input should be a function taking the argument \n\tsignature (x_initial, p_initial, timestep, H_p, H_x).\n\tH_x(x) = dH/dx is a function of x only while\n\tH_p(p) = dH/dp is a function of p only.', 'Euler': <staticmethod object>, 'RK2': <staticmethod object>, 'RK4': <staticmethod object>, '__dict__': <attribute '__dict__' of 'non_symple' objects>, '__weakref__': <attribute '__weakref__' of 'non_symple' objects>})
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.libintegrators'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-class PyHEADTAIL.trackers.libintegrators.symple
-

Contains symplectic integrator algorithms. -The integrator input should be a function taking the argument -signature (x_initial, p_initial, timestep, H_p, H_x). -It is assumed that the Hamiltonian is separable into a kinetic -part T(p) (giving rise to H_p(p) = dH/dp which only depends on the -conjugate momentum p) and into a potential part V(x) (giving rise -to H_x(x) = dH/dx which only depends on the spatial coordinate x).

-
-
-static Euler_Cromer(x_initial, p_initial, timestep, H_p, H_x)
-

Symplectic one-dimensional Euler Cromer O(T^2) Algorithm. -This Euler_Cromer is explicite! keyword: drift-kick mechanism

-
- -
-
-static Ruth(x_initial, p_initial, timestep, H_p, H_x)
-

Symplectic one-dimensional Ruth and Forest O(T^5) Algorithm. -Harvard: 1992IAUS..152..407Y

-
- -
-
-static Verlet(x_initial, p_initial, timestep, H_p, H_x)
-

Symplectic one-dimensional (Velocity) Verlet O(T^3) Algorithm. -keyword: leapfrog mechanism

-
- -
-
-__dict__ = mappingproxy({'__module__': 'PyHEADTAIL.trackers.libintegrators', '__doc__': 'Contains *symplectic* integrator algorithms. \n\tThe integrator input should be a function taking the argument \n\tsignature (x_initial, p_initial, timestep, H_p, H_x).\n\tIt is assumed that the Hamiltonian is separable into a kinetic\n\tpart T(p) (giving rise to H_p(p) = dH/dp which only depends on the \n\tconjugate momentum p) and into a potential part V(x) (giving rise \n\tto H_x(x) = dH/dx which only depends on the spatial coordinate x).', 'Euler_Cromer': <staticmethod object>, 'Verlet': <staticmethod object>, 'Ruth': <staticmethod object>, '__dict__': <attribute '__dict__' of 'symple' objects>, '__weakref__': <attribute '__weakref__' of 'symple' objects>})
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.libintegrators'
-
- -
-
-__weakref__
-

list of weak references to the object (if defined)

-
- -
- -
-
-

PyHEADTAIL.trackers.longitudinal_tracking module

-

@author Kevin Li, Adrian Oeftiger, Michael Schenk -@date 03.10.2014 -@copyright CERN

-
-
-class PyHEADTAIL.trackers.longitudinal_tracking.Drift(alpha_array, length, shrinkage_p_increment=0, *args, **kwargs)
-

The drift (i.e. Delta z) of the particle’s z coordinate is given by -the (separable) Hamiltonian derived by dp (defined by (p - p0) / p0).

-

self.length is the drift length, -self.shrinkage_p_increment being non-zero includes the shrinking -ratio eta_{n+1} / eta_n (see MacLachlan 1989 in FN-529), -it is usually neglected. [Otherwise it may continuously be -adapted by the user according to the total momentum increment.] -If it is not neglected, the beta factor ratio would yield -(eta + Delta eta) / eta =

-
-

= 1 - Delta gamma / (eta^2 * gamma^2)

-
-

resp. = 1 - p_increment / (gamma^3 * p0) -since p_increment = gamma * m * c / eta * Delta gamma .

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(alpha_array, length, shrinkage_p_increment=0, *args, **kwargs)
-

The length of the momentum compaction factor array /alpha_array/ -defines the order of the slippage factor expansion.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Should be decorated by @clean_slices for any inheriting -classes changing beam.z .

-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.Kick(alpha_array, circumference, harmonic, voltage, phi_offset=0, p_increment=0, D_x=0, D_y=0, *args, **kwargs)
-

The Kick class represents the kick by a single RF element -in a ring! The kick (i.e. dp_{n+1} - dp_n) of the particle’s dp -coordinate is given by the (separable) Hamiltonian derived -by z, i.e. the force.

-

self.p_increment is the momentum step per turn added by this Kick, -it can be continuously adjusted externally -by the user to reflect different slopes in the dipole field ramp.

-

self.phi_offset reflects an offset of the cavity’s reference system, -this can be tweaked externally by the user for simulating RF system -ripple and the like. Include the change of flank of the sine curve -here, explicitely (i.e. pi below transition and 0 above transition).

-

(self._phi_lock adds to the offset as well but should -be used internally in the module (e.g. by RFSystems) for -acceleration purposes. It may be used for synchronisation with the -momentum updating by self.p_increment via self.calc_phi_0(beam), -thus readjusting the zero-crossing of this sinosoidal kick. -This requires a convention how to mutually displace the Kick -phases to each other w.r.t. to their contribution to acceleration.)

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(alpha_array, circumference, harmonic, voltage, phi_offset=0, p_increment=0, D_x=0, D_y=0, *args, **kwargs)
-

D_x, D_y: horizontal and vertical dispersion

-

!! Attention !! -The user is responsible of making sure the dispersions match the -dispersions of the beam which were added in the track() of the last map. -This corresponds to the dispersion of the transverse/longitudinal map -!following! this Kick (D_x_s1 of the preceding transverse map) -Example: -dx = np.array([1, 2., 5]) #the dispersions at the TransverseSegmentMaps -trans_map = TransverseMap(C, segments, ax, bx, dx, ay, by, Q_x, Q_y) -map_ = [m for m in trans_map] + [LinearMap(alpha_0, C, Q_s, D_x=???)] -D_x = 1. # if we place the LinearMap after the transverse maps, we

-
-

# need to make sure the dispersion matches the dispersion -# added in this transverse map. This corresponds to the -# dispersion of the first segment of the transverse map!

-
-

Or simply: Match the dispersion of this Element with the dispersion -of the following transverse element.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Should be decorated by @clean_slices for any inheriting -classes changing beam.z .

-
- -
-
-track_with_dispersion(beam)
-

Subtract the dispersion before computing a new dp, then add -the dispersion using the new dp.

-
- -
-
-track_without_dispersion(beam)
-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.LinearMap(alpha_array, circumference, Q_s, D_x=0, D_y=0, *args, **kwargs)
-

Linear Map represented by a Courant-Snyder transfer matrix. -Makes use only of the linear first order slippage factor eta. -Higher orders are manifestly neglected:

-
-\[\]
-

eta(delta = 0) = sum_i eta_i * delta^i === eta_0

-

where

-
-\[\]
-

eta_0 := 1 / gamma_{tr}^2 - 1 / gamma^2

-
-
-property Qs
-
- -
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(alpha_array, circumference, Q_s, D_x=0, D_y=0, *args, **kwargs)
-

Q_s is the synchrotron tune. -D_x, D_y are the dispersions in horizontal and vertical direction.

-

!! Attention !! -The user is responsible of making sure the dispersions match the -dispersions of the beam which were added in the track() of the last map. -This corresponds to the dispersion of the transverse/longitudinal map -!following! this LinearMap (D_x_s1 of the preceding transverse map) -Example: -dx = np.array([1, 2., 5]) #the dispersions at the TransverseSegmentMaps -trans_map = TransverseMap(C, segments, ax, bx, dx, ay, by, Q_x, Q_y) -map_ = [m for m in trans_map] + [LinearMap(alpha_0, C, Q_s, D_x=???)] -D_x = 1. # if we place the LinearMap after the transverse maps, we

-
-

# need to make sure the dispersion matches the dispersion -# added in this transverse map. This corresponds to the -# dispersion of the first segment of the transverse map!

-
-

Or simply: Match the dispersion of this Element with the dispersion -of the following transverse element.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Contract: advances the longitudinal coordinates -of the beam over a full turn / circumference.

-
- -
-
-track_with_dispersion(beam)
-

Subtract the dispersion before computing a new dp, then add -the dispersion using the new dp.

-
- -
-
-track_without_dispersion(beam)
-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.LongitudinalMap(alpha_array, *args, **kwargs)
-

A longitudinal map represents a longitudinal dynamical element -(e.g. a kick or a drift…), i.e. an abstraction of a cavity -of an RF system etc. -Any track method of a longitudinal element should clean the slices -from the beam – use @clean_slices! -LongitudinalMap objects can compose a longitudinal one turn map! -Definitions of various orders of the slippage factor eta(delta) -for delta = (p - p0) / p0 should be implemented in this class. -Any derived objects will access self.eta(delta, gamma).

-

Note: the momentum compaction factors are defined by the change of radius -Delta R / R0 = sum_i alpha_i * delta^(i + 1) -hence yielding expressions for the higher slippage factor orders -Delta w / w0 = sum_j eta_j * delta^(i + 1) -(for the revolution frequency w)

-
-
-__abstractmethods__ = frozenset({'track'})
-
- -
-
-__init__(alpha_array, *args, **kwargs)
-

The length of the momentum compaction factor array /alpha_array/ -defines the order of the slippage factor expansion.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-static _eta0(alpha_array, gamma)
-
- -
-
-eta(dp, gamma)
-

Depending on the number of entries in self.alpha_array the -according order of eta = sum_i eta_i * delta^i where -delta = Delta p / p0 will be included in this gathering function.

-

Note: Please implement higher slippage factor orders as static methods -with name _eta<N> where <N> is the order of delta in eta(delta) -and with signature (alpha_array, gamma).

-
- -
-
-abstract track(beam)
-

Should be decorated by @clean_slices for any inheriting -classes changing beam.z .

-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.LongitudinalOneTurnMap(alpha_array, circumference, *args, **kwargs)
-

A longitudinal one turn map tracks over a complete turn. -Any inheriting classes guarantee to provide a self.track(beam) -method that tracks around the whole ring!

-

LongitudinalOneTurnMap classes possibly comprise several -LongitudinalMap objects.

-
-
-__abstractmethods__ = frozenset({'track'})
-
- -
-
-__init__(alpha_array, circumference, *args, **kwargs)
-

LongitudinalOneTurnMap objects know their circumference.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-abstract track(beam)
-

Contract: advances the longitudinal coordinates -of the beam over a full turn / circumference.

-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.RFBox(z_left, z_right, alpha_array, length, shrinkage_p_increment=0)
-

Represents longitudinal square well potential.

-

Particles drift freely along z within the interval (z_left, z_right) -according to their momentum. When they hit the box boundary they are -reflected with their momentum inverted.

-

NB: dispersion subtraction not implemented yet!

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(z_left, z_right, alpha_array, length, shrinkage_p_increment=0)
-

The length of the momentum compaction factor array /alpha_array/ -defines the order of the slippage factor expansion.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-reflect(beam)
-
- -
-
-track(beam)
-

Should be decorated by @clean_slices for any inheriting -classes changing beam.z .

-
- -
- -
-
-class PyHEADTAIL.trackers.longitudinal_tracking.RFSystems(circumference, harmonic_list, voltage_list, phi_offset_list, alpha_array, gamma_reference, p_increment=0, phase_lock=True, shrink_transverse=True, shrink_longitudinal=False, D_x=0, D_y=0, charge=None, mass=None, *args, **kwargs)
-

With one RFSystems object in the ring layout (with all Kick -objects located at the same longitudinal position), the -longitudinal separatrix function is exact and makes a valid -local statement about stability!

-
-
-property Q_s
-
- -
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(circumference, harmonic_list, voltage_list, phi_offset_list, alpha_array, gamma_reference, p_increment=0, phase_lock=True, shrink_transverse=True, shrink_longitudinal=False, D_x=0, D_y=0, charge=None, mass=None, *args, **kwargs)
-

The first entry in harmonic_list, voltage_list and -phi_offset_list defines the parameters for the one -accelerating Kick object (i.e. the accelerating RF system).

-

For several accelerating Kick objects one would have to -extend this class and settle for the relative phases -between the Kick objects! (For one accelerating Kick object, -all the other Kick objects’ zero crossings are displaced by -the negative phase shift induced by the accelerating Kick.)

-

The length of the momentum compaction factor array alpha_array -defines the order of the slippage factor expansion. -(See the LongitudinalMap class for further details.)

-

RFSystems comprises a half the circumference drift, -then all the kicks by the RF Systems in one location, -then the remaining half the circumference drift. -This Verlet algorithm (“leap-frog” featuring O(n_turn^2) as -opposed to symplectic Euler-Cromer with O(n_turn)) makes -sure that the longitudinal phase space is read out in -a symmetric way (otherwise phase space should be tilted -at the entrance or exit of the cavity / kick location! -cf. discussions with Christian Carli).

-

The boolean parameter shrink_longitudinal determines whether the -shrinkage ratio beta_{n+1} / beta_n should be taken -into account during the second Drift. -(See the Drift class for further details.)

-

The boolean parameter shrink_transverse allows for transverse -emittance cooling from acceleration.

-

Arguments: -- self.p_increment is the momentum step per turn of the -synchronous particle, it can be continuously adjusted to -reflect different slopes in the dipole magnet strength ramp. -(See the Kick class for further details.) -- phase_lock == True means all phi_offsets are given w.r.t. the -fundamental kick, adjusted at set-up time. -- phase_lock == False means all phi_offsets are absolute. -In this case take care about all Kick.p_increment attributes – -highly non-trivial, as all other p_increment functionality -in RFSystems is broken. So take care, you’re on your own! :-) -- D_x, D_y: horizontal and vertical dispersion. These arguments

-
-

are passed to the Kicks class. Because both kicks are applied -consecutively, the dispersion will be the same for both kicks and -it is therefore sufficient to specify only one dispersion. -The dispersion must match the dispersion of the following transverse -map. See the docstring of the Kick class for a more detailed -description.

-
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.longitudinal_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_phaselock(gamma, charge)
-

Put all _kicks other than the accelerating kick to -zero phase difference w.r.t. the accelerating kick. -Attention: Make sure the p_increment of each non-accelerating -kick is set to 0 (assuming phi_offset == 0, otherwise adapt!).

-
- -
-
-static _shrink_transverse_emittance(beam, geo_emittance_factor)
-

Account for the transverse geometrical emittance shrinking -due to acceleration cooling.

-
- -
-
-property accelerating_kick
-

non-existent anymore!

-
- -
-
-clean_buckets()
-

Erases all RFBucket records of this RFSystems instance. -Any change of the Kick parameters should entail calling -clean_buckets in order to update the Hamiltonian etc.

-
- -
-
-property elements
-

non-existent anymore!

-
- -
-
-property fundamental_kick
-

non-existent anymore!

-
- -
-
-get_bucket(bunch=None, gamma=None, mass=None, charge=None, *args, **kwargs)
-

Return an RFBucket instance which contains all information -and all physical parameters of the current longitudinal RF -configuration. (Factory method)

-

Use for plotting or obtaining the Hamiltonian etc.

-

Attention: For the moment it is assumed that only the -accelerating kick (defined by the first entry in the -parameter lists) has a non-zero p_increment. -(see RFSystems.p_increment)

-

Arguments: -Either give a bunch or the three parameters -(gamma, mass, charge) explicitely to return a bucket -defined by these.

-
- -
-
-property harmonics
-

List of Kick harmonics, ONLY use this interface in RFSystems -to access and modify any Kick harmonic. -(Otherwise the get_bucket functionality is broken, -clean_buckets will not be called if not using this interface.)

-
- -
-
-property kicks
-

non-existent anymore!

-
- -
-
-property p_increment
-

The increment in momentum of the accelerating Kick, i.e. -defined by the first entry in the RF parameter lists. -ONLY use this interface in RFSystems to access and modify -the accelerating Kick.p_increment. -(Otherwise the get_bucket functionality is broken,

-
-

clean_buckets will not be called if not using this interface.)

-
-
- -
-
-property phi_offsets
-

List of Kick phi_offsets, ONLY use this interface in -RFSystems to access and modify any Kick phi_offset. -(Otherwise the get_bucket functionality is broken, -clean_buckets will not be called if not using this interface.)

-
- -
-
-phi_s(gamma, charge)
-
- -
-
-pop_kick(index)
-

Remove a Kick instance from this RFSystems instance. -Return the removed Kick instance. -:param - index: the index according to the defining lists -:param voltages, harmonics, phi_offsets.:

-

Note: can only remove kicks that are not index == 0. -The accelerating / fundamental kick cannot be removed.

-
- -
-
-property rfbucket
-

non-existent anymore!

-
- -
-
-set_harmonic_list(harmonic_list)
-

non-existent anymore!

-
- -
-
-set_phi_offset_list(phi_offset_list)
-

non-existent anymore!

-
- -
-
-set_voltage_list(voltage_list)
-

non-existent anymore!

-
- -
-
-track(beam)
-

Contract: advances the longitudinal coordinates -of the beam over a full turn / circumference.

-
- -
-
-track_no_transverse_shrinking(beam)
-
- -
-
-track_transverse_shrinking(beam)
-
- -
-
-property voltages
-

List of Kick voltages, ONLY use this interface in RFSystems -to access and modify any Kick voltage. -(Otherwise the get_bucket functionality is broken,

-
-

clean_buckets will not be called if not using this interface.)

-
-
- -
- -
-
-

PyHEADTAIL.trackers.rf_bucket module

-
-
-
members
-

-
private-members
-

-
special-members
-

-
undoc-members
-

-
-
-
-
-

PyHEADTAIL.trackers.simple_long_tracking module

-
-
-

PyHEADTAIL.trackers.transverse_tracking module

-

@author Kevin Li, Michael Schenk, Stefan Hegglin -@date 07. January 2014 -@brief Description of the transport of transverse phase spaces. -@copyright CERN

-
-
-class PyHEADTAIL.trackers.transverse_tracking.TransverseMap(s, alpha_x, beta_x, D_x, alpha_y, beta_y, D_y, accQ_x, accQ_y, detuners=[], *args, **kwargs)
-

Collection class for TransverseSegmentMap objects. This class is -used to define a one turn map for transverse particle tracking. An -accelerator ring is divided into segments (1 or more). They are -defined by the user with the array s containing the positions of -all the segment boundaries. The TransverseMap stores all the -relevant parameters (optics) at each segment boundary. The first -boundary of the first segment is referred to as the injection -point. -At instantiation of the TransverseMap, a TransverseSegmentMap object -is created for each segment of the accelerator and appended to the -list self.segment_maps. When generating the TransverseSegmentMaps, -the influence of incoherent detuning by effects defined in the -trackers.detuners module is included and the corresponding -SegmentDetuner objects are generated on the fly. Their strength of -detuning is distributed proportionally along the accelerator -circumference. -Note that the TransverseMap only knows all the relevant optics -parameters needed to generate the TransverseSegmentMaps. It is not -capable of tracking particles. The transport mechanism of particles -in the transverse plane is entirely implemented in the -TransverseSegmentMap class. -Since the TransverseMap is implemented to act as a sequence, the -instances of the TransverseSegmentMap objects (stored in -self.segment_maps) can be accessed using the notation -TransverseMap(…)[i] (with i the index of the accelerator -segment).

-
-
-__getitem__(key)
-
- -
-
-__init__(s, alpha_x, beta_x, D_x, alpha_y, beta_y, D_y, accQ_x, accQ_y, detuners=[], *args, **kwargs)
-

Create a one-turn map that manages the transverse tracking -for each of the accelerator segments defined by s.

-
-
    -
  • s is the array of positions defining the boundaries of the -segments for one turn. The first element in s must be zero -and the last element must be equal to the accelerator -circumference C.

  • -
  • accQ_{x,y} are arrays with the accumulating phase advance -in units of 2 pi (i.e. mu_{x,y} / 2 pi) at each segment -boundary. The respective last entry gives the betatron tune -Q_{x,y} . -Note: instead of arrays of length len(s) it is possible -to provide solely the scalar one-turn betatron tune Q_{x,y} -directly. Then the phase advances are smoothly distributed -over the segments (proportional to the respective s length).

  • -
  • alpha_{x,y}, beta_{x,y} are the TWISS parameters alpha and -beta. They are arrays of size len(s) as these parameters -must be defined at every segment boundary of the -accelerator.

  • -
  • D_{x,y} are the dispersion coefficients. They are arrays of -size len(s) as these parameters must be defined at every -segment boundary of the accelerator.

  • -
  • detuner_collections is a list of DetunerCollection objects -that are present in the accelerator. Each DetunerCollection -knows how to generate and store its SegmentDetuner objects -to ‘distribute’ the detuning proportionally along the -accelerator circumference.

  • -
-
-
- -
-
-__len__()
-
- -
-
-__module__ = 'PyHEADTAIL.trackers.transverse_tracking'
-
- -
-
-_generate_segment_maps()
-

This method is called at instantiation of a TransverseMap -object. For each segment of the accelerator ring (defined by the -array self.s), a TransverseSegmentMap object is instantiated and -appended to the list self.segment_maps. The creation of the -TransverseSegmentMaps includes the instantiation of the -SegmentDetuner objects which is achieved by calling the -self.detuner_collections.generate_segment_detuner(…) method. -The detuning strength given in a DetunerCollection is valid for -one complete turn around the accelerator. To determine the -detuning strength of a SegmentDetuner, the one-turn detuning -strength is scaled to the segment_length. Note that this -quantity is given in relative units (i.e. it is normalized to -the accelerator circumference s[-1]).

-
- -
-
-detuner_collections = None
-

List to store TransverseSegmentMap instances.

-
- -
-
-get_injection_optics()
-

Return a dict with the transverse TWISS parameters -alpha_x, beta_x, D_x, alpha_y, beta_y, D_y from the -beginning of the first segment (injection point).

-
- -
- -
-
-class PyHEADTAIL.trackers.transverse_tracking.TransverseSegmentMap(alpha_x_s0, beta_x_s0, D_x_s0, alpha_x_s1, beta_x_s1, D_x_s1, alpha_y_s0, beta_y_s0, D_y_s0, alpha_y_s1, beta_y_s1, D_y_s1, dQ_x, dQ_y, *args, **kwargs)
-

Class to transport/track the particles of the beam in the -transverse plane through an accelerator ring segment defined by its -boundaries [s0, s1]. To calculate the transverse linear transport -matrix M that transports each particle’s transverse phase space -coordinates (x, xp, y, yp) from position s0 to position s1 in the -accelerator, the TWISS parameters alpha and beta at positions s0 -and s1 must be provided. The betatron phase advance of each -particle in the present segment is given by their betatron tune -Q_{x,y} (phase advance) and possibly by an incoherent tune shift -introduced e.g. by amplitude detuning or chromaticity effects -(see trackers.detuners module).

-

Dispersion is added in the horizontal and vertical planes. Care -needs to be taken, that dispersive effects were taken into account -upon beam creation. Then, before each linear tracking step, the -dispersion is removed, linear tracking is performed via the linear -periodic map and dispersion is added back so that any subsequent -collective effect has dispersion taken into account.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(alpha_x_s0, beta_x_s0, D_x_s0, alpha_x_s1, beta_x_s1, D_x_s1, alpha_y_s0, beta_y_s0, D_y_s0, alpha_y_s1, beta_y_s1, D_y_s1, dQ_x, dQ_y, *args, **kwargs)
-

Return an instance of the TransverseSegmentMap class. The -values of the TWISS parameters alpha_{x,y} and beta_{x,y} as -well as of the dispersion coefficients D_{x,y} (not yet -implemented) are given at the beginning s0 and at the end s1 of -the corresponding segment. The dQ_{x,y} denote the betatron -tune advance over the current segment (phase advance divided by -2 pi). The SegmentDetuner objects present in this segment are -passed as a list via the keyword argument ‘segment_detuners’. -The matrices self.I and self.J are constant and are calculated -only once at instantiation of the TransverseSegmentMap.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.transverse_tracking'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-_build_segment_map(alpha_x_s0, beta_x_s0, alpha_x_s1, beta_x_s1, alpha_y_s0, beta_y_s0, alpha_y_s1, beta_y_s1)
-

Calculate matrices I and J which are decoupled from the -phase advance dependency and only depend on the TWISS parameters -at the boundaries of the accelerator segment. These matrices are -constant and hence need to be calculated only once at -instantiation of the TransverseSegmentMap.

-
- -
-
-_track_with_dispersion(beam, M00, M01, M10, M11, M22, M23, M32, M33)
-

This method gets bound to the self._track() method if -there are dispersion effects, i.e. any of the 4 dispersion parameters -is != 0 -It computes the transverse tracking given the matrix elements Mij. -1) Subtract the dispersion using dp -2) Change the positions and momenta using the matrix elements -3) Add the dispersion effects using dp

-
- -
-
-_track_without_dispersion(beam, M00, M01, M10, M11, M22, M23, M32, M33)
-

This method gets bound to the self._track() method if there are -no dispersive effects, i.e. all of the 4 dispersion parameters -are close to (1e-3) 0. -It computes the transverse tracking given the matrix elements Mij

-
- -
-
-track(beam)
-

The dphi_{x,y} denote the phase advance in the horizontal -and vertical plane respectively for the given accelerator -segment. They are composed of the betatron tunes dQ_{x,y} and a -possible incoherent tune shift introduced by detuner elements -/ effects defined in the list self.segment_detuners (they are -all instances of the SegmentDetuner child classes). -The transport matrix is defined by the coefficients M_{ij}.

-
- -
- -
-
-

PyHEADTAIL.trackers.wrapper module

-
-
-class PyHEADTAIL.trackers.wrapper.LongWrapper(circumference, z0=0, *args, **kwargs)
-

Wrap particles that go out of the z range covering the circumference.

-
-
-__abstractmethods__ = frozenset({})
-
- -
-
-__init__(circumference, z0=0, *args, **kwargs)
-

Arguments: -- circumference: the interval length in z in [m] -- z0: the central value of z -Particles outside of the interval -[z0 - circumference / 2, z0 + circumference / 2] -will be folded back into the interval.

-
- -
-
-__module__ = 'PyHEADTAIL.trackers.wrapper'
-
- -
-
-_abc_impl = <_abc_data object>
-
- -
-
-track(beam)
-

Perform tracking of beam through this Element.

-
- -
-
-track_numpy(beam)
-

Explicitly uses numpy functions on the beam.

-
- -
- -
-
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/genindex.html b/docs/genindex.html deleted file mode 100644 index 597207b5..00000000 --- a/docs/genindex.html +++ /dev/null @@ -1,2440 +0,0 @@ - - - - - - - - Index — PyHEADTAIL documentation - - - - - - - - - - - - - -
-
-
-
- - -

Index

- -
- _ - | A - | B - | C - | D - | E - | F - | G - | H - | I - | K - | L - | M - | N - | O - | P - | Q - | R - | S - | T - | U - | V - | W - | Z - -
-

_

- - - -
- -

A

- - - -
- -

B

- - - -
- -

C

- - - -
- -

D

- - - -
- -

E

- - - -
- -

F

- - - -
- -

G

- - - -
- -

H

- - - -
- -

I

- - - -
- -

K

- - - -
- -

L

- - - -
- -

M

- - - -
- -

N

- - - -
- -

O

- - - -
- -

P

- - - -
- -

Q

- - - -
- -

R

- - - -
- -

S

- - - -
- -

T

- - - -
- -

U

- - - -
- -

V

- - - -
- -

W

- - - -
- -

Z

- - - -
- - - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 4683bdfd..00000000 --- a/docs/index.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - Welcome to PyHEADTAIL’s API description! — PyHEADTAIL documentation - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/py-modindex.html b/docs/py-modindex.html deleted file mode 100644 index 9eb94329..00000000 --- a/docs/py-modindex.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - - - - Python Module Index — PyHEADTAIL documentation - - - - - - - - - - - - - - - - -
-
-
-
- - -

Python Module Index

- -
- p -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
- p
- PyHEADTAIL -
    - PyHEADTAIL.aperture -
    - PyHEADTAIL.aperture.aperture -
    - PyHEADTAIL.aperture.aperture_cython -
    - PyHEADTAIL.cobra_functions -
    - PyHEADTAIL.cobra_functions.c_sin_cos -
    - PyHEADTAIL.cobra_functions.curve_tools -
    - PyHEADTAIL.cobra_functions.interp_sin_cos -
    - PyHEADTAIL.cobra_functions.stats -
    - PyHEADTAIL.feedback -
    - PyHEADTAIL.feedback.transverse_damper -
    - PyHEADTAIL.feedback.widebandfeedback -
    - PyHEADTAIL.field_maps -
    - PyHEADTAIL.general -
    - PyHEADTAIL.general.contextmanager -
    - PyHEADTAIL.general.decorators -
    - PyHEADTAIL.general.element -
    - PyHEADTAIL.general.pmath -
    - PyHEADTAIL.general.printers -
    - PyHEADTAIL.general.utils -
    - PyHEADTAIL.gpu -
    - PyHEADTAIL.gpu.gpu_utils -
    - PyHEADTAIL.gpu.gpu_wrap -
    - PyHEADTAIL.impedances -
    - PyHEADTAIL.impedances.wake_kicks -
    - PyHEADTAIL.impedances.wakes -
    - PyHEADTAIL.machines -
    - PyHEADTAIL.machines.synchrotron -
    - PyHEADTAIL.monitors -
    - PyHEADTAIL.monitors.monitors -
    - PyHEADTAIL.multipoles -
    - PyHEADTAIL.multipoles.multipoles -
    - PyHEADTAIL.particles -
    - PyHEADTAIL.particles.generators -
    - PyHEADTAIL.particles.particles -
    - PyHEADTAIL.particles.rfbucket_matching -
    - PyHEADTAIL.particles.slicing -
    - PyHEADTAIL.radiation -
    - PyHEADTAIL.radiation.radiation -
    - PyHEADTAIL.rfq -
    - PyHEADTAIL.rfq.rfq -
    - PyHEADTAIL.spacecharge -
    - PyHEADTAIL.spacecharge.spacecharge -
    - PyHEADTAIL.spacecharge.transverse_spacecharge -
    - PyHEADTAIL.trackers -
    - PyHEADTAIL.trackers.detuners -
    - PyHEADTAIL.trackers.libintegrators -
    - PyHEADTAIL.trackers.libTPSA -
    - PyHEADTAIL.trackers.longitudinal_tracking -
    - PyHEADTAIL.trackers.simple_long_tracking -
    - PyHEADTAIL.trackers.transverse_tracking -
    - PyHEADTAIL.trackers.wrapper -
- - -
-
-
- -
-
- - - - \ No newline at end of file diff --git a/docs/search.html b/docs/search.html deleted file mode 100644 index 9e329ae0..00000000 --- a/docs/search.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - Search — PyHEADTAIL documentation - - - - - - - - - - - - - - - - - - -
-
-
-
- -

Search

-
- -

- Please activate JavaScript to enable the search - functionality. -

-
-

- From here you can search these documents. Enter your search - words into the box below and click "search". Note that the search - function will automatically search for all of the words. Pages - containing fewer words won't appear in the result list. -

-
- - - -
- -
- -
- -
-
-
- -
-
- - - - \ No newline at end of file From 42cb08345b47590f3b599b9fae7a9d4966d3e9e7 Mon Sep 17 00:00:00 2001 From: Vadim Gubaidulinn Date: Tue, 19 Oct 2021 16:34:02 +0200 Subject: [PATCH 22/64] Actually added thrust.so --- PyHEADTAIL/gpu/thrust.so | Bin 0 -> 2136520 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 PyHEADTAIL/gpu/thrust.so diff --git a/PyHEADTAIL/gpu/thrust.so b/PyHEADTAIL/gpu/thrust.so new file mode 100755 index 0000000000000000000000000000000000000000..f43f3090d4f26c2c35272ae99a17aeeaeaf6ba41 GIT binary patch literal 2136520 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ӪYpGd~xf)VQDVdBR1B9ua}jpTwKP&1EtAfZbl%@k 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 z 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

-~2LXXPL9M+*#({0k+Ewp`T|9 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

hf)mR*4l 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%0A21izQFo@So9a>b_4UG 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%0D&&$I<^!XLPuWv@$ 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 Date: Tue, 19 Oct 2021 16:37:57 +0200 Subject: [PATCH 23/64] Changed import statement for pmath context manager --- PyHEADTAIL/gpu/pypic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/gpu/pypic.py b/PyHEADTAIL/gpu/pypic.py index 0af75c53..ea8f8b8a 100644 --- a/PyHEADTAIL/gpu/pypic.py +++ b/PyHEADTAIL/gpu/pypic.py @@ -8,7 +8,7 @@ class depending on the current context (in pmath). ''' from PyHEADTAIL.general import pmath as pm -from pm import UnknownContextManagerError +from PyHEADTAIL.general.pmath import UnknownContextManagerError from PyPIC.GPU import pypic From 0eb85a6eecc67c2e17d8f02809489e0ea13c33b9 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 19 Oct 2021 16:49:01 +0200 Subject: [PATCH 24/64] corrected thrust_interface import --- PyHEADTAIL/gpu/gpu_wrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/gpu/gpu_wrap.py b/PyHEADTAIL/gpu/gpu_wrap.py index 6d43597d..b45708f7 100644 --- a/PyHEADTAIL/gpu/gpu_wrap.py +++ b/PyHEADTAIL/gpu/gpu_wrap.py @@ -17,7 +17,7 @@ import pycuda.compiler import pycuda.driver as drv import pycuda.elementwise - import PyHEADTAIL.gpu.thrust_interface + import PyHEADTAIL.gpu.thrust_interface as thrust_interface # if pycuda is there, try to compile things. If no context available, # throw error to tell the user that he should import pycuda.autoinit From 64d6dddede1f22e39722d3e258be3f2422c74bcd Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 8 Nov 2022 15:07:24 +0100 Subject: [PATCH 25/64] Simple ion cloud implementation with a B-E formula --- PyHEADTAIL/ion_cloud/__init__.py | 0 PyHEADTAIL/ion_cloud/ion_cloud.py | 143 ++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 PyHEADTAIL/ion_cloud/__init__.py create mode 100644 PyHEADTAIL/ion_cloud/ion_cloud.py diff --git a/PyHEADTAIL/ion_cloud/__init__.py b/PyHEADTAIL/ion_cloud/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py new file mode 100644 index 00000000..02880f58 --- /dev/null +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -0,0 +1,143 @@ +from PyHEADTAIL.field_maps import efields_funcs as efields +from PyHEADTAIL.general.element import Element +from PyHEADTAIL.particles import particles, generators +# from PyHEADTAIL.particles.slicing import UniformBinSlicer +from PyHEADTAIL.general import pmath as pm +from PyHEADTAIL.general.printers import SilentPrinter +from scipy.constants import m_p, e, c + + +CIRCUMFERENCE = 354 +N_SEGMENTS = 500 +class BeamIonElement(Element): + def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, n_macroparticles_max = int (1e3)): + self.ion_beam = None + self.dist = dist + self._efieldn = efields._efieldn_mit + self.sig_check = sig_check + self.L_sep = L_sep + self.N_MACROPARTICLES = 50 + self.N_MACROPARTICLES_MAX = n_macroparticles_max + self.CIRCUMFERENCE = 354 + self.N_SEGMENTS = 500 + if sig_check: + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + self.n_g = 2.4e13 + self.sigma_i = 1.8e-22 + self.A = 28 + self.charge_state = 1 + self.ion_beam = particles.Particles( + macroparticlenumber=1, + particlenumber_per_mp=1, + charge=self.charge_state*e, + mass=self.A*m_p, + circumference=self.CIRCUMFERENCE, + gamma=1.0001, + coords_n_momenta_dict= + { + 'x': pm.array([0, ]), + 'xp': pm.array([0, ]), + 'y': pm.array([0, ]), + 'yp': pm.array([0, ]), + 'z': pm.array([0, ]), + 'dp': pm.array([0, ]) + } + ) + def track(self, electron_bunch): + '''Tracking method to track an interaction between an electron bunch + and an ion beam (2D electromagnetic field). + The kicks are performed both for electron beam slice and for an ion beam. + Ion beam is tracked in a drift/space-charge of electron bunch sections. + + Interaction is computed via Eqs. (17, 18) of + + Tian, S. K.; Wang, N. (2018). Ion instability in the HEPS storage ring. + FLS 2018 - Proceedings of the 60th ICFA Advanced Beam Dynamics Workshop on Future Light Sources, + 34–38. https://doi.org/10.18429/JACoW-FLS2018-TUA2WB04 + ''' + if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: + new_particles = generators.ParticleGenerator( + macroparticlenumber=self.N_MACROPARTICLES, + intensity=electron_bunch.intensity*self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS, + charge=self.charge_state*e, + gamma=1.0001, + mass=self.A*m_p, + circumference=self.CIRCUMFERENCE, + distribution_x=generators.gaussian2D(electron_bunch.epsn_x()/electron_bunch.betagamma), + alpha_x=0, beta_x=electron_bunch.beta_Twiss_x(), + distribution_y=generators.gaussian2D(electron_bunch.epsn_y()/electron_bunch.betagamma), + alpha_y=0, beta_y=electron_bunch.beta_Twiss_y(), + distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), + # limit_n_rms_x=3., limit_n_rms_y=3., + printer=SilentPrinter() + ).generate() + new_particles.xp[:] = 0 + new_particles.yp[:] = 0 + new_particles.x[:] += electron_bunch.mean_x() + new_particles.y[:] += electron_bunch.mean_y() + self.ion_beam+=new_particles + else: + self.ion_beam.intensity+=electron_bunch.intensity*self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS + prefactor_kick_ion_field = -(self.ion_beam.intensity* + self.ion_beam.charge**2/ + (electron_bunch.p0*electron_bunch.beta*c)) + prefactor_kick_electron_field = -(electron_bunch.intensity* + electron_bunch.charge**2/ + (self.ion_beam.p0*self.ion_beam.beta*c)) + p_id_electrons = electron_bunch.id-1 + p_id_ions = self.ion_beam.id-1 +# if len(p_id_electrons) == 0: +# continue +#Electric field of ions + en_ions_x, en_ions_y = self.get_efieldn( + pm.take(electron_bunch.x, p_id_electrons), + pm.take(electron_bunch.y, p_id_electrons), + self.ion_beam.mean_x(), self.ion_beam.mean_y(), + self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) +#Electric field of electrons + en_electrons_x, en_electrons_y = self.get_efieldn( + pm.take(self.ion_beam.x, p_id_ions), + pm.take(self.ion_beam.y, p_id_ions), + electron_bunch.mean_x(), electron_bunch.mean_y(), + electron_bunch.sigma_x(), electron_bunch.sigma_y() + ) + kicks_electrons_x = en_ions_x * prefactor_kick_ion_field + kicks_electrons_y = en_ions_y * prefactor_kick_ion_field + kicks_ions_x = en_electrons_x * prefactor_kick_electron_field + kicks_ions_y = en_electrons_y * prefactor_kick_electron_field + + kicked_electrons_xp = pm.take(electron_bunch.xp, p_id_electrons) + kicks_electrons_x + kicked_electrons_yp = pm.take(electron_bunch.yp, p_id_electrons) + kicks_electrons_y + + kicked_ions_xp = pm.take(self.ion_beam.xp, p_id_ions) + kicks_ions_x + kicked_ions_yp = pm.take(self.ion_beam.yp, p_id_ions) + kicks_ions_y + + pm.put(electron_bunch.xp, p_id_electrons, kicked_electrons_xp) + pm.put(electron_bunch.yp, p_id_electrons, kicked_electrons_yp) + + pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) + pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) + #Drift for the ions in one bucket + drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep+pm.take(self.ion_beam.x, p_id_ions) + drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep+pm.take(self.ion_beam.y, p_id_ions) + pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) + pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + # def get_ion_beam(self): + # return self.ion_beam + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + + Return (E_x / Q, E_y / Q). + ''' + x = xr - mean_x + y = yr - mean_y + + # absolute values for convergence reasons of erfc + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), sig_x, sig_y) + en_x = pm.abs(en_x) * pm.sign(x) + en_y = pm.abs(en_y) * pm.sign(y) + + return en_x, en_y \ No newline at end of file From b0aff0734e048ccec9b05d15f172127783e7ee32 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 9 Nov 2022 16:16:19 +0100 Subject: [PATCH 26/64] added an option to switch GS to linearized field --- PyHEADTAIL/ion_cloud/ion_cloud.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 02880f58..8f888687 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -13,7 +13,10 @@ class BeamIonElement(Element): def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, n_macroparticles_max = int (1e3)): self.ion_beam = None self.dist = dist - self._efieldn = efields._efieldn_mit + if dist == 'GS': + self._efieldn = efields._efieldn_mit + elif dist == 'LN': + self._efieldn = efields._efieldn_linearized self.sig_check = sig_check self.L_sep = L_sep self.N_MACROPARTICLES = 50 From cc4611be12c810c8b92ee25f43873b21929b5b80 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 9 Nov 2022 17:49:33 +0100 Subject: [PATCH 27/64] deleted pm.array as there is no CUDA definition --- PyHEADTAIL/ion_cloud/ion_cloud.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 8f888687..a80caba1 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -39,12 +39,12 @@ def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, gamma=1.0001, coords_n_momenta_dict= { - 'x': pm.array([0, ]), - 'xp': pm.array([0, ]), - 'y': pm.array([0, ]), - 'yp': pm.array([0, ]), - 'z': pm.array([0, ]), - 'dp': pm.array([0, ]) + 'x': [0, ], + 'xp': [0, ], + 'y': [0, ], + 'yp': [0, ], + 'z': [0, ], + 'dp': [0, ] } ) def track(self, electron_bunch): From e1d6d64d93e687603da44b354e4bda24050b7466 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 16 Nov 2022 15:50:40 +0100 Subject: [PATCH 28/64] uniform distribution for ions --- PyHEADTAIL/ion_cloud/ion_cloud.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index a80caba1..b7c0bf98 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -67,9 +67,9 @@ def track(self, electron_bunch): gamma=1.0001, mass=self.A*m_p, circumference=self.CIRCUMFERENCE, - distribution_x=generators.gaussian2D(electron_bunch.epsn_x()/electron_bunch.betagamma), + distribution_x=generators.uniform2D(0, 3*electron_bunch.sigma_x()/electron_bunch.betagamma), alpha_x=0, beta_x=electron_bunch.beta_Twiss_x(), - distribution_y=generators.gaussian2D(electron_bunch.epsn_y()/electron_bunch.betagamma), + distribution_y=generators.uniform2D(0, 3*electron_bunch.sigma_y()/electron_bunch.betagamma), alpha_y=0, beta_y=electron_bunch.beta_Twiss_y(), distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), # limit_n_rms_x=3., limit_n_rms_y=3., From b64d319eb1d9bc629d5dcbe71a8a1bec1cedd606 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 16 Nov 2022 17:43:19 +0100 Subject: [PATCH 29/64] corrected kv2d distribution generator --- PyHEADTAIL/particles/generators.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyHEADTAIL/particles/generators.py b/PyHEADTAIL/particles/generators.py index 1b3dd5be..91a8a2bb 100644 --- a/PyHEADTAIL/particles/generators.py +++ b/PyHEADTAIL/particles/generators.py @@ -543,10 +543,10 @@ def _kv2d(n_particles): Kapchinski-Vladimirski-type uniform distribution. ''' rand = np.random.uniform(low=-0.5, high=0.5, size=n_particles) - u = np.sin(2 * np.pi * rand) + u = r_u*np.sin(2 * np.pi * rand) r = np.where(u > 1, 2 - u, u) sign = (-1)**np.random.randint(2, size=n_particles) - up = sign * np.sqrt(1. - r**2) + up = r_up*sign * np.sqrt(1. - r**2) return [u, up] return _kv2d From b4b0a4e6c28a84fd054a7213a49d9c0ed2540d1b Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 21 Nov 2022 17:11:14 +0100 Subject: [PATCH 30/64] changed coordinate system for ion beam --- PyHEADTAIL/ion_cloud/ion_cloud.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index b7c0bf98..915a910d 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -15,9 +15,9 @@ def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, self.dist = dist if dist == 'GS': self._efieldn = efields._efieldn_mit + self.sig_check = sig_check elif dist == 'LN': self._efieldn = efields._efieldn_linearized - self.sig_check = sig_check self.L_sep = L_sep self.N_MACROPARTICLES = 50 self.N_MACROPARTICLES_MAX = n_macroparticles_max @@ -67,16 +67,14 @@ def track(self, electron_bunch): gamma=1.0001, mass=self.A*m_p, circumference=self.CIRCUMFERENCE, - distribution_x=generators.uniform2D(0, 3*electron_bunch.sigma_x()/electron_bunch.betagamma), - alpha_x=0, beta_x=electron_bunch.beta_Twiss_x(), - distribution_y=generators.uniform2D(0, 3*electron_bunch.sigma_y()/electron_bunch.betagamma), - alpha_y=0, beta_y=electron_bunch.beta_Twiss_y(), + distribution_x=generators.uniform2D(-2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x()), + alpha_x=ALPHA_X_SMOOTH, beta_x=BETA_X_SMOOTH, + distribution_y=generators.uniform2D(-2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y()), + alpha_y=ALPHA_Y_SMOOTH, beta_y=BETA_Y_SMOOTH, + distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), - # limit_n_rms_x=3., limit_n_rms_y=3., printer=SilentPrinter() ).generate() - new_particles.xp[:] = 0 - new_particles.yp[:] = 0 new_particles.x[:] += electron_bunch.mean_x() new_particles.y[:] += electron_bunch.mean_y() self.ion_beam+=new_particles @@ -87,7 +85,7 @@ def track(self, electron_bunch): (electron_bunch.p0*electron_bunch.beta*c)) prefactor_kick_electron_field = -(electron_bunch.intensity* electron_bunch.charge**2/ - (self.ion_beam.p0*self.ion_beam.beta*c)) + (c)) p_id_electrons = electron_bunch.id-1 p_id_ions = self.ion_beam.id-1 # if len(p_id_electrons) == 0: @@ -122,12 +120,10 @@ def track(self, electron_bunch): pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) #Drift for the ions in one bucket - drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep+pm.take(self.ion_beam.x, p_id_ions) - drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep+pm.take(self.ion_beam.y, p_id_ions) + drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep/(self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) + drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep/(self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) - # def get_ion_beam(self): - # return self.ion_beam def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): '''The charge-normalised electric field components of a two-dimensional Gaussian charge distribution according to From 1f2f5181d4bc585e559a0150752dc5a83bf52165 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 21 Nov 2022 17:15:19 +0100 Subject: [PATCH 31/64] changed KV2D beam generation --- PyHEADTAIL/particles/generators.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/PyHEADTAIL/particles/generators.py b/PyHEADTAIL/particles/generators.py index 91a8a2bb..7eb07443 100644 --- a/PyHEADTAIL/particles/generators.py +++ b/PyHEADTAIL/particles/generators.py @@ -542,11 +542,14 @@ def _kv2d(n_particles): '''Create a two-dimensional phase space (u, up) Kapchinski-Vladimirski-type uniform distribution. ''' - rand = np.random.uniform(low=-0.5, high=0.5, size=n_particles) - u = r_u*np.sin(2 * np.pi * rand) + t = 2 * np.pi * np.random.uniform(low=-0.5, high=0.5, size=n_particles) + u = (np.random.uniform(low=0, high=1, size=n_particles) + + np.random.uniform(low=0, high=1, size=n_particles)) r = np.where(u > 1, 2 - u, u) - sign = (-1)**np.random.randint(2, size=n_particles) - up = r_up*sign * np.sqrt(1. - r**2) + u = r_u * r * np.cos(t) + t = 2 * np.pi * np.random.uniform(low=-0.5, high=0.5, size=n_particles) + rp = np.sqrt(1. - r**2) + up = r_up * rp * np.cos(t) return [u, up] return _kv2d From 95890200f4328a3996e2f57f974d21082bba0155 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 21 Nov 2022 17:15:52 +0100 Subject: [PATCH 32/64] added sigma check to 'LN' distribution --- PyHEADTAIL/field_maps/efields_funcs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index 51261ee8..a8e550ff 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -238,6 +238,8 @@ def add_sigma_check(efieldn, dist): efieldn_round = _efieldn_gauss_round elif dist == 'KV': efieldn_round = _efieldn_linearized + elif dist == 'LN': + efieldn_round = _efieldn_linearized @wraps(efieldn) def efieldn_checked(x, y, sig_x, sig_y, *args, **kwargs): From 18358580ef23cbd2d6d38566c7030b12b8939d7c Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 21 Nov 2022 17:36:44 +0100 Subject: [PATCH 33/64] corrected double def distribution_z --- PyHEADTAIL/ion_cloud/ion_cloud.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 915a910d..23e2dfeb 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -72,7 +72,7 @@ def track(self, electron_bunch): distribution_y=generators.uniform2D(-2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y()), alpha_y=ALPHA_Y_SMOOTH, beta_y=BETA_Y_SMOOTH, distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), - distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), + # distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), printer=SilentPrinter() ).generate() new_particles.x[:] += electron_bunch.mean_x() From e039dabb8836b4422fc6f1f32765b100a82ae6a4 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 22 Nov 2022 11:19:18 +0100 Subject: [PATCH 34/64] fixed ion coud generation --- PyHEADTAIL/ion_cloud/ion_cloud.py | 157 ++++++++++++++++-------------- 1 file changed, 83 insertions(+), 74 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 23e2dfeb..2a0b1615 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -9,8 +9,10 @@ CIRCUMFERENCE = 354 N_SEGMENTS = 500 + + class BeamIonElement(Element): - def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, n_macroparticles_max = int (1e3)): + def __init__(self, sig_check=True, dist='GS', monitor_on=True, L_sep=0.85, n_macroparticles_max=int(1e3)): self.ion_beam = None self.dist = dist if dist == 'GS': @@ -24,119 +26,126 @@ def __init__(self, sig_check=True, dist='GS', monitor_on = True, L_sep = 0.85, self.CIRCUMFERENCE = 354 self.N_SEGMENTS = 500 if sig_check: - self._efieldn = efields.add_sigma_check( - self._efieldn, self.dist) + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) self.n_g = 2.4e13 self.sigma_i = 1.8e-22 self.A = 28 self.charge_state = 1 self.ion_beam = particles.Particles( - macroparticlenumber=1, - particlenumber_per_mp=1, - charge=self.charge_state*e, - mass=self.A*m_p, - circumference=self.CIRCUMFERENCE, - gamma=1.0001, - coords_n_momenta_dict= - { - 'x': [0, ], - 'xp': [0, ], - 'y': [0, ], - 'yp': [0, ], - 'z': [0, ], - 'dp': [0, ] - } - ) + macroparticlenumber=1, + particlenumber_per_mp=1, + charge=self.charge_state*e, + mass=self.A*m_p, + circumference=self.CIRCUMFERENCE, + gamma=1.0001, + coords_n_momenta_dict={ + 'x': [0, ], + 'xp': [0, ], + 'y': [0, ], + 'yp': [0, ], + 'z': [0, ], + 'dp': [0, ] + } + ) + def track(self, electron_bunch): '''Tracking method to track an interaction between an electron bunch and an ion beam (2D electromagnetic field). The kicks are performed both for electron beam slice and for an ion beam. Ion beam is tracked in a drift/space-charge of electron bunch sections. - + Interaction is computed via Eqs. (17, 18) of - + Tian, S. K.; Wang, N. (2018). Ion instability in the HEPS storage ring. FLS 2018 - Proceedings of the 60th ICFA Advanced Beam Dynamics Workshop on Future Light Sources, 34–38. https://doi.org/10.18429/JACoW-FLS2018-TUA2WB04 ''' if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: new_particles = generators.ParticleGenerator( - macroparticlenumber=self.N_MACROPARTICLES, - intensity=electron_bunch.intensity*self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS, - charge=self.charge_state*e, - gamma=1.0001, - mass=self.A*m_p, - circumference=self.CIRCUMFERENCE, - distribution_x=generators.uniform2D(-2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x()), - alpha_x=ALPHA_X_SMOOTH, beta_x=BETA_X_SMOOTH, - distribution_y=generators.uniform2D(-2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y()), - alpha_y=ALPHA_Y_SMOOTH, beta_y=BETA_Y_SMOOTH, - distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), - # distribution_z=generators.uniform2D(0, self.CIRCUMFERENCE/self.N_SEGMENTS), - printer=SilentPrinter() - ).generate() + macroparticlenumber=self.N_MACROPARTICLES, + intensity=electron_bunch.intensity*self.sigma_i * + self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS, + charge=self.charge_state*e, + gamma=1.0001, + mass=self.A*m_p, + circumference=self.CIRCUMFERENCE, + distribution_x=generators.uniform2D( + -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x()), + distribution_y=generators.uniform2D( + -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y()), + distribution_z=generators.uniform2D( + 0, self.CIRCUMFERENCE/self.N_SEGMENTS), + printer=SilentPrinter() + ).generate() new_particles.x[:] += electron_bunch.mean_x() new_particles.y[:] += electron_bunch.mean_y() - self.ion_beam+=new_particles + self.ion_beam += new_particles else: - self.ion_beam.intensity+=electron_bunch.intensity*self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS - prefactor_kick_ion_field = -(self.ion_beam.intensity* - self.ion_beam.charge**2/ - (electron_bunch.p0*electron_bunch.beta*c)) - prefactor_kick_electron_field = -(electron_bunch.intensity* - electron_bunch.charge**2/ - (c)) + self.ion_beam.intensity += electron_bunch.intensity * \ + self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS + prefactor_kick_ion_field = -(self.ion_beam.intensity * + self.ion_beam.charge**2 / + (electron_bunch.p0*electron_bunch.beta*c)) + prefactor_kick_electron_field = -(electron_bunch.intensity * + electron_bunch.charge**2 / + (c)) p_id_electrons = electron_bunch.id-1 p_id_ions = self.ion_beam.id-1 # if len(p_id_electrons) == 0: # continue -#Electric field of ions +# Electric field of ions en_ions_x, en_ions_y = self.get_efieldn( - pm.take(electron_bunch.x, p_id_electrons), - pm.take(electron_bunch.y, p_id_electrons), - self.ion_beam.mean_x(), self.ion_beam.mean_y(), - self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) -#Electric field of electrons + pm.take(electron_bunch.x, p_id_electrons), + pm.take(electron_bunch.y, p_id_electrons), + self.ion_beam.mean_x(), self.ion_beam.mean_y(), + self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) +# Electric field of electrons en_electrons_x, en_electrons_y = self.get_efieldn( - pm.take(self.ion_beam.x, p_id_ions), - pm.take(self.ion_beam.y, p_id_ions), - electron_bunch.mean_x(), electron_bunch.mean_y(), - electron_bunch.sigma_x(), electron_bunch.sigma_y() + pm.take(self.ion_beam.x, p_id_ions), + pm.take(self.ion_beam.y, p_id_ions), + electron_bunch.mean_x(), electron_bunch.mean_y(), + electron_bunch.sigma_x(), electron_bunch.sigma_y() ) kicks_electrons_x = en_ions_x * prefactor_kick_ion_field kicks_electrons_y = en_ions_y * prefactor_kick_ion_field kicks_ions_x = en_electrons_x * prefactor_kick_electron_field kicks_ions_y = en_electrons_y * prefactor_kick_electron_field - kicked_electrons_xp = pm.take(electron_bunch.xp, p_id_electrons) + kicks_electrons_x - kicked_electrons_yp = pm.take(electron_bunch.yp, p_id_electrons) + kicks_electrons_y - + kicked_electrons_xp = pm.take( + electron_bunch.xp, p_id_electrons) + kicks_electrons_x + kicked_electrons_yp = pm.take( + electron_bunch.yp, p_id_electrons) + kicks_electrons_y + kicked_ions_xp = pm.take(self.ion_beam.xp, p_id_ions) + kicks_ions_x kicked_ions_yp = pm.take(self.ion_beam.yp, p_id_ions) + kicks_ions_y - + pm.put(electron_bunch.xp, p_id_electrons, kicked_electrons_xp) pm.put(electron_bunch.yp, p_id_electrons, kicked_electrons_yp) - + pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) - #Drift for the ions in one bucket - drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep/(self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) - drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep/(self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) + # Drift for the ions in one bucket + drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep / \ + (self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) + drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep / \ + (self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) - pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): - '''The charge-normalised electric field components of a - two-dimensional Gaussian charge distribution according to - M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. + '''The charge-normalised electric field components of a + two-dimensional Gaussian charge distribution according to + M. Bassetti and G. A. Erskine in CERN-ISR-TH/80-06. - Return (E_x / Q, E_y / Q). - ''' - x = xr - mean_x - y = yr - mean_y + Return (E_x / Q, E_y / Q). + ''' + x = xr - mean_x + y = yr - mean_y - # absolute values for convergence reasons of erfc - en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), sig_x, sig_y) - en_x = pm.abs(en_x) * pm.sign(x) - en_y = pm.abs(en_y) * pm.sign(y) + # absolute values for convergence reasons of erfc + en_x, en_y = self._efieldn(pm.abs(x), pm.abs(y), sig_x, sig_y) + en_x = pm.abs(en_x) * pm.sign(x) + en_y = pm.abs(en_y) * pm.sign(y) - return en_x, en_y \ No newline at end of file + return en_x, en_y From c680ef7a66d4b26de44cf3acfcb03ddad31521b8 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 22 Nov 2022 14:35:50 +0100 Subject: [PATCH 35/64] fixed 'LN' field strength --- PyHEADTAIL/field_maps/efields_funcs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index a8e550ff..effdfec4 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -212,7 +212,7 @@ def _efieldn_linearized(x, y, sig_x, sig_y): ''' a = pm.sqrt(2)*sig_x b = pm.sqrt(2)*sig_y - amplitude = 1./(2.*np.pi*epsilon_0*(a+b)) + amplitude = 1./(np.pi*epsilon_0*(a+b)) return x/a * amplitude, y/b * amplitude def add_sigma_check(efieldn, dist): From fa40958c139d9727b96d05ae54e663f1c8adf71b Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 24 Nov 2022 16:37:33 +0100 Subject: [PATCH 36/64] Changed ion_cloud implementation --- PyHEADTAIL/particles/particles.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PyHEADTAIL/particles/particles.py b/PyHEADTAIL/particles/particles.py index fcf5e6b3..7e9bd4de 100644 --- a/PyHEADTAIL/particles/particles.py +++ b/PyHEADTAIL/particles/particles.py @@ -276,12 +276,11 @@ def __add__(self, other): particlenumber_per_mp=self.particlenumber_per_mp, charge=self.charge, mass=self.mass, circumference=self.circumference, gamma=self.gamma, coords_n_momenta_dict={}) - for coord in list(self_coords_n_momenta_dict.keys()): #setattr(result, coord, np.concatenate((self_coords_n_momenta_dict[coord].copy(), other_coords_n_momenta_dict[coord].copy()))) result.update({coord: np.concatenate((self_coords_n_momenta_dict[coord].copy(), other_coords_n_momenta_dict[coord].copy()))}) - result.id = np.concatenate((self.id.copy(), other.id.copy())) + # result.id = np.concatenate((self.id.copy(), other.id.copy())) return result From 48f6470b799bde9dfd952d43c3f4f937be8c5115 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 24 Nov 2022 16:43:23 +0100 Subject: [PATCH 37/64] some problem with np.concatenate --- PyHEADTAIL/particles/particles.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/particles/particles.py b/PyHEADTAIL/particles/particles.py index 7e9bd4de..fcf5e6b3 100644 --- a/PyHEADTAIL/particles/particles.py +++ b/PyHEADTAIL/particles/particles.py @@ -276,11 +276,12 @@ def __add__(self, other): particlenumber_per_mp=self.particlenumber_per_mp, charge=self.charge, mass=self.mass, circumference=self.circumference, gamma=self.gamma, coords_n_momenta_dict={}) + for coord in list(self_coords_n_momenta_dict.keys()): #setattr(result, coord, np.concatenate((self_coords_n_momenta_dict[coord].copy(), other_coords_n_momenta_dict[coord].copy()))) result.update({coord: np.concatenate((self_coords_n_momenta_dict[coord].copy(), other_coords_n_momenta_dict[coord].copy()))}) - # result.id = np.concatenate((self.id.copy(), other.id.copy())) + result.id = np.concatenate((self.id.copy(), other.id.copy())) return result From 4bb5827ba858c5d9287a639b9efe5f4b4f5953ba Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 24 Nov 2022 16:44:34 +0100 Subject: [PATCH 38/64] commented out np.concatenate --- 2to3.out | 707 ++++++++++++++++++++++++++++++ PyHEADTAIL/gpu/thrust.so | Bin 2136520 -> 0 bytes PyHEADTAIL/particles/particles.py | 3 +- 3 files changed, 708 insertions(+), 2 deletions(-) create mode 100644 2to3.out delete mode 100755 PyHEADTAIL/gpu/thrust.so diff --git a/2to3.out b/2to3.out new file mode 100644 index 00000000..d2cb4bb2 --- /dev/null +++ b/2to3.out @@ -0,0 +1,707 @@ +--- ../PyHEADTAIL/setup.py (original) ++++ ../PyHEADTAIL/setup.py (refactored) +@@ -20,7 +20,7 @@ + "may have to install with the following line:\n\n" + "$ CC=gcc-4.9 ./install\n" + "(or any equivalent version of gcc)") +- input('Hit any key to continue...') ++ eval(input('Hit any key to continue...')) + + + args = sys.argv[1:] +--- ../PyHEADTAIL/PyHEADTAIL/elens/elens.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/elens/elens.py (refactored) +@@ -2,7 +2,7 @@ + @authors: Vadim Gubaidulin, Adrian Oeftiger + @date: 18.02.2020 + ''' +-from __future__ import division ++ + + from PyHEADTAIL.general.element import Element + from PyHEADTAIL.particles import slicing +--- ../PyHEADTAIL/PyHEADTAIL/feedback/feedback.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/feedback.py (refactored) +@@ -1,10 +1,10 @@ + import numpy as np + import collections + from PyHEADTAIL.mpi import mpi_data +-from core import get_processor_variables, process, Parameters +-from core import z_bins_to_bin_edges, append_bin_edges +-from processors.register import VectorSumCombiner, CosineSumCombiner +-from processors.register import HilbertCombiner, DummyCombiner ++from .core import get_processor_variables, process, Parameters ++from .core import z_bins_to_bin_edges, append_bin_edges ++from .processors.register import VectorSumCombiner, CosineSumCombiner ++from .processors.register import HilbertCombiner, DummyCombiner + from scipy.constants import c + """ + This file contains objecst, which can be used as transverse feedback +@@ -609,7 +609,7 @@ + If True, data from multiple bunches are gathered by using MPI + """ + +- if isinstance(combiner, (str,unicode)): ++ if isinstance(combiner, str): + if combiner == 'vector_sum': + self._combiner_x = VectorSumCombiner(registers_x, + location_x, beta_x, +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/addition.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/addition.py (refactored) +@@ -11,8 +11,7 @@ + @date: 11/10/2017 + """ + +-class Addition(object): +- __metaclass__ = ABCMeta ++class Addition(object, metaclass=ABCMeta): + """ An abstract class which adds an array to the input signal. The addend array is produced by taking + a slice property (determined by the input parameter 'seed') and passing it through the abstract method + addend_function(seed). +@@ -77,7 +76,7 @@ + np.copyto(self._addend, ((parameters.bin_edges[:,1]+parameters.bin_edges[:,0])/2.)) + elif self._seed == 'normalized_bin_midpoint': + +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i * parameters.n_bins_per_segment + i_to = (i + 1) * parameters.n_bins_per_segment + +@@ -110,7 +109,7 @@ + + elif self._normalization == 'segment_sum': + norm_coeff = np.ones(len(self._addend)) +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to])) +@@ -120,7 +119,7 @@ + + elif self._normalization == 'segment_average': + norm_coeff = np.ones(len(self._addend)) +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to]))/float(parameters.n_bins_per_segment) +@@ -132,7 +131,7 @@ + elif self._normalization == 'segment_integral': + bin_widths = parameters.bin_edges[:,1] - parameters.bin_edges[:,0] + norm_coeff = np.ones(len(self._addend)) +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._addend[i_from:i_to]*bin_widths[i_from:i_to])) +@@ -142,7 +141,7 @@ + + elif self._normalization == 'segment_min': + norm_coeff = np.ones(len(self._addend)) +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.min(self._addend[i_from:i_to])) +@@ -152,7 +151,7 @@ + + elif self._normalization == 'segment_max': + norm_coeff = np.ones(len(self._addend)) +- for i in xrange(parameters.n_segments): ++ for i in range(parameters.n_segments): + i_from = i*parameters.n_bins_per_segment + i_to = (i+1)*parameters.n_bins_per_segment + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.max(self._addend[i_from:i_to])) +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/convolution.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/convolution.py (refactored) +@@ -6,7 +6,7 @@ + from scipy.constants import pi + import scipy.integrate as integrate + from scipy.interpolate import UnivariateSpline +-import abstract_filter_responses ++from . import abstract_filter_responses + + """Signal processors based on convolution operation. + +@@ -14,9 +14,7 @@ + @date: 11/10/2017 + """ + +-class Convolution(object): +- __metaclass__ = ABCMeta +- ++class Convolution(object, metaclass=ABCMeta): + def __init__(self,**kwargs): + + self._dashed_impulse_responses = None +@@ -54,12 +52,12 @@ + + # List of impulses to the corresponding segments + self._impulses_to_segments = [] +- for i in xrange(self._n_seg): ++ for i in range(self._n_seg): + self._impulses_to_segments.append([]) + + ref_points = [] + +- for i in xrange(self._n_seg): ++ for i in range(self._n_seg): + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins + +@@ -126,7 +124,7 @@ + # response is zero. + n_bins_per_segment = self._n_bins + 2*extra_bins + +- for k in xrange(self._n_seg): ++ for k in range(self._n_seg): + + i_from = k * n_bins_per_segment + i_to = (k+1) * n_bins_per_segment +@@ -159,7 +157,7 @@ + self._init_convolution(parameters) + + # calculates the impulses caused by the segments +- for i in xrange(self._n_seg): ++ for i in range(self._n_seg): + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins + np.copyto(self._impulses_from_segments[i][:len(self._dashed_impulse_responses[i])], +@@ -168,7 +166,7 @@ + + # gathers the output signal + output_signal = np.zeros(len(signal)) +- for i in xrange(self._n_seg): ++ for i in range(self._n_seg): + + i_from = i*self._n_bins + i_to = (i+1)*self._n_bins +@@ -294,7 +292,7 @@ + bin_spacing = np.mean(impulse_ref_edges[:,1]-impulse_ref_edges[:,0]) + impulse_values = np.zeros(len(impulse_bin_mids)) + +- for i in xrange(self._i_from,(self._i_to+1)): ++ for i in range(self._i_from,(self._i_to+1)): + copy_mid = i*self._spacing + copy_from = copy_mid - 0.5 * bin_spacing + copy_to = copy_mid + 0.5 * bin_spacing +@@ -345,10 +343,8 @@ + # else: + # raise ValueError('Unknown value in ConvolutionFromFile._calc_type') + +-class ConvolutionFilter(Convolution): ++class ConvolutionFilter(Convolution, metaclass=ABCMeta): + """ An abstract class for the filtes based on convolution.""" +- +- __metaclass__ = ABCMeta + + def __init__(self,scaling, zero_bin_value=None, normalization=None, + f_cutoff_2nd=None, **kwargs): +@@ -400,7 +396,7 @@ + ref_points = [] + mids = bin_mids(impulse_ref_edges) + n_bins_per_segment = int(len(impulse)/n_segments) +- for i in xrange(n_segments): ++ for i in range(n_segments): + i_from = i * n_bins_per_segment + i_to = (i + 1) * n_bins_per_segment + ref_points.append(np.mean(mids[i_from:i_to])) +@@ -424,7 +420,7 @@ + f_h = self._normalization[1] + + norm_coeff = 0. +- for i in xrange(-1000,1000): ++ for i in range(-1000,1000): + x = float(i)* (1./f_h) * self._scaling + norm_coeff += self._impulse_response(x) + #print norm_coeff +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/linear_transform.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/linear_transform.py (refactored) +@@ -6,7 +6,7 @@ + from scipy import linalg + from cython_hacks import cython_matrix_product + from ..core import default_macros +-import abstract_filter_responses ++from . import abstract_filter_responses + + """Signal processors based on linear transformation. + +@@ -14,8 +14,7 @@ + @date: 11/10/2017 + """ + +-class LinearTransform(object): +- __metaclass__ = ABCMeta ++class LinearTransform(object, metaclass=ABCMeta): + """ An abstract class for signal processors which are based on linear transformation. The signal is processed by + calculating a dot product of a transfer matrix and a signal. The transfer matrix is produced with an abstract + method, namely response_function(*args), which returns an elements of the matrix (an effect of +@@ -93,7 +92,7 @@ + elif self._mode == 'bunch_by_bunch': + output_signal = np.zeros(len(signal)) + +- for i in xrange(self._n_segments): ++ for i in range(self._n_segments): + idx_from = i * self._n_bins_per_segment + idx_to = (i+1) * self._n_bins_per_segment + np.copyto(output_signal[idx_from:idx_to],cython_matrix_product(self._matrix, signal[idx_from:idx_to])) +@@ -111,10 +110,10 @@ + + def print_matrix(self): + for row in self._matrix: +- print "[", ++ print("[", end=' ') + for element in row: +- print "{:6.3f}".format(element), +- print "]" ++ print("{:6.3f}".format(element), end=' ') ++ print("]") + + def __generate_matrix(self,parameters, bin_edges, bin_midpoints): + +@@ -217,8 +216,7 @@ + return np.interp(bin_mid - ref_bin_mid, self._data[:, 0], self._data[:, 1]) + + +-class LinearTransformFilter(LinearTransform): +- __metaclass__ = ABCMeta ++class LinearTransformFilter(LinearTransform, metaclass=ABCMeta): + """ A general class for (analog) filters. Impulse response of the filter must be determined by overwriting + the function raw_impulse_response. + +@@ -273,7 +271,7 @@ + f_h = self._filter_normalization[1] + + norm_coeff = 0. +- for i in xrange(-1000,1000): ++ for i in range(-1000,1000): + x = float(i)* (1./f_h) * self._scaling + norm_coeff += self._impulse_response(x) + +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/misc.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/misc.py (refactored) +@@ -39,7 +39,7 @@ + output_signal = np.zeros(len(signal)) + ones = np.ones(n_slices_per_segment) + +- for i in xrange(n_segments): ++ for i in range(n_segments): + idx_from = i * n_slices_per_segment + idx_to = (i + 1) * n_slices_per_segment + np.copyto(output_signal[idx_from:idx_to], ones * np.mean(signal[idx_from:idx_to])) +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/multiplication.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/multiplication.py (refactored) +@@ -9,8 +9,7 @@ + @date: 11/10/2017 + """ + +-class Multiplication(object): +- __metaclass__ = ABCMeta ++class Multiplication(object, metaclass=ABCMeta): + """ An abstract class which multiplies the input signal by an array. The multiplier array is produced by taking + a slice property (determined by the input parameter 'seed') and passing it through the abstract method + multiplication_function(seed). +@@ -74,7 +73,7 @@ + np.copyto(self._multiplier, ((parameters['bin_edges'][:,1]+parameters['bin_edges'][:,0])/2.)) + elif self._seed == 'normalized_bin_midpoint': + +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i * parameters['n_bins_per_segment'] + i_to = (i + 1) * parameters['n_bins_per_segment'] + +@@ -107,7 +106,7 @@ + + elif self._normalization == 'segment_sum': + norm_coeff = np.ones(len(self._multiplier)) +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to])) +@@ -117,7 +116,7 @@ + + elif self._normalization == 'segment_average': + norm_coeff = np.ones(len(self._multiplier)) +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to]))/float(parameters['n_bins_per_segment']) +@@ -129,7 +128,7 @@ + elif self._normalization == 'segment_integral': + bin_widths = parameters['bin_edges'][:,1] - parameters['bin_edges'][:,0] + norm_coeff = np.ones(len(self._multiplier)) +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.sum(self._multiplier[i_from:i_to]*bin_widths[i_from:i_to])) +@@ -139,7 +138,7 @@ + + elif self._normalization == 'segment_min': + norm_coeff = np.ones(len(self._multiplier)) +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.min(self._multiplier[i_from:i_to])) +@@ -149,7 +148,7 @@ + + elif self._normalization == 'segment_max': + norm_coeff = np.ones(len(self._multiplier)) +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_from = i*parameters['n_bins_per_segment'] + i_to = (i+1)*parameters['n_bins_per_segment'] + norm_coeff[i_from:i_to] = norm_coeff[i_from:i_to]*float(np.max(self._multiplier[i_from:i_to])) +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/register.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/register.py (refactored) +@@ -75,7 +75,7 @@ + + return self + +- def next(self): ++ def __next__(self): + if self._n_iter_left < 1: + raise StopIteration + +@@ -127,9 +127,7 @@ + + + +-class Combiner(object): +- __metaclass__ = ABCMeta +- ++class Combiner(object, metaclass=ABCMeta): + def __init__(self, registers, target_location, target_beta=None, + additional_phase_advance=0., beta_conversion = '0_deg', **kwargs): + """ +@@ -359,7 +357,7 @@ + + coefficients = np.zeros(self._n_taps) + +- for i in xrange(self._n_taps): ++ for i in range(self._n_taps): + n = self._n_taps-i-1 + n -= self._n_taps/2 + h = 0. +@@ -518,7 +516,7 @@ + if self._warning_printed == False: + if (readings_phase_difference%(-1.*np.pi) > 0.2) or (readings_phase_difference%np.pi < 0.2): + self._warning_printed = True +- print "WARNING: It is recommended that the angle between the readings is at least 12 deg" ++ print("WARNING: It is recommended that the angle between the readings is at least 12 deg") + + target_location_difference = target_location - signal_1_location + if target_location_difference < 0.: +@@ -729,7 +727,7 @@ + target_beta = parameters['beta'] + extra_phase = self._additional_phase_advance + +- if isinstance(self._combiner_type, (str,unicode)): ++ if isinstance(self._combiner_type, str): + if self._combiner_type == 'vector_sum': + self._combiner = VectorSumCombiner(registers, target_location, + target_beta, extra_phase) +--- ../PyHEADTAIL/PyHEADTAIL/feedback/processors/resampling.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/feedback/processors/resampling.py (refactored) +@@ -123,21 +123,21 @@ + + bin_edges = None + +- for i in xrange(self._n_extras): ++ for i in range(self._n_extras): + offset = start_mid - (self._n_extras-i)*segment_length + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + +- for i in xrange(n_sampled_sequencies): ++ for i in range(n_sampled_sequencies): + offset = i*segment_length + start_mid + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) + else: + bin_edges = append_bin_edges(bin_edges, segment_bin_edges+offset) + +- for i in xrange(self._n_extras): ++ for i in range(self._n_extras): + offset = start_mid + (i+n_sampled_sequencies)*segment_length + if bin_edges is None: + bin_edges = np.copy(segment_bin_edges+offset) +@@ -218,7 +218,7 @@ + + temp_edges = np.zeros((multiplier, 2)) + +- for i in xrange(multiplier): ++ for i in range(multiplier): + temp_edges[i,0] = edges[0] + i * new_bin_width + temp_edges[i,1] = edges[0] + (i + 1) * new_bin_width + +@@ -254,8 +254,8 @@ + n_bins_per_segment = int(np.floor(original_n_bins_per_segment/multiplier)) + new_edges = None + +- for j in xrange(parameters['n_segments']): +- for i in xrange(n_bins_per_segment): ++ for j in range(parameters['n_segments']): ++ for i in range(n_bins_per_segment): + first_edge = j * original_n_bins_per_segment + i * multiplier + last_edge = j * original_n_bins_per_segment + (i + 1) * multiplier -1 + +@@ -291,7 +291,7 @@ + input_bin_mids = bin_mids(parameters['bin_edges']) + output_bin_mids = bin_mids(self._output_parameters['bin_edges']) + +- for i in xrange(parameters['n_segments']): ++ for i in range(parameters['n_segments']): + i_min = i * parameters['n_bins_per_segment'] + i_max = (i + 1) * parameters['n_bins_per_segment'] - 1 + segment_min_z = input_bin_mids[i_min] +--- ../PyHEADTAIL/PyHEADTAIL/field_maps/efields_funcs.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/field_maps/efields_funcs.py (refactored) +@@ -2,7 +2,7 @@ + @authors: Vadim Gubaidulin, Adrian Oeftiger + @date: 18.02.2020 + ''' +-from __future__ import division ++ + + from PyHEADTAIL.general.element import Element + from PyHEADTAIL.particles.slicing import clean_slices +--- ../PyHEADTAIL/PyHEADTAIL/gpu/gpu_wrap.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/gpu/gpu_wrap.py (refactored) +@@ -565,9 +565,9 @@ + elif dtype.itemsize == 4 and dtype.kind is 'i': + thrust.get_sort_perm_int(to_sort.copy(), permutation) + else: +- print(to_sort.dtype) +- print(to_sort.dtype.itemsize) +- print(to_sort.dtype.kind) ++ print((to_sort.dtype)) ++ print((to_sort.dtype.itemsize)) ++ print((to_sort.dtype.kind)) + raise TypeError('Currently only float64 and int32 types can be sorted') + return permutation + +@@ -603,9 +603,9 @@ + elif dtype.itemsize == 4 and dtype.kind is 'i': + thrust.apply_sort_perm_int(array, tmp, permutation) + else: +- print(array.dtype) +- print(array.dtype.itemsize) +- print(array.dtype.kind) ++ print((array.dtype)) ++ print((array.dtype.itemsize)) ++ print((array.dtype.kind)) + raise TypeError('Currently only float64 and int32 types can be sorted') + return tmp + +--- ../PyHEADTAIL/PyHEADTAIL/impedances/wakes.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/impedances/wakes.py (refactored) +@@ -69,7 +69,7 @@ + lgd += ['Bin edges'] + ax2.legend(lgd) + +- print('\n--> Resulting number of slices: {:g}'.format(len(ss))) ++ print(('\n--> Resulting number of slices: {:g}'.format(len(ss)))) + + return ax1 + +--- ../PyHEADTAIL/PyHEADTAIL/particles/slicing.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/particles/slicing.py (refactored) +@@ -105,7 +105,7 @@ + self._pidx_begin = None + self._pidx_end = None + +- for p_name, p_value in beam_parameters.items(): ++ for p_name, p_value in list(beam_parameters.items()): + if hasattr(self, p_name): + raise ValueError('SliceSet.' + p_name + ' already exists!' + + 'Do not overwrite existing SliceSet ' + +--- ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_damping_time_and_equilibrum_values.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_damping_time_and_equilibrum_values.py (refactored) +@@ -58,7 +58,7 @@ + sx, sy, sz, sdp = [], [], [], [] + epsx, epsy, epsz = [], [], [] + for i_turn in range(n_turns): +- print('Turn %d/%d'%(i_turn, n_turns)) ++ print(('Turn %d/%d'%(i_turn, n_turns))) + machine.track(bunch) + + beam_x.append(bunch.mean_x()) +--- ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_energy_loss.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_energy_loss.py (refactored) +@@ -41,6 +41,6 @@ + SynchrotronRadiationLongitudinal.track(bunch) + dp_after = bunch.mean_dp() + +-print('Energy loss\nEvaluated :%.6e [eV]\nExpected :%.6e [eV]\nERROR :%.2f'%((dp_before-dp_after)*machine.p0*c/np.abs(machine.charge), +- E_loss_eV,(E_loss_eV-((dp_before-dp_after)*machine.p0*c/np.abs(machine.charge)))*100/E_loss_eV)+'%') ++print(('Energy loss\nEvaluated :%.6e [eV]\nExpected :%.6e [eV]\nERROR :%.2f'%((dp_before-dp_after)*machine.p0*c/np.abs(machine.charge), ++ E_loss_eV,(E_loss_eV-((dp_before-dp_after)*machine.p0*c/np.abs(machine.charge)))*100/E_loss_eV)+'%')) + +--- ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_with_non_linear_bucket.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_radiation_with_non_linear_bucket.py (refactored) +@@ -79,7 +79,7 @@ + for i in range(n_turns): + + machine.track(bunch) +- print('Turn %d/%d'%(i, n_turns)) ++ print(('Turn %d/%d'%(i, n_turns))) + sigma_x[i] = bunch.sigma_x() + mean_x[i] = bunch.mean_x() + epsn_x[i] = bunch.epsn_x() +--- ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_synchrotron_LHC.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_synchrotron_LHC.py (refactored) +@@ -44,7 +44,7 @@ + beam_alpha_y = [] + beam_beta_y = [] + for i_ele, m in enumerate(machine.one_turn_map): +- print('Element %d/%d'%(i_ele, len(machine.one_turn_map))) ++ print(('Element %d/%d'%(i_ele, len(machine.one_turn_map)))) + beam_alpha_x.append(bunch.alpha_Twiss_x()) + beam_beta_x.append(bunch.beta_Twiss_x()) + beam_alpha_y.append(bunch.alpha_Twiss_y()) +@@ -92,7 +92,7 @@ + sx, sy, sz = [], [], [] + epsx, epsy, epsz = [], [], [] + for i_turn in range(n_turns): +- print('Turn %d/%d'%(i_turn, n_turns)) ++ print(('Turn %d/%d'%(i_turn, n_turns))) + machine.track(bunch) + + beam_x.append(bunch.mean_x()) +@@ -161,15 +161,15 @@ + + LHC_with_octupole_injection = LHC(machine_configuration='Injection', n_segments=5, octupole_knob = -1.5) + print('450GeV:') +-print('i_octupole_focusing =',LHC_with_octupole_injection.i_octupole_focusing) +-print('i_octupole_defocusing =',LHC_with_octupole_injection.i_octupole_defocusing) ++print(('i_octupole_focusing =',LHC_with_octupole_injection.i_octupole_focusing)) ++print(('i_octupole_defocusing =',LHC_with_octupole_injection.i_octupole_defocusing)) + print('in the machine we get 19.557') + print(' ') + LHC_with_octupole_flattop = LHC(machine_configuration='Injection', n_segments=5, p0=6.5e12*e/c, octupole_knob = -2.9) + + print('6.5TeV:') +-print('i_octupole_focusing =',LHC_with_octupole_flattop.i_octupole_focusing) +-print('i_octupole_defocusing =',LHC_with_octupole_flattop.i_octupole_defocusing) ++print(('i_octupole_focusing =',LHC_with_octupole_flattop.i_octupole_focusing)) ++print(('i_octupole_defocusing =',LHC_with_octupole_flattop.i_octupole_defocusing)) + print('in the machine we get 546.146') + + plt.show() +--- ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_synchrotron_electrons_CLIC_DR.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/script-tests/test_synchrotron_electrons_CLIC_DR.py (refactored) +@@ -36,7 +36,7 @@ + beam_alpha_y = [] + beam_beta_y = [] + for i_ele, m in enumerate(machine.one_turn_map): +- print('Element %d/%d'%(i_ele, len(machine.one_turn_map))) ++ print(('Element %d/%d'%(i_ele, len(machine.one_turn_map)))) + beam_alpha_x.append(bunch.alpha_Twiss_x()) + beam_beta_x.append(bunch.beta_Twiss_x()) + beam_alpha_y.append(bunch.alpha_Twiss_y()) +@@ -84,7 +84,7 @@ + sx, sy, sz = [], [], [] + epsx, epsy, epsz = [], [], [] + for i_turn in range(n_turns): +- print('Turn %d/%d'%(i_turn, n_turns)) ++ print(('Turn %d/%d'%(i_turn, n_turns))) + machine.track(bunch) + + beam_x.append(bunch.mean_x()) +--- ../PyHEADTAIL/PyHEADTAIL/testing/unittests/test_cobra.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/unittests/test_cobra.py (refactored) +@@ -46,7 +46,7 @@ + """ + v_cobra = cf.cov(self.data1, self.data2) + v_numpy = np.cov(self.data1, self.data2)[0,1] +- self.assertAlmostEquals(v_cobra, v_numpy, places=self.tolerance, ++ self.assertAlmostEqual(v_cobra, v_numpy, places=self.tolerance, + msg='cobra cov() yields a different result ' + + 'than numpy.cov()') + +@@ -58,10 +58,10 @@ + bunch = self.generate_gaussian6dBunch(1000000, 0, 0, 1, 1, 5, 100) + eta_prime_x = cf.dispersion(bunch.xp, bunch.dp) + weak_tol = 2 +- self.assertAlmostEquals(eta_prime_x, 0., places=weak_tol, ++ self.assertAlmostEqual(eta_prime_x, 0., places=weak_tol, + msg='eta_prime_x is not zero but ' + str(eta_prime_x)) + eta_prime_y = cf.dispersion(bunch.yp, bunch.dp) +- self.assertAlmostEquals(eta_prime_y, 0., places=weak_tol, ++ self.assertAlmostEqual(eta_prime_y, 0., places=weak_tol, + msg='eta_prime_y is not zero but ' + str(eta_prime_y)) + + +@@ -71,7 +71,7 @@ + """ + d1 = np.random.normal(100, 2., self.n_samples) + d2 = np.random.normal(200, 0.2, self.n_samples) +- self.assertAlmostEquals(cf.cov(d1, d2), 0.0, ++ self.assertAlmostEqual(cf.cov(d1, d2), 0.0, + places=self.tolerance, + msg='cobra cov() of two uncorrelated ' + + 'Gaussians != 0') +--- ../PyHEADTAIL/PyHEADTAIL/testing/unittests/test_particles.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/unittests/test_particles.py (refactored) +@@ -122,7 +122,7 @@ + + def test_means(self): + ''' Tests the mean() method of the Particle class ''' +- self.assertAlmostEquals(self.bunch.mean_xp(), np.mean(self.bunch.xp), ++ self.assertAlmostEqual(self.bunch.mean_xp(), np.mean(self.bunch.xp), + places=5, msg='np.mean() and bunch.mean_xp() ' + 'yield different results') + +@@ -130,7 +130,7 @@ + '''Test the sigma_z() method of the Particle class + Only check the first 3 digits because the sample is small (2048) + ''' +- self.assertAlmostEquals(self.bunch.sigma_z(), np.std(self.bunch.z), ++ self.assertAlmostEqual(self.bunch.sigma_z(), np.std(self.bunch.z), + places=3, msg='np.std() and bunch.sigma_z() ' + 'yield different results') + +@@ -164,7 +164,7 @@ + emittance for a transverse-only beam. + ''' + beam_transverse = self.create_transverse_only_bunch() +- self.assertAlmostEquals( ++ self.assertAlmostEqual( + beam_transverse.epsn_x(), + beam_transverse.effective_normalized_emittance_x(), + places = 5, +@@ -173,7 +173,7 @@ + 'for a transverse only beam.' + ) + +- self.assertAlmostEquals( ++ self.assertAlmostEqual( + beam_transverse.epsn_y(), + beam_transverse.effective_normalized_emittance_y(), + places = 5, +@@ -200,7 +200,7 @@ + old[attr] = getattr(bunch, attr).copy() + bunch.sort_for('z') + new_idx = bunch.id - 1 +- for attr, oldarray in old.items(): ++ for attr, oldarray in list(old.items()): + self.assertTrue(np.all(oldarray[new_idx] == getattr(bunch, attr)), + msg="beam.sort_for('z') should reorder all beam " + "particle arrays, but beam." + str(attr) + " is " +--- ../PyHEADTAIL/PyHEADTAIL/testing/unittests/autoruntests/SlicingTest.py (original) ++++ ../PyHEADTAIL/PyHEADTAIL/testing/unittests/autoruntests/SlicingTest.py (refactored) +@@ -235,7 +235,7 @@ + + beam_parameters = slicer.extract_beam_parameters(bunch) + +- for p_name, p_value in beam_parameters.items(): ++ for p_name, p_value in list(beam_parameters.items()): + pass + + # In[14]: diff --git a/PyHEADTAIL/gpu/thrust.so b/PyHEADTAIL/gpu/thrust.so deleted file mode 100755 index f43f3090d4f26c2c35272ae99a17aeeaeaf6ba41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2136520 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ӪYpGd~xf)VQDVdBR1B9ua}jpTwKP&1EtAfZbl%@k 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 z z7s}8cl?d&bOlXfn3hnKrsBjcnt22gdvD3>tJuOdfs8GqFJs8pwQc|j$O2=RMpYN&B zn0N|BE7d#GTqf0fk(FwPyyP_Rka0Ct6h*XW`IQN9vnhKKH4`yXQs`vVAm;F{D_H~7 ztN|BF4NwUUn2ZJ}Bn|AMsN0pS)!B_~ah9f~XpT}0tU!%Q)&LA?04Zs}O{IbRTLWi{ zr{BX-+O2^}+O&uEoN5j1Ra3=MM2qk)+^m6KM9sb!X&adwW7Ht#@UAOa1JtYm7fKCK z2@RNx1}G#AOjA_Io2=EDLAKbXY3bb-N<#ybtN|F(08(6FZnLuf%>QN&>=sWU4W->0 z*h8E4(69ZBH87_(`c*B_BD@PXYoH5Ja|%5vyvx}u!@HD^9p0VSLDDA<(qc|&gm)=dmf>B> zE#jlJba>ZYD7?!!4(|qmNkWoEEb8!Xuo9^Z?@n1NrbaB*LJsf3*^vh$yvy*4;KHb8 z;qY#>BD~u@MI&m=B)sdTR6PzW1Wi|V1N)axP`QDq8GPm15edY|*2!1y!KmSS^ah&+ zbkx3p5jxWz=R&3WwJ^rfpBC%p8Bycr8Bs%Xot6qw6ClQIilBB~xhE69?LyQnc^YNs zhoS~CU%9S~Z@pK{f|`$;3*~X6635MCjvIw^+zwL|h>=X;Wn_zsyu7)zJnd4IeB5A2 zOGs(aZmJ9C_rA?>yF@(U9hC~?=`yLJGfH*bZhfea+nSoL6qkw?S1#Oq+ zp;3dFuUuF1g+t96aG}%ymC%66Xn;b}z)^||kk*1#d!==1L>*1&c()srgG;>v}aHPD5qnHGmDm$O%1xs;E6O5E=jbaJ&W=17S1!ZrR)tZ`B0!9E%|@|IjhVaT%JovJ z9)|@dqpLnw?q(1*YigSjHB{<|n(I{`jHofUj;P^o=h;9vq9)z=U5FZJ2~iV85H(|3 zzOLtSWdhG==s?umKq(M46Jl`)grS6}zx~UUjHsc|i>R4IrxrJ&h8{{p4J;vQAnmtA zAZn=7w-7bVC=fMFN;Z$?-H4iCfvABCqUL7JBq3_v|Bbux)t+7AtQ1E@4@3CXq9uhI)mlIYG7ZKe7!vXb*jR)CYgJ$GKg!K-9p^ z2R|Wd!Z3A2%?IN3H8!XbH7=Eink}E#XdV84(F+z-ZX#;7!Y@cGM9sx@L=CJ{-Bh3# zm359{03K7gR72DtkP$T}gmgmG?A78@+q4@&)X+gf)a(lZvVfMDP$6oVRRd8|YdsaM z$!h2lQ!}~*@d{BB{eh^7Zj7jzb~hce+G7<{dl5A=2CP$6n!niZm^)^t9alGWC1>SosrqUNBxaaLQisSQNU0+Nb*D60@P zK{TQUMncpu%^pMzJEC7`ul|ynSf3F!hdi-1Ss-dm=!d9@Mt&f5*o~IS(gP`q6`}@F zA!=3;Yb~!iTRh^dz3!}Ylx()MH)?* z;I=pnu+wv^3Q@TKGxtKv;v;R#CZSuRi&wNIX2{Lp&CdjN(OfYn_h@uq}v`Hc+NSiwn6MVsE zdD4iT^lN-d1di?Sc_zCkQfGYi0f8 zxA9=CKG-QS*tQsKn+Mx2TEqn5_C9IMF~Qon!~|_Q#{{bx5EBfGcE<#7(SQ*X{H>ST zqS2(b0|tG~zKwjlSl3khyny|8+}kEi|Llnz6SNr}6ZHAfcXnmzGA8)GwWf_u3$=am z{(LX-egRWyP;o9aR0wIx6K)0$#?&lx6PO> zIWAhn1mWgwlVXB3^EI~3cx)SI+BV}HVZBxYrSyUAh zq~Gob^=FHsTj~q<^HL_=`=n@rsDYc8k`Og^w}TKhC#XR`w|g9jn&drqp`X_BZfA>o zowfHl>r9bl?>Vhn={?V3S^Cdcq?KZqD#?372=7V1{k-S7wA3S9v3tBHt&{h3NA{kc zVD_G-+k3`P@}BhA^qx@(7;z zlX4^Qse{nO{2iqHiefCE^*t`cjPqgr!aC?tf_MWwI z@t!t{y=OH8yk{7z+k5`4Ru{YA5mIKJbZrL=@}AE^exUb!q=}$T{drzCu-qYtt z(M74E^qv=dylJC-p|-c*$7(xhwVf|ocu%<5M#+2Dbk(rYLfFWeY;?;_O&d+cV2_Q# zmOR)6qJ{T_+s{VHd)CIqd)gNEo-WyYR@TCMnr`puQqy~mYo~u%$$Qq!*Vs0PJ@>+yw$0Lw&22LigMI%*54P&TE)p%g zC*0m`Q+ZDoRe8_2nd%Q!=A!qvMel3w{SwgvQ3E$E@2~OoVE8Vn|-Pt+CGP;1G`n5Db7{8XJU4%2hqRy>yJEi;(JZi>Y~ri z67$yeBvG|H6tx(kb2w@YB;KlO3cIPIFQ_Wjrv;a`{HCEvx#haDhNj)+JwOUiF znc`Aarr$w&Cp{!r<_{6=;^_Y}`h92L4o2eN`G@SjpW&H1B6+W_&FX6{ z`gg$;UxFwY#1}M$MfBHNyk4nb!Y&_i85On`Z%{hZzD()#J4mI@HhL5QdPL1B~ z5lN0)5*k6D6ED8!&m&1)k7z>@5lK#15*i_)6EA+1kbC-4yCqKuNkk+$Nv0POMQvBq z$iVcCdy)4OKuRL!>9e3khHiSRF-dz>)A!)jrH`X<1!iYVUsQWAeUQ5`eNfUzd@y|> z0H!Z`==+weagF(Y-_7kO-udq3hk)PxW!;1E89v(T6I{F4r#)1Av_Vt0`Xva*B~s(M zPjO!kS11hjUwcZa4(L&D#to%UZ++%Wf9{xQeW&%2_2=o0raJHCTe4yW{`#qwmN0z~ z&zd!+FRhEKcAuyWqpbEI*3^vYtBFsAI9Xu&OvsqNkTj-m+LDW8HB6tW8PgZyeuO$> z@ny2~2$f<3(}%??Oy6xE;R6Ns*8?$cuanqb?V$$_`%;{fv|d0UTD&C-ZoU)~rjHpU z)ANBMCS*+C0dYieCUd;>i+rG{4|Z}4_MW?Xuz3$QD%w@X^ug`(fdWil8U##V6uU8f ziEU7<=kV-0rjHriIQx|PsW@nio89h=Zl53B9&xv)ix!wZxVhU0tJ`$2nBoI|J)b11_nz7-5sw=pVfwZlVNzx1!%>5n0Vb}DZ}t27bXkjKaDfXYxPVH43ryA> z+M$rZ1tSy%Hy~?uwjodiWw*08HR!Qzn23_nb5^Dy40Yk&;4pMh&9;iEc+t!j8*N7F|f|5O4a}jX#gn==cdxYQ$L9Y z_K2sq11Rm*z+T$4hvx2V4NR!1UO^{X08HR!4J3d`(!iKBFc~AIO|&a&5LdR0$C_Qq zdw`lX;6k|vsDuVgMgtU*26j`_YkSD_+8$(!eVUfOwXHNXK*<__Aq^lU4Y;W^@Hd}8 z15@JZSGtvUYv2Ofw1-~*Bi6t^HPsi1MGJrl+^m5Bm|UqXAjHEN^dx`@XRid9P(C)m zMca%ZBp8oW7l)V_qtb`FphmnvN;<{2lpy_@U9HineKXs(Z+ z-*=7Xs*S3)Qj95$w`5W3x^mAzJpJz$Z^=49OF>nmgZZdI%vY`}<6G|)2|PHkp*0e7qo^<7M_R1@l^0BYnaW&S*3esYy z(ztS|bDKfYuk0z+l^crol{=zY&9*t&`e9$v&JCo+x>7CF?2Z|}a_e=j+KsACJ=hWlBc*Q2+>c)`#aND%{*oHPMIS#Ou&Q ziSmOblpm!1mI#y|bw&}&j~NBZk4b44MDuQxU$8*=!3E{FRih=8-`Yog^v1-|j~I&{ zC_f~O^7ERj*;3UPsl;WOg2}67lplo(<>ywQ{1Q2%{HRwbzf){bQvIh&2koJe?|MGt z9_J*{0_6ucUj+%}7lx^${7#AYX4&*c`NbwkKSj4qeF(O$&7_A}Dkqd5gg1TXe*}Ah z@3cbsy;UCz^aMHfBLb(osWySiX`jST(RnCPe)#Vb|E7aLM){o*()-vY`p-p+>)wr^ z{9-x&DZ0rJAPcyg2^GqZSv638wbr|$HCYYuW@<*fAzq>UqCZf6(T!1lyWLHPtoESA z)LxX|UWD~|Tv>(k3!+heFmwo)1}EZc+%d<<&eX>%0{6R_%S83yk=SzPw;}jU$ zIEA!mW|eRXp_@e%Eu4Z)5;z6g+!36@)Zg*!5j*L7PD=G-<(Q#8^wwK_;jXKH{TCuy z;1uBI3pe2uY8KWKG+#C*rQ^w4G%UhTHqAm_C9+&vA8K7 zrq{*=r(nw&r%=rRoI+T%8>eu$+sa+=x+mG9(WJHm0;kZs1O5{EcF}G1cz~`Iw%pq$ zO@H2K#wpm0#wqyx%yzJJiBq_4p=qPDLT&#OQ2Z@l!bTIK1x^8Owo$?<)O6Lb(Xd)e zOU|@{pZ}Mpjn0n2ULS*vc(6&)0;d4CpN$eup*Ai!1>3?n1(%FdsH_D}!F1ykTx#MJ z4t%pT+{d2S-*ACb=r!EeLq7FtoIX6ZF5do@|s(Gw71!kyF?3|0^Gc95>BCJzQ(p0 zjcwyhiW~7$@cPj{HwJrd47S~a?G`O?3UGV34LAjKr~kUd=d*p(=(qdP{T@+tOMUn2 zUdm4QzE`wB`N7RgNhm+Ontq5_zk`gU{m_Z8f4rW8q}o8YdmJdgY=XKJ>HYn$$PpZdrwa= zdr#BtJ!2?&PkL;6&*w?s0TX)G&+7Pv_l%x=cShqu-t%R&(Tf$mm_gq2X%^b#5!~^> z>^$W|M^Xq|F`io^*Da z;yrB?d(UbHc+W6axA*)PtuA)K)5mPlXj0n&gS_W&AV1K1{(^hkr0E}i|Li?&Mte`6 zAB7{Oiqd<&;ayD|&4k*Pzh8BVz9{= z?0^TmM6~dpaQoRPdC%Iocu(8H-qR&}&rm&)Uc9I2_MR>^z2~oJr-b3=9^2n=gS_WL z$fsThc+Xi2ZPI?f{bOC;lb*Z1Co4-Rzc{(=U6#4bx9Du#se_O6CcP(jLqG5N!oO^8 zn*(9VKUw#-nYSe`6)n6c+`Mg)_pF((v26~jwan#A+vXD=Y;K$R80`Kr*n$VUT(t0> zaC^5+5KBf-FVRiVu^yd={>Z@CY|%diCtjQ|Hs%ShW|5)S zU10pcs@J%n877Y!?2NIAY7fQ+ayP~XN^-DZY(fBxP4v)(vEltU6RnTGZ(4bYv3cuP z%OiNtN9zcN2aUG6KYLI#H06WoPK0|9I3>pBK5+Fw-v4oK#DARo{2%93?|+=%`q4Oe z>vUbNz+Xt!(h|mo2_=k8S{IK&)o*ExAZm z!`PUbF*YIY2N*{!zD$-LU{GveY_NERv6*{2#~J(UA5^9KWT{l1`X6ra8Q74t01l!B z#s+Ra&Ix0~43gKN=9G1#!gSBgWTU8Rky=h`0Z z{JSn;&zpvPLtl9455U-@LBQBVu^VHP*c_n5u48PN!HpL^#b!>YV#G5Ydft>z#kQ#3 zMU=5aT? zR=w+)QVd*dH?&I$+1|Ih2mjC!bJ zY+N_S#yV;(PD((}ajccr;;yJ!E3L)ds2@Uk=&1bW4 z^Ng{fxp?#9{g4=&y`DzyJZcbgu+Nq8t-gu$@jxsG`&=l4eN-aYXR~IFcZ5~424F}7NO6I=&C2>OSOeR{QuMM#}4=sQ~cpEHb*q8*)}J;)jow4bheWgrzzD!&F+}t zfN#A%+TiOk2ZDO!s!nmZ4wuIpH?V)1w1Kf1L7z2@ zjqAR0N5v74ah)t*xksZm7Q78*t@i0mwlhXroS{@N+*6vaTsPOX6IZUAXN(Qaby`Nh zPn#bKW3%N3CRL=)hoc5DA2(O>aiiwr=0bVgsKjwInd3$w9k&sRf;EyUyo_vdmX|k? zmZul>spR7ZLs~*g^Kw&NI6wPWTsUWoCj_KY!9HCk6)sPyj@wnA^KlzhQ@yB9w77EN z=Hu3jvDqFYC57&c8pM3%x{|M4YSw@Yr3R>k224f+6p{wUC<@j{CRih~#V$=tFX~eo z7Y-$B0ERSxlr-R`(!g))CuW7T7f(PxrQI6XL!0){KYrF4m{3!_s86)Ga^YqT^kQr# zW2Cf+c0~J5RDecz46m9hR_cPYOJ~h>oD$(M~g_||dg|Qi6{$&9*t&`k`Oa&V{7Kj8ZMs?2Z`$YeYQNxpM1#UAYJfY^Sumaw+?= zLo#5EbfGJkaRSz80#`01S;V3NYcwm7$}9IGOU2M!xt@csTsS+pAl(C3F2n0qg;C8S zV2yOmMzKtdnY-l5^-`)Hhi84rz}O&RjE&b^VQi?b6jz8Fi=$+W4Fwi(&WBf}KDPp6lgJrkL%qV- z;E>Dz(H7{SJ#@vVJfDLe=StB6V*@u|1qovlhN)w0ekw3FFcf7;W)!?($A|bu*Cq8) zVr(ckF*aAjFGwql&AbCa31b86RClA#xGLuXcyQrCYZw~@GREebkWLtz1uZVMP5Ty% zO)SS4o23vS3$Td^6~=~HH83`{)`y}sSq*PuYQ~!&USVvaKQK1YjWITd-A#wA_MpYo zUX0Bu!ur`pWfjIIh{o8!NEn+KI=@LPO&p-i5rp&sQCTe8gbHI5)2uKywWjOQl&rR9 zQ#ZS29xfeqH_mEnHnoAV*+5d?0Q?FIKEh$p%!6o*4UB}bVVXS{8+ODG!q~+6jIkM} zyV*8bU~Ek2hp~x9end6mM$2UB5f#M>V}qzLHro(uEsr`|-0rNs(^+SXOmG>mwll8U zY=;ZD)j7s343GkPo<4M;Ce9;CG3snk6Nf>SWSDx zAMqCrxG4bKG%z-I{{N)Ce_&--RWF|E1foi+)l{kkC>ZDf z@AG4yefBx`-r+jUAN$8zYyVnn@4ar$`rLEB--mA%zVcO}*ECAVS%oN}b+bZ6BT6Wf zI7-Nw+?^=lxmWYqBkhEjZz9E)o@s_g?-RCk;f|yKjqC(yjuMg^FWe9%Of1G{kGWZ} z3nnyQXSI#(H~a-3m8FB->cKwoNewos!A^qaC?UD6p@bMEOvYuDP)1Rdu$Td(gf><= zO87Rc&cUXK@0CT}B-sIu61MJuCsV$Wm8~8zHb14_x-@;?cV+sAggN4K#X!BG^8-vb zRFOvsryErp-Db7D`4dvxl+?Bjnxll|MjM4FVWO*wjizlQWw6ng-%+*E9UknbJ=lx} z+X2l{LUP;LC`1X9aTz6)EfghGNl`+pK93TLt|*~O)hOWw*eN#LOCQ+YaE=nT8t#pj z54|c%ST-V`xV}(AUD|K#F52&$><@j*v*&V@kShyOLZ95mh-8lF7RA#8)J}7pyNnX@ zZfF-Jd|bV{ZSJ%sCvVZVnZ@XMnhBbtgyhC;6QYEP`6}CHPIJ$cL2=jXDR_FcPkFF! zd`yGQYp|YA=TSm(TenRSCFG)tC?WeTKf2$8o^VSw-TQ)i?*q*k8*<}P0>(z}wiCvt zliNK5j7{*Ki_}kTZAsb6va-givgSIo=sh=4%f08>Toztp2@<|_k4o^KB-G_S*>5}V zc`jSx9|o{nyeC@+@2QUDJvG7TJw=!I^ic4g?6K-SzxmPp_ODED;61II6)GCXO(wDTWShI=JwN*f z9x>VppVN`zLle!==>6`dcKr$TkKarI&EAvTxG#hEOf1GDmYW5;;H2j33`gu2-^!ag z9c<8p&3mwI4Ym(7drxv(k684c$++~MGK#!sF#~!}8>{R+UyLtc_!9n?b7fICNp?Ud z@7a4l$anOf|EAu$H2p`v8NH{>DDSEBgLorUk$cZay}oLrA*=1V8?w=k)OJ2-_MYTM z8wKx~=&E9)UE4?*Z1lFps*Q#{*c~@(u%3VAhPVJUdrxxP*(i9=WL$br*+Sk^C3(-n zTEy6hF7K&Q)q8#mOSa+8zi)fPb@HAUTR!yK;pqMk33X||AH{1`q37Itvgfk*CZHov9Nbb7Q$J=n@I4K|>`4uEEi4Y{q`rtqFzRN+0@Z`pf}fr4A=IqrQ> zyeJr+H7DOuyEnL#!pM39Xo z1+p2J*;rgpFeW6v#w&$A~akj)f0peVz6{?k998%PJc)Pw!Yx(1upV3VNT zD3A@gZO$`6HenDvThBLGKU9C{>u1#z;tXt_AQww7vf&JJkj)UM2;i<}+I#0EIu*07 zz5Us$&AGPe+PrI@cWuG71FkKihF655d!44@MK%Y2pDQN=FYG`Hyf{**`73{?l`pB` z<)9g4LvB=aXOPX)URUjQ+TC8`ZkN^V6`&bpLvHN00c0O}=;_^Pgm zuXI#fS%m=NSkg*uW!*JtrM9w(TCFjIL2Jz`nP#&{@uEefQV_n6$p#T*qvjE0!{*?f z0mx=c)5tqN;TnmEc;Rlq{!wLg5ALqKrf46@@ii{2INB#N1e+{`Xx~W|fvjUzYi?6E zo73{H3d_SwEKpLkj|^yuQW#uKaURARjP}ig2h0o7nlyv3mCDz!O{4ek*R(@+&=g@5 z&>Zn4H=42)WV7p$f(&eph6z+WW^c~nHpdrXrNEMHq|+P zD*!dTHUrZ_I0q>WjL+>TNdsg+1C+wxY6=Zpc@;Hq6ui39vIdserqR1`lQb}ZrU<5h z=7=x3Q3I_Yn?a8hHqnr4B*uuZDx-Vkjp`X|(trxN23WBMM5YE<2pSk>5m9hv05woH zTgJ5T`U|Ai087#U8PEWwpaC_72L8294XlEP!+^A`ft%Q-(fg4brGZg21qcx|M|{bR z8YqEmu4GS$`10)K5nq;1AMrgikj)roRd4WQ*BZx|HaD4Ow;;tr#cqnBh;LdStnd-> zr68WUBF!VdEY}z^WlKeT)deEH97hpf6BzL&2^Nv4BEDt?QXcW$l9Z>$@T`Os@g-+} z9E=fP4v(NN8O1CV@pUUke9Kdm2NIJJUoEBRu`fT~2hri7HKrAi%?yuX0{T7NIW)!ZAc5v9m)v;VT0u7R9w{hv z!8H=&m8(j;a#@oGRLC{JiZviIHNZm9z#@ylH8KOPk+Rt?rnQlsLh1{LC24>RXn<1C zfSN)BKOznE9H$1DmNl>k6lma*zm^7;(G>5J0L@n}xlseHAe&W>G|3DxU)M;CSFS4Y z%4JO&P$Aa)Bp=X1Dh-Y*T@XGM#^SqV_JAFh}0TjNg5yn8lV(3pr+8kZ@->< z;9T$kfkax?zyRCe^Y8nmffHzoM^&Kt$|W~ypainfX~UJvvzK4FET8_$Ju{HaNzAI= z;K{~s|8fP*eN3|63T)%IyYZGmL3OkPRy-$mRkunF>0SzsQDnHXj0%K{nxLmt_7To9-kR zp&m*Gkd2E3*=$20IBPq|fQrO446?b9C4+2s!Q!z1(2_*_9a>{aAR88lLn*(=re~Wg z&UsDtkb`W<0?3A>Ly|DahIRH0kPT;KkPRn=UEtm3LfNah=q@&k| zq3|7f&<(Pogg`c0a{;npbtAhNTrZ9#foxbPKsIVckWC;*kPYhv$c7F%{~v9f9pLvL z{z~)d*L*Gk%^(|c<5dtqHa1KfkPR6I*{GC*Y$ni04zgjn3bMJB{ETS)JZKTM6=X9)VE`zR6(AcE1+pO{fNVT; z1lfd%6J#?+A$&kY=4FdefNVU?0%Vgk9d}b^$(lv&cFhFYOsE@W$(lv2fNUlyi6;xl z3XqM70@;ueKsKCa3&@5$;s=3jygq?!rZuq!GlOhIXa}-!BR!&;QKL0x;Sm*!1;~b? z0NKn^3~%pOwlc4*v7oHE$gJKRaBT@$y~zt0kXvqP{09aS-gt@%F9cYRgu23n?6+N* zaGEUv!~;7#$tplLY#qXc>PTTiO)!QDMOT>6Lm^Da9;;!(PrN68#(C^Jr|^O17`>Kz zQjo}vJAD=ZB-`YR>GW0n8zt1`_j&*H3o%T{q0=xSXBEPP*3AkPjWD51;xHlG+?_Dt zU%rgb9%-k#QUIT6hDPsauh)gUivBmU8PFUiBsX5TAxxN9jL#l(vtSpjYrf8E8`}?i zJs*{&gI(#tUgE(vHP|d@4il2w`s^`=36pUdCY0qACM;&aFrh744ik>PJKqI=iysn; zlTLO(r?29Fk@6kCiodSjx-|Wt|6>dj%8UvV>ipo%VNgXLCcM{6t2R1pwLR)xveA~* zHV2x+gycpWg)m{FtBQ?I*hb1=qt_g++UP0|_K|mLu#*~W9yEsu$!%w&5GG8-1IppR#=DRbj$bBu)D3DNCTOfAMZB? z&EAvTxG#hEOf1GDmYW5;U`+FMh9h>{Yj`uKgROh8^E}wN20I3ty(hV?M=W~JWL$br z8AaZ+m;t?~jaBxZKZI{!_!6G|nk?!j$qwk`Jr^n8(R;p5y>)5&7yd)^o-(7nr_K-J zjZj7IJwN_}s*N_Swmbh^Hky#yZUN2SliX;d;5`#vRcthA8!3a0MqgdE(Uu2$g9n?^ zV8=nT_awKSje_?~#-;a^E#y5_lJ~UgbBLe7C1+bVfa_FVR!Tv_m*KDmt{$sExwimz^>cADedrT66B(9U~aJ6YW}Cv3^J z|D$a)jnVOTZP4sJ$&K44c+bRqm2ESlxo66-ZGJ?d>GWuy^kCy2Y*vHa2AaJmxvkr# z@Sa>$;XT=J*?Vq-f?MkAi(1N@dcOlSgKWqROF13LhK`QUDI&<`QnU*o8}b6k#>D`# zkw^iu31Wl@1TlkbQZYXWiXfX2gKXxlKxPEl@TCRuO*Z1;WwH|KU3-iG1dCea4yG7f zs@V}_<7x}YhU7BHhLqr839_*OK{oCIAe(!PU!>QcUbL!TD5<>3<}-hmpTQ^Jfiq|q z>bAH*TVOP^{P!7Kg(49D@HiqC>C=X+X|FGsuSAc%B2uhBFAJ=Xv&o1hUxz2NY#6 z*5iJMZXg}(ln0yjU?((K&u4Ow4Y_U3GeI_C5Im*GH&_W|6WBaKE|x$xoIwt0Xj_u$maXc;mXOt z8#|C9s)-b8e*JY)bH5s%4ce?esgoPk+!G+^B(8kj_gWQz1WYtoXQz%;UyFIBq9d z1g?=8;>(oH4r_UHVR?9q1xh+@WI#)l!lKm_7tZuS9=EH&0|XK&;yEfa#Vvsp$L(v^ z=(z2m=|*-9XufjEjmNDOWV7p$f)Bp=X1AXeX zsm_6GL=7M4F|Cd4I;6gESds?FfCeZ94X7zJa1=iS38xAkfHz3X8aT=}joz>Rku)%X zrg(q|ny*}PqXt?*HiI51Y@#98NQ`?xmAD63lLl1CHNc8BATl+;LeRi4i@-H91Fn&> z+4Yzfo(m$i23V2?$bbeY1r4YvG;nWe;0EyU!fvEx4Xm;aKL7rqG%$*$cvJa5~SmEQ! zr63?kNb@U~WnFgc$+$*#fh(8e7}qEQuUwK~5s4btC{`flSMDv6^3-_cYL2>c$=S~f zQa$j>YMv+Xyj9v1|)l!Nc`w)C%S8cA`Za_9$Xd6K`tfU~D<6<%` zfoyn(^C3VPWD{=o63C`I$wjD#k^yAnB0)CePzWyU31s-vKc-=j&8;jMWHSjCj|G61 zB;xPT8cPD%u+R#!nWB~@PF|BeI& zD3+@rn^WXxObd|BTT_q?S?6VJidUF?mipE{F~~+kB_JCLM3BuMO9zn6EEX5qhJ8zr zjh7>k&71|88Eqm$0kYw&Dj=Jr^}Jg%O8_ULM!*Th3y_WbBgn?x2xPOMZko)J2Q8wu zf@~HkT+5b_6(AcE1+pO{fNVT;1lfd%6J)bYA$&kY=4FdefNVU?0%VgkU3F7t$(lv& zcFhFYtg9Pk$(lv2fNVA?iLas~D?m0T3S>h@0NHSwEg&22h<4Gw^w*-iK7njbXkra! z2HA+v4rJp-dPH?njnM?zg;LiXD(OxW+kKz4YNRe)^RI)n+;k-~(UUOoZspro)pZB@=jMF_SNaV(yzKj3+Y?Cjh)0=FbEuk*I(EGU67$)SGmPMGkQ#`x@!cEV5iAqDW6W@z-jqNWRX5dGtq>Opguklc9T zhA?4bF+O|D&4OJpr1?6lZEUZ-fRD=3!S;HvJsxaWgAIb_Fd@0E&mLo#Fd3I&LRn5> z!eRyt6WXHXFyR+4pu>dE{fsQ?Cdm%y^j-YlrF_Tl;{Td@>(cZ;_x>0rlo=H!)cL^| zd!dRvO!)SvR&BJ;YWw&bWTO$OZ3r}n3CWE%3Sq)TR}~wL+D6J?qX#^{YNPW#*rW#= z(_q7(IZQ}yI~#>CVKOemgtCRggeoaaSXhf78_^XeRH+&!eCb?nxW!MmH(aOh;;&mi z^r|pn>zi!eBB3tr_nI3@VM6v?4ij=^Ax!9#+u*%MVOF_D#C>9xBTe-04TVnK6Y43nNsg#pc!OCZd^(L*~r~?0@>_AgLZEB z3_v!)drnh7wY3>#E3?WPbIO|Y%%b;PKrQ#47js#7G62#>HjYa0o+Q-eJ=t$N?|BJZ z;-N0sE#8x@gZETN@}8Pt^q!*2dwM8%Pxe^#p65Z|zBeDbh2!T4p?lKZ>BgPB=M&im zPdv1kPTq4sLR}ugyOyK(WUs0BmlOva`6lu_h8iy6>++E``pc?7HTF8Ik$$f9nN?0`<*^9hvi=sh2# z-nuk>&tFFGDKpA@>ii(y2vy|XbL!`-Hkz{9uAY_J)}^+~L9_QHH`*w8&qP-h8*SP~ z%3z}}Jhy72X%F@=54NSjt^m#6liYST3f?mrm)=vhkoQzc-qWhjK{lexd#Y6Rp66qy z*l;hnrM=-gdC%8bKJ?nbdtN4?F6}q^?vnRp&t>n)l?CtVliQe=%n{w9`06HVr#a4D zdQaXB?Y!qBpIF^CGq&W!YqV`nV064*8#H@Qa^toM-ZL>@W!s$8+%sj^Hb)hjPLKAi z2m8vaHQ2TWI}Dn=C%LWLrtqFzRN+0@Z`pg!fr4AA;of)D`&FPBWJ7LP%IQEhbaZ@9 z5kWS54iZ2%2JJ%K78hs>j7Be{z!o{{?{#xBVpRNqaeRa3m)TXfZ?d@=FBFA+^EcUe z1q9i!6hJmE3S{HC31rg`0mv~+o`Z-QK{ko_fW?^^WFtZZ*;rB_n?XsgFiSu-qDGL7 z#q|VZNaAbE!V?S@D3aO#9CxqrcuM2 z&(Xb3QvtI1lMA?VG5~c)if4aFq2`DFuGBoEhS!5;kPW#}&7DCuhn`UFcG=y2bVl9I zs@oetGsuSA*lh)5^9KJ1pMz{>`~ZM@NkKNM3uGf5)mG*pfH;=4Qd^mKO*|6ehpU7y|WFbWRmRSU{j#;g_O4)2v%ey5k4{xzRNzpzspe0IS za5cqwc+FE8@7w|pKs2OyubRqC@$O`#*dgD4l}x#grU;{e=7=x3(Uh$qn@x`t6uRXa ziHQ06)nlrR?zz7;z?w9mLLTpA#TpQq8ek!4-~@|^f-|c%Pf|9!71KgE2Pyi6u~?D@ z$bbeY1r4YvH1JnXp$2XP55J;=w5)+`w!!-^Unvc2qbY(ZpgH18Zqz_4$Y#eQEil9D z9$X_a?g3Te9$-xxP$Aa)Bp=X13mxA)il*Pp7Ejv@B*fV_g^5j23V2?$bbeY z#S4rXG_Y41*aZ(S7eZRrz$vzA^xk!aG|-PW_${u_^QpA^>{c$ixd^tRVx?~iyP{h}* z81XGnQ6L*J8S&LpiXQtAm8PoX1`e$qMY#g98RJGw-ejY?uG|UkJm4C+b>fvf@o^KG$Bl(>+{Rc0u8|qy%aqObX?a6odG(AX9XB$dB}!p% zHN|ne*G0T=&Ib<=NTgV+%1nWGM2h2f)hl$|CeRe`R|U;iF1hizwSsIWJyKBUlxrl$ zD_50x<+3IXsE})b6>C6bYJi2HfoT?jYh(r#6=ky#Olu>%5UDR5mZSkPpaDuj18NEl z{QM|2FbWsoJSgFhR=Dfkr?-YDsd06 zCJm^NYk(DNKxArwg`j~27J+MI23#X$vx_k;JQqZ24X`8)kO2))3K~#TXy7mK!}6jCfy?4}sTHBvm(2P=GBxfBFE5ovzqvaHLFJsH=?E^y^?9OD{A;FU`f zEFw|k8pR5v{K~ytQl1*GT+LBeE;;*oL8=E{xf~w1DjCHrjB8}q+$fSsn6XP$OA_&ipL9Y=AR88lLn*(>W{X;uIC)L> zkb`W<0?3A>Ly|DahIRH0kPT;KkPRmlo0ma0W)Wn=mIT=x#!Ldp<|!BI=$!y(Bbx)= zAR9^uWTQ0~ARAUUva7)L;#d;Mh6OIbARDzJ$R>~@$cFU-WJ8CX|Bp7$4jR3$ewpTT zQsZ0$nn5k&5i|_8Eqm$0kYw&Dj=Jr^{!hp zO8_ULM!*Th3y_WbBgn?x2xQaqRnD@>EP2o(YAeX5kHUDzJ+cC1W1>JdWCW0nhmIhd zFmZxx1}KCNh{(Kb5ekrvr&)k(lBR=h$}Cy4sNJraAe$j|qbymos1=aSFeUMM09gUD zF;O5JG6Kkk(`*6Ra7VO@_N5>juTLPGQBADD%pe;P+JS7`NROz-)M$-actpiw0kWYe zKsMtPtF28aTbWeWm{Qi9W>#-%$Ko>(YV{^BV7%FnTN;pAknqY=RCpo4dL+~pCSNud~|5 z_QcQgQCT|JO&;veUZ}wqG}t<54il2w`s^`=36pUdCY0qACM;&aFrh744iml#t8=vJ z&iBfqZj$VPPT$2p_pcz|@w@onQg2Uj#+I} z2c@<}scjQ9hY87zHVR?FL{}9XE!jrOV51wJShdkD9_+5)&|u3NYzs7p3CV3|qYx%c z#$}jLwosT*C4~vC`aDc1y26AiRl|h6*eN#L6PDW>uG4q%f6elt*ACysf2@SMwBG~% zpcE!#&*d;7R~EvAKDmu)$sExwil+yto#r@q87Ac2&@N2)qYtfao8z|RBVQm(u3~gN z%>>P1LUQA_31Py-e3fmpuDNH*ux(zgr{L+)zSV;rd%gzS)LpeLyJrBh3EuMr^;26rscdCi zSz||8bC+54o;^E-_q>D4!jmA7HnJU5g7+k$F7L^H+j-AB*%A+R!EW)MY#qF(I+FL) z1f%y9UEb3}!F#gDs`tEkGCzJdU614E2%&q@-RZ`iyypqF!Sg{arjz%4pM<(Rg4Z^p z_hhfB_vEaC_q1+SsAwEFnZ(|cZSIcue8+=$#AqjcJsv5ZanlTq-cS6xc6~qk#|w@@ zv-c!7?#tjk6N~YPk*6IGZ~lO zQ$~^ZEM`FOX=9bW=Lo)m;Y;}a@03N|B-sI-yys^r-_d)ns<$pp|CW06o-(7nr_K-l zIe{v2@A<=ft2XMh+J5>n*=R^=I~z26PjaJ;g7-{xRk6{qZKMn~devjAHtP3aYnN)U z5e;@OX!f4uwzE<2p2@iMp0b6!r%Ljkg|!G#6;ma?=H1BTqp1Opugzi z=?jIL9_QHH*TBYJrna)w#}HgjWTSTpI2x)J=%jF?DZaOT!ZZc&EAvT)@@UG zPcEwPp1zsVhblwveaO8}sQ2?hGsuSAu$0q*Z0P9toFam3uH&fwZ;!kHvT-qhY$Q^E zY=Rge0zu3mn^epXg640(`KkIpa>yW?Nh^?93&=)1JcyM@?>GMQ0svjIX)SUXOA9X5 z>+cA;*I3$*1;HaW=VItsTy zaHMW*px2Pw?VD_#j~9xZH$ zuKms(s;#^B$F6O<_Ab}9T)UrZCs4zi&(Xb3QvtGh%ze0WGVsO@q<9}6QmFZ+XKCdp z)$n4_46-3Ns<|`B=D`EiZpYp23*GIuy1fK6gKWr+-Bv(05A%QUImqU|tRnD%9@2=f z>WcVEN41q52q2Cnt<+X_U6WR7D?MMsN*faxwAQ?oX*P)zzo&&XTsLYSK{je0K{jj- z)0_dwrjIT0*^{%uV^-HljL|+-M)#cUdzm#w`&7uIeXKazCo-dbEQDy^0E;EFucdtkxW( zY<4B4g>Vj18W>MDP?847fCeZ94X7zJ@U(|f1Bb!Gujn8xYhaFT@czqRkp{-m6u}hG z9PuSLYM>QlGvSeXm|^3&Mq=Cps>D6Onlzw7t^ro80g$*SVWYPS*N?4W8^;<0#YS64UH@q*$ofO)(VlP3wadJ|eyp z#4}f@o^KG$Bl(>+?H7cu8|p*N7?L{mbV#}hqqXuq~k^gjvJ-0 zXf>^EY`^_MJZ`su2M8om#HUqe3cMpy9Jl}RbRD;KG~LLKgXSxj+<4qtK{lHnDJXQy zH4@{Mt4h3bS(64-$Th%HpHE=p!v!rH)^02WV7Ru7MS6gk832x zJ)lb51FT5{D&!hq#TpQq8ek!4py%scO;eo%&W9R){R`8=b3vrm087#U8PEWwpaC_7 z1`bFAcY;^Xn3grL%QpD@d$BaokEVE31)8s1a-#-HAe&Y8ge#Y4FTZkGKK+$@W+0mZ z%&Okt$*whe{t;<&57Vpzt*peWdeV9oA*_<5E(HjM4 zBO3zUAR9^uWTQ0~ARAUUvh%_9;#d;Mh6OIbARDzJ$R>~@$cFU-WOD$AD*qpCm>o2F z2gWp?F^zKpXa?Dk8?S-@vaw-Okj*0=Bd1G-K{hJoAe#~Nk%Melu7YeXBtK(XfNYL_ zlC)KPtq8|}tn)H91#l8+*e3?rXs85aLxBjgIbi8&?h>FHu(;4R>|26tyc~gSCM>|r zXcG|%kPT;50of$2C*7J^0yq&h0!}DifNb0!K{oD2Ae$+5(`1%BXc4s)WHU`+{17y< z0%T*NKsICqkd23qAe%68f^23fgb#?wylfE)kd3EVfNYYcb8gBkS+l6!u9+a4d3B>K zS+l4Wkj(-m@&7Wi0%T*NKsICqkPWBV0*Cj$rsbSWtxAoa$3=<~fGE6ATDNI<*fMG&g zv>Yb9&y(|AaP^yHQ8!6;K&S8G|0U%+ei#1_)LWOPzvAUFOeixdOsMmNFZM!nd6@9l z@86@Mwu4sN4__o3^+|10pgBxPZnRMd6DGQ<*r*?^p(SOo(Jw!+YNN|N*tMe?Y(Rre zgXSr|;r_%krVu z4&TN9l!Usp-wnT63KO#Da+r`S3t>W^+{OvX9MLU`2ezo4<~Vm5Cgk1FE=>5g?^d_X z6}IFpKPO8L%91mnIZQ}y+%_Rhn3%7!ZHByUlwsQp=qY%5w6FAF&+}lz8f+FchY87T z-8My-kc%q9gzUHc=>9M$xTVf=?<4Ac4m5*o$c;-0ARD>cP9U2DXwc5>o&m@vc+XMl zr?xhxY-Lf+M^C~V2kE21t*X~gX-jjs7yeIo@=RL1sOFYyCyTyC5 zb?~0*NZwNujNVgpc~1`o@5vsk-t+lS%#Yu5YB+w55V|Mboo?L8d;T`t;4!-v)5&{2 zT|!+R!AHI{dQbM6dQZ+Ocu(tQg^I>;lS%A7+2-ze&nJC{M~rsD*W;1mAu`R-=zYl( zbi`)RKVEPQn!P8vabE`SnOKZREH?{w!K~)%3`cC`T;9y-V2d8?)Z;bSoCZ4zn!P8v ztw$_+&tzPBPZ>qtvzP(Br;Szio}b3*d8@SchJD%)mRbI+7v+kC#ix^31y*h4+oss=j- zn!P8vt=p#Xo?KMnJ$*B!4^=kZ`-dN^rL3#>TR=0&hTO1}(}8U0==hu>f^072sQzz{ zya2LsF@S6&Qh;oN7$E{d%pjXo%nyR*Z{Pn?{U14Kkj$mZ>j$Y);{YqOflcvhfNCvSBHJY+Mw`#&Z+M<|G6l$1HgcB5DNL zB;wl^XJ(L%2oYpsNr7y3B)P&Y0ojNeK{giG6O3JnuQ3ZxFj%aBY-sTUWb@{)^E}i3 zuo+UkKm#dU_1`{PhoI+9p63&w8Dv9lJkJ4S!x;qA^E`V(0@?JTH7Lq(o`3Ymc%IY2 zZuMZ#@L>HK>?CM63S>iWoAXSNO&EkA8yCwUo51D?3hWeQ!x`MZ^CBIba4H5g)85Gq zor*!%e*EuM8*=Re*M?nts%s;zEpJM46g9m09Np_Q6(F0f|KRfkGVsO@q<9j96l#9X zqon3BHM|2fgKWr+YW|&vAa>Tg9#1i`)0dI`Z9lIQDD-dctaiKOZhPGAxVpU)G=pr& zjol8S+i&p|ft@dE(rB?Z~2E|86MR9l&V0ODBEN^ND*HEE@`GKE^Lv5P@# z%~MRXp3hT3dyt0fM$IG0M$IG0hRyML?+idT)0##WI-hZk#Q3`vs>H9*${ovt2 z15&(KO=YHdcQR7!kjD&bhs>iX!YH6Q;!AEcWh=;L!6OBQF1kiyjQFY&BfhLj11jVi zV8t2`nHpdrXkdv&M8TQWn#+{U_F`Ha*&tFH7?B#3qyaLZ0ZKswY6=Z(e~%j22OfS! z2WeRYLu`ZhU;d0Vu!^P#rhw*%FS$_ztst9qk2J*$?-+88MC<|h2TVd0ER~1JHEDq4 z_%aAR9H0AR9KvX*mOsO&?pv&ih>>FC6b zYJi2Hfl(HLYh;FVM%ioz)56O`k@~`6Ng5yn8lV(3pr+8kE5A(*%z_6;gtV-I!)(*& zUEePajH4-DCIOnSTymoZT0u4w9;t^Jx^<02XuwylDx-Vuz>+jT1~fn^Xh2P&fq%v?Vd9OA;MJ9uHL$=o`20I0 z4a}e^9#w(nE0^4;ffC4O0vv*Dc=qxum*vx6xn~BlnZ>N?4W8^;W07g|DAQ~SDHbYr zQw-x8DIV&B6+W(93f9#&zjE16jdvD%GOm$b;L7DV#x;t-E0-i#M54wuiWNxtm3zIU zJT+dqnxn26yWdCTLjs#l7eh*5R<8(GdakHcQzjaltDJ6;%1j*4zlS^auFJ% zWB}Q?NRZ7O6oRuhj|^Y>$21JGxrrshC-4?huy`y0v?LLKht^mU$c6>tP|6^iMQT~% zGYKG@-~VPGzyGrY z&PKKgx&3AokPQo5fI&8DMUYJ(N01Hc1;{4-A8m^rGIYD7) z1zCZzF;OTRG6KrRLr0WNm^e{3+Z4hlL}XsJ2nEW<(=1RnNz)xSWtOa2)Na>Il+CWX zQI@P()C$U`=UZBEAF={vW1>(tWCWBAr`dwC;f`n*?n_ZNUY}4l{p_yZU}lt!2<=cd zZlq^a18TI!EIgxPu|U~S6eycPiq+PJl&uUaYm6vsjxxicp9tY!48kI3X~07hd7}+Qk+l|jB!HI6({sih!e8M zYMk(K56vHP{>*R2hn((7Q6e|)^kw}2k8SeBbow&>BP7)2H+p~M=`l{oq0=}aXBFav z*3AkPjlhCT;y5AO+?_b#1HZ_JkF*nh#1AQctDa_P^j`E3-MACzAHP)(n&X7z#v3=p z2@{L);bU$V?1D+n*I8|2yRpk>W$9q2JlOFEYp^K|*7JotPDpO+!^apWOvYuLP?l4i zu$TekgtlloPWUdY&f%v0FOx;xB-sI-zKs8il<)Xu{PWaXm!`k>#W7AOGb&D~^Mh~p zLKS(O@Kv`~ZL|j}f{l(mNNSsw+WJ6qoRHjTqYx)dbXBp@jBTV0HoE;=RU4h{!G=B9 ztOn}`&2d6<+u10@36pUdCzLG|CsavsLaRQH6N;`lp-R;_;p4GWY`E!{v^QL*FXPW! zKJ?n*RW>h^P?z?5`Y)B@gzUK-C*;aPoX{t?F)EoOx<&E$0JYN`=Pu)fyc^oZ34i|c z)opXGE%~CK)V7(!=y;q7n&X7z#%&Yggo*ho+h$&K&y-=?{FNSqr$>9Q2mAH|HQ0g% z8wAa9LULQTO%W&LqKY`7Z>IEf;Xe2N7WclW-iJUl%7)yylz_64yX}Os>Ew3L0A&-r z=Mwc(TU%DPvZ}1HuB^GqEPBr^)N=26K9_}$q#$i%!>9!BNkU!Tll`{yo)@qs{_g_2 z#e1@K@Sf^O-cu8d-cxjWPY(s}$sViT^R5Tv$M0(|#PM^8&^_tybmLCm^T%GKBO6BO za0Iv6aknpm``A;X_hhfB_vEaC_q1+SsAwEFnZ(|cZSIcuy!Ep@Vzd*!ACDC8Fr*n8 zy+7i8gJ%wuu%_o?frGcb~M-l z(2TMnxAllc@0pBC?-W=OeGuQsE&y0l;alS|%{J(s;FR~EddPi|vVGDmca;=7xu zo#r@q={4eY(1BCTz)}b7jeXS@KfQ>^;ei+a`F=#C(-)GvIBb4BO@k#irAv zJ?X)2ysriu)L;iev-c#ob=wr)lZz_6C;Kf&zNbLJEp?fDA5!m^gJzTsxnU`%L)p;L z@i|3A+3-0?K-rKNP&O_Gl#N6RluZyLMj(h8Ws{0IT0ejLhy5y>fqzENxCX62W_Xu&GnNc<(M3jvsg|eBDVdG>^avY7@46lFNiM{lPaNC&&pgMH;34K|~}WwIyoM)nJ z!XQN1xL8Kn1U64lV5cY>&fxYp`c*c=oFbx5nrZKM{#>VG&b8~`rrNw~pKxu#wUe$b zy7o)1Eun^2pQC%7rUGU2(vNcGWZ;z@NP#3l3N?T2-dg#x8eRpOQ8wg8HFtiM%`-n$ z?RMVX{)xL?RkzoGW|R%NvD?b4Y@Xx);B%DCm>&R8FKNhEb%lJTquRiTwWKOD#mkeCVuyV4Z0(R;G({W*G>3f2jizix+4Ssc zq@d6~*GP;ZUsYnrmo;fXgNFfGJ$kkY^i)u1E| zkO2))3K~#TXyA2UpazbCho8|wTGqfO+cbJVelKZY5KR$H0nH&_a-#-XQ8q&!DQu!) z*GPXtr+&XxN-*(dBY3rknYhbX6Xa`P*wZjr@zGD;DsQB z4`pMA*89+8nl14|>F!|0H4@`-QzafZ)^yxd$d4N3;<#OUPaU^;G~LL~ z1vL+3vkZXVyYd~abfQ6ueB^H5;U)E5p*(f}FI0HvS-HH8Mwkp>3ALrel`Sp)mnrqTPW_mBow(G+i!0L@n}xlseH zD4TVUG{p?SM%PG;dq9=A2UwE^RLC{JiZviIHNZm9z!r-DHZlXSk+RwOm=>N3BDDrs zk_O0t1}Fs$s3|n?yZ9+gys{Czy3(=+M%V_Qe|x2YlW2-ZRiOFGB{yoIgtF0T!}fz@te(1Rj+kHOzx`-e#m21TxlW=#$x@4_-1>Yiwgy^#)INtucxj)tU#G zW@AXPP_dh07}!YhQ0JAK@^R%-5cou-`IXCZjdvC$4Qyl=xN0gUp?T$M4!Uy5*&hevmCNCAtCCU7!oWs$&5a_Ngc-Z!m8+!`J@(-(M(nE1 zmD|m$Y{tjJNMEo6EV@W6*76?Qsqip)n1jwYoYqEzNWkVKF zHY6RAgi$uEvu~hmI3uHMI4SG`H!q`X%p%H$T%v3aVzhv=x!*qsWz!GNMm7byQ8tti z%0_E0P&TY?WS4{M#jzxm4GRUzMy-gl3FL^fVZA`v&>`plqfN7eM(@+k(p4~^`CI{- zQ8whpt026}#)e5>W%F>q%7zSsY*fl$Wix|5a*z$nRgle<jukPTVqWo(N7 zVUdP?Vvvo7NtYA zW(nX#)Cf4Ccmc9;e+1dM8-Z*_)J>CF@}Nc3R*=mog>fe$D?m0T3S>h@0NHrx2(k$i zC&*@;Lim7)%*z&`0NHq&1;{38I^m|wk~NFk?V1U)nN&B*k~NE30ohDZ5}(A76(AcE z1+pO{fNVI;7LW~h#18`5czpud%xGc_W(L`a&<@9(6wb`^(HT1d?MtQ24D;%yz>+lUI?%r33Y`D*>Afr;XGU7 zEstP_Cs_r^hOI-GP#q~us0qd}q38+|dMJbm*<&?Kc>KG4AYK8UKS4>hc@CM}Ino2|08cCgiL_n9#aep`sC2kVzaSWShGaCS3UdpFPq} z_z^#(Kt9t9jow@Dk^@*r|3Ha?<}e|-@xl#Z!o*^H_L!RmyI@oEbynNh9{LO)m8FAS z=fPg?!L~HmB4`d1lH2<1F@_0~aTz9*wBT8XH_FN7Va%CY* z=#$%6lFX4sWPEy{tmAR+GEB(3p2n;UG&vvy_49gL2rnV>mLNN(IVAxxN< zud;1+HTO&zw$0P@6g)lJH+isY{!4@Pe20UrgXSF#vnPTq5gZSVyOEvA$AJS3qmkKl_Q9=#`fO}!^)6}+c) zvqD9~d&(sCo@{e>yyx${k4KDl!jlc8c!*3hGQnB_mA^tP6s>b!5-pxJwp+j_*J_e{p6_molOJ&PI8d)ioK z@7ag1VE7V#{irPJCdm%y^;eCXQSXf zlX2-iWea&vmE=9G`rLbpF7K&Q)qB4A8@b^={&VdO*U5YShvh@B9lYnJgu1lfyB<>V zp6t2oJ-M>rJ$-T;!;(3oTNK~jMC~-kxl8ZKyP=);yzVcn+h*66{P2#p%?w7z`?W!{ z_arxNo8UbY^HsLZtmd96!?rm`q3QH!_xzLYk!O3bISsZ4G<#2STenT&J-MjDd$QlM z_v~};yI<8(=GFVzpc!OCZdl6cKsI!Ad`=NTHdk^~|F=h80NJ=0KsFL7KsG^)5P=|O zkWDJ)2SK+#@8S42vXKqqOLw>$7py;KEf^c|5VDp?@3F(e4=ibo{a9J>sAflujjJsf z834;)0<6;?O6WBaJft_M(ID^|CF{tM+3!EZ=yP9e5wX-@EJFbnrPPJXvUg}!U zU0hS|m9F)<_OGv%WIt+n^EtZLX(})__jm_aP6poCffO%zM+!AJz9KabsNwmb8Dm3k zRC8yH%~#)D?RMDRKGxk1s@n@dGscG8*lh)4^9}z4pJQzF|2#q=SbG}qRb3bx>8Q3c zBn7NUE47tj*QAx&$_Q$;#s~(jH7{hEjUvVGX(0{QjhaV{jhaV{4V%L>1;*wcXoUZj zan+RqzBlpi^9>OKzN4B(7CIkujl}p`1yy3WlQjkVRLFyUtT@;wGJ}0Agkaw|ivZR! z!&@ULn~iCC7l-BHEfy##*hdEbv85C?ubT3c>nekNHZBL#&{yGCLR_^J{$z?w9mLaqT;tO1d!0TzM=W?01S%Bvnn(2B8{_edkm;22#aF$R29i5g%{8c-qE04vsj$kYG}K?92{A_&e5zmi1RY#P(T z`!A4M11w1cWIzLy;svHQ8{2b#%{?#!9<+kAtbr@prqTQ2f0G85(FVW81)2lC4PE zk6e-F0biDDjF_^e0>0`30bh=zfUgM*_>u&RNK^q|vjQm(_|8kpQ)6^iLJIhjvp){T zfG>wfOqYye77F;f6$8HIDGFmFCIh}&O3`Bkh?{lC({7@Fcq6==S4$&DH)VQd!I6RupI zz5L2$`Se%rC=L=V%=Ev3u^Gp#>J6UkTH_?s=50)~ZKPPJ*iA7EYovIn4_5fNaw&)t zf;7K!S+4QUVo!!OvI|_f9LKOm5qRa21dB-2utu>0DZg^>kd&v!D_3*Wl}pb4I2f;7 z4v$-vjA9msHL`1N6v-sa*d?!AEv4wO58jqtwYhS;!PxAeZN%8Hl45M`6q9KQW5YX~ z&j898n{cz2FgD#uE<$6J3>X_1iLsf0LU3VEBExt7F%4sEPO-#08Xy(0cr1Xn`JzjQ z)>sn8hJ{v)%`~+vaq^n%A;;K|1&j?zha_Q)4eJ~Q7#q&W7#mJ1HZNmr%p%5yEs3$& zgP8=3&3oUYqc;N%(37AWV?zmHY_#SAW5eo3b~dqgEGZ`s_dZAd;33WKC>F)JZKTM z6=SnRVfb`p1;)liVQk0<7#j~AF*af1#MrD-2pS2Gh-zDn)|iDyR4f)48;SyBvqQ1k+OD#dp6{~O=u_70XI5{{iPs!Jt={AX zTx$+-OXD1Xgjb%T!V3Y`Bf(KZ_S-H>IPAkfc6gFiU~JerLSTsH(t0Q zN|;!T&mMELU>6K)zRqeJ+sEF^M`h_?7kaRJd9V=;HVT@fgygn9dyG-SWL!oGWjRF& ziy1IVXp5GkgkQpdjuKAplSSPm*#Vutia$&Fj$g%pfqLuG^iS!HQ9_wfQ9_*`e6JU( z$fJbsZdPq{z-l}GS=ne*Y8wO1Q9^Q~jY5<#(N)DpW44hp*l2LMYNLxi*o!^bxCR>s z%~3*f+u0~Y36pUdC6p}`B~(dK!ophoD!%B75~@^<629Vdx#8aNu=a-Q^i})~%ZFY& zd=>w#66(@^*$W`}1 z<`P@-$Z>6(30ZOiG)D=^joT(f2@~^Gw#}sGo+-n&xm{1e)1!T<2OIWaQyOd%G)D=^ zZQV9Sl#q)mqJ-?X{OJB5D7dBm;nP~mw0fTc%@`YU<5B{~M((x~#%3QHv~#;>fUybQ zbB6kpYPt8koXf)ZL_ylfrcnvrlLUKD_S?>TUcr`ldt=^<4$?s(7p&hv=TPWTc#QanVa85+Hh z|CILSGWy30jzP2cBscEM;5`$I@rdPS!7f20qI^g1xlg@yY5IG9 z@1A%a!z&*W=7|5w2kH%-AH*A>irjm?{7qFG%~@^Neo|`Nl-jNW&EAvTXrtgg6J1qo zv}GG9gN?qlRJGB(2ixz#PH3=eK(qHGx1EiG_e{p6_mnN@W!r3P?wK-d zn|Hmvx@{Ic*w=5-U^^P@C}{Sce%)_N?u(+S5)_ zh(AH|KsqhtPkONOu{v20sXqmxH*bGo^wjtNK8)mEFrWG!%?D2db|1Me=?0}g%YGjJ za2`)o>rdOo%+Jne{-vK`M`1R2w=rfDX0UWVTlAQD(Iw9ud+i;I!}!m;wl+r%)K+Gd zHD{DHrjZ@M&j~1NOd+d3We}6#(~e2h=CVtXrjy)$&`pP?>!j)3fll zZDjgT6e3^s`@QFR#C=F@BTdFtD1z5TAjP*lkis8->5qMA(H~wB0ot3Z`5v{IhseA8go%8k(VXZRJ*^^_81c zKB+QQSX;Rb>0ILo(%H8$g*qG5BOc!LqxoF(PsL(-7NQl%#&YP|#`asWQQ>GbBRs_U z9tY1fBcNqm(~R)1y=$BiKB|nMhL?S#GvG^9=9CaeSD8}+FvBf43A7kT4f~1Hn9C+4 z#<>8!U7r1NMF0g^hUf=>YS@zyqAh)9nY$e#${v!7~-{Sq`gd%|F}zI zvyS)lQWCER_bmA1bNEU&XwR4AFMfuStm8YgmJGj7HzY~Yo+HT*yqA)!*RoTVqzG0v zEJ@P7f!pw$tIvBAC0WN8$+t8*MW{7Nl6ILSufs3m;h8_`cyECvDFVq+Ns`8});U-I z*e_6$b%c#ANfAhnNs=@Mz0SG%HNYm~tp}1k+maN4bju6DFAWdfq8m`S@$Nax(Bi2r2Giq)_wc zKBSeOP{Z><3#dhuqMAFS79W>YyB&77v+nk!y1f9jfLctut)Lb!<3qFHjxpn>`#~G^ zlA;z>7iv*Ds;z88fNqZ&oSMnHN=NgF-LZiy)9=)Rwmo-=hkg$-$CrAwd5|VL;Hc83> zBrF0z!VCZsWVp7qyoiE!y&c>QYKm$dc13*IA>{3h+s70hSFwQ9#@f(}?N^mQN3%S?A}p<}A}}8L3}W!#dF^ zq~IkzNb#B)9az7nW(KnYYLO#04l`}eG0m<*iiL{Z6hjc2v_4qj6Sas|fchcLAv7%4 zh(TdXL1@$kQH$URLSq6aNfIm~Q9)?T3ZxuDGcPGm4KBn5qZYy09|sd^5fq{pkrlHL zghpKpLQ|fiJdl_|Eux`*3`%nv?*nR)UC9jqwTN;BwYY?9ul<#~sta*tRy!!aa_3yz zGH;$bYFxt+nhP4|I;0!fBFFKzSM!KkRP%^hWOH1(gWqQxVimi7GuVQrk%i6|T_Z7G zxvGrrxu<8rnvRyZ4KrJGLdr_Gwo=70YaeLB@I&Q0IiYF4F`N}0X9=BH1;<`r)3f**# z#CYYZ60cm=qyZIj4X|Pjh)fNz5HzsGBHoL|4F6bDHe1ECfLcWA3x_3XfDCAWQqX{! zLIdBdQ3LDX0kw#kh?{TpeZ4^4qu1TCNzQHmNUqZZi{QH#j)E0^WdU%8_=WB+~BVn1dD z)FMZ0oMhU(jcK-x6blu*DTc1xw9YFxtrN9~R`?`_G{16LuJIP6q^?{wA!-pEUAZRk z$|VUFk*Ka*vjQoTE0&0;ZY%QP`hrr^o0BZ45E&;WOl2MB&5ZG6KGuSYi z;6riXHQ7UsS|kgoMUsG8goIIxtaB8g7C9rM7C9;G0yi(C7R@4RkzAn`(N{n%-j(U- zjerBxBIp6Nh>}o?T62L~WEH4IaJfvN7Ev;45rqP^s8&KPnp~h3QBP2dGUz^}_)nFR z`2FV<&1Y2OoC{h&Eus{!f`D4IVN%rMKED}^45JoRil{~O5mAdMx1biu&-NlMP>X+t z|0#i^!v@3|Aq%KQq}T*V!#*);QA4GuMFXc#59QPzWCok$Kr76sSc{vp_8-O=sPdS+ZtPyInJ%U1=YH^ujwY61cE9=S{o64G7%~Md@aR zibkMTCNb`U)4e;mi?{q1pFPq}KrJE#YLP?X_pkp_7w$It$A2N91=J!+@xl$bi^O7l z_L!RmyI@E2bynNhzITm}%F@9u^kC2OV7nS@6tsX^)L_+Tj}do~j7!{wHvk@YCo>@K z!WJ##F3w-hcfmXFl0`k~WCwJ@U3`@C9dQ@etG6yqfAy^qcOf$xwMdQNdty*Uj=T7; z%d0jzV6{EiUoGhQ5^XdFT0kvIZQ%#y1MVWxRmDbqXbmkXgNCt- z1{()0pcXY)tBnHgA{m#s3)w=r3zdYsuMlT+{Jyq z)5X!fL!EYMzfXR?guCE;%eV`!EZ{DDavNKcIigz>4{T98&2jD$cfnh(9qwZNrPXb7 zi7okW?~)}4WXTE80%}o~4BIB)E)w%qw#}fojWTSTN9!qgdbBU~V87?VhBVkDXaTjT z!K&M)z+G@r1@6K(6F(5uq7Vqg5Bah z**bVnbtLbp2}bWJy1b`{B5DymR=wwy@63V(%tFCoxJCp*ru-4bw(|| zL_%F2!HYi^y(foGy(edtqZXx`6)GCXO(wDTWShI=JuiDPj~ML))FM)RR^?EQ-or~e zV$0q-S?EW5XR)ZY|Eua=PSoMfS z@0pBC?d(Z#GfWCw;zf%@7Rkuj0V)A z%xKgiHG+5}RFQknzjPMiLNR(nzxOV!A9rLR&6xz z!G7C=EoiW7Kntiv4c2O-;60OZ={;o&c~6z(J+1oOdx|dasZ!N@zWN=x;okT4_J-@^ zJwI*v&}#?O;(H|2rTzW@uOP))$We>zx$Hf;vfw>^avKwpIig#%?mM;faqiN4@|J7o zJzw`5)ort2Oa8@CZJR||@;cB0YEhOfd(Xstm2IYvkIt<>X2jU^0IG1#)d6E89`I@s z>HXh7YgB;NxQu>-M>RWQY+P-@*pOVt*pLz&EHO3~AjZZ$lrT1Y!_QdlQy-W`o?~o2 z^w#_c4u2I#&>qxnaeua;XxNnCg=bQ@1%V@NgZmhAyZ!aOfh`}rfU)rkh_PWQU~F6z z#>R6K#^wYBAjd3u3?gd8*d*d7EzZms8xbPL#*)I=Y)f*5S%R?Io!PsnpRA6l0_dFhF+8_TOBE^q>A%&;@{G!glE~Ei)0L>U1a-*jX7#q$Yn4ZVk z6B5Rz=gU+~rVQqI#P9Jqr-R+(!G6<&^+6o3$p!63VQk24141UoCJcgy6!``#VQd1M z2gt<|#)dPv{VHQ@!l~%jOnc9LtWL#%Yro~%plj2Q5pT$~4_u(yuxl5)Hi8-er05>o zGsW24@vB@p8NhlX#W6$*HUIXXNzJ2bcnfI8*pM65+!fc#KCot<+W~QL8mh zV9;9gR;JlWq#N07NTnb^OV|LP-Z&~?fUeEC#^&HHqW0g!*i5ly(Yb3R#$cZ+qkD7{ z;R6I%3ihdx2m4rYuuo(L`&bCUz8MyQ-(!aNVo^5R*7EKM%L8;2B?bG)fR-qQd8sLM zymdLlojc$GUW63C1*;@uCRIp9lfG-WHsX5J$Og)X>8B0_!u zUSble#DFhr(trxN23WBMM5YE<2pU*q5kYWfcrO-Zvs0KBqB;Ly1LNqUBn^-O4NwY$ zt0^?FM;h1zAz)3BmNn4F#*N-zzD^ogMpML6Ky$#C+^B(8jLoV?nq&sY=o*P}52zCN z0Bh2K3b_VYu?9q@23QCh*klnwaArWDQ#R|zwD6lxvR&;0i> zHYYKwdV?ps*4W1tG>4dG=Oe{J#cqnBfNxqKtnd-=r63-;BFzK7EY}!=WlIHo)dd2+ z97h3P6BzI%2^Nv40={MiQXcRfmXxQ)=iCxfz?Yo;aWDpaIXr?{WE8Vdz}Kx9@GVbK z7#lGe@YPa^9{UiKrmExy4y_$Sxq`9jr#?pq@upD%H0ur3b>$9%10drzvv}q1xHe+m zF0xwV0#3F$!Zf=O=|(n+G+eoA9x*m*9x*m-j?*&ueYW{;VQhMC@%oK1(q&RM0e6x<*Ae!Pg;X(72OKv=Ftr(jjj}#O->>7#j%2g#^ zxvWV8D&!hq#TpQq8ek!4V1z}$8kqssNZD)x)7r=`Md}NOC24>RXn<1CfSN)BfAAt| zU=ln4{g9S5aFA{A`zO~*17m24cME~$E0^4;fmV#oxJL?`Xu>rT;~r2Y?g7@M0Tpr$ zuwo5}ObxIQG%(2`V2#WGYou&;Ii`ijf=I0amZSkPpaDuj18NElJW?9C0=#<0w5)*{ zw!!D$rZg~(rg%~Xny*}PqXtSCn-TVeE0kcykVgt7U-k~zkPk^y7mA~80zPzWyU zIb`^uB22>=o9kG@B@T?uJXkyyz*&-rze8&*31h=TE5>GlT9!C@P4{;XJm{GCl#BQF*arqW5brj*c`=70>5n~g`5o5!8fw7@O&i_Z7X9xKG z>o;mXa~kJb(2TJmH(mt+V`Ial7@Nl!V?%~9HY(*9n?>}IV{BNiVr*_8KVw>8Y-Ur8 z4OwSpY>LmgNO6oj03TealwfQq5HU74Svp{B=CQcYHtbtsY}kPwR{_as0cPP9StJw~ z8_ueNu}NAlyEU@}Zz5{Mn^3&K*tkDpY}}17HmmBU!7O>uB5E_nW{tvlQ5LcSV`HK) zHe>{hjfajHn=o-=Y&Ix_4~WRTY!M2Kji*^)Y?7v%ZptiKv#6b}nHZZbb)zgvGMwZvFTxVQ*~y>*oe>yW8+48 zMAfTCOU%L}Di#Zj4Ml;m*-5e5QlGMger5FmWsSYe@ab5qZ49C|)!+q;m#A?|11|;= zzJrTO&;bdK60+Y`QNlI0#6MtQhbLJD#)hp!lu#WhN~j6OD52&6%{EX8*DMsYRjuQ6Zf3f0QgM1=0#y0qXtHreY{h+5vsKXy2ITImZgo=o< zVXtYFkh2O=LhELMibj-BCUKOIZSGB!@Ry#!XOFbglu~@@nP#YWzu>qo++p;;lC6X0 zC?UD=!VMUk#A1B*n41N=U_|qE2JQXLi}|Q59qd*Q_N^%mHmbokKy#Fk+~#MGF-n+> z%P66Yq9|c814apLta6la6{~ZU@K^EH<2dPL2RKUDyaQfB`L@3wG^E}-H2qoE#VDc7 zs3@V%4_u558V%8%gEqm$Y;6Br#&GeL8dkleU!0>&mWUuD}&YVMgbY@1K$DR_Fc z@AhC1^Q+)|6L(^6*Cdk<*F*pM5S5->J$ zx9u=C?cDAuU~Gc-oTYwhOLNK==9SeKl{J=`Men(aTJAl!b6NO_HIVSFdsKq=B*EU3 z{kHO+JJ=HcFo50UJ=r>VPjw{ksR>5!DZ0F;hl2NHk5%uv6Z-b?d*G*V{Omp5lkQG8 zZs$FJhHdaoBQ2(#_w1HXhevSpebIZe*VKD*R>6B(Hw#oWj+;zk@5wgz#(RGEDLi7d z6F#RS#fK)Eq2Ar+uPCge|CMYPX!f4u#(f#QXJRoPvD_@!1sj^LGaRuCU%;C=9jwoT zz3-R~!KMb=4Vt|txy?r`de3BBdQTZe-m{niy{C;;_MWfD>bwhj{zVpblVk_9^Pc^b zZ|gmOT)lN@`mf_PqXA((R+$6 z@2OJNdp;aH#fJO!Pqa2%JMa1XmJhwQ@t#kYP>1$=99}^RJ?9u3_FVR!Tv_m*KDqT} z$y}*h6yMyG>f0XY4!tMuhF0G5jKS)**=tLl_h;HRJ+kCJ(Cj_QjoT)8&%}I{ZPSa^ zFqblHn>Q*nogVE$54Jv`!FFn}{h%3RLvHi7DZD2aRd`SKTlStqpx~DJWB1;t-VcCg zj19SADJR3&(9!WZMa0sw9 zZv`^L)4V56q%X1&4{zv^NcRJF2qdsqiyX$%f=e|!f^1xE0@;v^0icd!?{>_Vl;B|r zvatX`HtwMWvf&FUsvw)^|7m^(KlU-4LAy}5#Rb{~qnS__E1Tb-a1#V42idHV+v$sJ z-gk{pUI5v61$g6VmlJt2W?#=rqZ8P4;K&!HPg2Rr1!dOX;;1{($KdVy@nZE>Cn zvI&C_WaDD_=l24eCn&Jf7uj$IImo7;Qv`5VGwpuQgLEn;T)Y2+Rhx9}C(N66?fjn< zZ^pH+^r|+C+Ddj9-Rm?JFS2>vFLC8$;DsGXffq*#H9znYsd-KfF9gjX8*-zX+kWcVEN414T2q2Cn zt>BlTT$5I63#+Kr>PIkWt#Jv{Yy#;@b_}T$gzsarK?K>Td3=!#n}c@>Ae%K!Bkz3O zH4+i=!rg#%sWP|?cUN9hw2$QY8W&a^?GqV-4HiPQZ-Yf3>zLIVo0QEawY=kDd3YZO zN{aT80WDDqgR3cY{IaJp-Z>2(FfT~)Td*oKt!0-Z#SXdSRWjuknj(w>nj^mCMpHI} zY)*KjpwO*hKxVkr*Ssstj(EH=4>=lLl1CHNc8BATl+;LeRhfi->|V1E_(r**vC&*IyvD z23V2?$bbeY1r4YvH1I3Zz#@1!3`olwxPfiz-J5?T4Gf|wK!~6@;!AGSKnY}X3421s zmuD}J__BQRi0`R^Y=$tasX9+~t$q{J#wye7W~5lC*bOlh@lES}6+R-q6vQ)Eq#Mi7q$|JsOlJe9To|TXyzU1tQgE8XE;Stm& zqnL#vzHY^cZ+VIW*@(%Aua;8u*n_AvyOJ9?x^x)j3drUNk75F{QC(N=B+njjjoLx^ zl{@0vta+o|eRTymoZnn5;;9%+;rV!p1C7_VGa;+4yqG@wGR z0amO5k*NU|f(BMu1g?=8aE+ABwqsg&E{N0`U`ZMv0~(+dG@z!?z|BwQ9@qgMAdpDQ z8raD;`270{XO9%CdLLKN z*v&NSM~a1t-4MgLMv8}eUxkk=mx6#NBF(Q{mUY>&C*vB~1+H9rm zqga8IU%6*X%2VT&t2ye*C1(#WNcF%gm&4;$C8L;yagFSn8$~h+Gj_=_OL5 zRf{XP6OhdSrV&9ltfU~DbHrpS=uG}18{XM`2v7#ugqvNG`HO7sSuzLNP%?mQTqMY5 z6AHmu+d>9ZB&K1I%|4b4vN-`3j|G61B;xPr5=#Qvus|G2`9(Hen_O|uYp{nLWJ4A} zHY6RDgh4i}vu}WGI3t5>I4SG`H!p*1%p%B!T!L)&V@Ev*34YHwx zKsH))0kUCrB|8AF7srx7HY^k%8?_?HCXge@hV=quLx-IIk2cH>>fJB>Jj2(meB=>W3XNxQmj*tZ1Pu!8`y>9YVcqfJC8KsKCJ1!R-7?sscu3E)K3 z2soj50kUy_1lhP7foulUO@mqTpheVXkj-8S13-za0NI!*kPR6DWaFVD$R`UJ8W*Tm|~46+fS70AYo^oZ(+8Z9vkkEmEIKsFQw$Yz3KczeIH zg=uB=8D))GX84gX*XEE-HFyC7a?34^|G+@P8&6T;g#hc3;4mTkZ51XQXUi!K8=hnp zARD$0VM2AJFrg+G!-S$MOz5EyCS;G*FyXgenm^hSx#H@+o?3E68JCgiL_n9#aeprR2blt~;WWSe^vCj8`M`RtK) zno?TJE}|Lg-QOM4g}aFUSF$6ZIZQ}yyl_L9kn>EQJ?3V?E?Cxloz+%0&wDZ-m8FAS z;=zu4uvHB<0h+^v|3kfXX!?I@#4w@Es4$_<55Ct6Rpep9$DdiX(J`y-{NIs{)}*#c&>SWt zH`*wK2@_rM`Ea43Y~40e1{=L?uxg{@9&Ga^8f-&@O@rnzA-Sz=6vBkbxC|4@777!p zq%dJI7lsK%SC~+xYMAibShB-}{qJjSxOQK~AF_Ptwaw9ew1hge-+eDHg$dbnIZViv zg)pH{ZhclVSI!{A|3uTu+8*Z)!-TvWT7?PkdUSQ$Ty9IA@nTtW6Qkp4CTI>5k{h>8 z2oomet8AMs%{^0wZSzt+1y7Im6&~#G4r{Oz8f+FchY87T-Zn*;kc%q9gzUHc=>95D za7#Vgy?5QtrObi0tT&948~WRF$v`MwMC6K&zRqyO?)S^QnbX0RJ=iln*sun>2{e08a+{A>^q$GM^qw+`yk{{3 zdQTgx>^&cYZ(#Tme*3#+Q8!6;Ks)dGVam7lo>!~44oyG#hUh(IMtM)2AH*A>irjl{ zol&*Xs@3+eQQ2rjYP%UUdrxwsje_?~bXBp@sBNSSHoD*mRU55&u)q0j4K}91ZUN2S zliXG|3f?mrm)=vhkoQzc-qWhjUt}Y?yr)W4?|ChjY{Px^U9An*&U^m&H60w?FRRlI z?YDZoLzL@InEt=Pu>l!yytbhs@rDWmfU#0EIE$R z@pf&{>^;ei+a`F=#C(-)b3}8`lwsSPtMY*H~l2#O$^y$0D#TY=07vf)b$;+t&5!^>nP(ml8J3jn%gvs&a9rWjnR*%4&p zY7@wYwuCDZ5a&#Rb{~ zqnY5p&)6b03O7M;a*)l-$nEq^HqXTSL}A}7fNZ=1KC5CWfNWe8$i{OM$Yu@#kYkoS z2N5-bY!dN#i!(FGMuZ5mv7|sYi;`SmmVj(TjUXF~>j}oP#Fv3YzAd8)}ddZ z8%PJc+k?IRxf*O;gLQp62icI@;ye>%69ys3#>FzoCa`&e0y_oSa0WTZW|~t(m_;+~ ze)>0cDmGoa%C#-m-ti6bPPn%9b=A7Q$`y9M*0mngR&ch znn%K9#QSK*WEtL-R@MkJ3uqYhTPa~1!VKHi#kd9 zn{4`6MRWqIO(VXlE8;61)fW1sfCXu#w$SgIv{G9bK&@8ai9u_PT}-n+r1&{4q~W?z z^9Zt0^9ZtGb6!#LO*VY*jNg;4ABC&k_^E%d;f?(_Kp@-!Lr0f;&}6Tsk%i6&T_Z6@ z`&5bXPSzCdQz4J`vEpc-$c*-}5TboUECN}_tkxK&Y}T*kogJ2kw^*R0XdfB)&z4e9 zs+!_F-1kgI`v$-R=mIHz&p>6Scy%&T?2y+zM>}K$O%X-`%@JR6qbZv~HlrRXD0Iv< z5@W7*)XPs_g^5j23V2?$bbeY#S2VrRyIGs zn;IAa4=-{;TGqfJwyAd?Jtz&#p$&eD3p7W3$&DH)foyiMCq#UC_VS1?%O{Wco*Kwz z9J3 zeqxN{;17#cbGTvNn)tyWwaa=Kkp&LHwE|@0AL!#dZAw?}K8pK8S-5i7*fMs$?iz{l zxTz9EHq<$Aji})RJ*I_UJV)vahb3u%3}}E-(14mk z11tDRY&cc$0K7q3*1%P4Q}2Gzur#m}P4NH`G+(*oMh!HBZ2CM>*hKxVkr?-YDsd06 zCJm^NYk(DNKxArwg`j}}7J+MI23#X$vuiLdJQqZ24X`8)kO2))3K~#TXyA9Gfos8= z%9xflu*f#}{QK+Dz#y99Q59&ua>#}1{#x=4FT)7;_xJD6p<&p%8 zNYuDSu>vW-a&MNDr^YK+bJUef&K_Qn>Va1-hsUi-MllQH8rd~BiewUI?2=cmmQwWC zgTM~EYH{Uu0g9Yuy`y0v?LLKN0(R<$cBYxkj)siEOGK0>>&r)kOhzp zNk=7NkPYkX8z39b$RHa|DmE{JY|J9ahAj!QxeYT3Ae(=FgpS@gI4jvE=myzPLLeKh zxd7R)x{}=it{2CWKsGFJ0SEOa8?_?HCXge@hV=quvkkTUf3z)jQ19-3hURlbJmsGwPIJdWCV~6r`ZIu;f`n(?MvTe9C z1;}QTVzs3$WeX>i)w}K>vC+c}?_U$K(TmztgBLJ3+|u|)H%NHpDJr}WU_BBXCS<>@ z!i2p(3}lBVSp~?3twWel9Vtwx3C1v?=n4~hD1-^wV>L{8{Hggf&ey&PPgnem(>*Cj zfr>_4K_+pSkZtZwnDFIz zkuVU_P}G!C0H0}wdiUk$>B8+p|M;bP&>SWtH(t0QOqf`Vv4q?#*aiKXud~|9=EfO( zRF)35%Y!}EgAHh~KF}N{B)9q5V+<1}<1$Pr%PCA)%z$A+TeKV|{2>N(wCR#J%A#(P z?0|OP#lM2`ZNH2E8uiwp>0kJY7$%e%6(-dA!54d>iabpCk^59_wA*UidWvkcS8D4A z&0#`vqm4qCFws@TMuWDIGT3O}PgiYpwg)@v!G<*00B8;qlH1BgAxxNz%P^sAp)jFJ z3KJIABFIK`g$Y%vh6(HYbHjc3($>vLQDvC4g+?Zrg!uwxK~Qw|fd8o8Udish`@?5oHS#%IcHK8q>_8 z_nbj3_nrs1EIb(iX(by*C3sH~>^<3UEAM%bE%8tn>?ZHY*1>zKBY96vFnUkX+uR%P`LjRhhC`#B@Vz;t_$QENsCPf-N!pil=pQdQ2F>1++_*1; z_e?CtBbJ*5yI@}Pb%rDM{~pGhIUQ`&gWdi_4YsJk4ufXzNpABIi{3LCm)=uGk@qZS zK<{Z|mA&UOR_9&tq}R)$Zj$VPcHZ*^lyB=j2i04LrhoLyqW6>;3y z{i=<|thV>=liHT0whKYC_arykD0t6AR}~wr+D6J?qaQw`YNK%vcAf`Y(_j~YX75RE zD;ovxnT$*CDO<>UswD4e)#o4^(d9i=s(Q~~$4;@~vdPwlYv(<$wtVQdjrW|8P>1%r z;CD;jlRcNcCs!7{r%!HuS~6Ga7R6ULQ9H?T?$CSkZfNB_4}Q10ZI0NIul_&UHtQH2 zuh$06-jm$8ZG!hq%vaeq8=8Bj4BKYq!PRXu;lUp0!8SG6G0^Ni$!*>?h4E7p`prvf7_v4@$WJ7LP%E>@BbaZ@95kWS54iZ2%Y}`W$WP@4hO*VWWnEzbVoA%~s@U#qP&@R+%ae+3$X!Jq~ zY?0j*Zi3+CAe;M=+v%HZZpRBnVc#5N;}!5(6-xnRGUO8(O>o*&O>X zo@d%0FVjGZ7ib`btA5un>JSV-8jy3)46-3Np639v;S7T5d7eEXfo%4I1Bx;j>#oyz zp3}ju@L*5!V1pWL7PRa2CL3~FoM(b;!XO0MxL5|+1U64lV5cA(&L9Wbgi|r3nRb8q zV>%VXuKmi*s*SjIu6d)bO?_0nG1q?DwQdBXkcR6<%_GQ0 z%_GQ$&2gs{Ae;N4QAZ$~SxqAgozJ;O;!4*n`oOwW8Qk{ZqNZpc$?;7#tT@^yGMY75 z2+_WI7J;l|R%XCv%*IXkJF+ab0OqIcH53>eXlLl1Cd%I$Y;+`IwmsJ?@fZR}*4?LxYe^&#bc#A4Mv zf^5`0zR8BoaaszHjd6_~fNb_^8hPh~u91i>hmT_zSCzqSJ)Q+?I&LcD$Bh*qH<5YV zSO~{$h(+KUnIXPR*=)C#*B_QQm9eDbMh1=>r7*af;a?$=W#l2BWQ~EtAge$m)v;Vnn5D6Onlzw7t^ro80g$5SOl(- z8E}o1%?@B%crJ+48emBpAOjkp6f~fw(7=79frH>pWlYN&7-1WH{yj??m_t)Mssha* z8*-xtN+6q^>yZxfe>xQ{$DZIqJ$K zXAdt(^}s8a!{b&ZqnL$pjqI8mMKTF9cF8MOODTHn!JWshT3orEfNaLmHiB$eNkKLj ziOE#Znfy&QytDZbpbWAJH@hVBH`&~?WDc^SWB}Q?NRZ7U6oRw1j0|7;$21JGxr8Ny zY*xYIu>jDLMEv0=olp|Uh6UnK%5Sn+qn0I3UV}a4ARDp(vLWfHBn+})oqYpj!xF}BkWJG1gj+L904JhGzzM|*kd6Bz$j03W zWYhIc&ZogFdC($iGsvcg!g$9$vI1mdqChre1dxq~jv$*bae{1iQV1Uqk$Kr76d)T< zvjEv7P5a!GS+ZtPJ6$s$F7>M$WyzXFt$=I>D2dMl$O@2+i2~V>5kNMaW)sMUJEB#z zF9q3neFE7GYGQR}2HA+v3S{F(dPFs(MoY}XBPtdPkPSrvvKgjWZD~Z=!l<(Pn6kz= zv#Ex5EItFFHr3z-j5qsnO9L_s5?*9^b;XGR+SOs=?l2w3g*gAv> z)se!4nqUkQimouBheDW;JyyenkKLU=^O@H?@W0+88RG3ib2Vd-kD)KPl;V)Hfbd%LK)hD&hN^Ps4IZQ}yv{48XCc3KF zXwEiL1{;0$yHy+A?7`0PVDlPm4K#-d$!%q$5GG8d=1seytQHWY6U=Ay*c{gg&|Tamie% zTNDp$Q9H?T?l4TqyP;K>@NxfI-8Q$_k_XSwwpqmJc$x{C!-V9M3}7v~TrbU-@YbwyME4Ky#Ro+~#dlgbBH*B237B%a87F0|mEK&AqRw_f60Y zvLQDvC4g+?Zrg!uu0n%WZub;GHo<$YQ$Mw(4P^_P%IaIn8Yh@V@7c9gc+WeyEIbJU zX(ii2C3sH~>^<3UEAM$HTjHTE*iGJ(t%LVeNAjMUVDz4%%X@k#cu)3N^`5uy%8%cd z#&G=XJ>8S;PB(7nJ-^R3cs{7bwDX>ykx++6@Vci(@5x?M@5xyO?`hpEP|-MUGKsw> z+uR%P`O(kuh|x~?dOT7*867t~varvLk=M(-&z%6sbk;GYwyBKMwWu2*f;W3~O-!)2p> zsck!G_MYTM8wKx~=&E9)0ozC!Z1mP|S8dem!8Ueku)P{=2Wa-5Ci+{3@1g!}Yzmwc*-%&q2$FUfX!jM@Xnc`~C2|lJ{iKW$($A z1@GyTTR#B`Aga1W@zqV#PI8<(^q#yMT6xcJe!9ACcG{8;eV8mcC`;}F&EAvTxNU;> zOw3o=HbdSv%CK!-q|kJFwEH~RJ0GgShBer3(Cj_QZQeG8_vE4q@9CQW=$X)@$ev4BHdqnr$7SZTI2wh7F?>?5oF_P6Uc_-GRTIM;9&`} zu>e6f?%^ImHjjTueg?02AC1lj?k3d=7F10-!KUo`Z-QK{j5BKsFN=XJ(L%2oYpsNr7x8CAq*X z0ojNeK{giG6O3tzFEI;GFj%aBY-sTUWb?>R@;uZ2_@*yXyg&mfT=lO$SVwFI(s+Re zXa?Dk8_#n9*>DEI^gPd=kU%!G;DDkG=lQZb=myfk_Ia?+JxGJiX|O@it{2FL+!p7V zAe%4(V zTdLg-yW2^3yQyvuf@Y8nxv|>{$mYd=pp%rp$>uq%BJhD8(ul9>iug)LwS_GRAdV%i z)D}*-Cau&Ky1s>#)<-aCt#OEHHi{I#r-d|JH)loC3(Ehb{5hle58N zR@X?3(LPlMw{7>m%$lNoD&)~VRvhgUnbAHLLbPuui$K;ft2O#4n~iCC7l!5GEfy## z+D8VoL@CTmO>rLfeTnhTaqtiWMT+;Tsmv7bPDY9yvUIw3NI#k)i~^b?zT`$zHiK*i zJW^2TUe`#B5noke#FsT`K!scbtXKmgQv)mn4Ggk~C^)lPV~DcZC72e%IY?<>JlQ}= z8XyB2pcFKqrqICn7pZ|`;Ne$vkd`$t$u@ZZC6bYJi2HfiV^lrDRrXj8it7#0{8)7Kpo7Uk+OMFCpDTrsTNb`s<%Qc2f*-{Z- zb%BU4$5F)B1V(&Gf<+{%h_6|Jlt+B$CFP+Ro|TXyzU1tQgE8XE;Stm&qnL#vzHY^c zZ+VIW*@(%Aua;8u*n_AvyOJ9?y0jnV3dm-@?UgG>1YDzbP=4i3ySA>oZefNxs$a_y z8jBj|2Bi3nF^+>jELP1U$VSa0$cD{vT229EGplLjozJ;O;!4-D$5ka_+E~+ZQz1WY ztoXQz%;UyFIBxSS0@uh4%cE>|la{v{mWQ`kprqqQ296u0uxK@{t!#eebG&eF1`iNO zq=-+e%oKP>q&RL*|8X6+Wi(yMZUN0#F1hizHG^zcJyKBUnrkG+D_50x<+3IXsE})b z6>C6bYJi2Hfpr#vYh(soBW1I7Obag$MM?utsU!`M0S!P%Z@!6*T^n#<#HV38b#ohOA;(1QR5oL3Z(qX z-7YCljaRPbs4JJ8J-i^*1Fu{Tk6V?DViv|VvTJS>$t29!C9hm9rRcE-@9UzfT3orE zfNXj(jR>+~B?Z~+5R<8(GdakHcQ_vcltDJ(W|w3Rvbkr;9Arbu0J3qBAe%lY1ZS-u z8NT$7X&7X)izS0>2EgL6SjqZG#NW{+mISh4fjE>h$Yw9KEOGK0>>&r)kOhzpNk=7N zkPYkX8z39b$RHa|DmE{JY|J9ahAj!Q*^QY5kj;;MS|FQ2a8|N@&<(Pogg`c0a{;np zbtO9+TrZ9#foxdd0t~WID}rnSIf86hFF-c?u~YK@(FWK-z5AB|426z|G|oAo8Dv9l zyb1!y#)e5jHfR2CIbAXgvQa4q+3ZChImm|PD#&IZ`5Ds!WOLOgNaNdYa16*gD`Qgt zCz0Y9c>q4RP$>b~P#}VA_FH$cD43fNYZ1 zqi)SC0i1{$0VfnMKsN4=ARBihkj#Qm8YoiLV)#1aF~$& zwh9vtvn37{*x^Z50kUE15GGVd3KMFAF-$1B!h{|QVM6v;4HJH-D}TnhcmPjV{EX8* zDM;kT?Y@hD3)|$2Y4=_H_eiM2FZ5paxELnn&}o>EvkGBC>t=z9MqEKAahQ;8?oF8R z?Mr<2NIT&-{E*_O>S>00_eXyy2e5_y@l*AnIZQ}yyl_L9FtHe)J?3V?E;yn2I;*X0 zK6IUr%F@9Od9deuu&(cLuu;$)CM37{*<%b7CgUQ7LR+*PCOqdy_Y2Xc z_dZ<~b(3TVwEHgpCn?|dyZG0tw+>DJma}4*P-aw^Q0E63(1Trfw+7p(!Nx&zn2_97HVR?F zWL$;`WebG~RZ^I+uolCFqAN_OQZ-EYVJz8U!tV~XHe9>!;y?Up9UR>|)oF+J`|O@l zn2_@=hY7i|5GM4=t*=YwO5LJ(V2j#Gj&p}$Lf#Fn!i1~WRkzJWw&XXzCrkFpl1D&u zn2_AKZ9R{Q)Ru;nEetEGk0@)5 zGK=1G47J>Q9_O;~I2t5;?H-ljJxQ?lWWTMv=jCjPhq_=lc~77n2~*<;mv9{X;7{Qmen94C8E_oTbijoW$8H?s{MvuiQ!yyqWCsKX<8@XY8v*=y=O zIji73t(yfZ8plm0vG-(~d*eM{{C*xW+6iBeM~YV((+u_Q<9F$Z9YOzi!7*s|p5(@T z8N6p=F&?qpEZ7ATny)h)vGq0H%;{jW9_*1GY*K?=1)9Alxy?r`de3BBdQTZe-m{ni zy{C;;_MZQZ0euNy^b}dtO_CkZ&U;=?`L^EkmFlfS(?552^qw-Kyr<3&;*C&6?mch3 zwrZm}t8MeYWTR=R?HbVRJ;{wW3f?o(RmDa#wvjT}=$ubfZ8Yz}UhTnVHQ2SF*?W@P z%0|I^Cgak3$`3w@vV#iTNtqW?pm8lwsTa;O6SKS@vN2J=mfKy9qRVPjZ{LP2oMcsKR^t zW=bEbth)FA{I-^|tln=1%^(|c!%|KLvZ15nbBYME*~d}+-yV4ZWaDB0*+`@S*#t2{ z1cI1BHmR5&1Wn(*=cW2Tvd-^$P6FFgro&@R+%ae+3$XmXIvZ&A1jf|G-6_L1A^ zn`|EWNT0k-+sZ58vnrMX$i~HI;YoGAEcl?GKwF#S1i$!d3s< zH+2ZQ?&Nu12hAWGa^rapAREpgn4ag^6B5X#2dzO-hV%TmkMKOFgWc-EF7jZ#8f*i! z>jknQx5arT$R-Rzkd2FFkWFCo1O;{qvf&JF-+GA-PB;}iHPh}#WI7dnu3hX}ziWSV zOuPZtZak{mUe})O+8}Cp^EtZLX(~WA-+3ojP6poCffP@IkV4IW{0*sjNDc1*%^(|c zqniKdk%*l&uEA4G?DTnLf8Wb33WeS}U+s3w-9Fmg4y)TcK{LpP+}Ld&x(x@5eRVxE zo+MVk^=mvj8TFEaY*ZJ>Mmnl3j6eW!ENP{-FzTALQd<~9tyVvQL2He>nPy#|r-HU2 z4cCpDN05!0N01Gh zZ-PZ2>zLIVla$SRw7l(Md3cKjN{aT80WDDqN>x+n__NnD-q{Nt9yB1uTS--Bigza? z#SR&{Lpx*|O%X-`%@JR6qbZv~HZvY6D0J2}5@WO zEFucdtk#&PY_<#2TFLs5(!hw+pd<~D0S!y;LK``b;@P~m=@lDfz%pcNg5yn8lV)0Q&VW*T_5Bg*b5%s^?|gkfqiUK?>_id zX(9GY{X>5S4$~+>_JqTUC9j`U6QXj zy|H`@=-x{ou8p{p`b^$rqq?r#esJ(6n=NMX%01!Qpm|;Yg}&CaoH61q<@(YI*A2*SC+*k<5Z6}Ms zH8MkdnX=hoEpIF=58ySFblk{*mMDdJsVR=z;rH{nT?if^kVpZ)Q<*8;5Kj3LjT4 z1*g z6yWdCTLjs#l7eim6_cr;GdakHcQzjaltDJ6;%1j*4zjst$sA-u$pEr(kszB%CD zm4rbytg~-`Y&au>Y&fadybQ82iy#}eB*^9_%p`zp{_^j1^ya`>$yPx($c7RE*=WrL z$cELG>}GJiIFD0uqz$&tu0%7!ukIPCclf9iG}o#ZGRma8b6TglIu7ATvmQ+?Cs7WQm>T4h3k{W^Y$y;>Hn&-NoZAGj2COc$4I7sz8?Q&d7qx5wW`>)HP@rr$ zs|v~{X}#*!%o4x@JCII-zcqC2JP7g0kuQ zZ!Ne7S%I=KQ79WS0?LNdY(m*^N3;s}r6?P(PbiySb~jaLW|WNxtxz^@q-Rt+)o6)X zct*uyfwG|}P&R!Ot1a~_TNqGQ->a-K$P9;udclVv)TSD|f$P04>{eFqC{@o?#uYU$2R$5+I<=SX%g!28@*@$c#IQr=rm5qS%o;Eb+bT4Bd{Qo zI8Mkm_a;vG#J}LfN7@NL;)fK!RZlb2yAOXsH|_}f$8Xhx<~Sj_@x~2t!o*^H_?Vjo zyI@rFbyi#1oWGXO%F@B^_F#8?UW1Kku&yuUaYAyNA3nx7VKOe`gtDCCgvAUPC$vS& zal(&db&eArc&seyCdm$H_htMGDc|lO|=Lg^Hg(~tm;ag{_ zHrfUi!A8rUliJ3mwjR(NCnPu8D8va9T~%y!#5Pg}8*P7I)kfPr*t0#@ga+#c&2d6< zTiGbY36pUdCzLG|CsavsLaRQH6N;`lp-R;_;q$RmY`8Z)rnTYPeHs6KmJhwQ`7-_+ zB-Ek({@}i)I3as3#|gQz5GVA>tq)4(O5LJ(e1O_Xj&p}`Lf#Fn;)E}Hb9LM7uqA7s z)wY?$=y;q7n&X7z#%&Yggo*ho+h$sG&y-=?d|Hpe)1$r1gYEKQGa9T9G{*_aZQeFT zoREtu;)K4L($9sv-TU8vMoXDh@BN?|WkYUUNhYPt73o6EvSQjk`%0aSwbB*EU3{kHO+=ddOI?*hBYd$M)#p6W>6 zQxlBdQ*?Px4+ZbZ9;@E-4Cvd(Z^xr>{Omp5lkQG8Zs$D**aqJ<(qh_q&!3P`hez-m z_le$=y2aol7Qdr!8xH{SC{m+^?vPWXO2QanYb8S33<-lBcEf&TG^ zW6n`O|BTj#Yv(;L zwtVQdjrSauP>1&Wg&*BlFVwiq{~xgDviIc5g7@^vt*=VvO5LLP?j~v{InEt=Pu>l! zyyxyqtJ`M8mVCyVwoR`rc?dLnPjch73End?UuE0u^tMrkZSxkzrqiQ6>cPJF2@Te# z!489F?@4a+wkf~*Gs=eCu#}UbZ0P9toFbxZ_#7ml zY{&~J8y5r0Mj{2uCWsLu5X6kKNyQwkpT7OWewEG6FQI2#gH|9jJkEP!SNeNV;^8Wm zNcV#;5K3TBiyX(&f=e|!qHJ7kLfMdv0icd!@Al7+kPf4x25G!O12m&- z$c^VYplmpUV0xZsPe>@6ad1FU26L=jO*fDZc8Ldjpa(mm!6rbvUML%KTbyU2Y{DQ! z*|=Cn*#tIEP++Gh8_wYN*ZWmA1DqnFPMT@=!V7gOCS5!IMXF7^_LJt#xc0nJ@n&87 z`fsZ?hZ_W z+TAXFRNXGB+si>S%7)z7ZRJ%qfAKRqN%^a6rdUNV1U;l7U)2@zm5yo)%Md^yOIoQd zthy$x)E3rItJP;PXsvMt(`*(geozZ(xNg)uqHNSWqHNe4rYTT1-DuR&??tU^8d>Ok z!!;6PxKEWB@?}loJ{9tCA1e;`iHyf}4HiPUZ<9qp>zLIVTa?Y_w7hG=^6(l9loakG z16raKl&YpU4}UPjfag4T_|_;=yp~jDrg(WWQtXg#uga7s&=heL&>Zq5H=42;Wz%&+ zBL#)_xJF_O`Kl5_zN|?DD&!hq#TpQq8ek!4pqE92!I|OLX(*fBfN3F~gOmnFs0Jlz zfDCAWQqX{!LIYR7g&MdCJp7Cf(y|6t*{0sTwIU7lp(&y%pgH7AZqz_C%BJ5Vg-tZz z8i{cas1o-8Ytn!UxdvFV21KR?SO^-}%Ob+y%xaB6%4Tbr)=G8@Qfq)EX@Cr9fKt4` z)MjP#JZWGZJbX+=TGqg=Y=hr_{wHZ*2yO6VT%bAROK#La31xEydqT*UXD<)=vV8K8 z@2R0|hB2$DI!|`3ejC%qCe!Q=q*$of4KWn*P3!QZB|bvF6vQ)Eq$k(hu%0s?elJd}u&q_!kUvl=u!5H%8@QCV?QOrUiU$(9mY{X>9S4$~+>_J$XUC9j`T{?zx##4C5ywK?;~sH6Iw z9HDVSfae0+y_GV zP&RaQxd%I{QnvRgVR=CGqNL+S2DC&e%u7vi;r#G2UO3yq0|pW)fS)Qe1>g}Wj@zGpSjTM|O;@rV zp!v!rHy*cUl+BDs3JRTdjl_86suHhU)}#Ryat*Lz4Tww)un;sb$0BeM%m8epY_=2A zTFG`H^@YQdG(ZM4Kq+WIO`(CGmj?R4Lrel`Sp&P-rr!N0ACd+Z(G+i!0L@n}xlsen zD4S)EG{y|TM%PG;dq9=A2UwE^RLC{JiZviIHNZm9z#5AHHZlXSk+Rv@m=>N3BDDrs zk_O0t1}Fs$s3|n?$v1KjoCDsJ(y|8jvJF1}-Y5-hpeY_zf#xfh+^B&P%0{ORS1!+9 ze&w=!@+(&Wj|Kq|cvObeFb~#wn~`D=$WXnmPi9ANJUCRVZ(>$cb)M{6eGoIMHTE;j zhLB>RVmHJvu#w`S&MPjUt(Z8N1|_tECh@_TVi>?5f3; z+sUhJhS4^nY*gC82CsC{Q+PMU+h-N0bfg1%xDu43XlzFRRP%~tq0ti zSpql_H3Cj3UVv=eA3-+mMj)HL>ZZXgdC($iGstF;!nhNW6(AcE1+pO{fNVT;1lfd% z6J#??A$&kY=4FdefNVU?0%Vgk9dT1;$(lv&bj^IYG^%ctC2JP70h@0NHSwO&}ZYh)se!4nqUkQimouBheDW;JyyencU_l1OM*l#G zg61$Gx$(jcVZy{>eD;`|1-oEX^L18R*?h(u`KT-%><=O!&Kt`7Zd%kIABLlI(zXU&g=RHpsXAGXCxAtwYn_e49-F z$S_A-@;j&MIzRYkFI16-3D3E>YNM;Hw&%THHd>e3=0J0pklbja5GG7?Rk6{AZKMn~ z`s+)pHoC@xePcm`ZECQ2&>SWtx0Q`Tm@pZaVM5tLVM3J@Cba5vkd5dH6RK1V6Q015 z9VUGIeOeo?-Iwv7Y5CA=o1?o&LLJ&~`+tWyvj!j;EQRIZQ}y+%_Rhn3%7!ZBA(JnKEpfaXkf3 zkM<27>;v!9U|rwiV9TI6Oh|6?wkg7dTvQPzWWVJ{_cwupTk5&)y+^&Tf@Y8nxp650 zWFvRm4rFr-4O+R~Qvlfn@7aqf!F%phw$P`n-mk1Nz$|*ty{P5h^JXp!FGK`sC0j!! zcux}SJ=t$7?|BPb;-N0sP2Q8OgZETN@}8Pt^q!*2dwM8%Pxe^#p4YuMKYs7|;rDXy z>7I0Vx^X-2`7yS^7bvutcCWH|hlDyjg0(M2@5x?M@5xyO?`hpEP|@(7GKsw>+uR%P z`4_*>BSt&n$p%uuqiBYD_l@(~^+V_%Z#V|c-jm$8FN60?EXE_2n+3aISo3v;BldvT z^JY#5+wfoqJ=ll_yA3pZPjZ`&SoEIBxb&Vfio9nr1A0#ztL#0`!dEbS3BU7hS=3FE z9nj8ueuVOEz302sTZg89!@oxFDKpA@>ii(y2vy|X^S@tSwb7>4_S5f?jYg%mJ3zDd zBsbb9c+W&v6&sD&M#^BL-<_=5Xv>4m|E&fa*I;*oX75RED;ovxnT$*CDO<>UswD4e z)#u(*ba_ves^0U1Sh5Yb^}W`HYv(p{hB)M(0(8PLdkn_zGd&pl?CtVlUpB< z%$2%D@!d_-PI8<(^q#yMT6xcZcv*GZoUkST^BP(52u8>IwL!D@BsXrG;5`%bRkqE9 z=AJ3Tw)uI5rqiR{^{=`|Ugg0iHP|-L>^;eC-Zq8z@BbaZ@95kWSWa8&=dM_vHgxEMe-5-C77L5vWAAZCzFD&_}4xBvE|@o!{3 z>*K#ucw?CL$E*osBOXH566t==uNW1eHTGgNu}K8i;eyjIkj% z9_N6u;S7T5d7M2VVQkjH0Yw>(^98S^7f1)&<-z`DPJ?Y|us+bP7siI%7RQ+wn=lA5 zHZGPiHi69p6xb=ohBLVR%sxGTnc)-x+|^9Gf8$9y6}>b`5A zYCW#iT_k(D{&SB*xb&s1n1StSQ*1LLTg6#lb$28SG;r1p9_r1h9@7-WoyK zY)H#H5SE9xSfHd}9~t<^mQqlvn(~wD#SHchg9jQ?yp>dCrg(QUQtXg7T&*24il&I7 zfaZWNxzUu(7@IMV6cjq{8i_IBt4h=WYtn!UxdvFV21KR?SO^+8!Xj>0X0^ryWwS$= z7NR*wX_Ka8W>|6y#MklXX z2AVN8(;jIrGdM=qNQ?nrRiXx1lLl1CHNc8BATl+;LeRi0iwJ@=S!HXFyZ@cs*= z)&NV=02$B#rFem<&C2G#{UJ4Q1UzU3X;}l8uuZ-D^>3F3=FtYf#RZxJzT`#?lrT2? z*b@T2JbQV-m*tZOd`}Hyvxr$u)p@dO^0{8)7Kno7Uk+OMC=;DTqg| zNb`U%%QZ$!*-`;tb%B5{$5Fu71O|Lbf<+{%fUjABlm~pLCFP+Rot2ORzU1tQgE8RC z;Stj%qnL#PzHY^UZ+VKs*oeu1ua;8u*n^-nyOJ9?y0jbR3dW}Wl`BUCSR=R2RDR{I zy4K4Kutw^remO^I%xIh|kgjC290z|`teQuRjhaV{4V&Y%^dVwujE!N9dr>c4x%(Ku z^~bJo<*sWQdFLChkr=OBRR*^`(6eAo$4!O&xUu5nCNhs33*oqJvItlsGlZ8Zn_Z>l z&4uMnWi08qkpV4H3X4|L+REl%{63G{HQ)gOi4^WdWu|~TBE@lg#H^0n2{c{Ft_96k zF1hizHDheL?$$`TLR}*^OZ|()Ic-F zrr#rlO*G&diSgxOs>D6Onlzw7t^ro80g%$vItlsGr$@to863Q;jti6Yk(zb zfDCAWQqX{!LIb}i4cr3WRK~QdfpxaQ=ik4S28PfSPpUxkl}m2aKnY_r!=7;E^6ceT zF3TssatCpcU}2{J1B}fuW;Ipk$*$Emm^N->nr$M*Ld9-~VOS%@L%pxU$CXP#oDih> zmCJICcNTjxtdU*d%H=qQHHyG1mn2w3qJ}k!6-fD&dxxYvHD0-zqpn<#Kr3 zs$>+iFszYXbE8NmVa6_bI3vDCDhLsd!bElY0OBfs8;d};A z#@K|Ly@av3XUQC6L&<=#agi9C5hw%~_9!xZ=O5EB#^!F8ct-=I0v3-2&^BLm>F5$m z!q~9TjIkM~mL*PJgFWOJ8?u10A?c_jjIm*zqX1*W85v{4NyX-6jEz~u*svurHrp_h zfU&vdr8;^?zyW#^bYpBNA&iaITwrWiUCFkC%Vi#2Vo4Yq7Px?e|G0(?r&h$+1aidK zuwGzncFUkl@t-O?sCRGw3(aRj{hjfajHn=o-=Y!)em4~WRTY!M2Kji*^)Y?7wSZptiKv#6b} znGcs%)s3=b&7xK?Hfxkbs0CSpu`y8?8!`gMhSO}q*ldcI> z5up{v#*OrdYEzAtn1x4FEEX6WiUMP^MX}n_31tgiKVYriqpZ=(Y^pISUSlU}Qw?6g zwMIX;G|mA?c;zW7ybxeL5*#IDzpbK#13nC7hbLJD#)hp!lu#WhN~j6OD52FW@vml^d@=35ia#Nt4!_TP!G~j%kVB_YLe45g z39Xw2DjH!0nZ!{-wz)S^!i%2GXOFZKe!~wbaL+VDz5D-Ot_!yx{o}t7&>STsH(t0Q zN|;!T&mMELU>6K%zRqeZn_qc3AC;wp?ek!d_h5T9*dS<*5|Z2e>@h|OlW`d(l;sp9 zEM~wcp)FdD5_UK8U2t?m7Il+k2ekVt{@W?v_N(}rdh5{iV>iYqq0Fc#q0SG!*9%qT zQNp#~sM=`1)pplqveBT_HUyfZgycpWg(zX7tBQ?=Y$Ii`(Niw0+US4>d%Xu6)?mY+ zIZ8-wD;tFCryq!Jh5G#x&R{XpRz+ z+q`XxC?OYBL7Vfh96v`0-IMN4H*V)We}`?Rw7RLm zcHZ;J66){>KIVq#JvnshJvpo3J*}GsDjMEXCb9Qqn|tFufAIj180~~Fu_MJpWSXJg z{rtN2Gmo=;V89h&}U zJ{Y~H%qZ`v^MiOJRFQkn%bs4f(WKRO-IUa}DzzO4&EAvTXrtgg6J1qov}PMAgN?dh zT(!}(2Rq=w)-~AWpxJwp+sa14dnV)3d&(B_o+`m<~n{a(6Q@}BIu>^-@%;5~hE>obzMQnx6+xry3Ij&q0JlXpWa z@Ab9A&C0|?9w%Newc)d1g_MYU%Z4(}(ig(;pVc>Z_2PV?{jAx&{DXuAp1*l`=ofZ9rXRDrsC)At?%*x-;;rYMd+7NeK7Xk8<#T`Y+~=Ho{<#OA zJ@jXH^k516w-=rA7Ymd%HkH*kkR2YH+NO^1Z~W@dE#p{PG~3B%efalBq6*)j=7w3n zd2El1onPBL{r%a$qBfarH%qPY_8r$4{DB~!OrsOEMr7MHwgzt)89MorI(Z-}`zNn_ zfF;yPEgNx7o#64LYwDzyjj2K7CrxBu=yF`ddattVbnzOL#2nPT_8I=b&IS=ZaCK&A zl-hX{QRci!6xkING>xLcYwEla_Pa!79K>&qkl5fbupjdOn>cVNGH*B zmNn#a`zPQ1Fo|CMP-K%=K790bJU`^= ze#`&o_klk%RNs;LBNh5S4UZ&$Z5111d%iK=@l|b%b!?1tpMUNP&i(DMJ+v`q2edIJ zxuI$c6UrJ#l-0+P?Z>Y(D65Yln>r5zp06)xp*EQvLYi)!&7WI_LP+H&L1wka;ulp5 zT`#-l5gMzmaUe*pp*GdvaA<`T4~SL1f#vgiYmH?T{we#vNKZrmqsY-}9jzv_D^QuZ zn(1kHc{wsEBm@$t9`f3sBB(}&-agDQ6-Ds&4W#(e4AP-`_xlg}4n%)=;|6GNK_64% z78gf@`>3{dsKP3xSA={S*ITHEUXvJCmVk$7Sq!Z{6RL9BLP=7U-{qivYHW| ziT#j+XPObfN3Ll`xDs6BjBvE}qK0>;qchwADsxJJC8*3P;Wls!P6924QNw=XG$ykV ziE%CfgP6goPiCWHP-hlO$=+m*f@rfkA{&P{(T^EJ+ba4oZ?VMhQ>9 z^Z`$$B9Finyj3J(W>1zP>#7iV3x!sZ!f#fhV#ME3Hag7;4p!~P=^h+NK zL>)xL!-Xu7?#mu35Zf4PD_JkP^!*gr5d>=KCJ-peWe_MS;XgovKrKKJsCy{AXzjrm zYpC`w9~?yf_s|4TtWW&jME)6Z?4PlF{V$%|;sbsY2$W6f6s9QL76kfoaytcq4*#t` z8E&%cdf*C-$L8zeRXYv=4nw6ptGD(qN593}Pt*tk4QinH5sNc32vmd! z0=1+-pc9f@V3vSDMU5a(i|Yydq{Nq)g(vJRRzRS%cmV?a+7tPCllBKpK-+5vw^zOU zL4T@CaT?M9fr1u5peV&lF@QihgJ61o-t>g{uR%5g4k*fCtQU;%^JY5OE)RC~Yc$xb z2I~XudV@eU*hTkSDZ zsi(-yBb*|$J8tF9ezZ4EVmK+!!WOl69 z-A~}k$-w7Iq_~HXLe1~`6Rmt*4bKK`0!J1fy-P%|C}GEoDR33wcmsR4C-^h4XR=DnbSqRxTGp=@>t(*g(-DGiKs zijp)y1~fn^45y~pW&55^4IBm!AW)=b4UDl(z58{4EDa2yDL|m01rR7oQ3K5&&|!}h zHqnS{B(8J~dd;fDJ;0hYphCU}Sg{5~rUqCDdtj7B{Mr_?T4Ri|**K;J5GYb>fF)^w z3}}E-(14mk14Gil5%BOY3(~R%E@7K`clIi2U>r>W0tGFAKv9YsD1$)R6G5QJb3_u$ zCr2bL<7DA$Crq<>q<-rU>je9df_EMv#an-LVExvgBbXIHpd7J&jA>(%X?7eb7Akf_ z3?Y)zdS8W45GYy!If*n!B(Yp0q=zkqNKzLBfr2AMk_nt7NwA1Sg-9|hka9%Qw4^*W zxDXc%0tIJJ984fkPzVA=R?I?(By}xBQhAErPLF2sci?V$Y1opf!@ylLvFemO^I%xIh|kgjC29LL*U%_9g@%_9hu&2i=S z{fKS$BIWgfo z9Je_Z@tBnvzIsF1>?$p9E-Y^-H~!NO`<%*VhxB)4X_Y2 zu*M=@GsX=6SW`Az#IyhcMM?t$u7;8{Kn65GDQG}Vp@EO=rv{e60|*ppSpzq*4c`BH zu{5xOrT~G07C@jVMGZ8AKsP)*(3R^}0)dv9u}gtK!PAwiIq}M!rF4rcw<8cJ+7=*C4U2zi z;0F1q`%W>L3fh^!XpMI`A5xb=py6hZl6ZEg57_rCIU6Jc2$UTSO%VjTlUo}XwzlaB zOe26mS>hdy*Cc|)V*wE8zqkYtC`tx_qClKv`9*63Xo3&Lf!AOUIS7<2fIvwC2ow?q zfwIm~00QNV3rH=Qv#NV4Tv*B7C@j# zu?djI0r=oTgQg%*2oxYtOOJDx;6E2EuDlxw0`+nRdm%7v0cPQiVuB5E@Tbd19IJdUgYftn}~C>ef;pB}-7HYihC zE1UoR6h10T2ixbt_IR)p8f*}>00Pxu)n|_p#*&On7>g_?7)vn&!dPt4GK{6`W%(|6 z&HH6hH%WFtI~dDfQob#WWkS7mX!;A@5@9Sdqd}n52)=d)Rpc<1k3F_(qy1Lfx5wlZ zyZ)Uv8UoEQ7ILGF0*ocmRmDaf_i0(7|W%J&%|OpV!2tc3yx^M&Tz!8+Q*wY9c;pbeeFdWY(j$_ z11*3+HCXkCMemu6OYbSm$$J(vp!c*z%ii-tSes*NVCwrgJ~wM|NG$3e6ABsbb9c+W&v6&p?4M#^BL zu3xU&Xxf84)q~Awu**RUAW#j~Y@^^klX2-iWea&vmE=9GdPaKbJw=!IRH^Dce*-(k zhI`$+TN|#O_xx+ihhE!w&(}(*L;Jn>4JGf%p3B~oD+}J!C$~N#nJaaRPWeu4f1Eq? zp1kE+dC%vZQQbB(w&b7uwzkczEO`ZJ0R$>bmc3_UzRI?lLu;5z8Me(w_ExvetOx7$ zVDlR6D$oK5RD)HwP2oMcsKR^tW=g&1oO^%o3$&C)^?nU#0R*bvwUm>AK zuO^Z1$A9PN0aD4dhP?xBRSc>t9GjLih{ z9Aoq5=jTUo+uz^_+Jm|+?$0I^4Vw}Q@K_2rA#kK^aPLoUr$1(R2VU5T3od`rnpeO_ zRV)RJjf=wAcy4-g+ByUv$1HgaB5K6gB;p$uXJ(9z2oYmrNnva@CAq*X!PtlzF*X+0 z1B@++FEI-bFj%Z$Y-sTUWAi%T3Gqk+_QyY{Nb%GKDLnPxK2K-h1f&6Q0L>U1a-$ar z7#q$Yn4ZVk6B5Rz>p!TNOc~7ay>ob+)4^`=VCQ5(#%B2;TsaxQdLqR!L<%)O^|z$vK{dP?G-GVYjcRU>v3cjNYPW0dcI&z7 zc1Ydc0-7;46*7@Nm^KqqO7F?87K3|0{eK@VxbS9M`*q@&uxFa!|Bl2-6LTdqkf zwS`gCYV~ytT5H_OG}}PBlHG<>3Ieo*4e;rWqXGu#+N5i24&E$k|3i$;7+V&dyGCLR z_Ng+sO*auf9)P7_p9*=fj}-^|L}sv$g%IpJ!Xl7#%_OK z5~VONHHD7f+s|<47I=UcA;nMYs>~GO8>HAFj~S6EC(#tI(g4i?Uvi@RM;|3= zfDCAWQW#uKp@H=?sex?}0@f61Spz+6T0afB2U`-lOA=dya)_};=01H6_t1Kc2&I|~2%4WTo7JdQ^DYy8PO40xs&;X^N z0X2mNZj%Off(OVj(y|72u}!`Ee?3PUSVz;9tPeB?e94U(C}C`L+7R&N*~|G}Ud1EpLswg(z6F1#4`vrY&k#cXhD4HVDZ27BtmWQw5Ed)wKl;-5t$1 zOpUtJt_9lEqQ(|$YB#zH(V(kIE7qu3qoPKCv>gOXR4PHy{eA!3=RSXCW*HXV_I>yB z+2`JS&i#ANz2{8s`OY)UA3fkp{LH<_*sNk!)f!KBrFIHeP#@s4d>WousMvKe6!6WK z`wM&od|44!u6QN^U*;=}!Lp?SzUl%2Uyh@IuL%tJk_3&Yssg@d1yU059aJq(jnP?E zQoxs-&2caWd^tRVS!ATMP{7x%81T(cQ5YLB8SvFo(jI#dl%}ZU2KLS$M!tZt>7_h} z`|;vdL_PqmS6L>v9~=M~8%(0fU2|#3ymcg%+UcBZeTdKU8F((1hw%(1SIr~FM$IF} zhRtzW`j4>9y~5aZ-ONdqL+3p%kr9~;rDX|vjrKUJ;Pdk|gXFGU6K;jA5r}BIvkccOa+XtVkF z$w+5mSR=dUMp2y%Gj>UntEHqp_EdGqTbbNWFg8<|M#R{#kbTkGelhus$eAfDg*Kaa z0C|iJsj%#^CcrHn)|?JC1IC6O8Dld6fxuu-BEj!IVH(ERT*(}aI50L-VDVT0XGtRd z?VV>%7#n7qF*XM%WmPAy&K?qs4Ozh0khE7djIm*veFI~|85v{4NyX-QjEz~u*svur zHdkXN0b}!uU((T=24}H61G+IbtRakz)|_H&SX?Y$1FjdxoG>=bZ~^D&MQdtBj7=a% zj19{v#)b|#`5SGP9n`x2X1nGyqj3&`W{eHF(G&!XjTMu{*gV!48>wCx8*hSuu{nf3 z5{wP=MU2gL;RmBHAsLd4h{cI|+%nZ@Gr zyOCfMFGm=gL$1Iiym5?#6l23#6)-lL)(dXUB!f2*HR4TJJ;m6#KVod$jW9M#>ZZ;l zbI~GdGsb3_mGRy&Bq_$mL}6^m2pAg=9bdE-CQhKtDl6dwA`&lKgcM`rX{H#POw)#& zGRdr2)K1q-jLn+5QIc7+s0ED8I&0z^fd9q?uktWp<|YbbLq@>ZaGFgoTH}tmCyb5P zCyY%GyQ|ii7-J(sD~ydB>58gXjpmtzD=KDFj18*-W7EfKmHB=pa|23hgG%Z{Oz`Pg ztE~^CRISqhgzw;@5M)4tqlE0YRg`d4Q9=)eC?R_+MhSoA%;b) zn07zM^l(+`@Hbt4v^z!#*=sgR$XSIbp=C2iK_f~il{iYsHuoh;_|OOO?vZ+`>WMEs zQw_E5Uwf7e?g;u{EU$p(C?UDg;D#t+Mq|8tOw@v1uv7DO0_nY>pI2qs!EW+kpL(VS z8`WT|pgBrNZu8w^j1p$XWt31#QIs&90i%RgRz6C2C06HP(<9#@jk-x@2RKUDyaRrV z_1pd&(Yp^K|*7e0CN=R<=wn?LeTvQq*WWV{V`wi#` zR_b#1en7qVfM$#hxp650VaJ(o~Q zyyr$P3lTw(@U43kg7+lB-jn^d@}4KKCH`OlyUBa9b?~0*NZwNujNVgpc~1`o@5vsE z-t)FC$?^Mk4ad*k(>=*{x^X-2`BS#RH;uHIcHZ+Vs?^~TyzZ6Jd$QN8_vEaC_q1&0 zC}J~UAcweCBfrd_{+{uj%eK(qHGH}1>eJu@2P z5lhs9U9hV8I>8YeegrLZcCdaA_GS;(&|s&4X75RE^AU^QGczu|r<5Y^na+UT)5^+w z&llhe7&gK;Ri#lk$?Sl3-t%tOZ|gn3q24-F{q=YwD1HU{q%cSPRgRwm*7-ra5u!-E z=jNXjbu?hHjXYI4T9epL1I^x(+^D1AJu|W@=xE(KQUV=a`S7BS20hsS_Y@7*_3zve zr-NqiNp3401@D;|m)=vlkoQzh-ZRw}F*c&hdn#A-p5Miit+Rcr&if?X8^lguGhu)L6p_TXi{*Q{=X2_a+ z#2M0Lk2HA(X!f4u#%&Y4XGVR6ZPSa^P?r*Ho0ljwojuya9_*Um)?j@aY%6HS*pS=2 zZBp;aMWx=8{pP)A2^3hV=eYNN^}Zc6V{FI`OF0_GhK`Q+YY}5}9euX{;w3L&Y@7`k z8&yd$HlZ3J0->5QHrZ;v2%1VjHp2$l3|N3naGUp(F1-37f^5XY8+ufw`=35%Sb!Ee zf~5tQYIX$KxYz`;AsGWe9Q)qym@O&6!xCiU3Iy4>haAY}A(Tb|Wb?$|O3vV4y$NT~ zF4S#dK$~DR6Y65I@d;LLg5V?|o2$v~^hGvrewj~Rc#(})z`H8u0?5W$fowcCfoz6R z0ri+E|p16u$!K&!NxV%C}`ITWJ7L?^GuLU7zB6g$p*{4$R@CPf}G90$c8gW zKsE!MB7nP^Y4^#W)v1_p>ECWpY0{MSFzi1cUyJ0v+DL@&5$%8K|(MwPiksDL<@q=FyXa!FFD%q^i*sqMj_mHH)omM8FB zEbqfp0>bw(*&u>!)I7e(hRwk{29V9Nrjc~M;u497c)>Pc|EMsG8-!R=w2$QY8W$EE z?GqWz>db^_-zu{})-kEn8?0NN)bcJ5%ftIPkW;je3`mK!Fu0oHJnZOZymJaXU|#UV zPwOhrXQjL!PwbF|)3rm^&=g@5&>Zn4H>$E3WV7y(f(gG zpiC0)WWf>;nG#?oNT5f(*425X-iuPDd?luZa1NeSFg~{0GMSM+Q#Fr#! zL{$~>H7k&ki0`s$d1?&Ls*)nU;kj5| z{uMw69ln-(`Ze-xNu@)AsrZ{e2J@O+ox(z%)Ao0X?g7SPqCV1kw z?RbKY+a#JUmhS+~CYRiJ+?qi)QywV@^ngnwMw6>TG`TEE0?H&3V8Id)nG#?oNMM>- z;2N0#*T}l%bxaGtACIRE4s((K8IS;LK>}(D33UCG66m^-65um0feoNQ0>AUClE5sQ z;$0G;+2oQNCD07AIpmQ>nIPut5{c2|st`>sOOk*xi3C`%1Vp9;mwfBHnSx%;=N!-svLQE`f&j9yVp@P~$ndWjDwq74 z;ZF3CfNYpAf^5zwzszR}via*Q$cC&_%WMkZB%WcP7-XZNG9VjPh#;F?t{p%&ebj4i zHxgvyF|`kWHrbfLk-k08T`WfD=|vK{oD>ARBihkj)X*@TG`WK&`#d_Y9vWs8u4Y&^{rWRqz+;-*Y8 zYZkTBH4|jBQ{5=ZtXb3o$Yzu^akGFV1=*M=kPR6DWW#ATfo!-V?g?b$^$BD%u8Gx{ z7-S56KP8qG5aS5(ZVARAT%$Yz4oD)W;{=BAX?4k)QlGr@1Jxio{MTBiX9 z0IzB=AFW@xRPA$zs~Q$mWBp)ZzDe>(7m0LJpk`6LMA| zOlaB6QP2nzN+k{xvdw)76Tau$ynCdcs(Mz+7gG(j?$4eqgL?@5FP8U!<}e|-(cp$K zA?KO7drZ`VU9h0}I;ku+9`O@im1PIJ#Dk4`uq6#P0h+^vGM%^T{1KNER|4Xdj_N(|GR&O1u{x3#im{4j|m{8{j-|K}a zk}%-|zE#xGK8tPhW2B>HiER=zhY87zItpRJjI4M+oJy#?VjU@gj&}dJsH4k0*maNA zV5=Hz3N(ia$!(>h5GKrw%P^sIp)jFx3KOPtVVF>Kg$b1_h6z87B|A)b_eHH0*Y2zM zn_k($(Y;fhcBsFvJ|`C@_w2!x;5~bl%=Ia$^((0lFp1uC5T(R>Uc+VKcR4^>EYG44yeA3vp6s`k_dLj! zxYPx^$$PSO@Sf^O-cu8d-cxjWPY(s}$sUW|^UWtF$M4dY<2X4&=$>Rd-MF3id?(xB zt43N(JMVe1Ds^}S&-3brig3MpgwKjao-a zpra?>QPk102YZ7D8`EGnf@beYZYv!H@0l5w-c!1e_f$^a)1prxs-nw#Dp&NLlaERi z_pz6@R$M#p`3=_(y$WR0jAQ+XDs`y8E1#9~p6ogAJ-M>rJ$-U(1FCbCtSG*^iPBMy zbBErOwxN~xtbMt-ZC0$wgMHdI;}{)p*9Ohrliav%g7?g*udr?QXzpbt*fw1XO=pkx zst0?P2b<7fH-l#HNpADDNxdf*m3mM1oA;g#P++BQdAOD`sork`%^(|c!%~h0vZ15n z{aOUsoR4+^WJ6v6**F_OHmZ_>Y(h0c1VS}~Y_ipS5fni-Lk8JQS%6FkvYCL}k02ZI z@G@Cd>E3mXVF6m?8m1Urs@V}_<6;xYhU7fRhLqr839@kof^6IaKsFB=*&^unmP0?o zzkLfJn;U*HIfK9TVw^#{P`8BvZGzEEsEftM1+3fz!AU?iPb0U}H`zR9t5044*?0v6 z*)SJCHqHuU~0VCIuEv@!MeVbfNaQZah?gX34`EnJ=tJ6 zkWFCo1UZ`n*>DC4$YzRDM3_Z0?f%&NbSfGyO}Mn?($ig9cj<;1)$IBXSJ-``OFbwp zmN#GlI!!6a=7;~nm6L%tcHoICWIQ3}OMgLP?p4E$pz+A!;|_9B%CB_Nw~SVVLJtIbAyRaV4TGOEn=O8|3{N@Z@qB}t_+ zH;7WD)`vkW^-X-1`|-rjY2hgW0ouR@5oDw05oE*W;H4lNyq62I>EPF*hBS?&^I?}r zjL|+7hBwF(;S&T{iuNg!MEh89v`=J4`_ z8TiYVwIEbA#d&Cai}B7u@Bq5N6TfGmJfC=VGM?BWzxOchkez6XFbZgn_>vn{*$lE7 z^+-XWV=j>xBfcuch%ZZ$fHH{$Sg-^{rUaM?5*TL|QE(>s4LsH@pMhy1oP#G7j7SY~ zk^mWy0Bb=4Y6=Pb+$tro6+HZi4xV`ll-Q=${rp}@U;<4MOaaXiUvi@ann5;`9%+yX zkW4O-825k*aSyO02`H0DfCWoHWJ-XUAb|tSA_~r=QlDns@(8Ad_g~;?2{0!KkO2v> z77du%EH)k~3G4(9FLJ^&FM;#frq+Gl@shv{+Tf?SKy$>G+$ez@$Yv9JLd2J6FNydv zfAom&v4L!6F{^5gC%aPH#b(MVxeN!#ZbgITkbFL5%Fb3+_~bJM0}aAFl5S> ziukGvM0`1pBEBXt;!6@VqNO48 zbAfy5K>9Oe0hmB16nt?^JDw>30fEbj-+CYRiJ+?qi)>mDfxwCh%lOJX#+ zDnygZk|dx^A^{dG0g)*IW`YEI)N5Ux1J{TWKG0)Y_yKu5ZE%>A1jv8{SPK$RQ%K+n z{0tMRVS~`9uklZSpeCP zv{y9@vSFEh17yP)8Dzsr#pZdCjadZQuq8n@H)AFNWb@bmDv-@MIE&>5=my!ahCnu2 za|*Iyaj|?GxLzD{0@*Ob1)QTd*{BskHh~;LHY}$gn++%>f1|CjgIf1jx@8LXXq-Dh zGsuSAXbJ+z#)@eHvXScbCL84vkj*+rtMe}!px%)$f^6<4zszR}vUyh)WJA`eY6{@w zzf#`ePc~j$Xs8Uxh7}^nW`k=7kj(@Zm*0&9*?2hu*-W|u6QfN;NI^E7RRLs^X+7oE zOfrBIQ6u1l)l-m-`yb(2 zs{&-xV71Epnv%J7CAF^GNUZlT!TZ-ltoNc+thKG_gHMQILJpk`6LMA|OlaB6QP7AhNF@#vvdw)76K?r9 z?;feAs-Bhd2~S_prhWEqK;1UVCQ+Tk_H^UDM zyScr3m8>Xk55PalaqcioNZZgVO!(4ki`(XOYqEB?w#|q%IRu)+gyhC; z6T*ZU^%b_wPPB%)lwjL@MYrJDqkV=4>-S)z8f+LehY87T-Zp8Nkc&#ggzPteb-xu9 zSgB9^SW6jG??1EX%*9nf;YrjCtoE>b`gUzpNutOSb7ijjLG6ZSILUvtD7htEqj9ra`+_Z?Yk`#d#*kCJchR^<;zPKsJHR6Xa|TWWyOGAe(S1 zN}6f+^WUUXG2+srT-xc<*URFKy7V%a#$5WyKJms;!kf?0y-rgKvU%Izaph#-jU9O6 z?hj9hxo=Hk-lK-sfM$>lxlzpRK{kK%!D6?w?)LiI)$N43JqVgXHsr=`3m}`H`Y-qd zWOKVO04SF%$VO#>Y$T(~+$1U>jwPv7=B8YdR4Q`^P^#1pVbDtbIzGz_c;ff8@C@cg z%_GQ0%_GQ$&GC6J1=&0pjXDC^OlunD(D{r@BrbMMqYvyK6^1uFE-fkAM{<0V4GWI; ziHv4-WTQa5cqw*!wZYJD0%&5Dibf zS50|7@$O_iu|t0NU8!;bO%X-`%@JR6qbi$0HcK8U2z1#c5)t$BtH)Fr-tcfsfF(&l znIzuHf+Zj_CBRIOzzVa7f-|YqS6R1w6Q+f54xZ>2%3@9uAOjL$El5C3A%XW@M+w{v z9)3j!&%6X0Y=ie--X;k&&=kQG&>Zn4H%g!xWV7ax4lu#%9$X?Z?g16z9$-llP$rQ8 z3zmS$lmIh90$u;f)zsBF?s!oGcmdPG`!Ddc1elWq$bbY`iw2AdBrqoltb>Oz3!Zri z+|4$%?(g3!3G|{3ev9kNNyL}jD1jWv<~sI-h%e7x67gmJ=n>yz1KIRpR@E9$cBQrf zbAurGEN{dU3l+OAh9bV%a({u3h%YPR&K1uj;>&!6Ayc+g#8+J);>&Rq@il=FUy`5^ zRaL~-tUyX4zP+mDsWCjON{aZBvpEjNh%bjnP?wB!7K-?~6(hd+DGFpGCL_LDO4?%& zqS6$V+`!)XtC25&Y)agSnK#*}ER(yFI}f-|g=lhFk_41VB*20t zATlMuOpw4hv%obn0g8%s%R`vfV)+a_ZE%>A1jv8{SPK$RQ%K-9@H>$Bem{7CK;oH~ zz*e@Ybzk-$lE4I-;$;$`+2oQNCD07Ane<45Oz=6+B@*KvP$BLCmLvgX5(%(i35ZMy zFcTzjfLY)gnE=%w1jv8{SPK$RQ%K?YAI=tJ+OJ~s)fnz1Y|Rg zwh?5*LKb9mv6y^D=*$$BLYvJ?fIP@1SoT;G0FVxAPKTNSWW$aOvN;5S;H)hm!I%Cq z4TEehVa_0%C9rrb0JJ0#|L~Je$O&Y_3~?y=H`y#x%BoIYojoKV8?pehA!)B_7-YjT z`v%B{Gcw4AlZwsrARDs?vSCYtZ1!O$0c3N=KkDeMfU{Vh1l=GT))2@>YfeEnEH0KW z2iJ>ZP9Pg*xB!D})QTXRK#m|AmQ#=o9dhzF+7vsebzl5#&1Y5P><7&t8*-y52p}6P zrUl4Gsu#${n;`sL)B*I7fNYpAf^4oNzszR}viX}V$cC&_%WR52l<*Au#BZ|EP#KU7 zD@2gZ)vg^tHVrH;zZ(g%@p1&RS#t#@Mw^I`f^0ae0>~!Qdfly=WB@0kM!*THryv{m zN05!X5y+xXDUE zHf$Zjgz89PLQOD+2}M_!&_f|i$R3Mf!XJMlx#Rrauf#h}_oN_^8@Kx|{?DGu%gnHt zcHhNsu;XfnU+DeJLt~hbLubQ;oK*-DS~hbOG~x)QH(kNIN9qZ`;fE)F zs-9}7bwBXyGPslIAHNe0n!|+TMuQu|gc*(T?lDmdcEOb9>!h;S_}vfjsw_L$bsp@` zZqi@}G}r=Y4il2weD@f`gqd*}CY0tBCQN6*FrhV?4-;O5)j8U9>wq-sCYc@3?z{L8 z-HiHezl;A}_12;4mwzUP38hAb33Yz(#a@Ua2@?+eMNvnGEw&eaO=6pt*p@(Zn2_A4 zqYx&{$f}^D8S6+1bo6%zi#oc&gMI(28f;dBEraGTA-Sz|6vBj=aTz9*E)*tIPGLfe zJ_!?wt}vl;#W3OBSh5xOYmaNKxOU&gf3E9?UfX;Z|M9BSq5gV%a$!RDoDUOnWg$%H zlUo~CovUO;aeIK$QI2zmVM5x5R$;>94ivY|jn?GASER{97#+8npgBxPZrnB@Oqfw$ zVcRTd?qwy|HW%v_JbScn@?h7lXs{&>whEfVgyc4Fn>0+wMWtav_M5-DzZn!*sSDiu zvU+cTW{?fJaVY_0BX`>lWOFqdv~s)00I~_*bA|G$%&#h$YbdF$DXFhBiQcnoE%lza zaap(t0%@_lhC=Y3B-neh-&Wr94z|RlF4#@pldXgIR7dijnqc&vqRV@FD0olySoEIr zUrvtSKc0-^=Ln&DlI?WkcHZ-IY=iqjEvB9K{99G(@Cep6MDNL7v)+@l3f|MQnWLa_ z+@unFPqw))-t#Z_^N3MT_eJu@2P5lhs9 zUC^ibI>8Zp*av8tvx9Z5Xt13gtY3p|0L|W$+~y+|y=P`zdQT}u-ZPy6y{DCx_nuF{ zH!y63-~VW7)J-xwpq=;pEbF)Ro*z(e9jgBA4~X7VYLxfX`N1D25JloWfAsdEj(RM% zN8czN4M=PoL9_QHH|i*O&y1`JIvTW<4!py}ziVUJrKgiyCZ5gPj1Hy(hV?bQHX2 zW?Xtt=|bL9IeE`iTZE{JF7K&a(R+RjOSa z^WKvy3*OTwx3&%nAgZ#W`06G~M>)cK`d*eRgddy?C{ZBp;aMWx=;mMMFwGT`1% za_>9U`)QyVWJ7LP%F#eJbacF5iy)gTIjaBKBQJn#oDCowRY^fMp;{lDVW?)1O}3gZ zf~Icy^fUE$U=eve}6jibB5$ z$i^!m$cDK9vT;@*8_!K3n?0z2dQ39+AfiT)O{V&Ut1~gkMuZ5maZQ12CRKBeNd{yi zY6RK1x^6J0RDGUFxWQny0J0eeDFxa5;Bua4>L1_q#S<^kz!R?ek^iFed;qoa0u9g% zvLQE~=K!+d41(%;o;@LfY^K2hMG4OHOW#X3kR9v{5BC1gYOom%HVoRe0@;w;;ye>% z69&QEda}WCAe+GE334_Evf&JFsXapnXOvR}a#u6$zT-tY6^C5`KlUj2hAWGa-*2rgKYlS zTZ`R}xZCsHZA0Cj1DZiL6bAe(pkFZcvx^A;8n_&^WYh_A|u_)12VxiwTk97|HE z%&og5sZ{2=zK508c4E*<{d_*lqj=)?wD1h(M$IG0M$IG0hRvaxV*uIouq8fwayGbT zb&13n?NecR!y{~$SyHr5nIziBf}?#RGup>Yi1zg{3uGOWO1+f~rZ^8LUcq?hICzMG;)(aFDbFX~os1`T$lLx|J7fS&5k>*c5npnnDw{zz zgB~debjT$VW5id581ZFE5>O_Q01K9Y$dmvxK?1|fA_~r=QZKP?`4UVE;T$}vVBBmV zCkc=N39uFHM5Y9o2@)7%7EwwjmHIgAmZvZ+y#E4EOMp2^fDA~0 zwIBgCg#<<q+8Ae#xys#@d8uGFsPvp&OT`5HX2P_gS`DB_zf_ZRqx__8AIT=7gIzRXt`GG$9e zeANXaz8pspUlSPdB?%f)RYiQw3Zx|BJF8lr8pE@yq=+v$o8w@N_;Ppzb;(F)p@^?r zG2)w_qChrcGUBVHq&@Z^D$TCs2KLTxMZN&CnQd!w<%oc5)DB8a?vzU_vUPI@D5Kgz zj!-|OajwG?zcI#f@DGbs^9Zt0^9ZtGbDWlA0NG4y8cF9fE|Iv{wcv48h?q8(blj9l zjvEU;ZX)xzF%yp4EVIBhGQsj#w|rR3TMEm=TP%>%aU%oAjkU07HLc(tw@!m|19*Ty z;)(dQ@_YjCh$oKQiJ#JOTR_vr@{OR`@u8|3FjjUT}(D349*E1Bo~Hfd>dA zo_Pt}%r>>|O@}3c2Abk!5}?`Sk{cz^46<4CNC%kU&c`JZ;~r2U?g5r00c8>iuwV&@ zObIX(B+&JJuBNWe0p~*rzy5`3;a(6=OMp2^fDA~0wIBgCg#^AX3ETl*wajN;0_$vp z&%d9P1bWdFS5=_dHt_T;^r$*pqRM>;fj2;~3W{0!=PS(1@xU*C_NEhQV1Z4}flv4QmKwqcx`> z8x|MKr-AFmF(;4>GhBc{HflwXO&~{*4a+IWW-E3|@;BNbJE(OZ|8dQyq;XCM%^(|c zqbUd=8!ILYviapF$>~b<0@-*I1dz=T`ba=F%ojm6XOLg!GX>dP{W;S3_8S}nvQ90t zDS(rBhJ9j?jfTpAY*-Ae&6< zQMYE20i1{$0Vk}Uf^6I$K{oD2Ae%9DQ)iO7Xc4s;WHZjn_#tQ{Dagh|fo#YKAR7-I zK{jFH1ldfm56!_$nNl}OGHVvK0J1s2n)rJe zNeZ$tQ6L*K0?3BbYy#PEN3@FeWkEJxpFlPwN-%Z&3Cb;v*WiGJSDvCkg8=Q3;4mTk zZ51XQVM`n;u)|GO3bJAA5GGVd3KMFAF-$1B!h{|QVM6v;3={s@waFdlSWtHyYd!Cd_DzcaMo$unX2TUniBt z#&_P%tFr81=X2{Yp|Oy~`O>+Z}97$&qv^I^iCk0!g| zP2JL{C!N^=?Y@iu9@cOBUHnP))}iWO@$XXoNnwuoT+vsp>HOe}y^vfICj8=Si#pn6 zvHj@7(ov7ZHU^r*gycpYg)m`8Rs|jPqBUlq1Uh==+lo56(1X=HSf2(P2hCwZa$D&r zgb6d_GE694C`_oF!h{xm0m>1Ts}<5m4z^&Pi}1m6od(7MR8%P?X_%0U zO2dTgH-B}%4-{Cb^@CcG)VZ`Jqp2ll3?%2ep`9Z{cMR#U9g+HCtC;asgC45 zHNogTMVI&VQ1G7YvFJT_Lf($jKc@@F&k;iRB-`o6?Y!s9*#_6_T1>kmxJ{KhJc0w? zir$mGX1yn86}+cqGe<$gdrBqto@{epyytJenn#R!!q?;R#4C-dhFbUN2emKvpntsJ z7&LoNa^t=X-ZP^y9HT{ zr_K-JjSxlRJ?pP3>S)GdyKYuuo08bB0nOf%+^D1AJu|W@=;(lTqy#$Zc}r18vmWes zJ=nAcI|!P+C%LV36uf6{R5t7>K{78 z6ED!f6RvvhZ*>T|?%;V|0nH#Aa^rapAREpgsGjH96B5X#2dzO-g7bXbKAz|7U^jWN zk_YS6V5^{AE07JjEzUDRHenFlttT5S2eJulo*-v)AREr$mbI7a;Dl4rrAMqQFrDsy8fRch-P zv{JvD&vMsSDWDB_26Ln45oDw05oE*W_`G)vAe(VbqZ~Tl;}VJScPmtgU#VwF(LQC8 zXderX_KD1BA2T7^H^D5BbxbPtN!Bg*Xn7mM^6(Z5G+^EWCkj(*)6a+f$5{WV5t3r(UvLp#8 zlSqICOF(2wfSDkH8DHbi`R_L7J%^GA>P9vjG}fmu~+ zJlU1nRzB+`KFizj#6rcci=l{bw%lLfBjU@7xO2rbiTE;KVaSv%74cOUi1>0GMSM+Q z#Fr#!L{$~>H7k&ki0_DMd1?&Ls*)nU8lUthzUMkc^DvTk{omNyob2k;tlI&Ne@N~}epstxXOUqgd)A$Wj5 z;tBYj@_fP#;fdq+k-ye)8$g@I^2MOp9lt2z-vy(l+|{M$RvoIp0r5QmZn z*-TT)s!m>=JtQC-vH-FnX|HM+WWzH12FQjpGRTILip}#N8?y+qVM~H+4r3+(Wb>K} zb@XPySu8JsZjcRY2xOx*ryv^^7t1$*>%}oAkPS0jfI&8DMUYJ(N01H6Daa=KH`+2g zsCEDC6`Iei#<>wRgKWr+rr?VYi@v*5)$Pecb)z_S%jC|;sS0J|T@X+nu^X@FlhOAS|YzpKgo?)XHWuu`oC>vIYD4UyIdz{+@um-Fyza5FP@kSHM zX2BJh7;Yj$in8IX3MiXQ>m|2ll0lq^8WAU~o}z5rA5k{$Mkt$QbyH`OxoHu#8D+D= z%8&|@6lG(gP&Q-)l#PduD4Q^GqHG$hginY_ylfFtl#QpEqHHov*W8pzX3e5@x@Mwm z*42%Y%$h|lplrH+s0H^RNl`W?3S~n^K-qAbO(+}gh*sggEXu~~6UwHS-BoK$jIt4- z70SkqbVt>vM)OR<9Tl@F%7#^evgv2F%KU(mxj`khAtm);CO9;d3qAy)RISqj;}=A^ zrGXd&3GX~bfffPUBf)V(_S-5>xW< zIH6@TM?oX7AeA^y$Ts&SPWZ5MdHF~^;Ya-N#BbG84Ylr}Ka<7XiT?3h^`JRUNN%*a zAx@al7%v|awO|*FYQ9b?i;aD+;$2yGu)96jXX+YkOoMfOEr}D7+kE*L+Pi?oUefCxtm0Wux~01-h)`}a$1;}TmBXpR$-8+8=ogc(^CbhO7hQUV>VUR2c4Mi2Hl z4>qB}dO>rXkla=}3UR{BxQr7@7m5=qr#PWSpP+0+SDa9}Vw~`a*eO=r%T`+}uHBdM z-|YIK*EX-Rd66o0sK0I3J6aJ?HtabcC*;aPoX{t?Hmo{V$%^9o0HvcG=MLk9v<Vsu<*g623OxpCWsIAKP8g>5sXxtEn-+q_TL;Mt?S$%C!E zO@kfKVEv#uPDpO^wn^iJTvQq-v}MYEEuWjItp&E+wFBR&HROV-u%pFovTToJ8ViLXQGD?Z}JdMl3mv%r}EDxd(yeA3vp6s`k_dJ~~ z@pl*4P2Q8OgZETN@}8Pt^q!*2dwM8%Pxe^!p5LEJj$h*@96yH$-IHvm8@KbG8@{e1 z8%Ahz1i#6SJADz{C+4H~WUpE8$yo*OY1zzC&^T^ViM=P=+!ycp#T`6i)DylRk0;(? zNHx^DfApu?^{eO~Z#V|c-jm$8FN62YXpBcJQ44lKL-TclBlgTOTITFv!yc^W!PYd` zR?v*HA-DO6Memszm)=uKk@rkzK<{Z~<-O-FdewlPj^6dsqK-y9*e#c9upU%jET03Ky(hV?bQHX2W?Xtt=|bL9IeE`iTSVE2F7K&a z(R=;?OSa-Rf2FnJ+Ii12T|e~N=IEZHN*(I&!5__ePxhSmo?Kb*o<6y?CDpk~Rutde zMCmBUxkK+s+tA8;uAf=lHao4!ld95WuQYi+X!f4u#%&Y4XGVR6ZPVv%qXgUL6^cz~ zkM^hs``}wNSic6_1)9Alxy{=q^`2Z*>OI+SKJq;V3ar#Q?tMVLUkI8}Hspq-91Ued zN5>1ch_c~5NI=<;7f?3N29%Aeq$rzEtuMV{Fv=!d&C&X)TR!Pm+4OxAJ;MxIfJ|_m zm;b#e@nDKorTcRy8W*5Nj$>)TrJ5a4HZC@yY)Hlc5XZjv`{zeU2_BXx8&@F8#ytRK z(>=1~Bb39IL#=)<>dBSl48HqIID>YfZVLn2griANHcPDBgu#)xv4Q@U+)iI*Q^OlY zv7iKH;}sBP!(2ewI4hKm=O&a*2^CO}N#-6z)QGalR3CA5CPvwa5K%U+DU{7l)tqCJ zLD`5JQ8uow8;ns^pJx(oFqkc%Y=%KfQ8ok5DCy^*qm>kWe<`;DDk8>bPQ*ZXi3@B_8bCZ_;3UG}r`a*9v7rZj19w zluZ}}m+Q#}%b{!nnxaBR+&;`sOr--PNX4<`ZlTO8?OSe8sr74%*@6rL6 zp6t@JOO;2e<_t=B^*OrNX-ZKxzrTemCj+nSz!OLkJR#;rSu3Aa!^=T4%7)x1=Jv0$ zd3LGT?UcKHo4Y-vZuf&`lnuGD+rq1C{>6X6Cn%eb`vQP+$%cGYR>)T}s?05*0s>i* zN@Z@zB}t_+w~SJyb^wD`>R0kvp2ibDsD)=RH)nq$rziH1d}?Kgttc zx&Djat}Iu|*C7}ZY(Q!6LJyj(Xd30v`Kn7K#&DksG33jV!hOml;XW1|?h~2eK4wC= zufZ&!bxbPtHP$W9XnEI!<>56J$SK@M2BgGV*t}|r^KkY#40z6hhi{GIiPw@U&nI4< zj3;);r}t`ytfML7D4;pyOKwzUGs>oGT_Xj7_P9i14Ed@ML%u9Y0?H&3V8Id)nG#?o zNT8Qlgu$8M*J)U{d>y8Rcn+RaFhVuRNdja*0;~lIs3|1y`sY#thrz?o=-`=`z!KZk zx)1+}B+!qhh^Bz%kT1DW0?jC!0gn_m(V$Bt#yy}y+yg900?H&3V8Id)nG#?oNMMLr zgu$6q>cgyCUdFT*%Qxa_2{0!KkO2v>77du%EH=uLzzTTyn2Kj!0ynV@e*gJ0NuY!_ z_%SZf9P%YMN+5@_xsp90{gnXGlddTwK;o8w>%`Eqzfb;(F)p^&dzG31+{qEI$sGUThJq&@Z^EX}Uu2KLVHL%#4T zn+crs)+Tp~<^#Y+Zk=dyM_rmRZ;Udk-N6y+>l){7Jn{6?nE=?xy5$X6*kZXSEDwlYFx>!B|G@D#<<8f<7*&OglL7>wvkr+*`3en`UBnc>!NPq=PKx9gQ znIM4~W`T=f0$?NSmisWR#quURZE%>A1jv8{SPK$RQ%K-JJ1BvE@DP*0GcSQt*rwKf z)}@lbAvDF?BtWytB{xc-8D+EJk;a$+*ys|8aSx~v_W(EKn%eC8!E#5VZ+dx<2lil(@# z0?j6u+$ez@%0{ORCYNU~F}chi-Q)`3Q70e*S7mq_=D{+p87T&Vlxj77GTVFoIi*Ui zfmu~+JlU1nFjr9D%4fNRCl)GpT?_*oSv{0#asRhgBsborQso?3x=zbu!G@ zB~7lDlJ?kxw-~Xj7ACioSJ{l9ZA96ykVV;?BPO2_J2QpV(T4L9Adj*MmOa)40;I#5 z)1hWS*{~y{Y}OzUoV9f%_|`wBVU*4J%wh8YWz%(+j|GsHB;w!RdFF(&VTM4IJj$jA zO@K@aygGYGP&Q-%Wkb?l)iBD2W%dn}4QFJO4JU z(dz|gu{;L4Q8uh0l#SM$qHI`PEMEw&7ss4XHq4|b8?_?JCXge_hUFAxLx-IFjW*5> zYTaA+Xg+1>sdTR*Y^>9-JKZ2Gad{B9)3#>)}NX22Dg z7;Pd#3bNs>3Lu+I>p{0>k^!8E8UZJ)o`P)LA3-+mMj)FZbyH`Oxo8o!8Dule%CLz@ zQjm>_0@;ueKsFvaf^5RX39=bsC44|c;$@4Ff^0m^6l9ZWy3noM z$*ft_0?1~JHSxDJk`!cPqChre1dt7<*#xrTj<_d~jn^lT%^ppx#>5~S5n6$4+(=hc z6KXWiBwSH3n}Tdu6(E~QR;$cUDVaND^P`)w5_oMKD7)se!4nqUkQimouBheDW;Jr=`+pSd`> z|j@Vu$OwUWeqkBn!|+THs3wQFkxm~h6$xPg$dIcFidET=EHCL;)J-xwpxu}8zsCA)zl=Yx-a1tM^k2m=q131_q0SH99R^V(VZxrlqK>Y% z*q-oe>1ah_n*q&XLUN;yLYOcktAdVJts^DS(H}p%sH1B<*eAv{SVM!&g61$Gxvg{* z!i1S|877o26ed(oVM2>O0ojPIFrjkAFyReYvcrTAm~XAPc3;MSjO&M9+k6@SC)csl z4)wQsRW3}(p7UWst}KKJeR69vs&mye65bvtX?vVI3=`5ev3i!h{+16}HW~=3Z8UZL?Lk;Mt>nod>IWFub1xgDrsOFd@0k+a?VY za#3lRkp1Sb?hk_kEA@Ey-lN`^Kr_gO+_;ngvXQ%O2eR3R2CdxgF@S7>_w2=#;63}4 z%=Ig&;n(CqtPe7Y-g5}0#CzVrW#NU0AT5@cQ3&3X1ba{R+sb?1$dPX&G6O7(dba_t?1@Floi{7(#QF8qDegr4Q5kmJQ+v&#byysuB4Zc93#kBLDf22ws z9>EL#B6?5un)RNXRq&pc%^U>{?qpB?f}i+liXH13f?m_F1@F8A@8Z2yr)HGeVMk+9*mCnYlCL*Np9RW!Fy)ZSJ*ZantNFZw#|bSn$8~WuCL3E?C@Zd8f*h- z_MYT6Z=2M6a#5-GWWRau+2h`Cf2o!-rQSD!W{?fJVJSxg+0fDPel3D*F5#&DYmdAD zvT-(mY*Zx$*@S9@2!v_|*<`EvBIuSE;#;Ax9Q}+lvEd$F?MQO%AR8yA}}HYDdUHlzdxON@;x5M$#W?(t1FUwlb&1h;$;N6;SBZDBu~ zP&5g~W)~|rA#f6m%`?gE^i4LK-{FJTu&TTQVr-ZT7#nAWvGLr5v6)2$)MJvl1`#!4 zY%gbNI23m6+}JjK`?ehiN@ z^$!<|Ctjd|Cp`77FV-1YMr|O@K{LjN+<2S=#)dNps^@X`goLqK0S6Q%IL=Rg3cWyf zuuUH94IXS&gY|=UtuQv^wm8nj*n~lFwVrIS9L6TFd4QbFVQe^qTYkA;_b&%HMF4j- z)9z2L>r||{^k$dVT{_dHt{-zv-Cw*@HG5ootV_Kp;mzmhUZ*L=*!<*|xN7W^7LvHN0fU$Y`$Ky%j zi*0_7MTA1I_H4jcWnpY2qsrWX1TZJ5ROSX#@8ySFudUj=n<=ANx?p4 zl3*VT4)%$Rigji}uy2G}0PC3Gtr4tSE@^q&!}9PJ3*;2+BLjcfvKEF@Q^@%CL54d= zzyl3Wyp>dWKJo5kJh4MwG^!mkil&I7faZWNxlxtP7@IMV6a+f%5{WV3t3nL;vLp#8 zlSqICOF(2wfSDkHJVXbHONTlu0DO zf+Zj_CBRIOz%;W6f-}LdB(ZLJ9Mi)4FYvSkn3Dv^fCN|z5>Qh};L(!69`GO)Jo6H` zgl%fwFL;3@FpH-6EiTX;@Fh1&AcwIzgFPYO%d?jRe3?Ib!1vfNHis~)YKYhlr9T3Kvdaw-kZHQ)gO zi6`8P@_YjBh$oKQ?f+ZHZ5>S)%LhTT$t5=)w`Pn@*WDT^5vWTfMw6>TG`TEE0?H&3 zV8Id)nG#?oNT8Ql+`}>ftdVughcGR?JQPnG9OfheG9Urgf&|nQ5_s2UN?-vzYy~{? z5;)8@weIgeUlQm?Q@l(9G@D#%w1jv8{SPK$RQ%K`HBw&-%@L zmK%6tp<>s?FszZ)L%F}ehsk9{oDe({lgoUCHj6zO*2pekaygD+jUv$Gk_3&Ys$q>{ z1yW*iZ&NK#jV4!fl*uJ$a~zB&m&3!Vl9A5Buts*xjiNdkX6%wCS4&BI?18ssS1n9# zCm5SGw2c@W7P1(dJH+HOB4?(sI@)mF0pu|@!LrAi#MpFJb2`)v7#lV+#%3o30)st@ z1mF3`G>oyin>pHOfKjiU8_w;WXHFO!W|}cJ(nxv!fWFh z_K7hz8Y+XaVTFjXImNXD#%2;KeM~qFFI59Sd zSP35xk$Bl6q!=4dGsW0snl890lgye$?R3q=*et0VC7CsgTEN&WvnE0QrCN`YdM}e|eNw!7A4=6a4REDCz%7k)01{q#iUJJ+v`2!YgzUFflyK08 zf$VUTm11nzIz$Q8k)ni}V2l!qt|+00LX?m_7NdkOJ1e>4yx=O_uK14AJt;=y#_hg} z|9ZAb7SrxUHs`2Phu`OY@*855kV9vqgq&4~5?VHM6g0vLQi-F4Y;#|tgr%S3-6Qpc z-|)i|KUGgP)Vg2wyE3=~=pTQDfaWM6xzXT;C}Bopyn9U4f?Y7E`8ugAHm)7uRathh zGd$P>JlK#18wSl$LUNn$9%Ga+GcKcq(ww4%=?oYpv_|t$!mnUJM+winLK=0G%noSx zRs7ene%r6&KVQ9dsQNQ5iBUqSQBgvjAG|pXqDZ2IS8pupXsgBcnH|#6u*6mZ%~3*f zqmDw9Fe9sij!M>%66omRk1OhEy9axL2OH5~BcM4-NNy_~g(zWWTt*3{3q=W)Q26{Cb>&q);bm+x$?xOQK~|CsBCUfX;X|DCGTq5dxUqg<4bJ?Eo@Tv><` z`sCJVH}P{(vZ7Vn)b_`@!zdwbL#rs^MGq-%n{%wm{lBAavs0Sf37VsX3iqJ$as z6}HVNT0>n*ux(a#3!XjN=X0$uMWsqHLPQXx#qu}`!F!Tm@5z2!dC!a464#etH+fIC4&GB8$$M&o(R+$6@9Cl7J=tT? zdv1ojZ8uN)GaNsAPxmC->BjB6=Wnx3RjaEGxAUIAs7f6k!Mk1?y(fpxdQZ+Ocu&h_ zj)I2wluGP9+2+1@&xbsiM~r&Hm)P;dD~+j!TK5x6+LyEFA1^ot&EAvTxG#hE%xH{9 zEKv(~!6D7p369vMkEUhL4mRPz4nIqSEoiWPpxJwp+kC{L_son-?_q0ay z-t!8q&b#0d`=wDg$?Sl3-t#wEzpeLtlzQt>^*_BhdQYiQ-c#oX@kWRu@t!a3F6wB~ zVyitxW+3c+cNcr4IG?)IZF5 zPxhSmo?Kb*o<6y?1FCbCtSG*@iPBMybBErOwxN~xd;%1dKWzuB$>(j=wpqpKc)d1g z_MYU%Z44FpxJwp+q`X3@5x1_-jn_2 zz2^)luu@g`zOLS{0nHd2a>G)NhOwceEuAfpB2SLM!5X3vl4f6-|5e-V!3mUshzrN|Q18}Do zcQ@YgURt4-to`1W^Dp@1xuwd#!3PYMD(h!f)=Jpgl`n6vES4&}S4)*k8>Py*%caVW zm0hLk2DQgu@9R%oC{_9A{JATo>ZPlt>h1=5=-F~ssq*vHzwmg z3giBh2fXYyqi5!Octcp3<3(X{2;33!M(_B2uZL7|{9Sdiamstpy#qv`>WUFq2KH0k z){E&)AjPf4wn?P@NO2juZ2&2*;S^OuTYhmA_k?WJwfiB5o&~wwawi_2F8=~arJCL( zj#uQe;z#u%g!Xi?G5LYJp!9jxLdYIZ+ z#v>2JdF@j--Tzzd^|f?-^BJ_aVhMOBG;(2MT>Rk14z#$nTjmgm8?dT+mTFHr3(e7Y z>Ds%F+UizxkirHpl(tf5*0Y?o+&N z&h`b2w^qw-^SwV0+otrB%(gjM?eAgR{32Sk-Zqa!b8MT30VLjH+nfmThr_RJL(@VN zb8ZXM(%4?x@%`B8SSJn%4OI?6!fpp>;}D^FZ#e3hT=E3lk3{Ko(vh?s6X)TbVQ)AW=E_}eo7y@#_s8sgaoYhIqw2P)#ja5f%iQpWo|x_F z0&LCHjUymC%by+Vy5&)@qt$H_m2LYjyL8`!3u8=goqYcvd5js>M#Jei#&kLcvdI|8 zCSxG$F+Pl@)ouG=eJ{Io@&XL_27Yo2>zLg-`R>U~EKP2MliY^Av)HKq zHTM(q+pw#-*Rap9*BF1^w#FDI@*^8mP=ZpAOH5GO=n@l@+-#(`y6vXYimhx;lBP;P5fhkK4&u8nAF$XBkfEX(EH`91S1Bd4pu z;_wiq+t>hm3^(tl8xh_5%}*Tv4izUyhDi-k$A`um!Cv?bJ-wvf@b^loys-PEQtfA- zvFkxyADyO?uRZBmL$G1Br(BAp!M}&XVe=;x+YHDzd$90nqzZ{wcdV*keh?Wc*;~Jy z*js%Nu>!vH7IcVOIe%7$ZEkHHT4{89WybU#Yb!tOP0J${J$^c1?q$F-6^wSm-|3WVEy1%K8o z7xp;ngS^=I&OS~FZ`e}Gk4($HaA{1J!(?md88y1_M>Zzk&_^cG^yhx%jmhBoo0aS9 zS?PGrVZQHq6Pt9!KfU^S6fwUO!fnpE>reawjk$EUn5sCc|qYe2}f23%wA?qh-y2edx&U#*y8tM|Q6q*}a_ThlY0V zVeAGBRs%}L7adQV;4<>F{0vM&To?M~pK??bbgjipWYl-8GQ~J-}Y97 zRQWe+e!vgBqj^V2IM~JMVfX_W*<|}B;!FMjmKc8?`y1;)_e>z)kskc{oZcB;+TyQw zXq%Ohl<)_8obBUjq>{g+tGoFb{Pg5z@Hovj?G{&&-%G9{KPRPXcKj23$0|M|qHi2D zedOoTeLD3~@J=*q{7H8EW;TXT@Gg25DEV@3DJgj^oWi%@Pd$jkHwAld%eSOFycd7H zno2EOt9CAA%k!&^cL6>yw(bix78~Dqv-Iu>tn;VmHh-d2SuS0_{=n9)P$$md(KsYo zy+JimDwY`H3KU$ns|LLRz6rl}f0c^c^;(gRHrl|_S$;&G|% z>DgZ0acDc`T-~t*5iFzeitn&?-}yXU<>Eqj<_OK|ryCQr|9cNN-(CF&oMY#Uj>qfL zH7E^&)P4NPZ~pqsPpS>*bHc!8d`|d%I=E{0ix%_+Mcw|mFWkNBrY2qqO`um&FvuW& zN_pQIeqFvQ`3ipm5}$(bCUHcn=T1Rq2k?b8PQ8jNeQ2es627bk8or)}CzglnZsr8R zCj;V`#@0T_{riV^-i3Sn^FiG^&u7=}?&`LKxTHWHPy~`-X%`p@`CQ{cg2c$99c(;8 z{((9T%g`mp@%uhcf!0`Qu~A2Zt=0Z?T|!`A%Q@ZpkU*{O+=%L$%u7`rOH+^4JsUy} zV(vS$!Vt7%fiFOwS%E`JgvCyA4dh1S8*lCY7zaoQJxPXFH%SKr`m6bzv$u?#x8pG}kTF}>tsIqslu^U#$PX~V{&;Jwg zcO0xIIjQLx26Ko{eb(&FN`YO$_ocXf9q{%p&6>7~ay zwOh%?-T?AlM;H;WM#dB1*9MZTHCU20=)n{-)_}#VHMjyG^^bna*5Hk&$QnEnIQquf z`s~(y$46xiN@^9Nc|N3gB`JxP5fs6bn;3+%Y!FC7g)ukw9eW~R5@{Uj5@Dsz0~6ze zEWk=kIQEA)Fv@smFP=OwRR<1Vyi~1|0qsse2m2|!y+5FppuYCb^C>H_KUxWrU?rw) zC06nI4w9e7Nc$T1}5+}b}JAE**5?at-LIU?Mk}F$t;GJk6}W_r-OyHIGS5F>{2lwN zmtKi|G)Z5Dh;G43Jc}O0R-(iiB(5xpV-IRtWgbTGhEO{GL*@TKX|nuCPP5DdT2W9J zbKx;XwPA3!PR>6H$##dOtMi*sC{=6h0Vl)V&W*6dFf(FTJ1W-)%k@cEY|e=m2bZs@ z#d$eRTJ0q(A?~r|g-PTi`PAFS?tJ0L8&bQY5ZV3qiQ~g(r=K_;)h`?KAta64|Cq|@ zp8e4Om7h2+y8T{!;@A)44^1qb5Y{{1|)ZUA>L<@SZX2?^@H3uW`;I<#3PHw-T`~4Hgf1H@i{Fgj) z&eDhM-hAR1WaFcJ;^-Cs9zJpWn11Gd`o!@8-UMLRaLDKlv>nPst-}>PHQ=d34z4cyv;&|odTw?gdaoKB8xQ9<1KS6_g z;h_IT)oCSm;tc+eeB$`=Ba^fC4`Wy#{yffo;yCTzE$Aos_-wP+w4nR_6UX&&=6AkK zGpCif_n$Z(!et-j6UTShdG#JXaeRp$B;qn!&<7T+lh{gI>{9Kv0|& z_U_rd5SN9>cle6fVS05i<*S1+eil6{*6lxE#VwZNCEftFA3I(m00O3fGr)ZSmQLtI zPnYfnm?elJPz4A$7OYzsgLsKBhVT*|gLsKB#(lv{gfRezNX9@mSqHMo7|3cJ_Z}}1 zroNDNi)_*@vg#I}^jhL2UjKS1?cU%evNz}gyB*f%!q)#!niy`h`x)$pJ75GP*zY|; z-45SpsM{khB& zM|SrnM|f})6IImI4yqqVmmlYIA(|`jsW|mG90L)8-D{O|Z(~@EwYT%)Q2uF8pHsZc zq;!I_g8&EO(!gOh#4Iiu);Ew&h8JEB=L(#vj{%Mo=VQp9%hd_TB_Os_J|nPawgF;6w$C3T@O;BeEol z%Bl%YWTHbw0Rjn;l z0VZ5~@6hr@Co6Hmcx{1GYlQGq$jIeQD)vCFnRIu`CDrz~s1$Fkz?gam?!aBlrxKDL zBMacM`0CWt>G7k#*WoFJ;;-A4V^;GQB{)svb1ft`(~IbJ)h-QNTf>%kYiA5i$G5=m z){=ogD5_1hz3e6=B$fUUFZ}_&rjMHodwr1coMtACP0BN0L*(s5Uo1u@w%GP){hfGn zPn=cXwj1m%Fp3}MvbVbtnbFAJe&+1$j&T555_=P*_hV17k;v-iZpEaxzjW@_Lr`lk zas;q8=?3}2^&B7ruJq~xXENyl=Rk#o|>Hd^j-Y$DW?*~aDSodq)QJOs`M;48LDfcfG(*#l3n41Mz`Vk%P@V*T z#rMs`ROEdrtq*ZE*yd4srlW9!9ANt8QLvTpo#BKy!gW6C)+}XAStIsH?Ne0F#JD87 zL0Fs3kKPw*jQ#Cm+EEJRDcNtzt>WKDJuLL8R8*dIQ&AV<4#$o{KRlA2<@OVo;C4Kh z8{(z0qr3`fPD`f^T_HY8p)4&fD+(Q=#s9!Et64Hm=Pz$#V@uU7UgvvCc{?8osD=7RWq5f{lkrV!3 z!2Kgh3iqZQdGCQP?vMB(o49`$e(dgp_6qJ_dWIkOpBRt^_x}o+HAz;WT&VL25dFPe z*uPi0bnStAtu)F6d@;yWZnEztBXxAf8W(RKwsOMpGjhTf@+soyfNu56HAxs#H{??6 zM43{F1bgaB{G>{#?1h9nLrJLW(rWuZ)T&Won37h!lGmUm0*z{G!t2l@35K77 zX)1tpGY!9m_^rad@(ArttayQsaAejjymLuqQ+9B z$}Z?pf!!)r#!|rul|7}Of!f|GED&M&WQefx6$v-oO{%J#unj8@!sLv>_-=Cz#{1fPffrRYE>|<5(O*C3Bg(Hw$DJG!&RSKb^3~8|(k7KjfdCAIwo;l`nIptw5n_+SV#h9iwCn8;UJJaEi$oQwwkI&u*OQ&5PU^^t@BJFOqmQSt z#25aC&q?xJ>_P|Ya4GKjZnd@n&~G$#!*aTLEh*dt_cO8GOYKz73Uy0QlscQ)1}w)Y*Y5#Q3Xr zKcUlEM;J0nohNjZ`fL)j-@nY5G19||7x-7A)Mqg)o9L$E=%>d*}BBv zc+HD>T~6MQp{L#F3UZTpp=+m)_hn1CuwoBv4rxmavs7jC4tBAI^nw}mVIVF zxi}&B=tLRhxk{qHq=SAq5+M**K=;Bmo z=5qKYz-d_!rSE)Xna)e0Ey&=*BDw{-W!PGTk>d{RuYEe3^l{Du1D=oWrD}DSS$GmN z@WR#y_WnwYfaK>d#@8(Md&!YOf1Qj@MRdLPPsQKA2gTCf*}X;`Peu_hLmi*{QmEs( zUx7N_6v0Qvv&Y`}i=vLV&2Ip8YkaPi9TZT zQ&Go_h7r!)QPNge0$=ABT- zS#o|C)Uo0$839oF$D)o0P-KLIB!xPz?vE1C8^+e?FEg9;nQ(P)BbAwQc!i}I3 zqoBxvN}LhLK-vH1diqNWo2_CaG8RH72Xbpw#va&YYD5CL}@#X%X!geR_`#FWPDwJ!#`xAnWXVdgOs%+_^6 zn`YRcO>dk=pk`ll{V$3(J@-rlXwwkNl7=>2LH%bJw5bL+Gys*KmCMtj@=ryZ)_rDZ z(_gyCnsRc2=2I5WYuE?XoX77^`$2o1HvPjH`6nmH$ajx6ZRX88p-rpg{4QwI0;((x zpiN@wg?6)ZJ+HPL1)cnA-XLS#!m&kzL72Q~o|1M$}~xc((Cg=z@#8BTj| z8sak@ZUa{%+$*-FcfWUO&*V>p_T+sE+H>})7(zU|$#uUd+Ee~i18C0&luQln`HI@b zE@;mcurV}%_M9S@r$yDDiuPRov7tSO7s`_I)1JF90}c3~E9CODAGFtLPmwe7-*%Rf z?;h=$$eVXUdxpsQUC^FVWtXeB_O#oy=XtKkbhPIdQon}Ko+i&F(Vi_yTP1u6S!fF^ zM{8j@N-kUVHr{69*wR?Wmz;yaz(nN6s6TlMXIaJNKZLVBi3@Kj$J++lR^Lx~QG+rz zUfo}EB@T@9Ub>4=bsE+>vf{@N4{LjRr=B=URoy=z+5`Mqc1eLvFo4p(p8`S-pF4}|}FeOABS z2tAqHl?%zuNN5S!x-sZ|dLq&gR)fc%R%~=FU_MOHp5pS0fkQSW-$y$L z)xa^mZ1e#$n`h69%gghbbN5r^+dW*$HM|!y5+3qIo@{tm1hOO6Kp>lc;$De7u}HjO zA2C3<9d1tA?0kXD!D0^$_uBG7$E)o&bhSVQk*@~CJar)1H}CI{sDI(WKNtEq0U%vx z28CDmo~dj&;J5zl-UMV){XjqI(Yso37YMjoN79$$%k;%IxODKKN*EnHULOhexPW*d zK0XGBB=A4JFxZ1Yg}X#o`N9T03H*;U&2gs8!V*@&%;@O~rLN3+89nN~)%Isx*9bF- zSXa!7SeMNXTSMV^QUw52iN-2EDnO>m>T+~P4a8L}a>;VFaLBMGEpVntI>l(lk;;71*qnCW$-#=9lM7)?x9H!=56`7?MqzzrE}Yt?rk_U zx8cxxTUXphfx>ofv)$WpXl}!y_qGAJZ7ptF>)f{1y$y%vHXNGUa40#|sBC9flYG4WbMD`R7rXz_?R~fdndfFRPwPG04aMVV*(^ zf0766q7cJW+~EYiw8H#5ds$WDcD#NPf*sNXT3Ou*J`?NNh&k28yT+W|5KTYsNaE~@ zrsG15qA3WT&;aa!^z*C*amC5PlBz&U>bLJv-LmPzPDK7+ct%7^q0xI$Hl6bhjD@qg z2ofjudsAf78}MTXkMqf?yWNm~!YOtWL&x`rH7i5nPjK zU987-!F(f=?FOql`53&!!>X!b$!@fw{LER^LYm|EiWTJ{2!y|QPIW1i=)G!1xdc8e z!>JxzDxB&+_^~GjeVhua<4z+2YRe0qQaqm2y;k6NUL#7YwrRN2hY%rL?gVW(eSD-Z zlkYVU784)Y@Xb0q9?4mBh1M5fM`@%4KXXbjkJh5SLJ2M`z>|LIGV5RxMr$w1tP>DP zV<^F0i-i)b#E(4|Jl9i+X*VfBch0%Tocb(Ku8OGctqbvXdxsM2wW#OJ9j@R0itAN15i){YJV@t3g=HXh<%I0E-~QX<)u$5kedWmCI~pgFe8ftr0EtK!GjztC zZtOD@5K<*59m;=BveF>udE$$#3~X5ZE2!79|7=pNLsRK+^Y2ZiL+5Qq-8oio@YN(K zvjZa$4^Xwe6^1e+`GSG`*8lKo{b2-zR?BFO%|hY(+~|2|O2zRG4&wR@Z$Xr$Bf?m(j! zU?5g11!J}UN_&jdb;$1n^3Y?%ki&sfV8@xJHt)b{dA8d5Nw+{JA(O~e`k~yUMsD)%@FE@X zdZ{zANsWF$otxAwecq7z>zfM|@rP&;zZ&pCugc|VKS+~$j%PPN0gKzamDQh|kuTm? zMxKukmo>lht*q|%Z$k49Z}x61G0T7cX*u8b{`llMSVyzyDox$W>RxDI%3i4btU5zf zJE%0yaRt)LYD!iOlVy}pKjMbP$)^UfH!*p>lMH9ifMS(G+iM{}Hi)+WZl)WPwI{B( zRTS|WRtkNOU2n%jCi?MRZ>K#2iUt}Hl*o{sy55QuvgF%cul2az4w47#!u8e+ccgc{ zHOK9EeJ1S6XpP z&_Hhf(mLUe?a0l&MhUzdEXFYNV<$LKVs(!4M4B(uDDO~~jJ-F?L+Ulkit!FZZJ1ZP zIr&@~ulBfh1~!TVuce{alENNvZ07=_Q(0}EO9?3=vgysb|MlB0tG#rtu-YB?u}>z9 z>O>=0MwFkhZXv4{YHVGn)z}(yZH%8%=Z9i?Zl^)-n#Fk|2fJ z3l0kil#=?nWZ*BwZvooN@mq-B)%fj--?g|am%uX8;C>2aY^L;eLCbxTVQDf@!5Um%ULVhx~Chf>8iG^%3@Gxs~ zKto|IgL898CE9D#3?lD*;Y8wAR1L*xmtuj3bx@6 zqaShvVOW7{ImLtNkZ>CvMn7|h(T$WplN?4SvZH|!_>o#-)-OED=@{_Zz3MSK{ZTMg z9pyCo5n-yc@nfF?ByNz$C~3!=zwU>DBD+h?c(whfL(>Qe4}(G(d#Vq;MR$bUl4OZZ z4LaF}Ky`vnjQvDfz95gAH}qd))Z zYE!RkfG6!gw5S?S+831bmGm@-l6X1|?{bLLN_yfYsTv-8m4-K4){|ULVM9)chG(9w zG(6qX(i2-A^+;~=YIxE?4Nng0wFmg9zZvQ2*Z&h4#INDqff;DP2VE|gr~M!;J?+6K zBx!h^osnPmt&E(~Q-MIHA)d4eym=>{v_W!y7oN1!_QBc^vrGLvX~y2DEFkr%u6D8h z#uN!@7O7@~B&23jd|F(g$LhA0*{-OQMzynHzO<5m3w_Fil82ki*CICw3Lh7g( zkXu&U*UB#|D}uIE+uOuUT5Vq<-Qoy1nJS)g1n6+#J(HB4ep4t>kbVG~;F4k#6;V>| zfI|DwVTLO0On#&{A38CqnV7F;;42(SS4*MH&r`A|=L0sp)Ex)KgRKfq9>0|YjgsVY z{ml8C8QF`l+P;4?c@j?1g2-umOHqG}p)cbnS{zjX`+YRqzB8LQ4c%fS;yv~EU$?9Q zbN9i8X72WythwJDSJn*tRhIN4__06Xbj7oWpY)58HP5`N0kY=U{RRH>!RBV$6h(~4$4Rn*q@yNs;)#OL_F7WNk#DV$k?)?Y z*@Boy&GN6+Hu!2QXx*-&zqSlER4#=>>=~a5)bITh-1j>(mVHd#Rk6@Zz_FpzR1CXl2M+R`Jljx|59ZjR>R_w^C zik?!jBRg79v7=e^K)LBH-1IJQdQv?Gsr!kn1?;#_cdSCkSM2z+>L{^R;GS35GsX1i zS4YQrpBWvV=$#qrHa|KFwj+5)^qfTRChGaoK8bNnb#Kp5;*2cy%xGaKaZa}SkZ3TJ z7}89QFPfL=y^p@LWyQiANG8x?KeF;FS}<7lq9k__)^}@^J6Ys`&%@uOz~{wK zBYe!#iT;G}$sv5ou?d<3pQ8D|CRy3)Z*qHHAFQuM9(=R5SSMTOWm#wCgseU-Le^Qi zi@f)LgC|eHEgAZ!Iu!hY%{YEZ@cxeDaH93h-lVK8ALUQCR|6F@c*opc*Q@T^p=tOZx8~s192}gnFK*p8T(Piu zxZ8^H_kFXd%Ktsd-&eDrm6_q8M>XG1^R=lD+3V0p{&n|TnHfbZ5x?ES9&lh2ISkBL z2#Q>>I7iQ7*t#GHbJp-66t}m^tZyUMnBW#X1Oo4N`)+y8yAkW-h_xvkZySunhX-@; zFqax>&73DPGraKN^PsPd39gP!yc;Fl3=l01G;ne|N87Oy=#ItgN72UaMXY%Q9w$ug~M_^ZEJ$zP=Ez@49G2ecvDUz5igmzi4Fz zJ|Yv7bB7SGh;y8`-4(7Sx&urQxL-he&7gbg7bNrDR87NsLtr1lmzaE=)PavI;$4vFBma^A38pvPVnR zS{z2l4eAo>Eyzai_9%>AOJVG7H1Npi7$a_l5bX(Zi$WW^2Zj=tG{NylI4(;}q`ZrV zM^AC&-NNYcj=Wn)SxU>hh0#MpiP8JuRz7`yk*V}x%V)#~WmSA%8;GsO>?AF#?H%;8 zvQ~3V?TbBKwt>2!1zNic`XXE&{QvAy!t5h~*=B&PHWxr!5QtqZuWP-dhCpi~Ks#5u z+8x}3Ks%@#Hf38Lhz$k$lq5#h7S&ptM4+CHnd@;z&P%u$`03HQ$%6UPax!sCf_`QHmOS)I$|& z-hzSoQS%G-05vBOHAe$AM^r@z5;;!=atdZvX)V-2&F9raT(qM=NKDgc7l_@VJ2dJA zVwUPCvHp!|C8k}+>)!!%iEF62ngb3KEn= z!DFEH;E4-x*fueQnkcV0fSRZtNcpXVhr!KrzTtQtpv@NZdbU+83e5d zs{Js~`X5m(*ZylWgKAOSM^ua5B~Z%liI|dzwXQbTS~zvvAS}gsN8s*2jMo*;uUr|3 zjg|{r-i-9koBg^6Bl5vU&VK>>H#{r9?wqY ziCm8^>H+h3&uh5n1K#sA?_tmD==qF2Vq92|i4DRMSxeX<%oiQ6p+oMeQ1@7GqGLyo z+~_rUfb|9%o6s1QC{Z+Z4z99Z*1i2hi88`=8LsFPN}Nr^!K!b^RyrN~rf*kYK^4k>BMf-r?lOK9SqK!u>e9Lk9;pba5zU30i zz_xa?Aaf8l2U!biE;7qu{Zm3;U&L%@)U-jbhX3Z8eYs8yy{$uD!Yrnfm&zb7P0TWD z#3wI>L|$qqLjl)KD=$@`Lb_QST3)*A1TRr;l$RPPFTHVO3O#=HJ6Rv~mzS>U4kH7g zN0_CNmzJ${Nw$`k*3lx}C@=j?<)wEaFe`;7jl2}>nqFSAKX6e~%S)MsUes)qmv%>9 z>X@H`pY6X*m6vXX7d@@KboTo$@@aW#bSD@28s#PMvY%F7O4UzBK>)53-|p{{9^WRQ zezjqR8sBd2(1>q)s-L{jHU;0F{W2Bb+Cb_^i*FyHe7!LaXnfn&z7gO4|I<$>pTZnJ zCivxZG%wPkM|VL1ZJXA1msK=(Jc;HZwF?Cg29rC z9Y=<&4+Aq6a7xrwJR!;^2q~ z-W@Iu%ve&K6P2E(Jk=hjj*2AUH-S+;CnD|UJaHUO91cr;btq?&H1=a}2lNKf`*J8} zj5OM?w-b8v`da^mcPbL>#GcNjMYW;kkzi*6zF!!#G-z5Vh*5`vd7){MV8=*edXQe` z^=ANvT}m-GaNG1C0$?TSFMagm9wE8+ds} zc)>@_BDe$&qDjG#c>koLmEmK*(f~XoG3oGV5tQ7v!RlCW3U9zadXI+LM=zs@7Qq{H z9WVweu{7yNEH16AwN4v}F?Y4D9vg@q0^`J#Nx@)7ppxcB%+_hq-{bGGq7Rqj)KO5x z|AI)~`75ch{)-Twf8B7*SCOyZL(cC-$}zQJ>G)Imjb;Kj$_8;bFjI4r>7iR$oJ9A1J$T-rMj8>Eg30a0t<{IPH5s*>8zfONn??<-b(v0|fj-7xF&;h5$wD{SkuF*O76GHlq9 zcs@7{j|>B7{N+FUyVj&z>V#7KZ-62Es~VE7nh97AA?w{zYq{?YH2{X`AUv%zhXFDk zupGwkves}G2&ZAh9E|GnF*UEjAjDf4nsXX%4dGN_X(fz5zt4hA10O);&WXw_Wlc}Wj; zTFMaoj^jKXC$r;FPsd5@*w@o>B0IL=bImxqu!GCObezBrgFu|M zc%e(?N-;rjw_mIXl{UI`(Bp3r`0LV$Jv8yU^c<9iMwTKuI%d z-t}~V%4XCo^>lz}WYj$E>40zo8?>hb>^7rjrl&*bNzBuM3o>f1Mu$str0exq{SQ@!C%abIh(XBAg$z@kL#2ZDx5B&f>1 zY=fSvPMj*7sOf91jaW4y>+6WM!$f#gX9bDq_TOss7Y3=Y))Jzs=f#n+ficu&;I&zJ??yrTe;Q4 zRt;k3LJW!e&R*#otH-BwJ6tb>QjVGASs$87MuY_k0Ci$Ua3PE}#*!)jrAu!mvK|BED^6tZJK1zB3z><+_<3|DS^Vm}p{ z9>IdlE!zC-Y}|m@5xc{}EwvzNq*3Hzk@!G#GZrx3H;0-b3<#y5m{`E!_~bld1tJ2= z^GRK?V*3`53P6t>SV%fkjA;L^BL+ zI1?~|IlJulV|5Ou<3QT#8{c-Fw?_6yaB;Elpy?i^qsC1Kd$oE&91 zK3&FC5}3Q8M2deQGEjV-0GibyXonC7q6|2J*l-B<)>}12_|g7w%Bqe({24TS>&f6B zLP&=*SQYq(g{|;!>INIHx62WA$Mq9QD3TkfJj7i``{OWzcsq9;eP@6A(vQ84uE07P zW7d%x)la#OKDi)e9j!e_ucHeP2;y5sZT3mGigMpGt7yJ}c#akU?$@hnj$Tb#Hk!Ja zpm0`?`egfjJq|<=WAzNxLkLt}3+Pks@~$35pty$g()o@{XWy;v(xLW=rPC8XYP~3b z`YLz*Y_54FdHpDRrKU%kWPfY-{;!&i^5cZuM1w`I6s;`UY*sIb>KEXT_@WH^#w}hp zlSlrTCnrA0R-~IDnL;Mtf7g(1kev%iwTEkht>dkbzq?(9Q7!ybzaO?!kh|#NhCFi= zo|iZGz1%~iFV-)2X!J1kazvc4VyK!Qmmd50FQRxo^tfUJL`pDzL|~R#?;t4KKFSQP z6o@?q-^z&W2@oS_f*VV2l`jGXMG2V-&_fvIU;%}Y5wX4wTZlu>_}V*dg`BoRnYO=W zsc9=T)Ak@j4=FDpV4KqhiDEdTwqa}}#{(^%6dVRVGtw__dgO^+ea}EhxgwQ!<#)(O z$j6xPz?k_dxg4JQ3iSyud{xIMeA+bW6FzyTo}Z8^Uo0p8M!dX7zDtge1$%+nM+JrV zwO+O>Ki1!a?Zg#l0Vj>Yc786>P*Gr30Q+w-u2gj?|T3Ow7}~u{as;L=%-*b z8fxmhG}Q9ZFQ3L=13d#xS&65A=>?i=Tt(vll5!XTr{aZ!( z;$?`I0v}8s7&3*5bo^LE3sQ1L07bm`nshMxe|3CVZ8a7vYzJp3vdpOU}l ze{1yjoXSrT8i?;vHW!DSJ71${Am};|_&F!Rz0K)Bt{U`R51b}LZSv8q}Vtd#RGyZN~~r4JP1M%iD+KPjSdZ0ZjKJJmqE@I zI1frPw9SN$Bdf+*LoUEPn?JvS30%X0L6v~L4T;(qA0{p}t5HHR*3Xgr0H70m*pXlh zDBuxmtK{RY3t3%)_E#UP6j0cvry_#FtalMT>-~MOFV^vGUqb+vZyS*GZO=e~N&2?A zuQ&ADNG5WzAXC2Ty-%F4x^ewKAaB<3Jun_H^;E+vj9Hfa(>IZSYM@hSzF-Kyz_Yl& z!;<0`l9s>R+L=@ z^MtE6bj3XJbBg(4BIx&vPO|sWLy4Zw7kf}_*=99Sp78kBUX>RUzuW*HJ`HnajG2){ zX^yg$Y8;-sT9KLZyNl*Wtn%E5bw%F#=eWMrWKQ$ghurZCeyZ^UKM88{2`be%I*3@< z-ws1GmX&%=((nV$@Et5{!Ql%Qs^Kd*L$CLJfEv}~$QKY-kFr|pZ~6QkXMt9&pUY9% zT%@P_4W?fm%w%-cVZ4_pUfS+Fs$+lNHk4(jl<5I_3u=BBMN@?h&fuF~oRDifQ z`)f$HY9R1Qkrl18FG?AR2UqU>CIy&xSDQ)m;EDj#v);}79eB~A1sjqZe>YN(Bqjc? zbLuNQ)cH#Dz49gH?w9!E?{=|%)S&eGSq>Rf)^+mwxebP*r1djniJ6MD>&JCr{QYeQ z*mbQRg>Txv!r2-GaZU_gT*qC(&kJa}%7sxR&)!cPt;&xlOQ*T0ps)22os579DiAOt z4MUm$f(6^;Mh;WOCF-T-5#Hv*qQcKAbPe+_ylg(JnAA{FR6rP&3Cw((e0&XGBXNlM z0S-nCU5jr32ZNQcXAq>V!~z$483=kMWL=ryGm{YXBt4Q`cO)k`BT1g%B=+?Z1-vJk z*!TV~3yzujW#E_hl*TrOt%8U(Hb>`~SqqV6IBg#$u51k_PQ2k-DEaZ8L8PZGVts<> zZA6EDd_tmiOH@macdtakF;g#bbwO<*uHL`fA;{5=P7WpdND}B0$@TpUE|DZqRU;@b zI#kjPZ(ujl4X8rKJiJ>cBzLHE>AdKFq^0t@^PN1}R?{Od`huxQlo$P% zsYsL;{aa!*Qw({*U7(pt!5z*s;jzT;W3JrNr}H_Ht-l^ z155m6ay~FpYE|;?4&F1*JcaZ60ec=)J(3{2gdH<=2NQ(l3OY6g=3Iiyy5%4%(X1|v zBRbL~1oK7)5b`b*rkaQx^DMkHimb#T%t~Z;k3?^-1H33&m>9w^ZuTCfmjNGsh+YPK zv=pXd;xQgmJ_{Ao;}=GQXjxNqe20*u!iFh+;eQEx#Y&s&}~5D_S{=ONQWy#9^m*=$EF`TRr|pklkOO__bcd{vF2mnqN=M=5&)T7{y$CT}HZPbO$-lQD(k6pA|a z+#EpFXxLsy*p323e)h;Izs-efQ4)SWjrbZu)g!k*`GSL=%o==O! zia9Eic<8}EMM+z~@SqDOI9mzPRo^)n*b+TH47^#*mInjZu?HA9kx&{5D7iqY^42?X zz&h7F!U5a;s>cPAF5ch*=@0q}1Eg{}z)XRb1k8~r zc7j6!CND9OncX`Kj95|ui@{4nPt@|3AOBh+ASMa_nm?~0MX#!Y)2m+n+2~Kn zyax$Uf$?Gm#zQlTGE4xDOHIef$<|-p@4|ANf@Sl~4lG+I!}2x*2w_bma=Ju@F4d^Z zWJCuM=}Lff>EZeRE1foZulN>UkZHN zf7=M(-R74=KTUz}ka-P(ugIq$u48^E%y6+$Gr&txE8Z|bMTFZ;`r3ikt{5PNNgo3g z(wZ!vx>Zvl2|5C*D~|q6(@jSl)q;%_q=8(h3x|?r8u^rhjnaN7L^=$RH!9kSUNFER zESo{`vrnQoMH>pGJ;DA+LvdJ?m`KWsS4d4xswtFDA=rqT!bht*Qd*SuGQea3buLWL zNeu9bxefy~0;*p=tpnfU5Nv()^lOMDb<)#&?sg%l>FKjyIuLB6rwx@)H?B>=x6hw! z2)>b?ruuhucqnZ%CY<&@h`kEVqZHq4vITHP0JDy#b&>Td#X9Hy#Rc^w#X8^IR5z$+ z)y+C5^AuR86n}GAr%zsWM4>%mop7cAt2RSQ5s{UZk}1eI82glivFPm&ge7X?Fsw?y zQM~D;3=5QWQTgo*%Bz%Vp^BVCjHOHqj2%K%gm)^8)v~o0WBZzTXTN5-{eu+5-S#g7 zZ;z2O*&fbhq4iH7{-+W>Hd65EV z#zqI6tYEva4UB}Na2~|bUGony>c=`=2G|T>p(S#=976#mCA0XUNx%wPdEh5}dxq1lUNw}eM^(BNS)k$5snkz*V5dBs! zG?NvOlTgwiiT!#0U014elF~oxy%eH4^Pd_z z9;E|P$|gu3q5&>}Ep2o3Llo9~X%=C?nwL?mxL*IM;ry$5m(iR21@&0IO+*87Y?PY| z#4e|qu@;5h#Wn(xcZE;;W4+5`SnpDdXk2G<*NI}Bbc$65VnN+Ogh0gznD2B4abPPu zq|l;~QBWf<5c|^DRY^)wDK8NF06j)om;6st_A(G#gi~5zkr6z>ONUTsk>>quY6B}C zG*cc#;Y9{>1Dg{G92v@ZG=XuXh%%7hqAjLYGmy&h7=2AYbUXA5#&>1NZ264AiXjRs z27HD2PNHDHl~b*cy3NIop$a=ru^kF_ph1ngEn~*O=~%`HkN=bO>l(N(ljzsgb9PR@ zE`8cSYOsRTBVQDvmO~o*$>fM^Z^y zI{QhAJz5)3?s&=o@=^uJS11M`5}g?x5C^5GrLkOUlh`A-xFG$VLcK+wIv}NU!6!V_ z*C zpwg$;InmaIZxNC`gRT>})8En%(btt_RQ+}2!Gj?7`{cnxKTnYdPpEQ%rRBlMM+8=* zJP7Hd-tyqI6)8lt@_|$$3VHBB$P-EO;6MLF7&!9a>mPFd8|6XeCfIX%koF6ePr%4D zgknfcs6U)`>V~DD*Wm;LHIdf*45NGzjrN7AZ~smB?{@X02A5c72mYGt*A>D8heA_K zb*7K!AfOuR+Jju;bnEw~yLffGbanjpeZsYGMxBN2wVANQaw^c9!uDzW<)_deS0Mg4 z5%nEGUYj?>jU%G=!%BxRMXCcapB+U6YKhG-7D(2>p5RqFTu zqp5DOP&PbrWF!;IwnH{~PJ% zBUiE`wVZQ%ThLJU?q6bizuJ<;!;kdv_8o@V6<^m())CWF1Mbt9T^nKDe4jv zNmS_Dj;zqxj%=ieW?YG|890mhbY)cs$>ACv%{9#R+*yTvV0}h|j#e5y1e-H}MeqV; zqEq2ch2?jdh@=SgQ5BKIqW_FdD`re(7~(Hi6&4vvldysr7Fmd!=R}!@5MkYmEG)9& zTw#d8Wd=J|ScEGq#JD%c;G)^p{?}vf3i}WdLN)tQ17>wStR5xCvB2J!0FK=ZGQAQ8 zHX#dNC>`_F^P8}7SCD}tQag{Kr_C*Fm6*7?LpagDYdA4EYS&C;j1ekwNyVt)ngWaM{oNn&g*48nYT-+Tmyg}POTkwdQ{RQkh8M@tj$ z5NjQ`s=JY}gGuQsMu?qHlTs;6N>$NLj1NO31!}3_S;ZKYYzKjKed-R8_yMpCg)0_d zdJe>{OgZ8BvAQE{wP!~pzOQpdbJcN(({ZS}CDXa3iRv&{ge|!Oqesknya>jju!T6o z!TDip2wqhJgz23di4PtYv4-SD;uaTR#5yBC9DjH=4#U=H#L(V6UwY3e496c|%igIA zGBEV8HLfe(R*Z+2-&gTG_6kDvFwm#jxCB*Q=%GidD5)4yDjDSxvQXj-7ol*$1peF= zq}d#W3a0R9Mlgn-zzy>WQ#^*V69#B_GJ+?_)Z@8hrGL6Sg8AHhB9k?%hp9iKA|=L~XcuR!|n3+@I+9@Tx-8 zC3IM6F0L$143Zec58ZnBWM~os*bRiiSY}-ELpOow6G`+(I4N&=1~X3jBUUta5E2eS zVuxeG7DE(!D)l8oqPiJIDxr&LIU!3Nv1X*`1|uC!yJZcI!AQll{0fduXv@1ehT(D? zP0L^5SckSOz@ZLp;T2A3%hqlVBURW%#$n@)EFi#N{rw9d!=x11YGmQP}P#&>mb;g-du<+SiTnybh7if!Gk-6tXtkL-EF% zzGw)k1V4~!bRjJKet1|Uk$u}Z?I7DFZu=;kKDGD znOxzvr4Ho+x7~}^Kkl|!!?NZcw|y$xH@od(wx_!761J~$+r8Po*lnN2_StBIo?wWi zO#CO8uxJQ`vA4O^2_&tzz=7dQT2Q{e=31#w=f?A`1gldr(;z$mQu0;rk|n0b^KHD| zm5;SOy4iBd#}ZN7Xpdgl0DE*Vh%eN}Jc$q8L1Mt75Zhi?Jl`(k6PS0@^lk%A9iMQ= zJ32l=<$bx9OzkXf1I}ZDi7046?eDzI0c%Pq$}FrftR+vFrW4xN7@xqJ7(_vP=!*)z zp2*rEe^%NmWkM+45TjGGdQ})F;}hKYzI6Tv=5-zV7X#>F3U42Nn|P~}&0H`u!Wy=k z&eyqM9;?6{e%%4{Zo3}R?LYXFxE`n}{8X-o)Oh&G&!^z;M9|-c#c!tKb5i*};`0f2 z8Zc{oe)cWmv)cO>dF3vkH9ntytqW+4&lkPw0J;&McPri~@oWk{|M5=--u1y}m)~9j zOR10Fezbyko62t|k9Ps7`R%Ps9Y8kn+lKJlH|C|_>#Ngu#c$V&{W49wC&}-fw;3?% z`1v7_g;J^S7)5;_FLz-%PEp@impHIYK}tvEZj7I2URf&r-99%3p4Ni1WTi(+O|+h zL`yyLP#yTVAH-)xRy96OgmhCUJ{~^Kg`vjB?u#54HsWJL;UwL zhx!$r)-D0(&X&pDa@{SHoxRE>3A4%q4K`xToM@dpUdQZVV%Jfk$ z!!a^R&Zc{46^@ZfGMIrDAK)07Bo|9kJC66q)?Fo*9+^pMXO-;&NRolr3m6yiN$Qou z(Trw>{m(fH>;>W?3dG{*M9jrQQ>1o8v9;Rq5rt7Rq!}E)`PM-MZ*O^UIKkTOi2*Ex zyB6+1R-dCS886w)W7@R=Ve_`LFHuFL0us<&G@lEhZ6w|z$jF_(@G`=P6tPfw3cg^t z56g356D)Q{Aa7I-_pWf&`19)>d3HO5VI>V|d3FxzL3(+%^(dEmXnD5NvkvuWlxHPf zVquO+8Q)nx%ZNu(=*OkkJM_bs&*J3Mp96tcfl4Ny+i6t@VrOTNr_wNh(+dKzE2Ove zh~K*4Qjy2)em^gj0@NM8zaFd6SJ*=Q!|CfEIHtV0yoqMty`Ean><`C~hd>pl{=r^P ztp|?6;!Z>q8f(vcNI}bEgntSaGsg%|TYS-c#~Q!D8-MEBXY0^Mu7miiz^e6;_Al&2 zAG!H57pPhvd1S7GgN^z~L-mpOA4~!5nu!A1T?B_4dg|Ki{sjR!J${CtONXCJE_Fev z@$EAhy1?p7`m)?`u#~1;3GstS)$3gH07kE8j=^+$y$ZK5;-G z)?2P>S$i?Ts06JerK?@u69UE_ZNk=<*gq1TK3Pi&m{16Mh2lyN2tl7{O6xCRBK4!A zr!pQ;2l?}+S1H%M^^w}X_jy4Xh*^lTfP{5A!k-*+>#Jwz!tZ!U zz6yTYKi!RlF^#>v?=Tnfw7q=9;|lRm7O2r)4iTo_^=AHZj~8B2_xFx+53H0~uD^!#LKl{rAKvj#2bPWeu%Z0$jk{Ce`RdgT;fG>>upfjltAN;F z(b5+{OI>rs2E%Cz3&O+;n{s$ox)zJa2RaRHr@(t}yjUaA@k2 z;Ly}3!69^1DWk{?dZ#`Kjy?5B`~|v_>yxzks{)%RjNl-kLmKxU2z#ch9#gmoRXKIAGiwQrV?zi68keag|L7QPkz#2RRSW|sonja` zc8X!(*eQmAW2YDfj!iKP9J<9YP%ZOLry5_NaxjD-Wyv`UM^b@Z?}LbP(d+C(t~Uj` z1C^a{LCp~SN!3pdgh=d@k1R6EH1bi$^IQ;V`RMeA9Gq^Hj~XH$O`es4&lBP5cVyW# z@{trwMi!LVi&31#%I>22>9Tl!` zf52Htfn;1y&0;sz$D9HZBdXj|fa&Ys)MyiWdQ=QDVPF}RDiO~2Km8- zM`(P%!eQ<|Mh5#G9)$1cApDUy^65Jz163-MSa7FqpsHhcg~Y8e`$C!J?3?~hczCJr z4RWIOIsILTpl&^5I4{4S5ILw@6OZa+s@;(K`m5cn<3yp_%|xaq{g$ao1DKlB3#my+ zTHAqosJT7Pkc6Z}Zz!N5ZFx)Gh_vOFuF=vKYu{`IEKsUOdj#0C4LvMaa}BbQoZ2{U zv73W2es8gx-%?xs7}rBvy^`80^Od_NE@H78R<-GzxRS~$dxMGbR90C6=a57nDyt}O z18J)o9sxZLmWo&yAHs6Qf!G|(o>O1ydCB%7y9}e7|LoglD0ayXmtEcrI|5o$7ZXU< za%GukdSS*R$d*m0O|iw+u1vScm+gxyQ4{CyXA?}yrcfwdy%yg~FsVG~K#aKKuZ^Rn zR$XwL$v4J)E9tVVi=*rb>Fu{VCnpel3g3gpuTvHIocmOdoA{&AN2Sp6imCbvohuZL z8g7Z)o9J&f_FV2}_zcj-TW0luUrO=X6*vaJl;X9_-vPgr;)82oZHT{z4LN>1_7 zsYT_tn>@qw9o%8Y2MJ>aCJTE~V(S%dXaqWCue-+On8)F&n)C2SS#8td*J?ye`tYkW z*XLJdzHHucA}q*gIuhrthV1SAj?ampP)*llZc}A zlLzlqAZoPVDlM|!_S^U4Df-D8RIA*Xeq!o}IQ#dAhGN5ZD?60Q_HxLxUrM=!`!B)h z@OIdG14f4`q?ia&k0x85#tR@t@t6PXvt=ym1O}kDkvmfj2S$fkydgeEQm&<-1=>>3 zLVi)uLVi)ug4dy-1%9yKa$-g>pB;(m%0`h01@lX>L3QOuZrI3b0!+})D}&br8Q3{} z1ED3d1vIvuLW(|I!1iFQU$rnx5lDd>BY{%XdxGqI@N6zSd4v?dsEt@(xw{aAd3EB% z5BhMqHj_x44lY)v#9;?U8keBg@AEThF*Xpqv38u>Gu?$DXp5fXr zp#gcSg-GGuA0mk{09e6DLrDh8d}kj+8H_6wF@~w0ocK3IecuQXe}1HbqK6 z?Hvu(L`lh<`8;<Q=4gdRFx!_3p~ zc8%AMH_8M_J%_8bikb`Hj8gSkb17n%Q6Hiw4q9bg*=$F z{}184oc7Gs-tDP%y=7F2;hu=tOsdSG~qJvqZw>KQOuvesW-8!Li zj_cM5m2(z>D0F;}gs5>@=ukNwJZF}HcJ{&zQKE{#zTsa6gH_RGEQ7?gjFqEXwpU^l zwPHGc5h_>4MZm=YH^kXo1Y8_&Lkw0$mrbag9+`I;TsESL<$s(&nVTw87Q%EmcG53| zq;0yie$AD!Ir^rvGTN-y(Z;tb{mjI-UI3xYbtpj-0H9l6-P@H6ln~Kw`Yj5S_1N%* zR$w1K|KF{5zobF|(&JBBbe7T_e z4B`18NnU!h1H;DrQ!!L=XEklSG@+|?gsNouh4YR8fttE)5X^Uh7%Z0=h4U*{ zqLj11y5(c1xYQVC7lQwln*{tl+5}>)(Bq@V4wZCbX?#`Uq#X45q{hkqAyQT+lxC0U zu?e^Fgf4@AI-$#+{9`wC85fw)WgI%8%Q$vImvIbwtU{M@?1V1k*b}wE(UA;tl6I&3~uxvEo?x1O)t1vlJK|tIhqis zt^Z*7W7do`{IP!z7c!bZj+yR2rZGRt6K??%hi5~yb&+xAN3Pm@s*I}*;LX;$~J0Y)G3mwgwfL=j4Jy-t7JwG zgaY9S9MnpQp=5!WxM^I4!%5sQ!Gk&|h7Zw%SE!#uQeA131lmQ_c-l#(f^-`SK#DVZwjrzPi|0V(sk6d>*RO$v~b^bLQ# z=MNygDw@Y)a^Jm-k~p=&rK1}#?b&YoOF?zXPtqfBdA#j+;Fn_q4c2z_OJUGZvG z#ecH`rC+-;DvTfGW^bNM5H}TbfD(v$+0zK(dTmOWBBL_s$<;YseZv>+@H7_%dz@&8 z2UL%Vc1YTkkZ%#4(-ZaJZc2zy1t;c-aTID(Li8f$Nd@KO*x8g2$EI={BPpCs32|&T zCB&iGln{qbfxM8Es?%EU>9||WL_#1Z)^(0al`+>{Pnt%fO_}SxN zQZNj8IhqbsJM1KvZmK+)c3p1t(M?~_ietfXvhq!wn$+793l3F8$*1tf_Yy>o)yFa7 zIA$Gf#BpQSbU>WRI6?B42CI%;!!{v+pf(1=bJ|;Jh^!jm__BZ0Oo~F--+b}CSBy{L zXQR*D89xJ#{iRDb(i*L|Lh+nZZou1J5UJ(ADhYuDx*Z?3mIq?(&{>)oT#LY%ko9iG zNBaa~Oc?1lE=TPk98UDcqW+HavlZ1fWp!_D61}owE30d6%|d;et)P$@s3N?zSv0rX zxZIM*pgGfty%0B*RLsu|S@S`f7SiMSPp4}Ex?W`$gRgm2skIPxjej`z>0Jt%B_cz(@w6SFd^((PwZ zN50By0~FenH>=$E#D3A_tf2on0Vkq4V4+4iFmkwT9?xiLoi@@ki8z7I`GCzUIPf+*wKR z%A|;q240DdDe!vm`bKzx2hwRJ;$!{&pTA3i*BT^t)eSFC^j*bAwGn@Wh(`O_PS zIqCDK-#*TTo6eu!G|7Qm3NuR$hfHxa{GY7{bo3PpY##gcktG^zKC!>b=-+dIA+9c_ z{ROABcOjzfAs1ZdK%~(gQg3_6t(T|3ytDa zodS=hr=*1klZLhgnG99;wT;E-I_9=Y;pCO{R|iyX_)8-0vxT2)(?3F|bkK8A^`p?XsfpLfC)mXczi_q>_?ow`{zIesru)!$OO+>XStdhj-Z2QM*J z4~&%Y;wl6g$K6c`GLAbrdoICJHH11g-Udt6M1p}2aYPNgr_Rk$uN$FI(NjEP0xTFJ zVH7wuBVHxG<=MZ%#iD#Y%c3qQDq;Pu)%sQ5dJ?X@*c%ax3ZU8_(+wmwoxC{oNEffP ze1A>Up{kAYeM98?e+*B7<|AD-G}FrWu046`hUFw`2xOyR5y6%YU!ons77|;eUj?dj zi;^5c(CNWE`PK1jxUPV0(CcB`|E4&C;IwcU0Wkfzy~rR&uZ?6p+gL`eO|XwV%`A`g z@)%x+H8qHP>R<~e>`B7{LSg0=4kI-f%Pn~(L=r7OpU7qOe6Wh6!Y(B=s)Vtt3PV)5 z3WH_r@_Bb&~37Q_KNezxN z^Px)BQxGSJ>=fo?`HBzN!yuduP8=rVrUq;E!jl@TIfqUSHeAIqlhfQ@BDOg4igOaZ zY2o7r*nQM4!0hdrm`E=Ob(kVhB&lD8s%rGpEtEyKRv6Yf5hS*B} z@}K>`i@9#q36LHgTlvL_vUH~|=F0R~%b$1cfn2}e8luzBexul|DwqKQsO%>vaJ67( zo6k)7Av(3d&DZ_Pr8+vfJ7cV(ItZ;}*rSi5r@+rd;y9_@8h*0Xo4Y@j13$ArjRPC5 zSK;xFG0@>rj*VSHst9xgF?u;1BcIDVhyxBU-!=FWqiLNbnBc^!M`ky2jh4hOWUf(E zc0La?q$-SeX4pN4DS{Jrq1LU7COG{(AX^%aXJI3uQVR01}oLk}g1?>)RC)ntHJ8f2u$~b;D{5<|m_FzlE%- zSldP}CWxM(T}fn1NLe!N`W1x~hjyi>S%#*i(k`J{Ul_8LhG>Df)lIq7y6^bKVIImw zw{9fSZl5bixn%nbweYz+lchFia^i5EMQLNI8BdrLQ(COz3Db}+$GzvQbmQK0kil_D zInE>_G#P1DgeD`+IzkhXNZcMIRuG!bq5Br47ow*pCaP#caqpcWmG{uy*czF`NK!BAKtlbKM88`0G%HKfuTQV8 zgMJ-zXbSx*zPyosY4Ce21O9Eblj+x_^Hb>8wVi)L`bB(QTUUMd64aadzMEMQy8hZ7 zV_5GZUgTC2E(1r*F5oQIVi0;k&+2zkTPsx zs+kz#(;Ngxe3~PgfVnvsjtGr9d=|I5%q_J(`_RE^d3dy=AsuCT)a5QzVdC?QKP$-| z+Y!RJ;vCu@yLdG58)4s0YI-0>c@nTJZR5gH+hZ^Mtpm$Odu%eX_6V7R<(@E%ThCKq z^w?u>IZk7_-yZAi$6axffs~RCv!4YXdA%JfUZ(Zktz0On^!9f1E_0xiVu#Si0guq` z6C_=1V|YI8=Q=*$hi^V31o)TV2mw|Yh9$vi$q`<2?%m8)!ryO`4c|sDrdXGp8 zuTu|5f!Cl*8sW8@@PdFW`ih62{qg9X!po`eI}YNk&z^TX(Z-8mNNXeCN(5YpX?xy- z!yJe;+Vd7RAinzjekt%;6RaP+7D9~m!RuY3O&WN;-!cVWn=fpHmzFadMh`oll>)E! zsJglndg$QSft`}zb?n9I;nlH43cOAq+6b@Rg4g7}De#(j_|D+v+RGVUaUl|>6^TfrUgt zUXK;gjjh(E7B{xqC}R>^Z3IWhXnea@Rx~B%AVD}K=5Xwkn8UGCVh+bni8&nCWqjF* zJip{j1vZa7zv$N*Y<_v(53fhtC&B9}AWnLCRp+F@Ywh4hcw+P5!t1i^6nI^KZX>*QhaS#7Jq2D*9GVth3auVI%7CfA$n4qw1)`W> zmq1LXl`L-R0!X{a-XGuq=m6a5uMFbYHXK)h$t!W3WL44soAr-NQ{Z#ZAr5>};?L}6 zknt7S)9@)hFAaQxO;X^~tA8VW5-J`Ir$zIilP zQj6@v@MwZES}GxHG)Si0mm^O@FEotcqZck^WAtr+rl*A_-kB(Xi9?!r|CpGlGGSqCR?&ba zkU&KP!VjY|VsZX_6%OcxF_hm_!{Sr^dV8wW9-=$#X$URH8kjJsNwf{)e{yA?dDihB zj;I_JpgATOfGxw`cuJEDdl0S;6Q{OUy-|~+m^tT`o z0^jmGp4H#-XT+fLTYx~-_RHYCvbsletOqBJ^)|MhRel1-ITPZrwR(Ml-Bvwuto_zE z8f9MO6W;FC1QlgNAXA6oUhM7WfWZrd?BDcLQL=dT!e})DGjIN$NTC8V;b6hX^?D>i zq&T^o+HIyeI;Ao!a>Udg<2O3Jw|xq+I>Qmu%Ij|;>Df{In%$jBOVT!``adP2$;m8|LSuz01(A)j3??J}e<$^BAzqdyTyY@3dCl}e zzBwr5^*S(aOt7onL|)Nv0^{z&K%RKl+H>;o7SzgTdO0e`-M^KJGB zJurjini)zWpso#Bt13Q2#%mSckiK5?wR>2vc{}DBm6PjTuNm{HsxFU8^ifI2C?Axe zfc+|{8$wAgBK>1w=F<~>NdH)Zxkq9==^qO-7rNz|5dwD>BT0DUA)&;1lH!WvmMGY4 zUc^jsr(QElA8R(oU_^i;jGhepi|)kJNr;njLf|%F7KI(Dm?sqznP~Smkg5#K-&FI9 zzK<}TR$H<%N_FbKaPdUzj%9?$@!j^1{th|0ZaCtdcpZ6&4!~g)dL8lU;8ec&bQ95j zn2&?h$&lKD5-NstAdci7!_nU50E|_M49Q_{FKK?X#NkK(aO2bOg;&zVr{4-LqsqmR zAq^oz0&g-5$vFRYc)D?!xZ&xVot9Tgc)E%wQ>a#8H@%4qdJM}i63rlN*%_4v%_b57 zAORU{f~|-h5X}UR)qg@Ou22U;(Ptjixk91NsLd|w94M&M>koYhs)LC+^cwF9b8JEo zmCgloMwm+HRneX-b$&ETo%<`DOZcI;()mNY9~~MI0x^jN@l-O`(W7oL^ymaBbgm1K zqk@peoO67b12TCYF^84W`y|E_bBHcI-9qPx9=(Xsqr|PF5`9P}iCZ9(XAyIVMXJ=f zF0jrDLJsQumlLgu`{l`8KX z8UWy}zb`cybCq9)bGGC#GMvikxRLXSoQ|keFwcly$WR$U8VYe$G`YB|oJiw@xTt&& zjSW62?l1>w4p2zrU`G9tzLn(C{oIcr;+AQ}i!z?6>pFA!r|4JsZ4Vh?8#7%>U* zuBgcrU5laE!0lN)#cUrIXC+7BKl{lOxeQcPxVsV_-B(ruV%oXf>)K2rf|&NDI3L0N z%X!_@#T?(FX9T?y?Ph`4a=Th+bkECRpUvmh*5=xS6hG7fJ2Sp^HG=L6&;M~6S5upA z&7}xL3&HDfZ4o%)GU14jH8Z-Mp>-xH0b%g^dUC`u#OuM_!Js$LTIz9d7X#FP@N8lr z(I7rr^zj&p)8&W7IVnM`|E^6phOia!0R` z;wgA2#UF*&I7ac5i%5dk;J8Pk4_V?u92O?Vb1~tC!0U^M*Sx^NYaA=Q*5fR{6XH)e zFX9eC_0xA*ewlZ)-6&DdQ3QFP~=GxZ7p^Yp_Hy6`gv;RBJ@M?eFWPN<&t79Mfscuk zGgU59XcoaJL-9eyeXO=KLY{}mI|NJc@NmV;7&PAS9_9rPebin6(&(M>tMo&u`A2|~ zobgbiG_y3`9|LYR$BY&a#KW4%!@x+@!=gzK3+jh`hzppL!iV8m@pA#eI&C(!p(P_I!JEaX`?BM z^57UxPIvikkHlzFO2*q2s?fb|2)4Y0D$Zv(?&PRA2(}!}Wy8gk>_68l z*SBbLoJF$(6eX#i(sEV5TFR9}c8dnTl={^uT`htf4alfpt%_G~06GWL*4XKK{a5RXkO#0S5E_0Fhd>LU9A!%cahrr>lFTl@T4`! z*nh4OeHb)RWP4O-Z5l08_Sr5Teb{5QLIGE{v`H#@lC*SbY}l;+Kla`PJgOpl8xMp) z5MoEAF)C=(sJN0SQ6iveNT359MOhUT6huH&M!Nw)5lkXn+jekVaNpN)nHd*kK*LT1 zH^c!P85P{PF(N3kh+_WldrsB8-3cx;zvcV>-y_dM`c|E{>Q5-@=<`6;)p%>Dra3r}R(mO) z&8~vX=2PVbbNzB>smP7>caFtY^xraP9WpO>-gZyrJbX!*cNJ~`?E$$7ZJjU)H zOx%c&u_up?)sbuU)Grpb!Rd-3o6z2m0_r)1iQh8?Yx(}~V zfuxQaSK?vMe9N$vXi* zXFu@&jwok{D4PWiE5~cG(#R+)$9Jk6zq3o^cqT&Lc_X=h(VU2${uRFKAZpn64JU@? zUCZl7#fXYasoUo;HpVO$o|H#=Oh5Yu-|??8ZAzW@fO>+eu3x-h};O#DV1e4*h4 zJ*ICsx65UjT(^I^m6OdBEBaoc zt|`S^!O@yhHWh!f&9AJN)|58G7>|p9z)(2omD#pxkFI!(TSI13?3h@S|9E2zJz(8=sBq0 z_b`%CuG!_9yyr{eUz)EO8RzR|DCi<#Zn%J8Z}EM67H#(tWZnG z7RWe)1@d_hp#j1b%fs%MAMLD1iQ%jT3Cw-DcVX4G5+zBa<63SlW}|Si(;BQC47YD@ z$df@RgT}!+V#pGA9p_5%zN6z!opiiP3?{t!;<&u6WH~-l<@>ba^PPBKhn+PW&|tAP z&hCm&T10y%y4ORhCUmdZjmuiiYOn9RY29IDL-JSZnr*@bG>IAqaN?LN?ILw>W9eq! zd@gshs94`U zhx4sh-_uV;q~fbw=~Tm{ z88S9>L^EJ9tesftpv9&jzS|096{vh%Acfz2;Eyr`C92y#CnPtXw?yyxu$NDJwuF2e zvL#&P$i{1M#XAQX?|gJh)A18Dwdo$$7{BRYhCzs4p~aWT1Usqu7zGyl50|*RVVG#NdnJqGD-olFN@b(L39@^Z!8IfG%cq-DRVUs(Mbo;|mtX z&nb2WKvkKv+J8Sk#Prx1G82mTYE!YRKH5T+>gtk}rUKYr_+hInF=#0b!hp+6QSF?4ix6>GYztMQC1BB-+0c8wkH%~r5rQXPb z_q|V{QcJK5fwq77SPInvMf(IQVG*QT1OHOHAavg}XXoTwIMuZU=Sqw|#Kr{%mT6m59cX`z!g?MhG^3F6CDnHL@}Qf7&lplH&3)bsL$%czsCx8@o*?wR(k zw^qLixB)j%Y1bO%h)G<7ZBJ@^~^8KmG9_86O+5Q-&<#c zN7g^TY(9AVv^ccy?bF(u=8;cFf1frF-PQDHd(*tvTgA}B@2xVDU+^RDO6DL=|09W` z-e#9TQ+CqNIo)}lj~5W zQUP(&6?@qdI#owNV4M(R_hIVaxndU#1>PlJcVz@BpOXiy?k>Q?+)Vu8w?yu=c`}KJ zjcrwuS0ckl?E-A3;l(HGi#z!*X8wVyZjcA0l=!aRdjnNRF4WPRy=e{pB1R;i+qJ9`d&;& zNy47;si4$-mTK?Jxq5Ydy)l+{yKVf5Ut7#N4Mk{8bM0qX_e8Mik!+i+L-P2zQ~lzbid`AwENdI)kM)e%0xc(PClS% z?w|v79LmR(0h5rA+<}{P6vC1RTbJde

-~2LXXPL9M+*#({0k+Ewp`T|9 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

hf)mR*4l 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%0A21izQFo@So9a>b_4UG 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%0D&&$I<^!XLPuWv@$ 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 Date: Thu, 24 Nov 2022 16:46:46 +0100 Subject: [PATCH 39/64] added unnecessary files to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 64a33c5f..a89f03b4 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ scripts/ .DS_Store *.__afs* *.egg-info +2to3.out +PyHEADTAIL/gpu/thrust.so From d1a4fde6d179359b789f5c2a9b3142721f5c29bf Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 24 Nov 2022 16:47:35 +0100 Subject: [PATCH 40/64] copy bunch ids and changed ion macroparticle N --- PyHEADTAIL/ion_cloud/ion_cloud.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 2a0b1615..183e3883 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -21,7 +21,7 @@ def __init__(self, sig_check=True, dist='GS', monitor_on=True, L_sep=0.85, n_ma elif dist == 'LN': self._efieldn = efields._efieldn_linearized self.L_sep = L_sep - self.N_MACROPARTICLES = 50 + self.N_MACROPARTICLES = 30 self.N_MACROPARTICLES_MAX = n_macroparticles_max self.CIRCUMFERENCE = 354 self.N_SEGMENTS = 500 @@ -90,8 +90,8 @@ def track(self, electron_bunch): prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge**2 / (c)) - p_id_electrons = electron_bunch.id-1 - p_id_ions = self.ion_beam.id-1 + p_id_electrons = electron_bunch.id.copy()-1 + p_id_ions = self.ion_beam.id.copy()-1 # if len(p_id_electrons) == 0: # continue # Electric field of ions From aa78cdfa1539e3fdc3421cb3592930289e98fac4 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 6 Dec 2022 16:57:37 +0100 Subject: [PATCH 41/64] Ion cloud with monitors for ions --- PyHEADTAIL/ion_cloud/ion_cloud.py | 97 ++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 21 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 183e3883..313a10db 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -1,35 +1,48 @@ +import PyHEADTAIL.aperture.aperture as aperture from PyHEADTAIL.field_maps import efields_funcs as efields -from PyHEADTAIL.general.element import Element -from PyHEADTAIL.particles import particles, generators -# from PyHEADTAIL.particles.slicing import UniformBinSlicer from PyHEADTAIL.general import pmath as pm +from PyHEADTAIL.general.element import Element from PyHEADTAIL.general.printers import SilentPrinter +from PyHEADTAIL.monitors.monitors import BunchMonitor, ParticleMonitor +from PyHEADTAIL.particles import particles, generators from scipy.constants import m_p, e, c +from numpy import linspace, int64 - +H_RF = 416 CIRCUMFERENCE = 354 N_SEGMENTS = 500 +N_TURNS = 1000 class BeamIonElement(Element): - def __init__(self, sig_check=True, dist='GS', monitor_on=True, L_sep=0.85, n_macroparticles_max=int(1e3)): + def __init__(self, sig_check=True, dist_ions='GS', monitor_name=None, particle_monitor=False, L_sep=0.85, n_macroparticles_max=int(1e3), set_aperture=True): self.ion_beam = None - self.dist = dist - if dist == 'GS': + self.dist = dist_ions + if self.dist == 'GS': self._efieldn = efields._efieldn_mit self.sig_check = sig_check - elif dist == 'LN': + self.dist_func_x = generators.gaussian2D_asymmetrical + self.dist_func_y = generators.gaussian2D_asymmetrical + self.dist_func_z = generators.gaussian2D_asymmetrical + elif self.dist == 'LN': self._efieldn = efields._efieldn_linearized + self.dist_func_x = generators.uniform2D + self.dist_func_y = generators.uniform2D + self.dist_func_z = generators.uniform2D + else: + print('Distribution given is not implemented') + self.set_aperture = True self.L_sep = L_sep self.N_MACROPARTICLES = 30 self.N_MACROPARTICLES_MAX = n_macroparticles_max self.CIRCUMFERENCE = 354 self.N_SEGMENTS = 500 + self.L_SEG = self.CIRCUMFERENCE/self.N_SEGMENTS if sig_check: self._efieldn = efields.add_sigma_check( self._efieldn, self.dist) - self.n_g = 2.4e13 - self.sigma_i = 1.8e-22 + self.n_g = 2.4e13 # (m**-3) + self.sigma_i = 1.8e-22 # (m**2) self.A = 28 self.charge_state = 1 self.ion_beam = particles.Particles( @@ -48,6 +61,25 @@ def __init__(self, sig_check=True, dist='GS', monitor_on=True, L_sep=0.85, n_ma 'dp': [0, ] } ) + if particle_monitor: + self.particle_monitor = particle_monitor + self.ions_monitor = ParticleMonitor(monitor_name, + stride=1, + parameters_dict=None + ) + elif monitor_name is not None: + self.monitor_name = monitor_name + self.ions_monitor = BunchMonitor(monitor_name, + n_steps=H_RF*N_TURNS, + parameters_dict=None, + write_buffer_every=50, + buffer_size=100, + ) + else: + self.ions_monitor = None + + def get_ion_beam(self): + return self.ion_beam def track(self, electron_bunch): '''Tracking method to track an interaction between an electron bunch @@ -61,39 +93,60 @@ def track(self, electron_bunch): FLS 2018 - Proceedings of the 60th ICFA Advanced Beam Dynamics Workshop on Future Light Sources, 34–38. https://doi.org/10.18429/JACoW-FLS2018-TUA2WB04 ''' + ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ + self.sigma_i*self.n_g*self.L_SEG + if self.dist == 'LN': + a_x, b_x = -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x() + a_y, b_y = -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y() + elif self.dist == 'GS': + a_x, b_x = electron_bunch.sigma_x(), electron_bunch.sigma_xp() + a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() + if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: new_particles = generators.ParticleGenerator( macroparticlenumber=self.N_MACROPARTICLES, - intensity=electron_bunch.intensity*self.sigma_i * - self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS, + intensity=ION_INTENSITY_PER_ELECTRON_BUNCH, charge=self.charge_state*e, gamma=1.0001, mass=self.A*m_p, circumference=self.CIRCUMFERENCE, - distribution_x=generators.uniform2D( - -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x()), - distribution_y=generators.uniform2D( - -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y()), - distribution_z=generators.uniform2D( - 0, self.CIRCUMFERENCE/self.N_SEGMENTS), + distribution_x=self.dist_func_x(a_x, b_x), + distribution_y=self.dist_func_y(a_y, b_y), + distribution_z=self.dist_func_z( + 0, self.L_SEG), printer=SilentPrinter() ).generate() new_particles.x[:] += electron_bunch.mean_x() new_particles.y[:] += electron_bunch.mean_y() + new_particles.xp[:] += 0 + new_particles.yp[:] += 0 self.ion_beam += new_particles else: - self.ion_beam.intensity += electron_bunch.intensity * \ - self.sigma_i*self.n_g*self.CIRCUMFERENCE/self.N_SEGMENTS + self.ion_beam.intensity += ION_INTENSITY_PER_ELECTRON_BUNCH prefactor_kick_ion_field = -(self.ion_beam.intensity * - self.ion_beam.charge**2 / + self.ion_beam.charge*electron_bunch.charge*electron_bunch.gamma / (electron_bunch.p0*electron_bunch.beta*c)) prefactor_kick_electron_field = -(electron_bunch.intensity * +<<<<<<< HEAD electron_bunch.charge**2 / (c)) p_id_electrons = electron_bunch.id.copy()-1 p_id_ions = self.ion_beam.id.copy()-1 # if len(p_id_electrons) == 0: # continue +======= + electron_bunch.charge*self.ion_beam.charge / + c) + + if self.set_aperture == True: + apt_xy = aperture.EllipticalApertureXY( + x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) + apt_xy.track(self.ion_beam) + p_id_electrons = electron_bunch.id-1 + p_id_ions = linspace( + 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) + +>>>>>>> 4cfc4ba (Ion cloud with monitors for ions) # Electric field of ions en_ions_x, en_ions_y = self.get_efieldn( pm.take(electron_bunch.x, p_id_electrons), @@ -130,8 +183,10 @@ def track(self, electron_bunch): (self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep / \ (self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) + pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + self.ions_monitor.dump(self.ion_beam) def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): '''The charge-normalised electric field components of a From d303019f6115b1a256bc1142317b80d7a3b298a2 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 6 Dec 2022 16:58:38 +0100 Subject: [PATCH 42/64] formatting??? --- PyHEADTAIL/field_maps/efields_funcs.py | 83 ++++++++++++++------------ PyHEADTAIL/monitors/monitors.py | 82 +++++++++++++------------ 2 files changed, 89 insertions(+), 76 deletions(-) diff --git a/PyHEADTAIL/field_maps/efields_funcs.py b/PyHEADTAIL/field_maps/efields_funcs.py index effdfec4..b62445a7 100644 --- a/PyHEADTAIL/field_maps/efields_funcs.py +++ b/PyHEADTAIL/field_maps/efields_funcs.py @@ -19,6 +19,7 @@ def _sig_sqrt(sig_x, sig_y): return pm.sqrt(2 * (sig_x**2 - sig_y**2)) + def _efieldn_mit(x, y, sig_x, sig_y): '''The charge-normalised electric field components of a two-dimensional Gaussian charge distribution according to @@ -40,6 +41,7 @@ def _efieldn_mit(x, y, sig_x, sig_y): denom = 2. * epsilon_0 * np.sqrt(pi) * sig_sqrt return (w1im - ex * w2im) / denom, (w1re - ex * w2re) / denom + def _efieldn_mitmod(x, y, sig_x, sig_y): '''The charge-normalised electric field components of a two-dimensional Gaussian charge distribution according to @@ -59,10 +61,11 @@ def _efieldn_mitmod(x, y, sig_x, sig_y): ex = pm.exp(-x*x / (2 * sig_x*sig_x) + -y*y / (2 * sig_y*sig_y)) w2 = pm._errfadd(x * sig_y/(sig_x*sig_sqrt) + - y * sig_x/(sig_y*sig_sqrt) * 1j) + y * sig_x/(sig_y*sig_sqrt) * 1j) val = (w1 - ex * w2) / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) return val.imag, val.real + def _efieldn_koelbig(x, y, sig_x, sig_y): '''The charge-normalised electric field components of a two-dimensional Gaussian charge distribution according to @@ -78,28 +81,30 @@ def _efieldn_koelbig(x, y, sig_x, sig_y): # timing was ~3.35ms for same situation as _efieldn_mit if not pm._errf: raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_koelbig .' + - 'Did you call make (or f2py general/errfff.f)?') + 'TransverseSpaceCharge._efield_koelbig .' + + 'Did you call make (or f2py general/errfff.f)?') sig_sqrt = _sig_sqrt(sig_x, sig_y) w1re, w1im = pm._errf(x/sig_sqrt, y/sig_sqrt) ex = pm.exp(-x*x / (2 * sig_x*sig_x) + -y*y / (2 * sig_y*sig_y)) w2re, w2im = pm._errf(x * sig_y/(sig_x*sig_sqrt), - y * sig_x/(sig_y*sig_sqrt)) + y * sig_x/(sig_y*sig_sqrt)) pref = 1. / (2 * epsilon_0 * np.sqrt(pi) * sig_sqrt) return pref * (w1im - ex * w2im), pref * (w1re - ex * w2re) + def wfun(z): '''FADDEEVA function as implemented in PyECLOUD, vectorised.''' - x=z.real - y=z.imag + x = z.real + y = z.imag if not pm._errf: raise ImportError('errfff cannot be imported for using ' + - 'TransverseSpaceCharge._efield_pyecloud .' + - 'Did you f2py errfff.f?') - wx,wy=pm._errf(x,y) # in PyECLOUD only pm._errf_f (not vectorised) + 'TransverseSpaceCharge._efield_pyecloud .' + + 'Did you f2py errfff.f?') + wx, wy = pm._errf(x, y) # in PyECLOUD only pm._errf_f (not vectorised) return wx+1j*wy + def _efieldn_pyecloud(xin, yin, sigmax, sigmay): '''The charge-normalised electric field components of a two-dimensional Gaussian charge distribution according to @@ -109,31 +114,32 @@ def _efieldn_pyecloud(xin, yin, sigmax, sigmay): Effective copy of PyECLOUD.BassErsk.BassErsk implementation. ''' - x=abs(xin); - y=abs(yin); - eps0=8.854187817620e-12; - if sigmax>sigmay: - S=np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmay/sigmax*x+1j*sigmax/sigmay*y; - zetaBE=x+1j*y; - val=factBE*(wfun(zetaBE/S)- - np.exp( -x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay))* - wfun(etaBE/S) ); - Ex=abs(val.imag)*np.sign(xin); - Ey=abs(val.real)*np.sign(yin); + x = abs(xin) + y = abs(yin) + eps0 = 8.854187817620e-12 + if sigmax > sigmay: + S = np.sqrt(2*(sigmax*sigmax-sigmay*sigmay)) + factBE = 1/(2*eps0*np.sqrt(pi)*S) + etaBE = sigmay/sigmax*x+1j*sigmax/sigmay*y + zetaBE = x+1j*y + val = factBE*(wfun(zetaBE/S) - + np.exp(-x*x/(2*sigmax*sigmax)-y*y/(2*sigmay*sigmay)) * + wfun(etaBE/S)) + Ex = abs(val.imag)*np.sign(xin) + Ey = abs(val.real)*np.sign(yin) else: - S=np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)); - factBE=1/(2*eps0*np.sqrt(pi)*S); - etaBE=sigmax/sigmay*y+1j*sigmay/sigmax*x; - yetaBE=y+1j*x; - val=factBE*(wfun(yetaBE/S)- - np.exp( -y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax))* - wfun(etaBE/S) ); - Ey=abs(val.imag)*np.sign(yin); - Ex=abs(val.real)*np.sign(xin); + S = np.sqrt(2*(sigmay*sigmay-sigmax*sigmax)) + factBE = 1/(2*eps0*np.sqrt(pi)*S) + etaBE = sigmax/sigmay*y+1j*sigmay/sigmax*x + yetaBE = y+1j*x + val = factBE*(wfun(yetaBE/S) - + np.exp(-y*y/(2*sigmay*sigmay)-x*x/(2*sigmax*sigmax)) * + wfun(etaBE/S)) + Ey = abs(val.imag)*np.sign(yin) + Ex = abs(val.real)*np.sign(xin) return Ex, Ey + @np.vectorize def _efieldn_kv_a(x, y, sigma_x, sigma_y): ''' @@ -177,6 +183,7 @@ def _efieldn_kv_b(x, y, sigma_x, sigma_y): denom = 4*np.pi*epsilon_0 return efield_x/denom, efield_y/denom + @np.vectorize def _efieldn_wb(x, y, sigma_x, sigma_y): a = sigma_x*pm.sqrt(3) @@ -188,11 +195,11 @@ def _efieldn_wb(x, y, sigma_x, sigma_y): 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) + # 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 @@ -206,15 +213,17 @@ def _efieldn_gauss_round(x, y, sig_x, sig_y): amplitude = (1 - pm.exp(-r2/(2*sig_r*sig_r))) / (2*pi*epsilon_0 * r2) return x * amplitude, y * amplitude + 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./(np.pi*epsilon_0*(a+b)) + amplitude = 1./(np.pi*epsilon_0*(a+b)) return x/a * amplitude, y/b * amplitude + def add_sigma_check(efieldn, dist): '''Wrapper for a normalised electric field function. diff --git a/PyHEADTAIL/monitors/monitors.py b/PyHEADTAIL/monitors/monitors.py index b703a860..bdc3b0eb 100644 --- a/PyHEADTAIL/monitors/monitors.py +++ b/PyHEADTAIL/monitors/monitors.py @@ -7,7 +7,6 @@ """ - import h5py as hp import numpy as np import sys @@ -42,6 +41,7 @@ class BunchMonitor(Monitor): operations to file. This also helps to avoid IO errors and loss of data when writing to a file that may become temporarily unavailable (e.g. if file is located on network) during the simulation. """ + def __init__(self, filename, n_steps, parameters_dict=None, write_buffer_every=512, buffer_size=4096, *args, **kwargs): @@ -65,7 +65,7 @@ def __init__(self, filename, n_steps, parameters_dict=None, stats_to_store = [ 'mean_x', 'mean_xp', 'mean_y', 'mean_yp', 'mean_z', 'mean_dp', 'sigma_x', 'sigma_y', 'sigma_z', 'sigma_dp', 'epsn_x', 'epsn_y', - 'epsn_z', 'macroparticlenumber' ] + 'epsn_z', 'macroparticlenumber'] self.stats_to_store = kwargs.pop('stats_to_store', stats_to_store) self.filename = filename self.n_steps = n_steps @@ -143,13 +143,15 @@ def _write_data_to_buffer(self, bunch): # (macroparticlenumber) of the bunch. write_pos = self.i_steps % self.buffer_size try: - if pm.device is 'is_.2slowerwiththis':#'GPU': - #val_bf[stat] + if pm.device is 'is_.2slowerwiththis': # 'GPU': + # val_bf[stat] st = next(gpu_utils.stream_pool) val_buf[stats] = evaluate_stats(stream=st) - p_write[stats] = int(self.buffer[stats].gpudata) + write_pos*self.buffer[stats].strides[0] - sze = 8#val.nbytes - gpu_utils.driver.memcpy_dtod_async(dest=p_write[stats], src=val_buf[stats].gpudata, size=sze, stream=st) + p_write[stats] = int( + self.buffer[stats].gpudata) + write_pos*self.buffer[stats].strides[0] + sze = 8 # val.nbytes + gpu_utils.driver.memcpy_dtod_async( + dest=p_write[stats], src=val_buf[stats].gpudata, size=sze, stream=st) else: self.buffer[stats][write_pos] = evaluate_stats() except TypeError: @@ -163,15 +165,15 @@ def _write_buffer_to_file(self): self.buffer is on the GPU, copy the data to buffer_tmp and write the result to the file.""" - buffer_tmp = {} # always on CPU + buffer_tmp = {} # always on CPU shift = - (self.i_steps + 1 % self.buffer_size) for stats in self.stats_to_store: try: buffer_tmp[stats] = np.roll(self.buffer[stats].get(), - shift=shift, axis=0) + shift=shift, axis=0) except: buffer_tmp[stats] = np.roll(self.buffer[stats].copy(), - shift=shift, axis=0) + shift=shift, axis=0) n_entries_in_buffer = min(self.i_steps+1, self.buffer_size) low_pos_in_buffer = self.buffer_size - n_entries_in_buffer low_pos_in_file = self.i_steps + 1 - n_entries_in_buffer @@ -226,16 +228,16 @@ def __init__(self, filename, n_steps, slicer, parameters_dict=None, bunch_stats_to_store = [ 'mean_x', 'mean_xp', 'mean_y', 'mean_yp', 'mean_z', 'mean_dp', 'sigma_x', 'sigma_y', 'sigma_z', 'sigma_dp', 'epsn_x', 'epsn_y', - 'epsn_z', 'macroparticlenumber' ] + 'epsn_z', 'macroparticlenumber'] slice_stats_to_store = [ 'mean_x', 'mean_xp', 'mean_y', 'mean_yp', 'mean_z', 'mean_dp', 'sigma_x', 'sigma_y', 'sigma_z', 'sigma_dp', 'epsn_x', 'epsn_y', - 'epsn_z', 'n_macroparticles_per_slice' ] + 'epsn_z', 'n_macroparticles_per_slice'] self.bunch_stats_to_store = kwargs.pop('bunch_stats_to_store', - bunch_stats_to_store) + bunch_stats_to_store) self.slice_stats_to_store = kwargs.pop('slice_stats_to_store', - slice_stats_to_store) + slice_stats_to_store) self.filename = filename self.n_steps = n_steps @@ -251,9 +253,9 @@ def __init__(self, filename, n_steps, slicer, parameters_dict=None, def _init_buffer(self, bunch, slice_set): self.buffer_bunch = pm.init_bunch_buffer(bunch, - self.bunch_stats_to_store, self.buffer_size) + self.bunch_stats_to_store, self.buffer_size) self.buffer_slice = pm.init_slice_buffer(slice_set, - self.slice_stats_to_store, self.buffer_size) + self.slice_stats_to_store, self.buffer_size) def dump(self, bunch): """ Evaluate the statistics like mean and standard deviation for @@ -293,10 +295,10 @@ def _create_file_structure(self, parameters_dict): for stats in self.bunch_stats_to_store: h5group_bunch.create_dataset(stats, shape=(self.n_steps,), - compression='gzip', compression_opts=9) + compression='gzip', compression_opts=9) for stats in self.slice_stats_to_store: h5group_slice.create_dataset(stats, shape=(self.slicer.n_slices, - self.n_steps), compression='gzip', compression_opts=9) + self.n_steps), compression='gzip', compression_opts=9) h5file.close() except Exception as err: self.warns('Problem occurred during Slice monitor creation.') @@ -335,23 +337,23 @@ def _write_buffer_to_file(self): """ Write buffer contents to the HDF5 file. The file is opened and closed each time the buffer is written to file to prevent from loss of data in case of a crash. """ - buffer_tmp_bunch = {} # always on CPU + buffer_tmp_bunch = {} # always on CPU buffer_tmp_slice = {} shift = - (self.i_steps + 1 % self.buffer_size) for stats in self.bunch_stats_to_store: try: buffer_tmp_bunch[stats] = np.roll(self.buffer_bunch[stats].get(), - shift=shift, axis=0) + shift=shift, axis=0) except: buffer_tmp_bunch[stats] = np.roll(self.buffer_bunch[stats].copy(), - shift=shift, axis=0) + shift=shift, axis=0) for stats in self.slice_stats_to_store: try: buffer_tmp_slice[stats] = np.roll(self.buffer_slice[stats].get(), - shift=shift, axis=1) + shift=shift, axis=1) except: buffer_tmp_slice[stats] = np.roll(self.buffer_slice[stats].copy(), - shift=shift, axis=1) + shift=shift, axis=1) # Keep track of where to read from buffers and where to store # data in file. @@ -370,11 +372,11 @@ def _write_buffer_to_file(self): for stats in self.bunch_stats_to_store: h5group_bunch[stats][low_pos_in_file:up_pos_in_file] = \ buffer_tmp_bunch[stats][low_pos_in_buffer:] - #self.buffer_bunch[stats][low_pos_in_buffer:] + # self.buffer_bunch[stats][low_pos_in_buffer:] for stats in self.slice_stats_to_store: - h5group_slice[stats][:,low_pos_in_file:up_pos_in_file] = \ - buffer_tmp_slice[stats][:,low_pos_in_buffer:] - #self.buffer_slice[stats][:,low_pos_in_buffer:] + h5group_slice[stats][:, low_pos_in_file:up_pos_in_file] = \ + buffer_tmp_slice[stats][:, low_pos_in_buffer:] + # self.buffer_slice[stats][:,low_pos_in_buffer:] h5file.close() except IOError: self.warns('Slice monitor file is temporarily unavailable. \n') @@ -401,7 +403,7 @@ def __init__(self, filename, stride=1, parameters_dict=None, Optionally pass a list called quantities_to_store which specifies which members of the bunch will be called/stored. """ - quantities_to_store = [ 'x', 'xp', 'y', 'yp', 'z', 'dp', 'id' ] + quantities_to_store = ['x', 'xp', 'y', 'yp', 'z', 'dp', 'id'] self.quantities_to_store = kwargs.pop('quantities_to_store', quantities_to_store) self.filename = filename @@ -421,6 +423,7 @@ def _create_file_structure(self, parameters_dict): contents of the parameters_dict as metadata (attributes) to the file. Maximum file compression is activated. """ try: + print(self.filename) h5file = hp.File(self.filename + '.h5part', 'w') if parameters_dict: for key in parameters_dict: @@ -443,7 +446,8 @@ def _write_data_to_file(self, bunch, arrays_dict): h5file = hp.File(self.filename + '.h5part', 'a') h5group = h5file.create_group('Step#' + str(self.i_steps)) dims = (bunch.macroparticlenumber // self.stride,) - dims = list(bunch.get_coords_n_momenta_dict().values())[0][::self.stride].shape # more robust implementation + dims = list(bunch.get_coords_n_momenta_dict().values())[ + 0][::self.stride].shape # more robust implementation # resorting_indices = np.argsort(bunch.id)[::self.stride] all_quantities = {} @@ -463,7 +467,7 @@ def _write_data_to_file(self, bunch, arrays_dict): for quant in list(all_quantities.keys()): quant_values = all_quantities[quant] h5group.create_dataset(quant, shape=dims, compression='gzip', - compression_opts=9, dtype=quant_values.dtype) + compression_opts=9, dtype=quant_values.dtype) h5group[quant][:] = quant_values[::self.stride] h5file.close() @@ -587,13 +591,13 @@ def _write_data_to_buffer(self, bunch): self.beta_z, self.radial_cut, self.n_radial_slices, self.n_azimuthal_slices) - self.buffer_cell['mean_x'][:,:,0] = x_cl[:,:] - self.buffer_cell['mean_xp'][:,:,0] = xp_cl[:,:] - self.buffer_cell['mean_y'][:,:,0] = y_cl[:,:] - self.buffer_cell['mean_yp'][:,:,0] = yp_cl[:,:] - self.buffer_cell['mean_z'][:,:,0] = z_cl[:,:] - self.buffer_cell['mean_dp'][:,:,0] = dp_cl[:,:] - self.buffer_cell['macroparticlenumber'][:,:,0] = n_cl[:,:] + self.buffer_cell['mean_x'][:, :, 0] = x_cl[:, :] + self.buffer_cell['mean_xp'][:, :, 0] = xp_cl[:, :] + self.buffer_cell['mean_y'][:, :, 0] = y_cl[:, :] + self.buffer_cell['mean_yp'][:, :, 0] = yp_cl[:, :] + self.buffer_cell['mean_z'][:, :, 0] = z_cl[:, :] + self.buffer_cell['mean_dp'][:, :, 0] = dp_cl[:, :] + self.buffer_cell['macroparticlenumber'][:, :, 0] = n_cl[:, :] for stats in self.stats_to_store: self.buffer_cell[stats] = np.roll( @@ -618,8 +622,8 @@ def _write_buffer_to_file(self): h5group_cells = h5file['Cells'] for stats in self.stats_to_store: - h5group_cells[stats][:,:,low_pos_in_file:up_pos_in_file] = \ - self.buffer_cell[stats][:,:,low_pos_in_buffer:] + h5group_cells[stats][:, :, low_pos_in_file:up_pos_in_file] = \ + self.buffer_cell[stats][:, :, low_pos_in_buffer:] h5file.close() except Exception as err: self.warns(err.message) From 2eddf1670a8960f50c990871d5dae493526306e2 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 6 Dec 2022 17:48:46 +0100 Subject: [PATCH 43/64] aperture --- PyHEADTAIL/ion_cloud/ion_cloud.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 313a10db..b4ff8335 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -31,7 +31,7 @@ def __init__(self, sig_check=True, dist_ions='GS', monitor_name=None, particle_ self.dist_func_z = generators.uniform2D else: print('Distribution given is not implemented') - self.set_aperture = True + self.set_aperture = set_aperture self.L_sep = L_sep self.N_MACROPARTICLES = 30 self.N_MACROPARTICLES_MAX = n_macroparticles_max @@ -127,14 +127,6 @@ def track(self, electron_bunch): self.ion_beam.charge*electron_bunch.charge*electron_bunch.gamma / (electron_bunch.p0*electron_bunch.beta*c)) prefactor_kick_electron_field = -(electron_bunch.intensity * -<<<<<<< HEAD - electron_bunch.charge**2 / - (c)) - p_id_electrons = electron_bunch.id.copy()-1 - p_id_ions = self.ion_beam.id.copy()-1 -# if len(p_id_electrons) == 0: -# continue -======= electron_bunch.charge*self.ion_beam.charge / c) @@ -146,7 +138,6 @@ def track(self, electron_bunch): p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) ->>>>>>> 4cfc4ba (Ion cloud with monitors for ions) # Electric field of ions en_ions_x, en_ions_y = self.get_efieldn( pm.take(electron_bunch.x, p_id_electrons), From 00347e8c5b69419eb9135983ee240bf4ae250631 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 6 Dec 2022 17:50:00 +0100 Subject: [PATCH 44/64] accepted changes --- PyHEADTAIL/ion_cloud/ion_cloud.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 313a10db..248527d5 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -127,14 +127,6 @@ def track(self, electron_bunch): self.ion_beam.charge*electron_bunch.charge*electron_bunch.gamma / (electron_bunch.p0*electron_bunch.beta*c)) prefactor_kick_electron_field = -(electron_bunch.intensity * -<<<<<<< HEAD - electron_bunch.charge**2 / - (c)) - p_id_electrons = electron_bunch.id.copy()-1 - p_id_ions = self.ion_beam.id.copy()-1 -# if len(p_id_electrons) == 0: -# continue -======= electron_bunch.charge*self.ion_beam.charge / c) @@ -146,7 +138,6 @@ def track(self, electron_bunch): p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) ->>>>>>> 4cfc4ba (Ion cloud with monitors for ions) # Electric field of ions en_ions_x, en_ions_y = self.get_efieldn( pm.take(electron_bunch.x, p_id_electrons), From 387bf8a938568034bccac630a0eb186c9f3950cb Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 7 Dec 2022 10:12:25 +0100 Subject: [PATCH 45/64] corrected aperture --- PyHEADTAIL/ion_cloud/ion_cloud.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index b4ff8335..fc22db30 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -15,7 +15,13 @@ class BeamIonElement(Element): - def __init__(self, sig_check=True, dist_ions='GS', monitor_name=None, particle_monitor=False, L_sep=0.85, n_macroparticles_max=int(1e3), set_aperture=True): + def __init__(self, sig_check=True, + dist_ions='GS', + monitor_name=None, + particle_monitor=False, + L_sep=0.85, + n_macroparticles_max=int(1e3), + set_aperture=True): self.ion_beam = None self.dist = dist_ions if self.dist == 'GS': @@ -129,11 +135,12 @@ def track(self, electron_bunch): prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge*self.ion_beam.charge / c) - + apt_xy = aperture.EllipticalApertureXY( + x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) if self.set_aperture == True: - apt_xy = aperture.EllipticalApertureXY( - x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) apt_xy.track(self.ion_beam) + else: + pass p_id_electrons = electron_bunch.id-1 p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) From 1c856ed0ae5a6d465747ff0b66c3b632625df60a Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 8 Dec 2022 17:42:11 +0100 Subject: [PATCH 46/64] formatting and error in ion generation --- PyHEADTAIL/ion_cloud/ion_cloud.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index fc22db30..05b2b8f1 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -24,17 +24,16 @@ def __init__(self, sig_check=True, set_aperture=True): self.ion_beam = None self.dist = dist_ions + self.dist_func_z = generators.uniform2D if self.dist == 'GS': self._efieldn = efields._efieldn_mit self.sig_check = sig_check self.dist_func_x = generators.gaussian2D_asymmetrical self.dist_func_y = generators.gaussian2D_asymmetrical - self.dist_func_z = generators.gaussian2D_asymmetrical elif self.dist == 'LN': self._efieldn = efields._efieldn_linearized self.dist_func_x = generators.uniform2D self.dist_func_y = generators.uniform2D - self.dist_func_z = generators.uniform2D else: print('Distribution given is not implemented') self.set_aperture = set_aperture @@ -101,13 +100,14 @@ def track(self, electron_bunch): ''' ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG + assert (self.dist in ['LN', 'GS']), ( + 'The implementation for required distribution {:} is not found'.format(self.dist)) if self.dist == 'LN': a_x, b_x = -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x() a_y, b_y = -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y() elif self.dist == 'GS': a_x, b_x = electron_bunch.sigma_x(), electron_bunch.sigma_xp() a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() - if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: new_particles = generators.ParticleGenerator( macroparticlenumber=self.N_MACROPARTICLES, @@ -120,18 +120,20 @@ def track(self, electron_bunch): distribution_y=self.dist_func_y(a_y, b_y), distribution_z=self.dist_func_z( 0, self.L_SEG), + limit_n_rms_x=3., + limit_n_rms_y=3., printer=SilentPrinter() ).generate() new_particles.x[:] += electron_bunch.mean_x() new_particles.y[:] += electron_bunch.mean_y() - new_particles.xp[:] += 0 - new_particles.yp[:] += 0 + new_particles.xp[:] = 0 + new_particles.yp[:] = 0 self.ion_beam += new_particles else: self.ion_beam.intensity += ION_INTENSITY_PER_ELECTRON_BUNCH prefactor_kick_ion_field = -(self.ion_beam.intensity * self.ion_beam.charge*electron_bunch.charge*electron_bunch.gamma / - (electron_bunch.p0*electron_bunch.beta*c)) + (electron_bunch.p0*electron_bunch.beta*c))*self.L_SEG/self.L_sep prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge*self.ion_beam.charge / c) @@ -139,12 +141,11 @@ def track(self, electron_bunch): x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) if self.set_aperture == True: apt_xy.track(self.ion_beam) - else: - pass + # else: + # pass p_id_electrons = electron_bunch.id-1 p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) - # Electric field of ions en_ions_x, en_ions_y = self.get_efieldn( pm.take(electron_bunch.x, p_id_electrons), @@ -162,11 +163,11 @@ def track(self, electron_bunch): kicks_electrons_y = en_ions_y * prefactor_kick_ion_field kicks_ions_x = en_electrons_x * prefactor_kick_electron_field kicks_ions_y = en_electrons_y * prefactor_kick_electron_field - kicked_electrons_xp = pm.take( electron_bunch.xp, p_id_electrons) + kicks_electrons_x kicked_electrons_yp = pm.take( electron_bunch.yp, p_id_electrons) + kicks_electrons_y + # print(kicks_electrons_y) kicked_ions_xp = pm.take(self.ion_beam.xp, p_id_ions) + kicks_ions_x kicked_ions_yp = pm.take(self.ion_beam.yp, p_id_ions) + kicks_ions_y @@ -181,7 +182,6 @@ def track(self, electron_bunch): (self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep / \ (self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) - pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) self.ions_monitor.dump(self.ion_beam) From a9242da1379f18a88755f583dee908edb97f4377 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Thu, 8 Dec 2022 17:42:20 +0100 Subject: [PATCH 47/64] formatting --- PyHEADTAIL/elens/elens.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index eb9d76bc..36d90408 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -17,6 +17,7 @@ from PyHEADTAIL.field_maps import efields_funcs as efields from PyHEADTAIL.trackers.detuners import DetunerCollection + class ElectronLensDetuner(DetunerCollection): def __init__(self, dQmax, r, beta_x, beta_y): self.dQmax = dQmax @@ -24,13 +25,17 @@ def __init__(self, dQmax, r, beta_x, beta_y): self.beta_x = beta_x self.beta_y = beta_y self.segment_detuners = [] + def generate_segment_detuner(self, dmu_x, dmu_y, **kwargs): dapp_xz = self.dQmax dapp_yz = self.dQmax dapp_xz *= dmu_x dapp_yz *= dmu_y - detuner = ElectronLensSegmentDetuner(dapp_xz, dapp_yz, self.r, self.beta_x, self.beta_y) + detuner = ElectronLensSegmentDetuner( + dapp_xz, dapp_yz, self.r, self.beta_x, self.beta_y) self.segment_detuners.append(detuner) + + class ElectronLensSegmentDetuner(object): def __init__(self, dapp_xz, dapp_yz, r, beta_x, beta_y): self.dapp_xz = dapp_xz @@ -38,26 +43,30 @@ def __init__(self, dapp_xz, dapp_yz, r, beta_x, beta_y): self.beta_x = beta_x self.beta_y = beta_y self.r = r - + def detune(self, beam): def _bessel_term(u, kx, ky): return (i0(kx*u)-i1(kx*u))*i0(ky*u)*np.exp((kx+ky)*u) Jx = 0.5*(1/self.beta_x*beam.x**2+self.beta_x*beam.xp**2) Jy = 0.5*(1/self.beta_y*beam.x**2+self.beta_y*beam.yp**2) - ##proper implementation through integration + # proper implementation through integration # Kx = Jx/beam.epsn_x()*self.r**2 # Ky = Jy/beam.epsn_y()*self.r**2 # K = tuple(zip(Kx, Ky)) # bessel_term_X = np.array([quad(_bessel_term, 0, 1, args=(kx, ky))[0] for (kx, ky) in K]) # bessel_term_Y = np.array([quad(_bessel_term, 0, 1, args=(ky, kx))[0] for (kx, ky) in K]) - ## approximate formula from Burov + # approximate formula from Burov ax = np.sqrt(2.0*Jx/(beam.epsn_x()/beam.betagamma)) ay = np.sqrt(2.0*Jy/(beam.epsn_y()/beam.betagamma)) - bessel_term_X = (192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2)/(192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2+36.0*ax**2+21.0*ay**2) - bessel_term_Y = (192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2)/(192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2+36.0*ay**2+21.0*ax**2) + bessel_term_X = (192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2) / \ + (192.0-11.0*ax-18.0*np.sqrt(ax*ay)+3.0*ax**2+36.0*ax**2+21.0*ay**2) + bessel_term_Y = (192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2) / \ + (192.0-11.0*ay-18.0*np.sqrt(ax*ay)+3.0*ay**2+36.0*ay**2+21.0*ax**2) dQx = self.dapp_xz*bessel_term_X dQy = self.dapp_yz*bessel_term_Y return dQx, dQy + + class ElectronLens(Element): ''' Contains implemenation of electron lens generated electromagnetic field acting on a particle collection. @@ -90,7 +99,7 @@ def __init__(self, sigma_y, beta_e, dist, - offset_x=0, + offset_x=0, offset_y=0, sig_check=True): '''Arguments: @@ -133,7 +142,7 @@ def __init__(self, if sig_check: self._efieldn = efields.add_sigma_check( self._efieldn, self.dist) - elif self.dist=='LN': + elif self.dist == 'LN': self._efieldn = efields._efieldn_linearized @classmethod @@ -160,17 +169,17 @@ def RoundDCElectronLens(cls, L_e, dQ_max, ratio, beta_e, dist, bunch): bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + pm.abs(beta_e) * bunch.beta) elif dist == 'WB': - I_e = e/bunch.charge*3 / 4 * dQ_max * I_a * (bunch.mass / m_e) * ( + I_e = e/bunch.charge*3 / 4 * dQ_max * I_a * (bunch.mass / m_e) * ( 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + pm.abs(beta_e) * bunch.beta) elif dist == 'KV': - I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) elif dist == 'LN': - I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( + I_e = e/bunch.charge*4*dQ_max * I_a * (bunch.mass / m_e) * ( 4 * pi * bunch.epsn_x()) / L_e * ratio**2 * beta_e * bunch.beta / ( 1 + np.abs(beta_e) * bunch.beta) @@ -193,7 +202,7 @@ def get_max_tune_shift(self, bunch): if self.dist == 'GS': [ dQmax, - ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( + ] = bunch.charge/e*self.I_e / self.I_a * m_e / bunch.mass * self.L_e / ( 4 * pi * bunch.epsn_x()) * (bunch.sigma_x() / self.sigma_x())**2 * ( 1 + self.beta_e * bunch.beta) / (np.abs(self.beta_e) * @@ -235,7 +244,8 @@ def track(self, bunch): Nlambda_i = I_i / (self.beta_e * c) # Offset for an electron lens en_x, en_y = self.get_efieldn(pm.take(bunch.x, p_id), - pm.take(bunch.y, p_id), (self.offset_x), (self.offset_y), + pm.take( + bunch.y, p_id), (self.offset_x), (self.offset_y), self.sigma_x, self.sigma_y) kicks_x = (en_x * Nlambda_i) * prefactor kicks_y = (en_y * Nlambda_i) * prefactor From e80752e38ae78c46380da97a6165ab90552eeb7c Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 12 Dec 2022 13:17:36 +0100 Subject: [PATCH 48/64] added more properties to an ion element --- PyHEADTAIL/ion_cloud/ion_cloud.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 05b2b8f1..547bf965 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -21,7 +21,11 @@ def __init__(self, sig_check=True, particle_monitor=False, L_sep=0.85, n_macroparticles_max=int(1e3), - set_aperture=True): + set_aperture=True, + n_segments=500, + circumference=354, + n_steps=None + ): self.ion_beam = None self.dist = dist_ions self.dist_func_z = generators.uniform2D @@ -40,8 +44,8 @@ def __init__(self, sig_check=True, self.L_sep = L_sep self.N_MACROPARTICLES = 30 self.N_MACROPARTICLES_MAX = n_macroparticles_max - self.CIRCUMFERENCE = 354 - self.N_SEGMENTS = 500 + self.CIRCUMFERENCE = circumference + self.N_SEGMENTS = n_segments self.L_SEG = self.CIRCUMFERENCE/self.N_SEGMENTS if sig_check: self._efieldn = efields.add_sigma_check( @@ -49,6 +53,7 @@ def __init__(self, sig_check=True, self.n_g = 2.4e13 # (m**-3) self.sigma_i = 1.8e-22 # (m**2) self.A = 28 + self.n_steps = n_steps self.charge_state = 1 self.ion_beam = particles.Particles( macroparticlenumber=1, @@ -75,7 +80,7 @@ def __init__(self, sig_check=True, elif monitor_name is not None: self.monitor_name = monitor_name self.ions_monitor = BunchMonitor(monitor_name, - n_steps=H_RF*N_TURNS, + n_steps=self.n_steps, parameters_dict=None, write_buffer_every=50, buffer_size=100, @@ -100,6 +105,7 @@ def track(self, electron_bunch): ''' ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG + self.N_MACROPARTICLES = int(ION_INTENSITY_PER_ELECTRON_BUNCH) assert (self.dist in ['LN', 'GS']), ( 'The implementation for required distribution {:} is not found'.format(self.dist)) if self.dist == 'LN': From 9bf7fd581e5d1aaf510f37ba4f460f591d0f91be Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 4 Jan 2023 09:34:13 +0100 Subject: [PATCH 49/64] - distinction between weak strong models - ions are generated in balanced pairs --- PyHEADTAIL/ion_cloud/ion_cloud.py | 107 ++++++++++++++++++++++-------- 1 file changed, 81 insertions(+), 26 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 547bf965..0d2d1f3d 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -24,7 +24,8 @@ def __init__(self, sig_check=True, set_aperture=True, n_segments=500, circumference=354, - n_steps=None + n_steps=None, + interaction_model='weak-weak' ): self.ion_beam = None self.dist = dist_ions @@ -40,6 +41,7 @@ def __init__(self, sig_check=True, self.dist_func_y = generators.uniform2D else: print('Distribution given is not implemented') + self.interaction_model = interaction_model self.set_aperture = set_aperture self.L_sep = L_sep self.N_MACROPARTICLES = 30 @@ -105,7 +107,7 @@ def track(self, electron_bunch): ''' ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG - self.N_MACROPARTICLES = int(ION_INTENSITY_PER_ELECTRON_BUNCH) + self.N_MACROPARTICLES = 50 # int(ION_INTENSITY_PER_ELECTRON_BUNCH) assert (self.dist in ['LN', 'GS']), ( 'The implementation for required distribution {:} is not found'.format(self.dist)) if self.dist == 'LN': @@ -114,10 +116,14 @@ def track(self, electron_bunch): elif self.dist == 'GS': a_x, b_x = electron_bunch.sigma_x(), electron_bunch.sigma_xp() a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() + ''' + Particles are generated in pairs -x, -y and +x, +y to avoid numerical noise. + The idea came from Blaskiewicz, M. (2019) https://doi.org/10.18429/JACoW-NAPAC2019-TUPLM11 + ''' if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: new_particles = generators.ParticleGenerator( - macroparticlenumber=self.N_MACROPARTICLES, - intensity=ION_INTENSITY_PER_ELECTRON_BUNCH, + macroparticlenumber=self.N_MACROPARTICLES//2, + intensity=ION_INTENSITY_PER_ELECTRON_BUNCH//2, charge=self.charge_state*e, gamma=1.0001, mass=self.A*m_p, @@ -130,6 +136,25 @@ def track(self, electron_bunch): limit_n_rms_y=3., printer=SilentPrinter() ).generate() + new_particles_twin = particles.Particles( + macroparticlenumber=self.N_MACROPARTICLES//2, + particlenumber_per_mp=ION_INTENSITY_PER_ELECTRON_BUNCH/self.N_MACROPARTICLES, + charge=self.charge_state*e, + gamma=1.0001, + mass=self.A*m_p, + circumference=self.CIRCUMFERENCE, + coords_n_momenta_dict={ + 'x': -new_particles.x, + 'xp': -new_particles.xp, + 'y': -new_particles.y, + 'yp': -new_particles.yp, + 'z': -new_particles.z, + 'dp': -new_particles.dp + }, + printer=SilentPrinter() + ) + new_particles += new_particles_twin + # Initial conditions new_particles.x[:] += electron_bunch.mean_x() new_particles.y[:] += electron_bunch.mean_y() new_particles.xp[:] = 0 @@ -137,34 +162,66 @@ def track(self, electron_bunch): self.ion_beam += new_particles else: self.ion_beam.intensity += ION_INTENSITY_PER_ELECTRON_BUNCH + self.ions_monitor.dump(self.ion_beam) prefactor_kick_ion_field = -(self.ion_beam.intensity * - self.ion_beam.charge*electron_bunch.charge*electron_bunch.gamma / + self.ion_beam.charge*electron_bunch.charge / (electron_bunch.p0*electron_bunch.beta*c))*self.L_SEG/self.L_sep prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge*self.ion_beam.charge / - c) + (self.ion_beam.mass*c**2)) + # Clearing ions that are far away apt_xy = aperture.EllipticalApertureXY( - x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) + x_aper=5*electron_bunch.sigma_x(), + y_aper=5*electron_bunch.sigma_y()) if self.set_aperture == True: apt_xy.track(self.ion_beam) - # else: - # pass + else: + pass p_id_electrons = electron_bunch.id-1 p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) # Electric field of ions - en_ions_x, en_ions_y = self.get_efieldn( - pm.take(electron_bunch.x, p_id_electrons), - pm.take(electron_bunch.y, p_id_electrons), - self.ion_beam.mean_x(), self.ion_beam.mean_y(), - self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) + if self.interaction_model == 'weak-weak': + en_ions_x, en_ions_y = self.get_efieldn( + pm.take(electron_bunch.x, p_id_electrons), + pm.take(electron_bunch.y, p_id_electrons), + self.ion_beam.mean_x(), self.ion_beam.mean_y(), + self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) # Electric field of electrons - en_electrons_x, en_electrons_y = self.get_efieldn( - pm.take(self.ion_beam.x, p_id_ions), - pm.take(self.ion_beam.y, p_id_ions), - electron_bunch.mean_x(), electron_bunch.mean_y(), - electron_bunch.sigma_x(), electron_bunch.sigma_y() - ) + en_electrons_x, en_electrons_y = self.get_efieldn( + pm.take(self.ion_beam.x, p_id_ions), + pm.take(self.ion_beam.y, p_id_ions), + electron_bunch.mean_x(), electron_bunch.mean_y(), + electron_bunch.sigma_x(), electron_bunch.sigma_y() + ) + elif self.interaction_model == 'weak-strong': + en_ions_x, en_ions_y = self.get_efieldn( + electron_bunch.mean_x(), + electron_bunch.mean_y(), + self.ion_beam.mean_x(), self.ion_beam.mean_y(), + self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) +# Electric field of electrons + en_electrons_x, en_electrons_y = self.get_efieldn( + pm.take(self.ion_beam.x, p_id_ions), + pm.take(self.ion_beam.y, p_id_ions), + electron_bunch.mean_x(), electron_bunch.mean_y(), + electron_bunch.sigma_x(), electron_bunch.sigma_y() + ) + elif self.interaction_model == 'strong-strong': + en_ions_x, en_ions_y = self.get_efieldn( + electron_bunch.mean_x(), + electron_bunch.mean_y(), + self.ion_beam.mean_x(), self.ion_beam.mean_y(), + self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) +# Electric field of electrons + en_electrons_x, en_electrons_y = self.get_efieldn( + self.ion_beam.mean_x(), + self.ion_beam.mean_x(), + electron_bunch.mean_x(), electron_bunch.mean_y(), + electron_bunch.sigma_x(), electron_bunch.sigma_y() + ) + else: + pass kicks_electrons_x = en_ions_x * prefactor_kick_ion_field kicks_electrons_y = en_ions_y * prefactor_kick_ion_field kicks_ions_x = en_electrons_x * prefactor_kick_electron_field @@ -173,7 +230,6 @@ def track(self, electron_bunch): electron_bunch.xp, p_id_electrons) + kicks_electrons_x kicked_electrons_yp = pm.take( electron_bunch.yp, p_id_electrons) + kicks_electrons_y - # print(kicks_electrons_y) kicked_ions_xp = pm.take(self.ion_beam.xp, p_id_ions) + kicks_ions_x kicked_ions_yp = pm.take(self.ion_beam.yp, p_id_ions) + kicks_ions_y @@ -184,13 +240,12 @@ def track(self, electron_bunch): pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) # Drift for the ions in one bucket - drifted_ions_x = pm.take(self.ion_beam.xp, p_id_ions)*self.L_sep / \ - (self.ion_beam.mass*c)+pm.take(self.ion_beam.x, p_id_ions) - drifted_ions_y = pm.take(self.ion_beam.yp, p_id_ions)*self.L_sep / \ - (self.ion_beam.mass*c)+pm.take(self.ion_beam.y, p_id_ions) + drifted_ions_x = pm.take( + self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) + drifted_ions_y = pm.take( + self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) - self.ions_monitor.dump(self.ion_beam) def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): '''The charge-normalised electric field components of a From 8f1781987822558d802efbf4de81dc727e4869d0 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 11 Jan 2023 11:40:07 +0100 Subject: [PATCH 50/64] Only record on ion monitor if it exists --- PyHEADTAIL/ion_cloud/ion_cloud.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 0d2d1f3d..4b4fe3a7 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -162,7 +162,8 @@ def track(self, electron_bunch): self.ion_beam += new_particles else: self.ion_beam.intensity += ION_INTENSITY_PER_ELECTRON_BUNCH - self.ions_monitor.dump(self.ion_beam) + if self.ions_monitor is not None: + self.ions_monitor.dump(self.ion_beam) prefactor_kick_ion_field = -(self.ion_beam.intensity * self.ion_beam.charge*electron_bunch.charge / (electron_bunch.p0*electron_bunch.beta*c))*self.L_SEG/self.L_sep From d8a92d01330a0ca9a5abf9b31bdde4d144386f26 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Fri, 13 Jan 2023 09:40:22 +0100 Subject: [PATCH 51/64] use default values in __init__ --- PyHEADTAIL/ion_cloud/ion_cloud.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 4b4fe3a7..ec8d5fb7 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -28,7 +28,6 @@ def __init__(self, sig_check=True, interaction_model='weak-weak' ): self.ion_beam = None - self.dist = dist_ions self.dist_func_z = generators.uniform2D if self.dist == 'GS': self._efieldn = efields._efieldn_mit @@ -41,13 +40,7 @@ def __init__(self, sig_check=True, self.dist_func_y = generators.uniform2D else: print('Distribution given is not implemented') - self.interaction_model = interaction_model - self.set_aperture = set_aperture - self.L_sep = L_sep self.N_MACROPARTICLES = 30 - self.N_MACROPARTICLES_MAX = n_macroparticles_max - self.CIRCUMFERENCE = circumference - self.N_SEGMENTS = n_segments self.L_SEG = self.CIRCUMFERENCE/self.N_SEGMENTS if sig_check: self._efieldn = efields.add_sigma_check( @@ -55,7 +48,6 @@ def __init__(self, sig_check=True, self.n_g = 2.4e13 # (m**-3) self.sigma_i = 1.8e-22 # (m**2) self.A = 28 - self.n_steps = n_steps self.charge_state = 1 self.ion_beam = particles.Particles( macroparticlenumber=1, From 2f60b7d2adc9cb3356a6b1ffec97c78f89ca288e Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Sun, 15 Jan 2023 22:34:44 +0100 Subject: [PATCH 52/64] - added docstring - separated track into several subfunctions --- PyHEADTAIL/ion_cloud/ion_cloud.py | 248 +++++++++++++++++++----------- 1 file changed, 158 insertions(+), 90 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index ec8d5fb7..21cf325d 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -15,36 +15,62 @@ class BeamIonElement(Element): + ''' + It has various attributes and methods that allow to initialize the ion beam properties, + create an instance of `Particles` class which represent the ion beam, + create an instance of `BunchMonitor` or `ParticleMonitor` classes to monitor the ion beam, + and track the interaction between the electron bunch and the ion beam. + + Attributes: + ion_beam (Particles): An instance of `Particles` class that represents the ion beam + dist (str): The distribution of ions in the beam (default is 'GS') + dist_func_z (func): A function that generates the z distribution of ions + _efieldn (func): A function that generates the electric field of the electron bunch + sig_check (bool): A boolean to specify if sigma check for the electron field is activated + dist_func_x (func): A function that generates the x distribution of ions + dist_func_y (func): A function that generates the y distribution of ions + interaction_model (str): A string that sets the interaction model between the electron and the ion bunches + set_aperture (bool): A boolean to specify if the aperture should be set + L_sep (float): A scalar value that gives the distance between the electron and the ion bunches + N_MACROPARTICLES (int): The number of macroparticles in the ion beam + N_MACROPARTICLES_MAX (int): The maximum number of macroparticles in the ion beam + CIRCUMFERENCE (float): The circumference of the ion beam + N_SEGMENTS (int): The number of segments for the ion beam + L_SEG (float): The length of each segment of the ion beam + n_g (float): The residual gas density in the vacuum chamber + sigma_i (float): Ionization cross-section of ions + A (float): The mass number of the ions + n_steps (int): The number of tracking steps for the monitor + charge_state (int): The charge state of the ions + ions_monitor (Union[BunchMonitor, ParticleMonitor, None]): An instance of `BunchMonitor` or `ParticleMonitor` + classes that monitor the ion beam + ''' + def __init__(self, sig_check=True, dist_ions='GS', monitor_name=None, - particle_monitor=False, + use_particle_monitor=False, L_sep=0.85, n_macroparticles_max=int(1e3), set_aperture=True, n_segments=500, - circumference=354, + ring_circumference=354, n_steps=None, interaction_model='weak-weak' ): - self.ion_beam = None - self.dist_func_z = generators.uniform2D - if self.dist == 'GS': - self._efieldn = efields._efieldn_mit - self.sig_check = sig_check - self.dist_func_x = generators.gaussian2D_asymmetrical - self.dist_func_y = generators.gaussian2D_asymmetrical - elif self.dist == 'LN': - self._efieldn = efields._efieldn_linearized - self.dist_func_x = generators.uniform2D - self.dist_func_y = generators.uniform2D - else: - print('Distribution given is not implemented') + self.use_particle_monitor = use_particle_monitor + self.dist=dist_ions + self.monitor_name=monitor_name + self.L_sep = L_sep + self.N_MACROPARTICLES_MAX = n_macroparticles_max + self.set_aperture = set_aperture + self.n_segments = n_segments + self.ring_circumference = ring_circumference + self.n_steps = n_steps + self.interaction_model = interaction_model + self._set_distribution_for_particle_generation() self.N_MACROPARTICLES = 30 - self.L_SEG = self.CIRCUMFERENCE/self.N_SEGMENTS - if sig_check: - self._efieldn = efields.add_sigma_check( - self._efieldn, self.dist) + self.L_SEG = self.ring_circumference/self.n_segments self.n_g = 2.4e13 # (m**-3) self.sigma_i = 1.8e-22 # (m**2) self.A = 28 @@ -54,7 +80,7 @@ def __init__(self, sig_check=True, particlenumber_per_mp=1, charge=self.charge_state*e, mass=self.A*m_p, - circumference=self.CIRCUMFERENCE, + circumference=self.ring_circumference, gamma=1.0001, coords_n_momenta_dict={ 'x': [0, ], @@ -65,26 +91,113 @@ def __init__(self, sig_check=True, 'dp': [0, ] } ) - if particle_monitor: - self.particle_monitor = particle_monitor - self.ions_monitor = ParticleMonitor(monitor_name, - stride=1, - parameters_dict=None - ) - elif monitor_name is not None: - self.monitor_name = monitor_name - self.ions_monitor = BunchMonitor(monitor_name, - n_steps=self.n_steps, - parameters_dict=None, - write_buffer_every=50, - buffer_size=100, - ) + self._add_monitors() + + def _set_distribution_for_particle_generation(self): + self.dist_func_z = generators.uniform2D + if self.dist == 'GS': + self._efieldn = efields._efieldn_mit + self.dist_func_x = generators.gaussian2D_asymmetrical + self.dist_func_y = generators.gaussian2D_asymmetrical + elif self.dist == 'LN': + self._efieldn = efields._efieldn_linearized + self.dist_func_x = generators.uniform2D + self.dist_func_y = generators.uniform2D + else: + print('Distribution given is not implemented') + self._efieldn = efields.add_sigma_check( + self._efieldn, self.dist) + + def _add_monitors(self): + if self.monitor_name is not None: + if self.use_particle_monitor: + self.ions_monitor = ParticleMonitor(self.monitor_name, + stride=1, + parameters_dict=None + ) + else: + self.ions_monitor = BunchMonitor(self.monitor_name, + n_steps=self.n_steps, + parameters_dict=None, + write_buffer_every=50, + buffer_size=100, + ) else: self.ions_monitor = None def get_ion_beam(self): + """ + A method to access the ion beam object + """ return self.ion_beam + def clear_ions(self): + self.ion_beam = self.ion_beam = particles.Particles( + macroparticlenumber=1, + particlenumber_per_mp=1, + charge=self.charge_state*e, + mass=self.A*m_p, + circumference=self.ring_circumference, + gamma=1.0001, + coords_n_momenta_dict={ + 'x': [0, ], + 'xp': [0, ], + 'y': [0, ], + 'yp': [0, ], + 'z': [0, ], + 'dp': [0, ] + }) + def _generate_ions(self, electron_bunch): + assert (self.dist in ['LN', 'GS']), ( + 'The implementation for required distribution {:} is not found'.format(self.dist)) + if self.dist == 'LN': + a_x, b_x = -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x() + a_y, b_y = -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y() + elif self.dist == 'GS': + a_x, b_x = electron_bunch.sigma_x(), electron_bunch.sigma_xp() + a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() + new_particles = generators.ParticleGenerator( + macroparticlenumber=self.N_MACROPARTICLES//2, + intensity=self.ION_INTENSITY_PER_ELECTRON_BUNCH//2, + charge=self.charge_state*e, + gamma=1.0001, + mass=self.A*m_p, + circumference=self.ring_circumference, + distribution_x=self.dist_func_x(a_x, b_x), + distribution_y=self.dist_func_y(a_y, b_y), + distribution_z=self.dist_func_z( + 0, self.L_SEG), + limit_n_rms_x=3., + limit_n_rms_y=3., + printer=SilentPrinter() + ).generate() + new_particles_twin = particles.Particles( + macroparticlenumber=self.N_MACROPARTICLES//2, + particlenumber_per_mp=self.ION_INTENSITY_PER_ELECTRON_BUNCH/self.N_MACROPARTICLES, + charge=self.charge_state*e, + gamma=1.0001, + mass=self.A*m_p, + circumference=self.ring_circumference, + coords_n_momenta_dict={ + 'x': -new_particles.x, + 'xp': -new_particles.xp, + 'y': -new_particles.y, + 'yp': -new_particles.yp, + 'z': -new_particles.z, + 'dp': -new_particles.dp + }, + printer=SilentPrinter() + ) + new_particles += new_particles_twin + # Apply initial conditions + new_particles.x[:] += electron_bunch.mean_x() + new_particles.y[:] += electron_bunch.mean_y() + new_particles.xp[:] = 0 + new_particles.yp[:] = 0 + self.ion_beam += new_particles + self.ions_aperture = aperture.EllipticalApertureXY( + x_aper=5*electron_bunch.sigma_x(), + y_aper=5*electron_bunch.sigma_y()) def track(self, electron_bunch): '''Tracking method to track an interaction between an electron bunch and an ion beam (2D electromagnetic field). @@ -96,80 +209,35 @@ def track(self, electron_bunch): Tian, S. K.; Wang, N. (2018). Ion instability in the HEPS storage ring. FLS 2018 - Proceedings of the 60th ICFA Advanced Beam Dynamics Workshop on Future Light Sources, 34–38. https://doi.org/10.18429/JACoW-FLS2018-TUA2WB04 - ''' - ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ + ''' + self.ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG self.N_MACROPARTICLES = 50 # int(ION_INTENSITY_PER_ELECTRON_BUNCH) assert (self.dist in ['LN', 'GS']), ( 'The implementation for required distribution {:} is not found'.format(self.dist)) - if self.dist == 'LN': - a_x, b_x = -2*electron_bunch.sigma_x(), 2*electron_bunch.sigma_x() - a_y, b_y = -2*electron_bunch.sigma_y(), 2*electron_bunch.sigma_y() - elif self.dist == 'GS': - a_x, b_x = electron_bunch.sigma_x(), electron_bunch.sigma_xp() - a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() ''' Particles are generated in pairs -x, -y and +x, +y to avoid numerical noise. The idea came from Blaskiewicz, M. (2019) https://doi.org/10.18429/JACoW-NAPAC2019-TUPLM11 ''' if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: - new_particles = generators.ParticleGenerator( - macroparticlenumber=self.N_MACROPARTICLES//2, - intensity=ION_INTENSITY_PER_ELECTRON_BUNCH//2, - charge=self.charge_state*e, - gamma=1.0001, - mass=self.A*m_p, - circumference=self.CIRCUMFERENCE, - distribution_x=self.dist_func_x(a_x, b_x), - distribution_y=self.dist_func_y(a_y, b_y), - distribution_z=self.dist_func_z( - 0, self.L_SEG), - limit_n_rms_x=3., - limit_n_rms_y=3., - printer=SilentPrinter() - ).generate() - new_particles_twin = particles.Particles( - macroparticlenumber=self.N_MACROPARTICLES//2, - particlenumber_per_mp=ION_INTENSITY_PER_ELECTRON_BUNCH/self.N_MACROPARTICLES, - charge=self.charge_state*e, - gamma=1.0001, - mass=self.A*m_p, - circumference=self.CIRCUMFERENCE, - coords_n_momenta_dict={ - 'x': -new_particles.x, - 'xp': -new_particles.xp, - 'y': -new_particles.y, - 'yp': -new_particles.yp, - 'z': -new_particles.z, - 'dp': -new_particles.dp - }, - printer=SilentPrinter() - ) - new_particles += new_particles_twin - # Initial conditions - new_particles.x[:] += electron_bunch.mean_x() - new_particles.y[:] += electron_bunch.mean_y() - new_particles.xp[:] = 0 - new_particles.yp[:] = 0 - self.ion_beam += new_particles + self._generate_ions(electron_bunch) + else: + self.ion_beam.intensity += self.ION_INTENSITY_PER_ELECTRON_BUNCH + + if self.set_aperture == True: + self.ions_aperture.track(self.ion_beam) else: - self.ion_beam.intensity += ION_INTENSITY_PER_ELECTRON_BUNCH + pass + if self.ions_monitor is not None: self.ions_monitor.dump(self.ion_beam) + prefactor_kick_ion_field = -(self.ion_beam.intensity * self.ion_beam.charge*electron_bunch.charge / (electron_bunch.p0*electron_bunch.beta*c))*self.L_SEG/self.L_sep prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge*self.ion_beam.charge / (self.ion_beam.mass*c**2)) - # Clearing ions that are far away - apt_xy = aperture.EllipticalApertureXY( - x_aper=5*electron_bunch.sigma_x(), - y_aper=5*electron_bunch.sigma_y()) - if self.set_aperture == True: - apt_xy.track(self.ion_beam) - else: - pass p_id_electrons = electron_bunch.id-1 p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) From 05061ecd1423ada709482912b854e47ad765f697 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 17 Jan 2023 22:44:10 +0100 Subject: [PATCH 53/64] - added PIC solver as an option - track is separated into - track ions in a drift - beam-ion interaction --- PyHEADTAIL/ion_cloud/ion_cloud.py | 130 ++++++++++++++++-------------- 1 file changed, 71 insertions(+), 59 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 21cf325d..dc3dfd4d 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -7,6 +7,9 @@ from PyHEADTAIL.particles import particles, generators from scipy.constants import m_p, e, c from numpy import linspace, int64 +import PyPIC.geom_impact_ellip as ell +import PyPIC.FFT_OpenBoundary as PIC_FFT + H_RF = 416 CIRCUMFERENCE = 354 @@ -59,8 +62,8 @@ def __init__(self, sig_check=True, interaction_model='weak-weak' ): self.use_particle_monitor = use_particle_monitor - self.dist=dist_ions - self.monitor_name=monitor_name + self.dist = dist_ions + self.monitor_name = monitor_name self.L_sep = L_sep self.N_MACROPARTICLES_MAX = n_macroparticles_max self.set_aperture = set_aperture @@ -130,6 +133,7 @@ def get_ion_beam(self): A method to access the ion beam object """ return self.ion_beam + def clear_ions(self): self.ion_beam = self.ion_beam = particles.Particles( macroparticlenumber=1, @@ -148,6 +152,10 @@ def clear_ions(self): }) def _generate_ions(self, electron_bunch): + ''' + Particles are generated in pairs -x, -y and +x, +y to avoid numerical noise. + The idea came from Blaskiewicz, M. (2019) https://doi.org/10.18429/JACoW-NAPAC2019-TUPLM11 + ''' assert (self.dist in ['LN', 'GS']), ( 'The implementation for required distribution {:} is not found'.format(self.dist)) if self.dist == 'LN': @@ -198,6 +206,50 @@ def _generate_ions(self, electron_bunch): self.ions_aperture = aperture.EllipticalApertureXY( x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) + + def track_ions_in_drift(self, p_id_ions): + drifted_ions_x = pm.take( + self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) + drifted_ions_y = pm.take( + self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) + pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) + pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + + def get_updated_ion_positions(self, electron_bunch): + pass + + def _get_efields(self, first_beam, second_beam, p_id_first_beam, interaction_model='weak'): + assert (interaction_model in ['weak', 'strong', 'PIC']), (( + 'The implementation for required beam-ion interaction model {:} is not implemented'.format(self, interaction_model))) + if interaction_model == 'weak': + en_x, en_y = self.get_efieldn( + pm.take(first_beam.x, p_id_first_beam), + pm.take(first_beam.y, p_id_first_beam), + second_beam.mean_x(), second_beam.mean_y(), + second_beam.sigma_x(), second_beam.sigma_y()) + elif interaction_model == 'strong': + en_x, en_y = self.get_efieldn( + first_beam.mean_x(), + first_beam.mean_y(), + second_beam.mean_x(), second_beam.mean_y(), + second_beam.sigma_x(), second_beam.sigma_y()) + if interaction_model == 'PIC': + qe = 1.602176565e-19 + eps0 = 8.8541878176e-12 + Dx = 0.1*second_beam.sigma_x() + Dy = 0.1*second_beam.sigma_y() + x_aper = 10*second_beam.sigma_x() + y_aper = 10*second_beam.sigma_y() + chamber = ell.ellip_cham_geom_object(x_aper=x_aper, y_aper=y_aper) + picFFT = PIC_FFT.FFT_OpenBoundary( + x_aper=chamber.x_aper, y_aper=chamber.y_aper, dx=Dx, dy=Dy, fftlib='pyfftw') + nel_part = 0*second_beam.x+1. + picFFT.scatter(second_beam.x, second_beam.y, nel_part) + picFFT.solve() + en_x, en_y = picFFT.gather( + first_beam.x, first_beam.y)/second_beam.x.shape[0] + return en_x, en_y + def track(self, electron_bunch): '''Tracking method to track an interaction between an electron bunch and an ion beam (2D electromagnetic field). @@ -212,13 +264,7 @@ def track(self, electron_bunch): ''' self.ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG - self.N_MACROPARTICLES = 50 # int(ION_INTENSITY_PER_ELECTRON_BUNCH) - assert (self.dist in ['LN', 'GS']), ( - 'The implementation for required distribution {:} is not found'.format(self.dist)) - ''' - Particles are generated in pairs -x, -y and +x, +y to avoid numerical noise. - The idea came from Blaskiewicz, M. (2019) https://doi.org/10.18429/JACoW-NAPAC2019-TUPLM11 - ''' + if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: self._generate_ions(electron_bunch) else: @@ -226,8 +272,6 @@ def track(self, electron_bunch): if self.set_aperture == True: self.ions_aperture.track(self.ion_beam) - else: - pass if self.ions_monitor is not None: self.ions_monitor.dump(self.ion_beam) @@ -241,48 +285,15 @@ def track(self, electron_bunch): p_id_electrons = electron_bunch.id-1 p_id_ions = linspace( 0, self.ion_beam.y.shape[0]-1, self.ion_beam.y.shape[0], dtype=int64) -# Electric field of ions - if self.interaction_model == 'weak-weak': - en_ions_x, en_ions_y = self.get_efieldn( - pm.take(electron_bunch.x, p_id_electrons), - pm.take(electron_bunch.y, p_id_electrons), - self.ion_beam.mean_x(), self.ion_beam.mean_y(), - self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) -# Electric field of electrons - en_electrons_x, en_electrons_y = self.get_efieldn( - pm.take(self.ion_beam.x, p_id_ions), - pm.take(self.ion_beam.y, p_id_ions), - electron_bunch.mean_x(), electron_bunch.mean_y(), - electron_bunch.sigma_x(), electron_bunch.sigma_y() - ) - elif self.interaction_model == 'weak-strong': - en_ions_x, en_ions_y = self.get_efieldn( - electron_bunch.mean_x(), - electron_bunch.mean_y(), - self.ion_beam.mean_x(), self.ion_beam.mean_y(), - self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) -# Electric field of electrons - en_electrons_x, en_electrons_y = self.get_efieldn( - pm.take(self.ion_beam.x, p_id_ions), - pm.take(self.ion_beam.y, p_id_ions), - electron_bunch.mean_x(), electron_bunch.mean_y(), - electron_bunch.sigma_x(), electron_bunch.sigma_y() - ) - elif self.interaction_model == 'strong-strong': - en_ions_x, en_ions_y = self.get_efieldn( - electron_bunch.mean_x(), - electron_bunch.mean_y(), - self.ion_beam.mean_x(), self.ion_beam.mean_y(), - self.ion_beam.sigma_x(), self.ion_beam.sigma_y()) -# Electric field of electrons - en_electrons_x, en_electrons_y = self.get_efieldn( - self.ion_beam.mean_x(), - self.ion_beam.mean_x(), - electron_bunch.mean_x(), electron_bunch.mean_y(), - electron_bunch.sigma_x(), electron_bunch.sigma_y() - ) - else: - pass + en_ions_x, en_ions_y = self._get_efields(first_beam=electron_bunch, + second_beam=self.ion_beam, + p_id_first_beam=p_id_electrons, + interaction_model='weak') + en_electrons_x, en_electrons_y = self._get_efields(first_beam=self.ion_beam, + second_beam=electron_bunch, + p_id_first_beam=p_id_ions, + interaction_model='weak') + kicks_electrons_x = en_ions_x * prefactor_kick_ion_field kicks_electrons_y = en_ions_y * prefactor_kick_ion_field kicks_ions_x = en_electrons_x * prefactor_kick_electron_field @@ -301,12 +312,13 @@ def track(self, electron_bunch): pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) # Drift for the ions in one bucket - drifted_ions_x = pm.take( - self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) - drifted_ions_y = pm.take( - self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) - pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) - pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + # drifted_ions_x = pm.take( + # self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) + # drifted_ions_y = pm.take( + # self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) + # pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) + # pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + self.track_ions_in_drift(p_id_ions) def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): '''The charge-normalised electric field components of a From 3cd36567a407fc147a4e42aeeebb96fee88e0b5b Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Tue, 17 Jan 2023 23:19:55 +0100 Subject: [PATCH 54/64] - fixed self.L_SEG improper doubling --- PyHEADTAIL/ion_cloud/ion_cloud.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index dc3dfd4d..d34dfce3 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -174,7 +174,7 @@ def _generate_ions(self, electron_bunch): distribution_x=self.dist_func_x(a_x, b_x), distribution_y=self.dist_func_y(a_y, b_y), distribution_z=self.dist_func_z( - 0, self.L_SEG), + -self.L_SEG/2, self.L_SEG/2), limit_n_rms_x=3., limit_n_rms_y=3., printer=SilentPrinter() @@ -278,7 +278,7 @@ def track(self, electron_bunch): prefactor_kick_ion_field = -(self.ion_beam.intensity * self.ion_beam.charge*electron_bunch.charge / - (electron_bunch.p0*electron_bunch.beta*c))*self.L_SEG/self.L_sep + (electron_bunch.p0*electron_bunch.beta*c)) prefactor_kick_electron_field = -(electron_bunch.intensity * electron_bunch.charge*self.ion_beam.charge / (self.ion_beam.mass*c**2)) From 1eaee2632765c1e81a805f54ff1a30373aa7039a Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 6 Feb 2023 16:38:06 +0100 Subject: [PATCH 55/64] Separate models 'PIC' and 'weak' typo in clear_ions() --- PyHEADTAIL/ion_cloud/ion_cloud.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index d34dfce3..e215b5d0 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -135,7 +135,7 @@ def get_ion_beam(self): return self.ion_beam def clear_ions(self): - self.ion_beam = self.ion_beam = particles.Particles( + self.ion_beam = particles.Particles( macroparticlenumber=1, particlenumber_per_mp=1, charge=self.charge_state*e, @@ -247,7 +247,10 @@ def _get_efields(self, first_beam, second_beam, p_id_first_beam, interaction_mod picFFT.scatter(second_beam.x, second_beam.y, nel_part) picFFT.solve() en_x, en_y = picFFT.gather( - first_beam.x, first_beam.y)/second_beam.x.shape[0] + first_beam.x, first_beam.y) + en_x /= second_beam.x.shape[0] + en_y /= second_beam.x.shape[0] + return en_x, en_y def track(self, electron_bunch): @@ -288,11 +291,17 @@ def track(self, electron_bunch): en_ions_x, en_ions_y = self._get_efields(first_beam=electron_bunch, second_beam=self.ion_beam, p_id_first_beam=p_id_electrons, - interaction_model='weak') - en_electrons_x, en_electrons_y = self._get_efields(first_beam=self.ion_beam, - second_beam=electron_bunch, - p_id_first_beam=p_id_ions, - interaction_model='weak') + interaction_model='strong') + if self.interaction_model == 'PIC': + en_electrons_x, en_electrons_y = self._get_efields(first_beam=self.ion_beam, + second_beam=electron_bunch, + p_id_first_beam=p_id_ions, + interaction_model='PIC') + else: + en_electrons_x, en_electrons_y = self._get_efields(first_beam=self.ion_beam, + second_beam=electron_bunch, + p_id_first_beam=p_id_ions, + interaction_model='weak') kicks_electrons_x = en_ions_x * prefactor_kick_ion_field kicks_electrons_y = en_ions_y * prefactor_kick_ion_field From 32bfc3d0a057e87bbffbe9e6f98f09ff40293666 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 13 Feb 2023 09:46:03 +0100 Subject: [PATCH 56/64] deleted old code --- PyHEADTAIL/ion_cloud/ion_cloud.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index e215b5d0..5e51ed93 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -278,7 +278,6 @@ def track(self, electron_bunch): if self.ions_monitor is not None: self.ions_monitor.dump(self.ion_beam) - prefactor_kick_ion_field = -(self.ion_beam.intensity * self.ion_beam.charge*electron_bunch.charge / (electron_bunch.p0*electron_bunch.beta*c)) @@ -311,7 +310,6 @@ def track(self, electron_bunch): electron_bunch.xp, p_id_electrons) + kicks_electrons_x kicked_electrons_yp = pm.take( electron_bunch.yp, p_id_electrons) + kicks_electrons_y - kicked_ions_xp = pm.take(self.ion_beam.xp, p_id_ions) + kicks_ions_x kicked_ions_yp = pm.take(self.ion_beam.yp, p_id_ions) + kicks_ions_y @@ -320,13 +318,7 @@ def track(self, electron_bunch): pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) - # Drift for the ions in one bucket - # drifted_ions_x = pm.take( - # self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) - # drifted_ions_y = pm.take( - # self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) - # pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) - # pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) + self.track_ions_in_drift(p_id_ions) def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): From 160bb4c413d7358fdec641fb77187bcd612dfffc Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 6 Mar 2023 16:23:30 +0100 Subject: [PATCH 57/64] bug fix - PIC solver electric fields are now normalised by total electric charge - previously it was only a number of particles --- PyHEADTAIL/ion_cloud/ion_cloud.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 5e51ed93..92cea160 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -248,9 +248,8 @@ def _get_efields(self, first_beam, second_beam, p_id_first_beam, interaction_mod picFFT.solve() en_x, en_y = picFFT.gather( first_beam.x, first_beam.y) - en_x /= second_beam.x.shape[0] - en_y /= second_beam.x.shape[0] - + en_x /= qe*second_beam.x.shape[0] + en_y /= qe*second_beam.x.shape[0] return en_x, en_y def track(self, electron_bunch): From c2e43b37e2763fda9a31a021f2607d7db3081e8d Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Sun, 2 Apr 2023 19:37:48 +0200 Subject: [PATCH 58/64] -separate interaction models --- PyHEADTAIL/ion_cloud/ion_cloud.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index d34dfce3..07a4df36 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -54,12 +54,13 @@ def __init__(self, sig_check=True, monitor_name=None, use_particle_monitor=False, L_sep=0.85, - n_macroparticles_max=int(1e3), + n_macroparticles_max=int(2e4), set_aperture=True, n_segments=500, ring_circumference=354, n_steps=None, - interaction_model='weak-weak' + interaction_model='weak', + interaction_model_ions='strong' ): self.use_particle_monitor = use_particle_monitor self.dist = dist_ions @@ -71,6 +72,7 @@ def __init__(self, sig_check=True, self.ring_circumference = ring_circumference self.n_steps = n_steps self.interaction_model = interaction_model + self.interaction_model_ions = interaction_model_ions self._set_distribution_for_particle_generation() self.N_MACROPARTICLES = 30 self.L_SEG = self.ring_circumference/self.n_segments @@ -247,9 +249,9 @@ def _get_efields(self, first_beam, second_beam, p_id_first_beam, interaction_mod picFFT.scatter(second_beam.x, second_beam.y, nel_part) picFFT.solve() en_x, en_y = picFFT.gather( - first_beam.x, first_beam.y)/second_beam.x.shape[0] + first_beam.x, first_beam.y) + en_x, en_y = en_x/second_beam.x.shape[0], en_y/second_beam.x.shape[0] return en_x, en_y - def track(self, electron_bunch): '''Tracking method to track an interaction between an electron bunch and an ion beam (2D electromagnetic field). @@ -288,7 +290,7 @@ def track(self, electron_bunch): en_ions_x, en_ions_y = self._get_efields(first_beam=electron_bunch, second_beam=self.ion_beam, p_id_first_beam=p_id_electrons, - interaction_model='weak') + interaction_model='strong') en_electrons_x, en_electrons_y = self._get_efields(first_beam=self.ion_beam, second_beam=electron_bunch, p_id_first_beam=p_id_ions, @@ -311,13 +313,6 @@ def track(self, electron_bunch): pm.put(self.ion_beam.xp, p_id_ions, kicked_ions_xp) pm.put(self.ion_beam.yp, p_id_ions, kicked_ions_yp) - # Drift for the ions in one bucket - # drifted_ions_x = pm.take( - # self.ion_beam.xp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.x, p_id_ions) - # drifted_ions_y = pm.take( - # self.ion_beam.yp, p_id_ions)*self.L_sep + pm.take(self.ion_beam.y, p_id_ions) - # pm.put(self.ion_beam.x, p_id_ions, drifted_ions_x) - # pm.put(self.ion_beam.y, p_id_ions, drifted_ions_y) self.track_ions_in_drift(p_id_ions) def get_efieldn(self, xr, yr, mean_x, mean_y, sig_x, sig_y): From 260a626659222965e49e96d65c33db8c6225e745 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 24 Apr 2023 15:26:56 +0200 Subject: [PATCH 59/64] added a detuner implementation for pulsed lens classes: -PulsedLensDetuner(DetunerCollection) - PulsedLensSegmentDetuner(object) --- PyHEADTAIL/elens/elens.py | 40 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 36d90408..6b66abe8 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -10,13 +10,51 @@ from scipy.constants import c, m_e, e, pi from scipy.interpolate import splrep, splev from scipy.integrate import quad -from scipy.special import i0, i1 +from scipy.special import i0e, i1e, i0, i1, ive from functools import wraps from PyHEADTAIL.general import pmath as pm from PyHEADTAIL.field_maps import efields_funcs as efields from PyHEADTAIL.trackers.detuners import DetunerCollection +class PulsedLensDetuner(DetunerCollection): + def __init__(self, dQmax, sigma_ratio, beta_z, static, dynamic): + self.dQmax = dQmax + self.segment_detuners = [] + self.sigma_ratio = sigma_ratio + self.beta_z = beta_z + self.static = static + self.dynamic = dynamic + def generate_segment_detuner(self, dmu_x, dmu_y, **kwargs): + dapp_xz = self.dQmax + dapp_yz = self.dQmax + dapp_xz *= dmu_x + dapp_yz *= dmu_y + detuner = PulsedLensSegmentDetuner( + dapp_xz, dapp_yz, self.sigma_ratio, self.beta_z, self.static, self.dynamic) + self.segment_detuners.append(detuner) + + +class PulsedLensSegmentDetuner(object): + def __init__(self, dapp_xz, dapp_yz, sigma_ratio, beta_z, static, dynamic): + self.dapp_xz = dapp_xz + self.dapp_yz = dapp_yz + self.sigma_ratio = sigma_ratio + self.beta_z = beta_z + self.static = static + self.dynamic = dynamic + + def detune(self, beam): + J_z = (beam.z**2+(beam.dp*self.beta_z)**2)/(2*self.beta_z) + phi_z = np.arctan2(beam.dp*self.beta_z, beam.z) + eps_z = beam.sigma_z()**2/self.beta_z + arg = 0.5*J_z/eps_z*self.sigma_ratio + bessel_term_Z_static = i0e(arg) + bessel_term_Z_dynamic = np.sin(2*phi_z)*ive(2, arg)+np.sin(4*phi_z)*ive(4, arg)+np.sin(6*phi_z)*ive(6, arg)+np.sin(8*phi_z)*ive(8, arg)+np.sin(10*phi_z)*ive(10, arg) + dQx = self.dapp_xz*(bessel_term_Z_static*self.static+2*bessel_term_Z_dynamic*self.dynamic) + dQy = self.dapp_yz*(bessel_term_Z_static*self.static+2*bessel_term_Z_dynamic*self.dynamic) + return dQx, dQy + class ElectronLensDetuner(DetunerCollection): def __init__(self, dQmax, r, beta_x, beta_y): From c3be59ebfff20e4a378324fef97b1062b4dafa22 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 12 Jul 2023 17:12:15 +0200 Subject: [PATCH 60/64] changed sin to cos in the elens detuner model --- PyHEADTAIL/elens/elens.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyHEADTAIL/elens/elens.py b/PyHEADTAIL/elens/elens.py index 6b66abe8..9ccf2534 100644 --- a/PyHEADTAIL/elens/elens.py +++ b/PyHEADTAIL/elens/elens.py @@ -50,7 +50,7 @@ def detune(self, beam): eps_z = beam.sigma_z()**2/self.beta_z arg = 0.5*J_z/eps_z*self.sigma_ratio bessel_term_Z_static = i0e(arg) - bessel_term_Z_dynamic = np.sin(2*phi_z)*ive(2, arg)+np.sin(4*phi_z)*ive(4, arg)+np.sin(6*phi_z)*ive(6, arg)+np.sin(8*phi_z)*ive(8, arg)+np.sin(10*phi_z)*ive(10, arg) + bessel_term_Z_dynamic = np.cos(2*phi_z)*ive(2, arg)+np.cos(4*phi_z)*ive(4, arg)+np.cos(6*phi_z)*ive(6, arg)+np.cos(8*phi_z)*ive(8, arg)+np.cos(10*phi_z)*ive(10, arg) dQx = self.dapp_xz*(bessel_term_Z_static*self.static+2*bessel_term_Z_dynamic*self.dynamic) dQy = self.dapp_yz*(bessel_term_Z_static*self.static+2*bessel_term_Z_dynamic*self.dynamic) return dQx, dQy From 4c6a83be331016c023a01c88190086efdabd0f30 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 12 Jul 2023 17:12:55 +0200 Subject: [PATCH 61/64] max limit on the number of ion macroparticles is now removed --- PyHEADTAIL/ion_cloud/ion_cloud.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 692d9c08..50db0f72 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -268,10 +268,11 @@ def track(self, electron_bunch): self.ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG - if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: - self._generate_ions(electron_bunch) - else: - self.ion_beam.intensity += self.ION_INTENSITY_PER_ELECTRON_BUNCH + self._generate_ions(electron_bunch) + # if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: + # self._generate_ions(electron_bunch) + # else: + # self.ion_beam.intensity += self.ION_INTENSITY_PER_ELECTRON_BUNCH if self.set_aperture == True: self.ions_aperture.track(self.ion_beam) From b2cffccac751143a55315215987706d2ce35c00d Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Sun, 20 Aug 2023 01:22:20 +0200 Subject: [PATCH 62/64] added vacuum pressure to ion_cloud element --- PyHEADTAIL/ion_cloud/ion_cloud.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 50db0f72..3ab5ac7b 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -60,7 +60,8 @@ def __init__(self, sig_check=True, ring_circumference=354, n_steps=None, interaction_model='weak', - interaction_model_ions='strong' + interaction_model_ions='strong', + n_g = 2.4e13, ): self.use_particle_monitor = use_particle_monitor self.dist = dist_ions @@ -76,7 +77,7 @@ def __init__(self, sig_check=True, self._set_distribution_for_particle_generation() self.N_MACROPARTICLES = 30 self.L_SEG = self.ring_circumference/self.n_segments - self.n_g = 2.4e13 # (m**-3) + self.n_g = n_g#2.4e13 # (m**-3) self.sigma_i = 1.8e-22 # (m**2) self.A = 28 self.charge_state = 1 From 449b34eb1c9bd7f0d7ec81c3da55745f345b344a Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Wed, 13 Sep 2023 22:17:01 +0200 Subject: [PATCH 63/64] corrected a bug in ion generation and charge per macroparticle --- PyHEADTAIL/ion_cloud/ion_cloud.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 3ab5ac7b..0ea632ea 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -154,7 +154,7 @@ def clear_ions(self): 'dp': [0, ] }) - def _generate_ions(self, electron_bunch): + def _generate_ions(self, electron_bunch, ion_intensity): ''' Particles are generated in pairs -x, -y and +x, +y to avoid numerical noise. The idea came from Blaskiewicz, M. (2019) https://doi.org/10.18429/JACoW-NAPAC2019-TUPLM11 @@ -169,7 +169,7 @@ def _generate_ions(self, electron_bunch): a_y, b_y = electron_bunch.sigma_y(), electron_bunch.sigma_yp() new_particles = generators.ParticleGenerator( macroparticlenumber=self.N_MACROPARTICLES//2, - intensity=self.ION_INTENSITY_PER_ELECTRON_BUNCH//2, + intensity=int(ion_intensity)//2, charge=self.charge_state*e, gamma=1.0001, mass=self.A*m_p, @@ -184,7 +184,7 @@ def _generate_ions(self, electron_bunch): ).generate() new_particles_twin = particles.Particles( macroparticlenumber=self.N_MACROPARTICLES//2, - particlenumber_per_mp=self.ION_INTENSITY_PER_ELECTRON_BUNCH/self.N_MACROPARTICLES, + particlenumber_per_mp=ion_intensity/self.N_MACROPARTICLES, charge=self.charge_state*e, gamma=1.0001, mass=self.A*m_p, @@ -206,6 +206,7 @@ def _generate_ions(self, electron_bunch): new_particles.xp[:] = 0 new_particles.yp[:] = 0 self.ion_beam += new_particles + self.ion_beam.particlenumber_per_mp = new_particles.particlenumber_per_mp self.ions_aperture = aperture.EllipticalApertureXY( x_aper=5*electron_bunch.sigma_x(), y_aper=5*electron_bunch.sigma_y()) @@ -268,8 +269,7 @@ def track(self, electron_bunch): ''' self.ION_INTENSITY_PER_ELECTRON_BUNCH = electron_bunch.intensity * \ self.sigma_i*self.n_g*self.L_SEG - - self._generate_ions(electron_bunch) + self._generate_ions(electron_bunch, ion_intensity=self.ION_INTENSITY_PER_ELECTRON_BUNCH) # if self.ion_beam.macroparticlenumber < self.N_MACROPARTICLES_MAX: # self._generate_ions(electron_bunch) # else: From 746dc43b445f5b09a0258cd8544cbd71c1b34b05 Mon Sep 17 00:00:00 2001 From: gubaidulinvadim Date: Mon, 16 Oct 2023 15:44:19 +0200 Subject: [PATCH 64/64] feat: added ion mass, cross-section and density to the __init__ --- PyHEADTAIL/ion_cloud/ion_cloud.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PyHEADTAIL/ion_cloud/ion_cloud.py b/PyHEADTAIL/ion_cloud/ion_cloud.py index 0ea632ea..d80fa712 100644 --- a/PyHEADTAIL/ion_cloud/ion_cloud.py +++ b/PyHEADTAIL/ion_cloud/ion_cloud.py @@ -61,7 +61,9 @@ def __init__(self, sig_check=True, n_steps=None, interaction_model='weak', interaction_model_ions='strong', - n_g = 2.4e13, + n_g = 3.9e12, + A = 28, + sigma_i = 1.78e-22, ): self.use_particle_monitor = use_particle_monitor self.dist = dist_ions @@ -77,9 +79,9 @@ def __init__(self, sig_check=True, self._set_distribution_for_particle_generation() self.N_MACROPARTICLES = 30 self.L_SEG = self.ring_circumference/self.n_segments - self.n_g = n_g#2.4e13 # (m**-3) - self.sigma_i = 1.8e-22 # (m**2) - self.A = 28 + self.n_g = n_g #value from old simulations 2.4e13 # (m**-3) + self.sigma_i = sigma_i # (m**2) + self.A = A self.charge_state = 1 self.ion_beam = particles.Particles( macroparticlenumber=1,