BLAST-ImpactX
impactx
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Lattice: Remove What Nothing Uses A selection tracked its own validity twice. Every structural edit bumps the lattice's edit count, and a selection compares that count, so the registry of live selections and the flag it set were a second mechanism doing the first one's job: making the invalidation a no-op failed no test. Keep the count. `PolygonVertices` and `particle_pusher_t` are leftovers of designs this branch replaced, and `Owners::list()` and `Lattice::emplace()` never had a caller. The last is worth noting: a member template is only type-checked where it is instantiated, so an unused one is not merely unused, it is unverified. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Au2ZAQ2jjQ74U4cXhjcaT
ax3l:fix-lattice-shared
17 minutes ago
Lattice: Remove What Nothing Uses A selection tracked its own validity twice. Every structural edit bumps the lattice's edit count, and a selection compares that count, so the registry of live selections and the flag it set were a second mechanism doing the first one's job: making the invalidation a no-op failed no test. Keep the count. `PolygonVertices` and `particle_pusher_t` are leftovers of designs this branch replaced, and `Owners::list()` and `Lattice::emplace()` never had a caller. The last is worth noting: a member template is only type-checked where it is instantiated, so an unused one is not merely unused, it is unverified. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Au2ZAQ2jjQ74U4cXhjcaT
ax3l:fix-lattice-shared
1 hour ago
Pass user wake data from RFCavity to HandleWakefield.
cemitch99:user_specified_wake
2 hours ago
Lattice: Remove What Nothing Uses A selection tracked its own validity twice. Every structural edit bumps the lattice's edit count, and a selection compares that count, so the registry of live selections and the flag it set were a second mechanism doing the first one's job: making the invalidation a no-op failed no test. Keep the count. `PolygonVertices` and `particle_pusher_t` are leftovers of designs this branch replaced, and `Owners::list()` and `Lattice::emplace()` never had a caller. The last is worth noting: a member template is only type-checked where it is instantiated, so an unused one is not merely unused, it is unverified. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Au2ZAQ2jjQ74U4cXhjcaT
ax3l:fix-lattice-shared
2 hours ago
Data API Update
cemitch99:user_specified_wake
3 hours ago
Expand Test
ax3l:topic-igf-greens-cache
4 hours ago
Space Charge: bound the dynamically resized mesh ResizeMesh fitted the box to the exact particle extent on every slice step, so the resolution drifted continuously and the FFT solver had to rebuild its Green's function each time. Give the padding a band instead: geometry.prob_relative stays the smallest the mesh may be and the new geometry.prob_relative_max the largest. Within that band the mesh is chosen from a fixed set of lengths, so a beam of nearly the same size lands on exactly the same mesh and the Green's function can be reused. The allowed lengths are 2^(k/m) meters, with m = ceil(1/log2(r)) for a band r = prob_relative_max/prob_relative[0]. Rounding m up keeps the mesh inside the band, and keeping it a whole number of lengths per doubling makes two meshes a factor of two apart differ by exactly two, which the solver relies on to reuse a Green's function built at another scale. The longitudinal axis is treated in the frame the solver works in, so a changing reference energy resizes the mesh by itself. Setting prob_relative_max equal to prob_relative[0] fits the beam exactly, which stays bit-identical to the previous behavior. Also consolidates the two diverging copies of read_mr_prob_relative, which had to be kept in sync by hand for every new geometry parameter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ax3l:topic-igf-greens-cache
22 hours ago
Space Charge: bound the dynamically resized mesh ResizeMesh fitted the box to the exact particle extent on every slice step, so the resolution drifted continuously and the FFT solver had to rebuild its Green's function each time. Give the padding a band instead: geometry.prob_relative stays the smallest the mesh may be and the new geometry.prob_relative_max the largest. Within that band the mesh is chosen from a fixed set of lengths, so a beam of nearly the same size lands on exactly the same mesh and the Green's function can be reused. The allowed lengths are 2^(k/m) meters, with m = ceil(1/log2(r)) for a band r = prob_relative_max/prob_relative[0]. Rounding m up keeps the mesh inside the band, and keeping it a whole number of lengths per doubling makes two meshes a factor of two apart differ by exactly two, which the solver relies on to reuse a Green's function built at another scale. The longitudinal axis is treated in the frame the solver works in, so a changing reference energy resizes the mesh by itself. Setting prob_relative_max equal to prob_relative[0] fits the beam exactly, which stays bit-identical to the previous behavior. Also consolidates the two diverging copies of read_mr_prob_relative, which had to be kept in sync by hand for every new geometry parameter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ax3l:topic-igf-greens-cache
22 hours ago
Latest Branches
CodSpeed Performance Gauge
-1%
Pythonic `sim.lattice` List
#1381
17 days ago
d368086
ax3l:fix-lattice-shared
CodSpeed Performance Gauge
0%
[WIP] Preparation for user-specified wakefields
#1635
2 hours ago
3078b6f
cemitch99:user_specified_wake
CodSpeed Performance Gauge
0%
[WIP] Space Charge: bound the dynamically resized mesh
#1621
5 hours ago
f5f22e1
ax3l:topic-igf-greens-cache
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs