Current Deposition
The current solver can be set in species.param or directly per species speciesDefinition.param.
Current Solver
Esirkepov
-
template<typename T_ParticleShape, typename T_Strategy = traits::GetDefaultStrategy_t<>, uint32_t T_dim = simDim>
struct Esirkepov Implements the current deposition algorithm from T.Zh.
for an arbitrary particle assign function given as a template parameter. See available shapes at “intermediateLib/particleShape”. paper: “Exact charge conservation scheme for Particle-in-Cell simulation
with an arbitrary form-factor”
- Template Parameters:
T_ParticleShape – the particle shape for the species, [picongpu::particles::shapes]
T_Strategy – Used strategy to reduce the scattered data [currentSolver::strategy]
T_Dim – Implementation for 2D or 3D
EmZ
-
template<typename T_ParticleShape, typename T_Strategy>
struct EmZ EmZ (Esirkepov meets ZigZag) current deposition.
Deposit the particle current with a mixed algorithm based on Esirkepov and the ZigZag way splitting. EmZ supports arbitrary symmetric shapes and 2D/3D cartesian grids.
ZigZag publications:
order paper: “A new charge conservation method in electromagnetic
particle-in-cell simulations”, Comput. Phys. Commun. (2003) T. Umeda, Y. Omura, T. Tominaga, H. Matsumoto DOI: 10.1016/S0010-4655(03)00437-5
order paper: “Charge conservation methods for computing current densities
in electromagnetic particle-in-cell simulations”, Proceedings of ISSS. Vol. 7. 2005 T. Umeda, Y. Omura, H. Matsumoto
order paper: “High-Order Interpolation Algorithms for Charge Conservation
in Particle-in-Cell Simulation”, Commun. Comput. Phys 13 (2013) Jinqing Yu, Xiaolin Jin, Weimin Zhou, Bin Li, Yuqiu Gu DOI:10.1109/ICCIS.2012.159
- Template Parameters:
T_ParticleShape – the particle shape for the species [picongpu::particles::shapes]
T_Strategy – Used strategy to reduce the scattered data [currentSolver::strategy]
EZ (alias for EmZ)
-
template<typename T_ParticleShape, typename T_Strategy = traits::GetDefaultStrategy_t<>>
using picongpu::currentSolver::EZ = EmZ<T_ParticleShape, T_Strategy> Alias for EmZ to match the currently used naming.
- Template Parameters:
T_ParticleShape – the particle shape for the species [picongpu::particles::shapes]
T_Strategy – Used strategy to reduce the scattered data [currentSolver::strategy]
Deposition Strategy
A current solver supports a strategy to change how the algorithm behaves on different compute architectures. The strategy is optional, could affect performance.
StridedCachedSupercells
-
struct StridedCachedSupercells : public picongpu::currentSolver::strategy::detail::ShapeStrategy
Work on strided supercell domains with local caching strategy.
The current for each particle will be reduced with atomic operations into a supercell local cache. The cache will be flushed to the global memory without atomics. The device local domain of fieldJ will be decomposed with a checker board.
Suggestion: Use this strategy if atomic operations to global memory are slow. To utilize the device fully you should have enough supercells
2D: minimum multiprocessor count * 9 * 4
3D: minimum multiprocessor count * 27 * 4
CachedSupercells
-
struct CachedSupercells : public picongpu::currentSolver::strategy::detail::ShapeStrategy
Local caching strategy.
The current for each particle will be reduced with atomic operations into a supercell local cache. The cache will be flushed with atomic operations to the global memory.
Suggestion: Use this strategy if block local and global atomics are fast.
NonCachedSupercells
-
struct NonCachedSupercells : public picongpu::currentSolver::strategy::detail::ShapeStrategy
Non cached strategy.
The current for each particle will be reduced with atomic operations directly to the global memory.
Suggestion: Use this strategy if global atomics are fast and random memory access to a large range in memory is not a bottle neck.