Bunched and Coasting Beams
This section in short
To simulate coasting beams, set bunched=False
when calling the growth_rates
method and stop caring about the bunch_length
argument. Two cases appear:
With
BjorkenMtingwaIBS
analytical expressions are adapted, leading to correct results.With
NagaitsevIBS
an approximation is made using as bunch length \(C / 2 \pi\) and a deviation to correct results might be observed. A warning will be logged to the user.
It is possible in xibs
to obtain analytical IBS growth rates for simulations dealing with coasting beams.
The functionality is implemented in both analytical classes, BjorkenMtingwaIBS
and NagaitsevIBS
, though in the latter an approximation is made and resulting values should be expected to deviate from the correct ones.
The growth_rates
in both classes method provides a bunched
boolean argument, which defaults to True
, corresponding to a bunched beam case.
To adapt the growth rates calculation for a coasting beam, one simply has to set this argument to False
:
# Let's assume your beam and optics parameters have been instantiated
IBS = xibs.analytical.BjorkenMtingwaIBS(beam_params, optics)
# IBS = xibs.analytical.NagaitsevIBS(beam_params, optics) # alternatively
# Getting growth rates for a bunched beam (default)
rates_bunched = IBS.growth_rates(psx, epsy, sigma_delta, bunch_length)
# Getting growth rates for a coasting beam
rates_coasting = IBS.growth_rates(epsx, epsy, sigma_delta, bunch_length, bunched=False)
# The two of course yield different values
assert rates_bunched != rates_coasting # this is True
Note that in both cases, the provided bunch_length
argument is irrelevant: if using BjorkenMtingwaIBS
the changes to analytical formulae take it out of the equation, and if using NagaitsevIBS
it is ignored in favor of \(C / 2 \pi\).