BLonD code development meeting

Europe/Zurich
CERN

CERN

Video conferencing only
Zoom Meeting ID
93916228605
Host
Helga Timko
Useful links
Join via phone
Zoom URL

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.