aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/MultiParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/MultiParticleContainer.cpp')
-rw-r--r--Source/Particles/MultiParticleContainer.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp
index 1b2f920a9..4218e9fdf 100644
--- a/Source/Particles/MultiParticleContainer.cpp
+++ b/Source/Particles/MultiParticleContainer.cpp
@@ -27,6 +27,15 @@
using namespace amrex;
+namespace
+{
+ /** A little collection to transport six Array4 that point to the EM fields */
+ struct MyFieldList
+ {
+ Array4< amrex::Real const > const Ex, Ey, Ez, Bx, By, Bz;
+ };
+}
+
MultiParticleContainer::MultiParticleContainer (AmrCore* amr_core)
{
@@ -1138,15 +1147,9 @@ MultiParticleContainer::doQEDSchwinger ()
if (!box.intersects(global_schwinger_box)) {continue;}
box &= global_schwinger_box;
- const auto& arrEx = Ex[mfi].array();
- const auto& arrEy = Ey[mfi].array();
- const auto& arrEz = Ez[mfi].array();
- const auto& arrBx = Bx[mfi].array();
- const auto& arrBy = By[mfi].array();
- const auto& arrBz = Bz[mfi].array();
-
- const Array4<const amrex::Real> array_EMFAB [] = {arrEx,arrEy,arrEz,
- arrBx,arrBy,arrBz};
+ const MyFieldList fieldsEB = {
+ Ex[mfi].array(), Ey[mfi].array(), Ez[mfi].array(),
+ Bx[mfi].array(), By[mfi].array(), Bz[mfi].array()};
auto& dst_ele_tile = pc_product_ele->ParticlesAt(level_0, mfi);
auto& dst_pos_tile = pc_product_pos->ParticlesAt(level_0, mfi);
@@ -1167,9 +1170,9 @@ MultiParticleContainer::doQEDSchwinger ()
ParticleStringNames::to_index.find("w")->second};
const auto num_added = filterCreateTransformFromFAB<1>( dst_ele_tile,
- dst_pos_tile, box, array_EMFAB, np_ele_dst,
+ dst_pos_tile, box, fieldsEB, np_ele_dst,
np_pos_dst,Filter, CreateEle, CreatePos,
- Transform);
+ Transform);
setNewParticleIDs(dst_ele_tile, np_ele_dst, num_added);
setNewParticleIDs(dst_pos_tile, np_pos_dst, num_added);