Current Deposition¶
The current solver can be set in species.param or directly per species speciesDefinition.param.
Current Solver¶
Esirkepov¶
-
template<typename
T_ParticleShape
, typenameT_Strategy
= traits::GetDefaultStrategy_t<>, uint32_tT_dim
= simDim>
structEsirkepov
¶ 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
, typenameT_Strategy
>
structEmZ
¶ 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]
VillaBune¶
-
template<typename
T_ParticleShape
, typenameT_Strategy
>
structVillaBune
¶ Current deposition algorithm from J.
Villasenor and O. Buneman
paper: J. Villasenor and O. Buneman. Rigorous charge conservation for local electromagnetic field solvers. Computer Physics Communications, 69:306, 1992. https://doi.org/10.1016/0010-4655(92)90169-Y
- Template Parameters
T_ParticleShape
: the particle shape for the species, supports only [picongpu::particles::shapes::CIC]T_Strategy
: Used strategy to reduce the scattered data [currentSolver::strategy]
EsirkepovNative¶
-
template<typename
T_ParticleShape
, typenameT_Strategy
>
structEsirkepovNative
¶ Paper like implementation of Esirkepov current deposition.
Implements the current deposition algorithm from T.Zh.
The implementation uses an non optimized stencil width and is therefore over 4x slower than the other Esirkepov implementation. Esirkepov
- Attention
this solver is only for testing
- Template Parameters
T_ParticleShape
: the particle shape for the species, [picongpu::particles::shapes]T_Strategy
: Used strategy to reduce the scattered data [currentSolver::strategy]
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”
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
¶ 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
¶ 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
¶ 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.