BLonD code development meeting
→
Europe/Zurich
CERN
CERN
Video conferencing only
AOB
- Juan will rework the Induced voltage section of the paper
- Postponing the submission by 3-4 weeks
- We'll get back to it in our next meeting
Markus: Induced voltage with uneven sampling
- Motivation: bunch-to-bunch distance >> bunch length, @ KARA (e-ring): 2 ps bunches, 2 ns bunch spacing
- Uniform binning becomes challenging
- BLonD non-uniform sampling:
- InducedVoltageResonator - only resonators
- InducedVoltageSparse - based on sparse profile object
- Sparse induced voltage - can take as input non-uniformly sampled data points; scales as N^2 (not N log(N))
- Algorithm: calculate Fourier transform of bunch profile from linear interpolation
- Evaluate integrand of impedance x F(bunch profile)
- Induced voltage: wake matrix x (difference in bunch profile from one cell to another)
- Using a uniform binning, is equivalent to the usual time-domain method
- Testing for SPS LHC-like beams
- Bug in c++ implementation of sparse profile -> pull request
- Comparing analytic - uniform - sparse: all agree
- For one turn, similar runtime results for SPS, for 2 bunches (but spectral calculation is expensive, also some zero padding)
- To be evaluated with more bunches...
- Still some bug fixing on-going
- If good other alternatives (Mihaly, Ivan), will maybe not work on it too much
- Bug fix to be done
- From non-uniform frequencies -> linear interpolation to find right frequency
- Could use spline, but not always the best for oscillating cases
- Ivan: N. Mounet mentions that one can use log-scale for frequency sampling
- Adaptive sampling would be very useful for Ivan -> should be made robust
Mihaly: Fast Fourier and Z-transforms with (almost) arbitrary sampling
- Non-uniform DFT
- DFT on non-uniform data (type 1)
- DFT w/ non-uniform freq spacing (type 2)
- Both (type 3)
- NUDFTs can be expressed as z-transforms (n log(n))
- Linear z-transform - > LTI-systems etc
- Circular -> Fourier transform
- Padding to proper length, algorithms are equivalent
- Chirp transform algorithm (CTA)
- uniform frequency spacing on unit circle in polar space
- Shift input data with a given frequency and multiply by a chirp modulation
- Apply a circular convolution and a chirp demodulation
- Example with windowed signal: DFT only gives one frequency, but chirp transform reflects also the window
- Usage: shorten input, zoom in on a given spectrum, fixed impulse response (CCD sensors)
- Computed usually with fast convolution
- Chirp z-transform (CZT)
- Going off the unit circle with a spiral (systems with poles)
- "Radial gain" with "tangential binning"
- Fast inverse transform has been developed
- Python implementations have their problems
- Some script implementations but they are buggy
- Could potentially gain with these types of algorithms
- Can add flexibility to the DFT with CTA and CZT
- Potential applications:
- Spectral/mode analysis
- Potential gain for the induced voltage calculation
- Next step: check Markus' example in terms of performance
- Helga: check also whether C++ implementations are available
Ivan: Follow-up on compressed convolution
- Motivation: speed up simulations with large bunch-by-bunch gaps
- Compressed wake calculation in PyHEADTAIL
- Slice only profile on the window that is interesting
- We get correct results in the region where the bunches sit (not in the gaps)
- Extension of InducedVoltageTime -> with dictionary (replace with object)
- Example: compressed wake, SPS flat bottom, 200b, 100 ns spacing (ions)
- Full convolution and compressed convolution give the same result
- Circular convolution gives artefacts for the first bunches, but ok for later bunches
- Performance test with 50 turns
- x6 speed-up w.r.t. full convolution
- x3 speed-up w.r.t. frequency domain
- reducing the window further, can easily gain another factor 2
- masks the profile for now (full profile used!), but could try with sparse profile
- Windowing flexible
- Relative error very small, Simon: in dynamic case, could cause problems
- Also slip stacking should work
- Theo: how quickly would you have to adapt the windows? losing some speed-up, but x5 instead of x6
- PS application (Alex)
- combine with multi-turn wake for half-full ring (skip half a ring) -> paralleled even in
- how do we make sure different implementations are ok on code design level
- PS end-to-end simulations to be presented
- Danilo: does it work the same for all types of impedances?
- in principle, for resonant and impedance table, yes
- doesn't have to be integer no
- First version, to be merged
- Small unittest to be added
Globally, need to review code design for different methods
There are minutes attached to this event.
Show them.