Space-charge models¶
HELIX has four distinct space-charge models, each appropriate for a different physical regime. Picking the right one is critical: mismatch between physics and model is the most common source of "why does my simulation disagree with TraceWin?" complaints.
TL;DR — pick by regime¶
| Beam regime | Tracker | SC model | When |
|---|---|---|---|
| Bunched, RMS only | EnvelopeSolver |
uniform-ellipsoid Σ kick | matching, parameter sweeps |
| Bunched, multi-particle | Tracker (with SpaceChargeConfig) |
3-D PIC (Hockney FFT) | production tracking |
| Continuous (DC), RMS | Sacherer ODE |
KV-uniform analytic | pre-RFQ LEBT envelope |
| Continuous (DC), multi-particle | Tracker (with SpaceChargeConfig, continuous=True) |
2-D analytic kick | pre-RFQ LEBT MP |
Model 1: Uniform triaxial ellipsoid (envelope)¶
Used by EnvelopeSolver for bunched beams. Treats the beam as a
uniform-density ellipsoid with rms-equivalent semi-axes (√5·σ_x,
√5·σ_y, √5·γ·σ_z) and applies an analytic depolarisation-factor
kick using the Carlson R_D elliptic integral (Lapostolle / Wangler
formulation).
- Pros: closed-form, exact for matched RMS Gaussians.
- Cons: doesn't capture non-Gaussian effects, halo, or filamentation.
Model 2: 3-D PIC (Hockney FFT)¶
Used by the multi-particle tracker (Tracker + SpaceChargeConfig).
Solves Poisson's equation on a 3-D Cartesian grid via doubled-grid
FFT convolution with one of two Green's functions.
The full 8-step PIC cycle:
- Lorentz boost on z to enter the beam rest frame (γ on z only).
- Grid setup on the boosted coordinates.
- Charge deposition on the grid (CIC or TSC kernel).
- Doubled-grid FFT convolution with Green's function.
- Field gather back to particles (CIC or TSC).
- Transverse kick applied directly to the lab-frame x′/y′ — the boost back is folded into the β²γ² factor of the kick formula (one γ from the E+v×B force cancellation, one βγ from the Δp⊥ → x′ conversion).
- Longitudinal kick applied directly to the lab-frame ΔW (E_z is invariant under the z-boost).
- The reference particle is never modified — SC kicks touch only the deviation coordinates of the macroparticles.
For details see PIC solver and Kernels.
- Pros: captures non-axisymmetric, non-Gaussian, halo, filamentation effects.
- Cons: ~10× slower than envelope; statistical noise floor ≈ 1/√N on σ.
Model 3: Sacherer / KV ODE (continuous beam)¶
For pre-RFQ continuous beams, linac_gen.tracking.sacherer solves
the continuous-beam envelope ODE:
(and the analogous equation in y) with generalised perveance K = qI / (2π ε₀ m c³ (βγ)³).
- Pros: textbook DC-beam benchmark, fast.
- Cons: no acceleration (assumes constant β, γ), only handles drifts + hard-edge quads + 1-D/3-D solenoid maps.
Model 4: 2-D analytic DC kick (continuous beam, MP)¶
For continuous-beam multi-particle tracking,
linac_gen.pic.pic_solver.kick_continuous_2d applies the closed-
form transverse kick for a uniform-density elliptical-cylinder beam.
Activated automatically when Beam.continuous == True.
Three DC-kernel choices via SpaceChargeConfig.dc_kernel:
dc_kernel |
Model |
|---|---|
"uniform" |
analytic linear uniform-elliptical kick (matches rigid-Σ envelope) |
"gaussian" |
Bassetti-Erskine field of a 2-D Gaussian (rigid σ; per-particle non-linear) |
"pic2d" |
2-D Hockney FFT PIC over the actual particle distribution (most accurate) |
For details see DC mode.
Coherent synchrotron radiation (CSR)¶
CSR is a separate collective effect — not one of the four space-charge models above. When a short bunch travels around a bend, radiation emitted toward the tail catches up with the head along the shorter chord and acts back on the bunch, driving energy spread and — through the bend dispersion — transverse emittance growth.
HELIX models CSR with a 1-D steady-state wake (Saldin–Schneidmiller–Yurkov 1997; Derbenev 1995):
where λ(s) is the bunch line-charge density and the prefactor scales
as A ∝ R^{-2/3} with R the bend radius. The kick is applied per
sub-step inside every Dipole.
- Multi-particle only. CSR needs the actual bunch line-density
profile, so it acts only in
Trackerruns — the envelope solver ignores it. - Steady-state only. Transient entrance/exit (drift→bend, bend→drift) fields are not modelled; the model is valid when the bend is long compared with the CSR formation length.
- Enable it with
SpaceChargeConfig(csr_enabled=True), or the "CSR in bends" checkbox on the Numerics tab.
SpaceChargeConfig field |
Default | Meaning |
|---|---|---|
csr_enabled |
False |
apply the CSR kick in bends |
csr_bins |
200 |
longitudinal line-density bin count |
csr_model |
"1d_steady" |
model selector (only value for now) |
Decision summary¶
Is the beam bunched?
├── Yes (post-RFQ)
│ ├── RMS only? → EnvelopeSolver (Model 1)
│ └── Multi-particle? → Tracker + SpaceChargeConfig (Model 2)
└── No (pre-RFQ, DC)
├── RMS only? → Sacherer ODE (Model 3)
└── Multi-particle? → Tracker + SpaceChargeConfig with continuous=True (Model 4)
Cross-references¶
- Tracking modes — broader overview of solver choice.
- PIC solver — Model 2 details.
- DC mode — Models 3 & 4.
- Convergence guide — grid sizing, particle count, when does it converge?