diff options
Diffstat (limited to 'Source/Particles/MultiParticleContainer.cpp')
-rw-r--r-- | Source/Particles/MultiParticleContainer.cpp | 25 |
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); |