From c9f8602dfb0d5c77cc17c6e911463a300ad1bbe2 Mon Sep 17 00:00:00 2001 From: Bernhard Manfred Gruber Date: Thu, 30 Sep 2021 15:30:07 +0200 Subject: [PATCH] replace use of mpl by mp11 --- docs/source/models/binary_collisions.rst | 8 +- .../source/usage/workflows/probeParticles.rst | 2 +- .../usage/workflows/quasiNeutrality.rst | 4 +- .../algorithms/ShiftCoordinateSystem.hpp | 5 +- include/picongpu/fields/EMFieldBase.tpp | 37 +++-- include/picongpu/fields/FieldJ.tpp | 22 +-- include/picongpu/fields/FieldTmp.tpp | 35 ++-- include/picongpu/fields/LaserPhysics.hpp | 4 +- .../MaxwellSolver/Substepping/Substepping.hpp | 2 +- .../absorber/exponential/Exponential.kernel | 12 +- .../incidentField/DerivativeCoefficients.hpp | 8 +- .../picongpu/fields/incidentField/Solver.hpp | 12 +- .../initialization/InitialiserController.hpp | 9 +- include/picongpu/param/collision.param | 2 +- include/picongpu/param/fileOutput.param | 3 - include/picongpu/param/iterationStart.param | 2 +- include/picongpu/param/mallocMC.param | 4 - .../param/speciesInitialization.param | 2 +- include/picongpu/particles/InitFunctors.hpp | 36 ++--- include/picongpu/particles/Manipulate.hpp | 15 +- include/picongpu/particles/Particles.hpp | 21 ++- .../picongpu/particles/ParticlesFunctors.hpp | 32 ++-- .../picongpu/particles/ParticlesInit.kernel | 5 +- .../picongpu/particles/collision/Collider.def | 11 +- .../picongpu/particles/collision/Collider.hpp | 6 +- .../particles/collision/InterCollision.hpp | 2 +- .../picongpu/particles/collision/WithPeer.hpp | 3 +- .../picongpu/particles/debyeLength/Check.hpp | 4 +- .../particles/filter/generic/FreeRng.def | 4 - .../filter/generic/FreeTotalCellOffset.def | 1 - .../picongpu/particles/functor/misc/Rng.def | 4 - .../byCollision/ThomasFermi/ThomasFermi.def | 2 +- .../ThomasFermi/ThomasFermi_Impl.hpp | 6 +- .../particles/ionization/byField/ADK/ADK.def | 2 +- .../ionization/byField/ADK/ADK_Impl.hpp | 6 +- .../particles/ionization/byField/BSI/BSI.def | 2 +- .../ionization/byField/BSI/BSI_Impl.hpp | 6 +- .../IonizationCurrent/IonizationCurrent.def | 2 +- .../IonizationCurrent/IonizationCurrent.hpp | 2 +- .../JIonizationAssignment.hpp | 4 +- .../ionization/byField/Keldysh/Keldysh.def | 2 +- .../byField/Keldysh/Keldysh_Impl.hpp | 6 +- .../manipulators/generic/FreeRng.def | 4 - .../unary/FreeTotalCellOffset.def | 4 - .../unary/FreeTotalCellOffsetRng.def | 4 - .../manipulators/unary/RandomPosition.def | 3 - .../particleToGrid/CombinedDerive.def | 3 +- .../ComputeGridValuePerFrame.def | 3 +- .../FilteredDerivedAttribute.hpp | 5 +- .../particleToGrid/FoldDeriveFields.hpp | 12 +- .../derivedAttributes/ChargeDensity.def | 4 +- .../derivedAttributes/Energy.def | 4 +- .../derivedAttributes/EnergyDensity.def | 4 +- .../derivedAttributes/EnergyDensityCutoff.def | 2 - .../derivedAttributes/LarmorPower.def | 5 +- .../MidCurrentDensityComponent.def | 5 +- .../derivedAttributes/WeightedVelocity.def | 2 +- .../startPosition/OnePositionImpl.def | 3 - .../startPosition/OnePositionImpl.hpp | 3 - .../particles/startPosition/QuietImpl.def | 3 - .../particles/startPosition/QuietImpl.hpp | 3 - .../particles/startPosition/RandomImpl.def | 3 - .../particles/startPosition/RandomImpl.hpp | 3 - .../startPosition/generic/FreeRng.def | 4 - .../GenerateSolversIfSpeciesEligible.hpp | 18 +-- .../particles/traits/GetDensityRatio.hpp | 5 +- .../particles/traits/GetExchangeMemCfg.hpp | 7 +- .../particles/traits/GetIonizerList.hpp | 2 +- .../particles/traits/GetMarginPusher.hpp | 14 +- .../traits/SpeciesEligibleForSolver.hpp | 7 +- .../picongpu/plugins/BinEnergyParticles.hpp | 15 +- .../picongpu/plugins/ChargeConservation.hpp | 5 +- .../picongpu/plugins/ChargeConservation.tpp | 11 +- include/picongpu/plugins/Emittance.hpp | 15 +- include/picongpu/plugins/EnergyParticles.hpp | 15 +- include/picongpu/plugins/IsaacPlugin.hpp | 29 ++-- .../plugins/PhaseSpace/PhaseSpace.hpp | 22 ++- .../plugins/PhaseSpace/PhaseSpace.tpp | 2 +- include/picongpu/plugins/PluginController.hpp | 58 +++---- include/picongpu/plugins/PngPlugin.hpp | 2 - .../plugins/common/openPMDWriteMeta.hpp | 4 +- .../picongpu/plugins/misc/SpeciesFilter.hpp | 10 +- .../picongpu/plugins/openPMD/WriteSpecies.hpp | 24 ++- .../plugins/openPMD/openPMDWriter.hpp | 58 ++++--- .../plugins/openPMD/restart/LoadSpecies.hpp | 20 +-- .../plugins/output/WriteSpeciesCommon.hpp | 6 +- .../plugins/output/images/Visualisation.hpp | 2 +- .../ParticleCalorimeter.hpp | 19 ++- .../picongpu/plugins/radiation/Radiation.hpp | 2 +- .../TransitionRadiation.hpp | 3 +- .../simulation/control/Simulation.hpp | 13 +- .../simulation/stage/AtomicPhysics.hpp | 5 +- .../picongpu/simulation/stage/Collision.hpp | 9 +- .../simulation/stage/CurrentDeposition.hpp | 2 +- .../CurrentInterpolationAndAdditionToEMF.hpp | 3 +- .../simulation/stage/IterationStart.hpp | 2 +- .../simulation/stage/ParticleBoundaries.hpp | 2 +- .../simulation/stage/ParticleIonization.hpp | 3 +- .../simulation/stage/RuntimeDensityFile.hpp | 2 +- include/pmacc/functor/Call.hpp | 2 +- include/pmacc/identifier/alias.hpp | 6 +- .../mappings/simulation/ResourceMonitor.tpp | 4 +- include/pmacc/math/MapTuple.hpp | 14 +- include/pmacc/math/vector/Vector.hpp | 1 - .../pmacc/math/vector/compile-time/Float.hpp | 8 +- .../pmacc/math/vector/compile-time/Int.hpp | 12 +- .../pmacc/math/vector/compile-time/Size_t.hpp | 12 +- .../pmacc/math/vector/compile-time/UInt32.hpp | 13 +- .../pmacc/math/vector/compile-time/UInt64.hpp | 13 +- .../pmacc/math/vector/compile-time/Vector.hpp | 123 ++++++--------- include/pmacc/memory/boxes/SharedBox.hpp | 46 ++---- include/pmacc/meta/AllCombinations.hpp | 149 +----------------- include/pmacc/meta/ForEach.hpp | 75 +-------- include/pmacc/meta/GetKeyFromAlias.hpp | 22 ++- include/pmacc/meta/Mp11.hpp | 30 ++++ include/pmacc/meta/Pair.hpp | 32 ++++ .../JoinToSeq.hpp => SeqToList.hpp} | 31 ++-- include/pmacc/meta/accessors/Identity.hpp | 7 +- include/pmacc/meta/accessors/Type.hpp | 2 +- include/pmacc/meta/conversion/MakeSeq.hpp | 26 +-- .../meta/conversion/MakeSeqFromNestedSeq.hpp | 11 +- .../pmacc/meta/conversion/OperateOnSeq.hpp | 19 +-- .../pmacc/meta/conversion/RemoveFromSeq.hpp | 12 +- .../pmacc/meta/conversion/ResolveAliases.hpp | 15 +- include/pmacc/meta/conversion/SeqToMap.hpp | 23 +-- include/pmacc/meta/conversion/ToSeq.hpp | 14 +- .../pmacc/meta/conversion/TypeToAliasPair.hpp | 8 +- include/pmacc/meta/conversion/TypeToPair.hpp | 9 +- .../meta/conversion/TypeToPointerPair.hpp | 10 +- include/pmacc/meta/conversion/Unique.hpp | 8 +- .../meta/errorHandlerPolicies/ReturnType.hpp | 2 +- .../ThrowValueNotFound.hpp | 2 +- .../pmacc/particles/ParticleDescription.hpp | 13 +- .../boostExtension/InheritGenerators.hpp | 17 +- .../boostExtension/InheritLinearly.hpp | 33 +--- .../memory/buffers/ParticlesBuffer.hpp | 46 +++--- .../memory/dataTypes/ListPointer.hpp | 4 +- .../particles/memory/dataTypes/Particle.hpp | 28 +--- .../pmacc/particles/memory/frames/Frame.hpp | 21 ++- .../pmacc/particles/meta/FindByNameOrType.hpp | 24 ++- .../particles/operations/CountParticles.hpp | 2 +- .../pmacc/particles/operations/Deselect.hpp | 6 - .../operations/splitIntoListOfFrames.kernel | 2 +- .../particleFilter/FilterFactory.hpp | 10 +- .../pmacc/particles/traits/FilterByFlag.hpp | 13 +- .../particles/traits/FilterByIdentifier.hpp | 18 +-- .../traits/ResolveAliasFromSpecies.hpp | 2 +- .../uniform/Uniform_Integral32Bit.hpp | 2 +- .../uniform/Uniform_Integral64Bit.hpp | 2 +- include/pmacc/result_of_Functor.hpp | 21 +-- .../pmacc/test/memory/HostBuffer/copyFrom.hpp | 2 +- .../pmacc/test/memory/HostBuffer/reset.hpp | 2 +- .../pmacc/test/memory/HostBuffer/setValue.hpp | 2 +- include/pmacc/test/memory/memoryUT.cpp | 8 +- include/pmacc/traits/HasFlag.hpp | 2 +- include/pmacc/traits/HasIdentifier.hpp | 2 +- include/pmacc/traits/HasIdentifiers.hpp | 18 +-- include/pmacc/types.hpp | 3 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/collision.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/collision.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../picongpu/param/iterationStart.param | 2 +- .../param/speciesInitialization.param | 2 +- .../include/picongpu/param/fileOutput.param | 3 - .../param/speciesInitialization.param | 2 +- 185 files changed, 732 insertions(+), 1254 deletions(-) create mode 100644 include/pmacc/meta/Mp11.hpp create mode 100644 include/pmacc/meta/Pair.hpp rename include/pmacc/meta/{conversion/JoinToSeq.hpp => SeqToList.hpp} (57%) diff --git a/docs/source/models/binary_collisions.rst b/docs/source/models/binary_collisions.rst index 65ab9b16011..2871df83548 100644 --- a/docs/source/models/binary_collisions.rst +++ b/docs/source/models/binary_collisions.rst @@ -68,8 +68,8 @@ To enable collisions between the Ions and Electrons with a constant coulomb loga * * the functors are called in order (from first to last functor) */ - using CollisionPipeline = bmpl:: - vector, Pairs> >; + using CollisionPipeline = boost::mp11:: + mp_list, Pairs> >; } // namespace collision } // namespace particles } // namespace picongpu @@ -100,7 +100,7 @@ Here is an example with :math:`\Lambda = 5` for electron-ion collisions and :mat using Pairs1 = MakeSeq_t>; using Pairs2 = MakeSeq_t, Pair>; using CollisionPipeline = - bmpl::vector< + boost::mp11::mp_list< Collider, Pairs1>, Collider, Pairs2> >; @@ -137,7 +137,7 @@ You need to define your filters in ``particleFilters.param`` and than you can us using Pairs1 = MakeSeq_t>; using Pairs2 = MakeSeq_t, Pair>; using CollisionPipeline = - bmpl::vector< + boost::mp11::mp_list< Collider< relativistic::RelativisticCollisionConstLog, Pairs1, diff --git a/docs/source/usage/workflows/probeParticles.rst b/docs/source/usage/workflows/probeParticles.rst index d6fe6705808..b5bc1a94b18 100644 --- a/docs/source/usage/workflows/probeParticles.rst +++ b/docs/source/usage/workflows/probeParticles.rst @@ -84,7 +84,7 @@ and add it to ``VectorAllSpecies``: .. code-block:: cpp - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< // ... , CreateDensity< densityProfiles::ProbeEveryFourthCell, diff --git a/docs/source/usage/workflows/quasiNeutrality.rst b/docs/source/usage/workflows/quasiNeutrality.rst index 8da275cd979..95c5bf5798c 100644 --- a/docs/source/usage/workflows/quasiNeutrality.rst +++ b/docs/source/usage/workflows/quasiNeutrality.rst @@ -15,7 +15,7 @@ For fully ionized ions, just use ``ManipulateDerive`` in :ref:`speciesInitializa .. code-block:: cpp - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< /* density profile from density.param and * start position from particle.param */ CreateDensity< @@ -72,7 +72,7 @@ Then again in :ref:`speciesInitialization.param ` set your in .. code-block:: cpp - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< /* density profile from density.param and * start position from particle.param */ CreateDensity< diff --git a/include/picongpu/algorithms/ShiftCoordinateSystem.hpp b/include/picongpu/algorithms/ShiftCoordinateSystem.hpp index 2bc28fd4061..b7e754b1ad0 100644 --- a/include/picongpu/algorithms/ShiftCoordinateSystem.hpp +++ b/include/picongpu/algorithms/ShiftCoordinateSystem.hpp @@ -20,13 +20,10 @@ #pragma once -#include -#include #include #include -#include -#include +#include namespace picongpu { diff --git a/include/picongpu/fields/EMFieldBase.tpp b/include/picongpu/fields/EMFieldBase.tpp index f14c4579d77..f467d60ae0c 100644 --- a/include/picongpu/fields/EMFieldBase.tpp +++ b/include/picongpu/fields/EMFieldBase.tpp @@ -37,17 +37,25 @@ #include #include -#include - #include #include #include - namespace picongpu { namespace fields { + template + using LowerMarginInterpolationOp = + typename pmacc::math::CT::max::type>::type>::type; + template + using UpperMarginInterpolationOp = + typename pmacc::math::CT::max::type>::type>::type; + template + using LowerMarginOp = typename pmacc::math::CT::max::type>::type; + template + using UpperMarginOp = typename pmacc::math::CT::max::type>::type; + template EMFieldBase::EMFieldBase(MappingDesc const& cellDescription, pmacc::SimulationDataId const& id) : SimulationFieldHelper(cellDescription) @@ -57,14 +65,15 @@ namespace picongpu using VectorSpeciesWithInterpolation = typename pmacc::particles::traits::FilterByFlag>::type; - using LowerMarginInterpolation = bmpl::accumulate< + + using LowerMarginInterpolation = pmacc::mp_fold< VectorSpeciesWithInterpolation, typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; - using UpperMarginInterpolation = bmpl::accumulate< + LowerMarginInterpolationOp>; + using UpperMarginInterpolation = pmacc::mp_fold< VectorSpeciesWithInterpolation, typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; + UpperMarginInterpolationOp>; /* Calculate the maximum Neighbors we need from MAX(ParticleShape, FieldSolver) */ using LowerMarginSolver = typename traits::GetLowerMargin::type; @@ -80,15 +89,11 @@ namespace picongpu */ using VectorSpeciesWithPusherAndInterpolation = typename pmacc::particles::traits:: FilterByFlag>::type; - using LowerMargin = typename bmpl::accumulate< - VectorSpeciesWithPusherAndInterpolation, - LowerMarginInterpolationAndSolver, - pmacc::math::CT::max>>::type; - - using UpperMargin = typename bmpl::accumulate< - VectorSpeciesWithPusherAndInterpolation, - UpperMarginInterpolationAndSolver, - pmacc::math::CT::max>>::type; + + using LowerMargin = pmacc:: + mp_fold; + using UpperMargin = pmacc:: + mp_fold; const DataSpace originGuard(LowerMargin().toRT()); const DataSpace endGuard(UpperMargin().toRT()); diff --git a/include/picongpu/fields/FieldJ.tpp b/include/picongpu/fields/FieldJ.tpp index d9ef3c6a0ae..faf548713c3 100644 --- a/include/picongpu/fields/FieldJ.tpp +++ b/include/picongpu/fields/FieldJ.tpp @@ -39,8 +39,6 @@ #include #include -#include - #include #include #include @@ -52,6 +50,13 @@ namespace picongpu { using namespace pmacc; + template + using LowerMarginShapesOp = + typename pmacc::math::CT::max::type>::type>::type; + template + using UpperMarginShapesOp = + typename pmacc::math::CT::max::type>::type>::type; + FieldJ::FieldJ(MappingDesc const& cellDescription) : SimulationFieldHelper(cellDescription) , buffer(cellDescription.getGridLayout()) @@ -63,15 +68,10 @@ namespace picongpu using AllSpeciesWithCurrent = typename pmacc::particles::traits::FilterByFlag>::type; - using LowerMarginShapes = bmpl::accumulate< - AllSpeciesWithCurrent, - typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; - - using UpperMarginShapes = bmpl::accumulate< - AllSpeciesWithCurrent, - typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; + using LowerMarginShapes = pmacc:: + mp_fold::type, LowerMarginShapesOp>; + using UpperMarginShapes = pmacc:: + mp_fold::type, UpperMarginShapesOp>; /* margins are always positive, also for lower margins * additional current interpolations and current filters on FieldJ might diff --git a/include/picongpu/fields/FieldTmp.tpp b/include/picongpu/fields/FieldTmp.tpp index 856eb8823f7..bf3e7d9f53b 100644 --- a/include/picongpu/fields/FieldTmp.tpp +++ b/include/picongpu/fields/FieldTmp.tpp @@ -39,16 +39,25 @@ #include #include -#include - #include #include - namespace picongpu { using namespace pmacc; + template + using SpeciesLowerMarginOp = + typename pmacc::math::CT::max::type>::type>::type; + template + using SpeciesUpperMarginOp = + typename pmacc::math::CT::max::type>::type>::type; + + template + using FieldTmpLowerMarginOp = typename pmacc::math::CT::max::type>::type; + template + using FieldTmpUpperMarginOp = typename pmacc::math::CT::max::type>::type; + FieldTmp::FieldTmp(MappingDesc const& cellDescription, uint32_t slotId) : SimulationFieldHelper(cellDescription) , m_slotId(slotId) @@ -79,15 +88,13 @@ namespace picongpu typename pmacc::particles::traits::FilterByFlag>::type; /* ------------------ lower margin ----------------------------------*/ - using SpeciesLowerMargin = bmpl::accumulate< + using SpeciesLowerMargin = pmacc::mp_fold< VectorSpeciesWithInterpolation, typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; + SpeciesLowerMarginOp>; - using FieldTmpLowerMargin = bmpl::accumulate< - FieldTmpSolvers, - typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>::type; + using FieldTmpLowerMargin = pmacc:: + mp_fold::type, FieldTmpLowerMarginOp>; using SpeciesFieldTmpLowerMargin = pmacc::math::CT::max::type; @@ -98,15 +105,13 @@ namespace picongpu /* ------------------ upper margin -----------------------------------*/ - using SpeciesUpperMargin = bmpl::accumulate< + using SpeciesUpperMargin = pmacc::mp_fold< VectorSpeciesWithInterpolation, typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>>::type; + SpeciesUpperMarginOp>; - using FieldTmpUpperMargin = bmpl::accumulate< - FieldTmpSolvers, - typename pmacc::math::CT::make_Int::type, - pmacc::math::CT::max>>::type; + using FieldTmpUpperMargin = pmacc:: + mp_fold::type, FieldTmpUpperMarginOp>; using SpeciesFieldTmpUpperMargin = pmacc::math::CT::max::type; diff --git a/include/picongpu/fields/LaserPhysics.hpp b/include/picongpu/fields/LaserPhysics.hpp index 168bf1cd1a7..cd1786c3dfb 100644 --- a/include/picongpu/fields/LaserPhysics.hpp +++ b/include/picongpu/fields/LaserPhysics.hpp @@ -170,8 +170,8 @@ namespace picongpu using LaserPlaneSizeInSuperCells = typename pmacc::math::CT::AssignIfInRange< typename SuperCellSize::vector_type, - bmpl::integral_c, /* y direction */ - bmpl::integral_c>::type; + std::integral_constant, /* y direction */ + std::integral_constant>::type; DataSpace gridBlocks = Environment::get().SubGrid().getLocalDomain().size / SuperCellSize::toRT(); diff --git a/include/picongpu/fields/MaxwellSolver/Substepping/Substepping.hpp b/include/picongpu/fields/MaxwellSolver/Substepping/Substepping.hpp index 2b79db8c47c..a81ee268eed 100644 --- a/include/picongpu/fields/MaxwellSolver/Substepping/Substepping.hpp +++ b/include/picongpu/fields/MaxwellSolver/Substepping/Substepping.hpp @@ -261,7 +261,7 @@ namespace picongpu typename pmacc::particles::traits::FilterByFlag>::type; //! Whether the simulation has any current sources static constexpr auto existsCurrent - = (bmpl::size::type::value > 0) || FieldBackgroundJ::activated; + = (pmacc::mp_size::value > 0) || FieldBackgroundJ::activated; /** Whether previousJ is initialized with data of J from previous time step * diff --git a/include/picongpu/fields/absorber/exponential/Exponential.kernel b/include/picongpu/fields/absorber/exponential/Exponential.kernel index cd5a1c02d07..3552ce25b71 100644 --- a/include/picongpu/fields/absorber/exponential/Exponential.kernel +++ b/include/picongpu/fields/absorber/exponential/Exponential.kernel @@ -25,10 +25,6 @@ #include #include -#include -#include - - namespace picongpu { namespace fields @@ -41,7 +37,7 @@ namespace picongpu { /** damp each field component at exchange the border * - * @tparam T_Axis, boost::mpl::integral_c axis of the coordinate system + * @tparam T_Axis, std::integral_constant axis of the coordinate system * (0 = x, 1 = y, 2 = z) */ template @@ -160,11 +156,7 @@ namespace picongpu DataSpace const relExchangeDir = Mask::getRelativeDirections(mapper.getExchangeType()); - /* create a sequence with int values [0;simDim) - * MakeSeq_t allows to use the result of mpl::range_c - * within the PMacc ForEach - */ - using SimulationDimensions = MakeSeq_t>; + using SimulationDimensions = pmacc::mp_iota>; meta::ForEach> absorbInAllDirections; diff --git a/include/picongpu/fields/incidentField/DerivativeCoefficients.hpp b/include/picongpu/fields/incidentField/DerivativeCoefficients.hpp index c194c0b0c91..f26b55edb3e 100644 --- a/include/picongpu/fields/incidentField/DerivativeCoefficients.hpp +++ b/include/picongpu/fields/incidentField/DerivativeCoefficients.hpp @@ -105,8 +105,8 @@ namespace picongpu //! Number of coefficients: T_neighbors along T_axis, 1 along other axes using Size = typename pmacc::math::CT::Assign< pmacc::math::CT::make_Int<3, 1>::type::vector_type, - bmpl::integral_c, - bmpl::integral_c>::type; + std::integral_constant, + std::integral_constant>::type; //! Normalized coefficient values, actual coefficient = value[...] / step[T_axis] float_X value[Size::x::value][Size::y::value][Size::z::value]; @@ -189,8 +189,8 @@ namespace picongpu //! Number of coefficients: 2 along T_cherenkovFreeDirection, 1 along other axes using Size = typename pmacc::math::CT::Assign< pmacc::math::CT::make_Int<3, 1>::type::vector_type, - bmpl::integral_c, - bmpl::integral_c>::type; + std::integral_constant, + std::integral_constant>::type; //! Normalized coefficient values, actual coefficient = value[...] / step[T_axis] float_X value[Size::x::value][Size::y::value][Size::z::value]; diff --git a/include/picongpu/fields/incidentField/Solver.hpp b/include/picongpu/fields/incidentField/Solver.hpp index 688dd815474..34f348bdf60 100644 --- a/include/picongpu/fields/incidentField/Solver.hpp +++ b/include/picongpu/fields/incidentField/Solver.hpp @@ -302,8 +302,8 @@ namespace picongpu constexpr int blockSizeAlongAxis = std::min(sizeAlongAxis, supercellSizeAlongAxis); using BlockSize = typename pmacc::math::CT::AssignIfInRange< typename SuperCellSize::vector_type, - bmpl::integral_c, - bmpl::integral_c>::type; + std::integral_constant, + std::integral_constant>::type; auto const superCellSize = SuperCellSize::toRT(); auto const gridBlocks = (endLocalUserIdx - beginLocalUserIdx + superCellSize - Index::create(1)) / superCellSize; @@ -633,10 +633,10 @@ namespace picongpu parameters.direction = 1.0_X; parameters.sourceTimeIteration = sourceTimeIteration; parameters.timeIncrement = maxwellSolver::getTimeStep(); - meta::ForEach> applyMinProfiles; + meta::ForEach> applyMinProfiles; applyMinProfiles(parameters); parameters.direction = -1.0_X; - meta::ForEach> applyMaxProfiles; + meta::ForEach> applyMaxProfiles; applyMaxProfiles(parameters); } @@ -682,10 +682,10 @@ namespace picongpu parameters.direction = 1.0_X; parameters.sourceTimeIteration = sourceTimeIteration; parameters.timeIncrement = 0.5_X * maxwellSolver::getTimeStep(); - meta::ForEach> applyMinProfiles; + meta::ForEach> applyMinProfiles; applyMinProfiles(parameters); parameters.direction = -1.0_X; - meta::ForEach> applyMaxProfiles; + meta::ForEach> applyMaxProfiles; applyMaxProfiles(parameters); } diff --git a/include/picongpu/initialization/InitialiserController.hpp b/include/picongpu/initialization/InitialiserController.hpp index 256e364e490..0a1ffc77af7 100644 --- a/include/picongpu/initialization/InitialiserController.hpp +++ b/include/picongpu/initialization/InitialiserController.hpp @@ -39,8 +39,6 @@ #include #include -#include - namespace picongpu { using namespace pmacc; @@ -102,7 +100,7 @@ namespace picongpu * Calculate omega_p for each given species and create a `picLog::PHYSICS` * log message */ - template + template struct LogOmegaP { void operator()() @@ -157,7 +155,7 @@ namespace picongpu = cellDescription->getGridLayout().getDataSpaceWithoutGuarding().productOfComponents(); log("macro particles per device: %1%") % (localNrOfCells * particles::TYPICAL_PARTICLES_PER_CELL - * (bmpl::size::type::value)); + * (pmacc::mp_size::value)); log("typical macro particle weighting: %1%") % (particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE); @@ -248,7 +246,8 @@ namespace picongpu log("Laser numerical dispersion: v_phase = %1% * c") % phaseVelocityC; } using IncidentFieldProfiles = fields::incidentField::UniqueEnabledProfiles; - meta::ForEach> printIncidentFieldDispersion; + meta::ForEach> + printIncidentFieldDispersion; printIncidentFieldDispersion(); } }; diff --git a/include/picongpu/param/collision.param b/include/picongpu/param/collision.param index bd4f2e7ab2b..e34bb2329a9 100644 --- a/include/picongpu/param/collision.param +++ b/include/picongpu/param/collision.param @@ -45,7 +45,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using CollisionPipeline = bmpl::vector<>; + using CollisionPipeline = pmacc::mp_list<>; } // namespace collision } // namespace particles diff --git a/include/picongpu/param/fileOutput.param b/include/picongpu/param/fileOutput.param index a7680ab909a..9a9d2c07293 100644 --- a/include/picongpu/param/fileOutput.param +++ b/include/picongpu/param/fileOutput.param @@ -28,9 +28,6 @@ #include "picongpu/particles/particleToGrid/CombinedDerive.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmp output (calculated at runtime) ******************************* diff --git a/include/picongpu/param/iterationStart.param b/include/picongpu/param/iterationStart.param index 319446e5d1a..49bef8562c7 100644 --- a/include/picongpu/param/iterationStart.param +++ b/include/picongpu/param/iterationStart.param @@ -36,6 +36,6 @@ namespace picongpu * The functors must be default-constructible and take the current time iteration as the only parameter. * These are the same requirements as for functors in particles::InitPipeline. */ - using IterationStartPipeline = bmpl::vector<>; + using IterationStartPipeline = pmacc::mp_list<>; } // namespace picongpu diff --git a/include/picongpu/param/mallocMC.param b/include/picongpu/param/mallocMC.param index f3f1acf460c..8f46ca813e0 100644 --- a/include/picongpu/param/mallocMC.param +++ b/include/picongpu/param/mallocMC.param @@ -27,12 +27,8 @@ #pragma once -#include -#include - #include - namespace picongpu { //! configure the CreationPolicy "Scatter" diff --git a/include/picongpu/param/speciesInitialization.param b/include/picongpu/param/speciesInitialization.param index cccb260300d..de35f36061e 100644 --- a/include/picongpu/param/speciesInitialization.param +++ b/include/picongpu/param/speciesInitialization.param @@ -40,7 +40,7 @@ namespace picongpu * the functors are called in order (from first to last functor). * The functors must be default-constructible and take the current time iteration as the only parameter. */ - using InitPipeline = bmpl::vector<>; + using InitPipeline = pmacc::mp_list<>; } // namespace particles } // namespace picongpu diff --git a/include/picongpu/particles/InitFunctors.hpp b/include/picongpu/particles/InitFunctors.hpp index dd19e93e03d..741202d407c 100644 --- a/include/picongpu/particles/InitFunctors.hpp +++ b/include/picongpu/particles/InitFunctors.hpp @@ -34,12 +34,7 @@ #include #include -#include #include -#include -#include -#include - namespace picongpu { @@ -87,21 +82,21 @@ namespace picongpu * @tparam T_PositionFunctor unary lambda functor with position description and number of macroparticles per * cell, see particle.param, examples: picongpu::particles::startPosition::Quiet, * picongpu::particles::startPosition::Random - * @tparam T_SpeciesType type or name as boost::mpl::string of the used species, + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the used species, * see speciesDefinition.param */ - template + template struct CreateDensity { using SpeciesType = pmacc::particles::meta::FindByNameOrType_t; using FrameType = typename SpeciesType::FrameType; - using UserDensityFunctor = typename bmpl::apply1::type; + using UserDensityFunctor = typename boost::mpl::apply1::type; /* add interface for compile time interface validation*/ using DensityFunctor = densityProfiles::IProfile; - using UserPositionFunctor = typename bmpl::apply1::type; + using UserPositionFunctor = typename boost::mpl::apply1::type; /* add interface for compile time interface validation*/ using PositionFunctor = manipulators::IUnary; @@ -133,8 +128,8 @@ namespace picongpu * @tparam T_Manipulator a pseudo-binary functor accepting two particle species: * destination and source, * @see picongpu::particles::manipulators - * @tparam T_SrcSpeciesType type or name as boost::mpl::string of the source species - * @tparam T_DestSpeciesType type or name as boost::mpl::string of the destination species + * @tparam T_SrcSpeciesType type or name as PMACC_CSTRING of the source species + * @tparam T_DestSpeciesType type or name as PMACC_CSTRING of the destination species * @tparam T_SrcFilter picongpu::particles::filter, particle filter type to * select particles in T_SrcSpeciesType to derive into * T_DestSpeciesType @@ -142,7 +137,7 @@ namespace picongpu template< typename T_Manipulator, typename T_SrcSpeciesType, - typename T_DestSpeciesType = bmpl::_1, + typename T_DestSpeciesType = boost::mpl::_1, typename T_SrcFilter = filter::All> struct ManipulateDerive { @@ -151,9 +146,9 @@ namespace picongpu using SrcSpeciesType = pmacc::particles::meta::FindByNameOrType_t; using SrcFrameType = typename SrcSpeciesType::FrameType; - using DestFunctor = typename bmpl::apply1::type; + using DestFunctor = typename boost::mpl::apply1::type; - using SrcFilter = typename bmpl::apply1::type; + using SrcFilter = typename boost::mpl::apply1::type; /* note: this is a FilteredManipulator with filter::All for * destination species, users can filter the destination directly via if's @@ -184,12 +179,15 @@ namespace picongpu * @note FillAllGaps is called on on `T_DestSpeciesType` after the derivation is * finished. * - * @tparam T_SrcSpeciesType type or name as boost::mpl::string of the source species - * @tparam T_DestSpeciesType type or name as boost::mpl::string of the destination species + * @tparam T_SrcSpeciesType type or name as PMACC_CSTRING of the source species + * @tparam T_DestSpeciesType type or name as PMACC_CSTRING of the destination species * @tparam T_Filter picongpu::particles::filter, * particle filter type to select source particles to derive */ - template + template< + typename T_SrcSpeciesType, + typename T_DestSpeciesType = boost::mpl::_1, + typename T_Filter = filter::All> struct Derive : ManipulateDerive { }; @@ -207,10 +205,10 @@ namespace picongpu * contiguously with valid particles and that all frames but the last are full * is fulfilled. * - * @tparam T_SpeciesType type or name as boost::mpl::string of the particle species + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the particle species * to fill gaps in memory */ - template + template struct FillAllGaps { using SpeciesType = pmacc::particles::meta::FindByNameOrType_t; diff --git a/include/picongpu/particles/Manipulate.hpp b/include/picongpu/particles/Manipulate.hpp index 9b2bfe02c43..fef2a88a150 100644 --- a/include/picongpu/particles/Manipulate.hpp +++ b/include/picongpu/particles/Manipulate.hpp @@ -48,8 +48,8 @@ namespace picongpu { private: using Species = pmacc::particles::meta::FindByNameOrType_t; - using SpeciesFunctor = typename bmpl::apply1::type; - using ParticleFilter = typename bmpl::apply1::type; + using SpeciesFunctor = typename boost::mpl::apply1::type; + using ParticleFilter = typename boost::mpl::apply1::type; public: using type = manipulators::IUnary; @@ -72,7 +72,7 @@ namespace picongpu * @tparam T_Manipulator unary lambda functor accepting one particle * species, * @see picongpu::particles::manipulators - * @tparam T_Species type or name as boost::mpl::string of the used species + * @tparam T_Species type or name as PMACC_CSTRING of the used species * @tparam T_Filter picongpu::particles::filter, particle filter type to * select particles in `T_Species` to manipulate * @tparam T_Area area to process particles in operator()(currentStep), @@ -81,7 +81,7 @@ namespace picongpu */ template< typename T_Manipulator, - typename T_Species = bmpl::_1, + typename T_Species = boost::mpl::_1, typename T_Filter = filter::All, typename T_Area = std::integral_constant> struct Manipulate @@ -99,7 +99,7 @@ namespace picongpu * workflow is as follows: * - select the species to manipulate, often by filtering VectorAllSpecies * - define a manipulator type; in case the manipulator has a species type - * as a template parameter, use the bmpl::_1 placeholder instead + * as a template parameter, use the boost::mpl::_1 placeholder instead * - define a filter type when necessary * - call manipulate() * @@ -135,7 +135,8 @@ namespace picongpu inline void manipulate(uint32_t const currentStep) { using SpeciesSeq = typename pmacc::ToSeq::type; - using Functor = Manipulate>; + using Functor + = Manipulate>; pmacc::meta::ForEach forEach; forEach(currentStep); } @@ -155,7 +156,7 @@ namespace picongpu inline void manipulate(uint32_t const currentStep, T_AreaMapperFactory const& areaMapperFactory) { using SpeciesSeq = typename pmacc::ToSeq::type; - using Functor = Manipulate; + using Functor = Manipulate; pmacc::meta::ForEach forEach; forEach(currentStep, areaMapperFactory); } diff --git a/include/picongpu/particles/Particles.hpp b/include/picongpu/particles/Particles.hpp index 39dba145a07..303d19cf6a8 100644 --- a/include/picongpu/particles/Particles.hpp +++ b/include/picongpu/particles/Particles.hpp @@ -41,9 +41,6 @@ #include #include -#include -#include - #include #include #include @@ -70,9 +67,9 @@ namespace picongpu /** particle species * - * @tparam T_Name name of the species [type boost::mpl::string] - * @tparam T_Attributes sequence with attributes [type boost::mpl forward sequence] - * @tparam T_Flags sequence with flags e.g. solver [type boost::mpl forward sequence] + * @tparam T_Name name of the species [type PMACC_CSTRING] + * @tparam T_Attributes sequence with attributes [type boost::mp11 list] + * @tparam T_Flags sequence with flags e.g. solver [type boost::mp11 list] */ template class Particles @@ -82,16 +79,16 @@ namespace picongpu SuperCellSize, T_Attributes, T_Flags, - typename bmpl::if_< + pmacc::mp_if< // check if alias boundaryCondition is defined for the species - bmpl::contains>::type>, + pmacc::mp_contains>::type>, // resolve the alias typename pmacc::traits::Resolve< typename GetKeyFromAlias>::type>::type, // fallback if the species has not defined the alias boundaryCondition pmacc::HandleGuardRegion< pmacc::particles::policies::ExchangeParticles, - pmacc::particles::policies::DoNothing>>::type>, + pmacc::particles::policies::DoNothing>>>, MappingDesc, DeviceHeap> , public ISimulationData @@ -102,15 +99,15 @@ namespace picongpu SuperCellSize, T_Attributes, T_Flags, - typename bmpl::if_< + pmacc::mp_if< // check if alias boundaryCondition is defined for the species - bmpl::contains>::type>, + pmacc::mp_contains>::type>, // resolve the alias typename pmacc::traits::Resolve>::type>::type, // fallback if the species has not defined the alias boundaryCondition pmacc::HandleGuardRegion< pmacc::particles::policies::ExchangeParticles, - pmacc::particles::policies::DoNothing>>::type>; + pmacc::particles::policies::DoNothing>>>; using ParticlesBaseType = ParticlesBase; using FrameType = typename ParticlesBaseType::FrameType; using FrameTypeBorder = typename ParticlesBaseType::FrameTypeBorder; diff --git a/include/picongpu/particles/ParticlesFunctors.hpp b/include/picongpu/particles/ParticlesFunctors.hpp index 3db824f9ee2..366c0eae336 100644 --- a/include/picongpu/particles/ParticlesFunctors.hpp +++ b/include/picongpu/particles/ParticlesFunctors.hpp @@ -34,19 +34,15 @@ #include #include -#include -#include - #include - namespace picongpu { namespace particles { /** assign nullptr to all attributes of a species * - * @tparam T_SpeciesType type or name as boost::mpl::string of the species + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the species */ template struct AssignNull @@ -64,7 +60,7 @@ namespace picongpu /** create memory for the given species type * - * @tparam T_SpeciesType type or name as boost::mpl::string of the species + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the species */ template struct CreateSpecies @@ -82,7 +78,7 @@ namespace picongpu /** write memory statistics to the terminal * - * @tparam T_SpeciesType type or name as boost::mpl::string of the species + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the species */ template struct LogMemoryStatisticsForSpecies @@ -106,7 +102,7 @@ namespace picongpu /** call method reset for the given species * - * @tparam T_SpeciesType type or name as boost::mpl::string of the species to reset + * @tparam T_SpeciesType type or name as PMACC_CSTRING of the species to reset */ template struct CallReset @@ -126,7 +122,7 @@ namespace picongpu * * Both operations only affect species with a pusher * - * @tparam T_SpeciesType type or name as boost::mpl::string of particle species that is checked + * @tparam T_SpeciesType type or name as PMACC_CSTRING of particle species that is checked */ template struct PushSpecies @@ -154,7 +150,7 @@ namespace picongpu * * Must be called only for species with a pusher * - * @tparam T_SpeciesType type or name as boost::mpl::string of particle species that is checked + * @tparam T_SpeciesType type or name as PMACC_CSTRING of particle species that is checked */ template struct RemoveOuterParticles @@ -174,7 +170,7 @@ namespace picongpu * * communication is only triggered for species with a pusher * - * @tparam T_SpeciesType type or name as boost::mpl::string of particle species that is checked + * @tparam T_SpeciesType type or name as PMACC_CSTRING of particle species that is checked */ template struct CommunicateSpecies @@ -217,7 +213,7 @@ namespace picongpu /* push all species */ using VectorSpeciesWithPusher = typename pmacc::particles::traits::FilterByFlag>::type; - meta::ForEach> pushSpecies; + meta::ForEach> pushSpecies; pushSpecies(currentStep, eventInt, updateEventList); /* join all push events */ @@ -227,7 +223,8 @@ namespace picongpu } /* call communication for all species */ - meta::ForEach> communicateSpecies; + meta::ForEach> + communicateSpecies; communicateSpecies(updateEventList, commEventList); /* join all communication events */ @@ -249,14 +246,14 @@ namespace picongpu { using VectorSpeciesWithPusher = typename pmacc::particles::traits::FilterByFlag>::type; - meta::ForEach> removeOuterParticles; + meta::ForEach> removeOuterParticles; removeOuterParticles(currentStep); } }; /** Call an ionization method upon an ion species * - * @tparam T_SpeciesType type or name as boost::mpl::string of particle species that is going to be ionized + * @tparam T_SpeciesType type or name as PMACC_CSTRING of particle species that is going to be ionized * with ionization scheme T_SelectIonizer */ template @@ -304,7 +301,7 @@ namespace picongpu * * Tests if species can be ionized and calls the kernels to do that * - * @tparam T_SpeciesType type or name as boost::mpl::string of particle species that is checked for ionization + * @tparam T_SpeciesType type or name as PMACC_CSTRING of particle species that is checked for ionization */ template struct CallIonization @@ -329,7 +326,8 @@ namespace picongpu using hasIonizers = typename HasFlag>::type; if(hasIonizers::value) { - meta::ForEach> particleIonization; + meta::ForEach> + particleIonization; particleIonization(cellDesc, currentStep); } } diff --git a/include/picongpu/particles/ParticlesInit.kernel b/include/picongpu/particles/ParticlesInit.kernel index b5439cb81ad..4308b80f6af 100644 --- a/include/picongpu/particles/ParticlesInit.kernel +++ b/include/picongpu/particles/ParticlesInit.kernel @@ -201,11 +201,12 @@ namespace picongpu */ { using ParticleAttrList = typename FrameType::ValueTypeSeq; - using AttrToIgnore = bmpl::vector4, multiMask, localCellIdx, weighting>; + using AttrToIgnore = pmacc::mp_list, multiMask, localCellIdx, weighting>; using ParticleCleanedAttrList = typename ResolveAndRemoveFromSeq::type; - meta::ForEach> setToDefault; + meta::ForEach> + setToDefault; setToDefault(particle); } particle[multiMask_] = 1; diff --git a/include/picongpu/particles/collision/Collider.def b/include/picongpu/particles/collision/Collider.def index a20cfb57a0c..c914a2d6454 100644 --- a/include/picongpu/particles/collision/Collider.def +++ b/include/picongpu/particles/collision/Collider.def @@ -19,10 +19,7 @@ #pragma once -#include "picongpu/particles/filter/filter.def" - -#include - +#include namespace picongpu { @@ -36,7 +33,7 @@ namespace picongpu * @tparam T_Species1 */ template - using Pair = boost::mpl::pair; + using Pair = pmacc::meta::Pair; /* A set of particle filters for a pair of colliding species. * @@ -44,14 +41,14 @@ namespace picongpu * @tparam T_Filter1 Filter applied on the 2nd species in a pair. */ template - using FilterPair = boost::mpl::pair; + using FilterPair = pmacc::meta::Pair; /* Sets the same particle filter for both species in a pair. * * @tparam T_Filter A common particle filter for both colliding species. */ template - using OneFilter = boost::mpl::pair; + using OneFilter = pmacc::meta::Pair; /* Defines a set of binary collisions with common parameters. * diff --git a/include/picongpu/particles/collision/Collider.hpp b/include/picongpu/particles/collision/Collider.hpp index 71f7c45e3af..6d484b6363f 100644 --- a/include/picongpu/particles/collision/Collider.hpp +++ b/include/picongpu/particles/collision/Collider.hpp @@ -51,8 +51,8 @@ namespace picongpu { (collision::WithPeer< typename T_Collider::Functor, - typename bmpl::at_c::type::first, - typename bmpl::at_c::type::second, + typename pmacc::mp_at_c::first, + typename pmacc::mp_at_c::second, typename T_Collider::FilterPair, colliderId, I>{}(deviceHeap, currentStep), @@ -67,7 +67,7 @@ namespace picongpu void operator()(std::shared_ptr const& deviceHeap, uint32_t currentStep) { using SpeciesPairList = typename pmacc::ToSeq::type; - constexpr size_t numPairs = bmpl::size::type::value; + constexpr size_t numPairs = pmacc::mp_size::value; std::make_index_sequence index{}; detail::CallColliderForAPair{}( index, diff --git a/include/picongpu/particles/collision/InterCollision.hpp b/include/picongpu/particles/collision/InterCollision.hpp index 08d2f06bc09..676eaac7136 100644 --- a/include/picongpu/particles/collision/InterCollision.hpp +++ b/include/picongpu/particles/collision/InterCollision.hpp @@ -48,7 +48,7 @@ namespace picongpu HINLINE InterCollision() { constexpr auto numScreeningSpecies - = picongpu::particles::collision::CollisionScreeningSpecies::size::value; + = pmacc::mp_size::value; PMACC_CASSERT_MSG( _CollisionScreeningSpecies_can_not_be_empty_when_dynamic_coulomb_log_is_used, (useScreeningLength && numScreeningSpecies > 0u) || !useScreeningLength); diff --git a/include/picongpu/particles/collision/WithPeer.hpp b/include/picongpu/particles/collision/WithPeer.hpp index fbcc2d5e365..5ef70218b6b 100644 --- a/include/picongpu/particles/collision/WithPeer.hpp +++ b/include/picongpu/particles/collision/WithPeer.hpp @@ -106,7 +106,8 @@ namespace picongpu using PeerSpecies = pmacc::particles::meta::FindByNameOrType_t; - using CollisionFunctor = typename bmpl::apply2::type; + using CollisionFunctor = + typename boost::mpl::apply2::type; detail::WithPeer{}( deviceHeap, diff --git a/include/picongpu/particles/debyeLength/Check.hpp b/include/picongpu/particles/debyeLength/Check.hpp index b10bb71e54d..c925201e680 100644 --- a/include/picongpu/particles/debyeLength/Check.hpp +++ b/include/picongpu/particles/debyeLength/Check.hpp @@ -97,7 +97,7 @@ namespace picongpu HINLINE std::uint32_t countElectronLikeSpecies() { Counter::value() = 0u; - meta::ForEach> count; + meta::ForEach> count; count(); return Counter::value(); } @@ -203,7 +203,7 @@ namespace picongpu } else { - meta::ForEach> checkDebyeLength; + meta::ForEach> checkDebyeLength; checkDebyeLength(cellDescription, isPrinting); } } diff --git a/include/picongpu/particles/filter/generic/FreeRng.def b/include/picongpu/particles/filter/generic/FreeRng.def index 02eba75ecb2..5bf29cc72fe 100644 --- a/include/picongpu/particles/filter/generic/FreeRng.def +++ b/include/picongpu/particles/filter/generic/FreeRng.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/filter/generic/FreeTotalCellOffset.def b/include/picongpu/particles/filter/generic/FreeTotalCellOffset.def index c276b05356c..4a61f2bb567 100644 --- a/include/picongpu/particles/filter/generic/FreeTotalCellOffset.def +++ b/include/picongpu/particles/filter/generic/FreeTotalCellOffset.def @@ -21,7 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include #include diff --git a/include/picongpu/particles/functor/misc/Rng.def b/include/picongpu/particles/functor/misc/Rng.def index 66ead847107..fa131e0b473 100644 --- a/include/picongpu/particles/functor/misc/Rng.def +++ b/include/picongpu/particles/functor/misc/Rng.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi.def b/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi.def index 334b2bdb8e6..1ae4e8a70e3 100644 --- a/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi.def +++ b/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi.def @@ -35,7 +35,7 @@ namespace picongpu * cannot be known in list of particle species' flags * @see speciesDefinition.param */ - template + template struct ThomasFermi_Impl; /** Thomas-Fermi impact ionization model diff --git a/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi_Impl.hpp b/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi_Impl.hpp index 0616bfc9abe..2819af3bcc4 100644 --- a/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi_Impl.hpp +++ b/include/picongpu/particles/ionization/byCollision/ThomasFermi/ThomasFermi_Impl.hpp @@ -50,8 +50,8 @@ namespace picongpu * * @tparam T_IonizationAlgorithm functor that returns a number of * new free macro electrons to create, range: [0, boundElectrons] - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created - * @tparam T_SrcSpecies type or name as boost::mpl::string of the particle species that is ionized + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created + * @tparam T_SrcSpecies type or name as PMACC_CSTRING of the particle species that is ionized */ template struct ThomasFermi_Impl @@ -293,7 +293,7 @@ namespace picongpu * - boundElectrons: because species other than ions or atoms do not have them * (gets AUTOMATICALLY deselected because electrons do not have this attribute) */ - auto targetElectronClone = partOp::deselect>(childElectron); + auto targetElectronClone = partOp::deselect>(childElectron); partOp::assign(targetElectronClone, partOp::deselect(parentIon)); diff --git a/include/picongpu/particles/ionization/byField/ADK/ADK.def b/include/picongpu/particles/ionization/byField/ADK/ADK.def index f528db69761..ee004f3d861 100644 --- a/include/picongpu/particles/ionization/byField/ADK/ADK.def +++ b/include/picongpu/particles/ionization/byField/ADK/ADK.def @@ -42,7 +42,7 @@ namespace picongpu typename T_IonizationAlgorithm, typename T_DestSpecies, typename T_IonizationCurrent, - typename T_SrcSpecies = bmpl::_1> + typename T_SrcSpecies = boost::mpl::_1> struct ADK_Impl; /** Ammosov-Delone-Krainov tunneling model - linear laser polarization diff --git a/include/picongpu/particles/ionization/byField/ADK/ADK_Impl.hpp b/include/picongpu/particles/ionization/byField/ADK/ADK_Impl.hpp index 02c305d8308..014ce64ecdd 100644 --- a/include/picongpu/particles/ionization/byField/ADK/ADK_Impl.hpp +++ b/include/picongpu/particles/ionization/byField/ADK/ADK_Impl.hpp @@ -54,9 +54,9 @@ namespace picongpu * \brief Ammosov-Delone-Krainov * Tunneling ionization for hydrogenlike atoms * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_IonizationCurrent select type of ionization current (None or EnergyConservation) - * @tparam T_SrcSpecies type or name as boost::mpl::string of the particle species that is ionized + * @tparam T_SrcSpecies type or name as PMACC_CSTRING of the particle species that is ionized */ template< typename T_IonizationAlgorithm, @@ -235,7 +235,7 @@ namespace picongpu * - boundElectrons: because species other than ions or atoms do not have them * (gets AUTOMATICALLY deselected because electrons do not have this attribute) */ - auto targetElectronClone = partOp::deselect>(childElectron); + auto targetElectronClone = partOp::deselect>(childElectron); partOp::assign(targetElectronClone, partOp::deselect(parentIon)); diff --git a/include/picongpu/particles/ionization/byField/BSI/BSI.def b/include/picongpu/particles/ionization/byField/BSI/BSI.def index 47dda64f119..b3db73dbf9a 100644 --- a/include/picongpu/particles/ionization/byField/BSI/BSI.def +++ b/include/picongpu/particles/ionization/byField/BSI/BSI.def @@ -42,7 +42,7 @@ namespace picongpu typename T_IonizationAlgorithm, typename T_DestSpecies, typename T_IonizationCurrent, - typename T_SrcSpecies = bmpl::_1> + typename T_SrcSpecies = boost::mpl::_1> struct BSI_Impl; /** Barrier Suppression Ionization - Hydrogen-Like diff --git a/include/picongpu/particles/ionization/byField/BSI/BSI_Impl.hpp b/include/picongpu/particles/ionization/byField/BSI/BSI_Impl.hpp index 43d0a7cba15..ac724ff19ae 100644 --- a/include/picongpu/particles/ionization/byField/BSI/BSI_Impl.hpp +++ b/include/picongpu/particles/ionization/byField/BSI/BSI_Impl.hpp @@ -53,9 +53,9 @@ namespace picongpu * * \brief Barrier Suppression Ionization - Implementation * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_IonizationCurrent select type of ionization current (None or EnergyConservation) - * @tparam T_SrcSpecies type or name as boost::mpl::string of the particle species that is ionized + * @tparam T_SrcSpecies type or name as PMACC_CSTRING of the particle species that is ionized */ template< typename T_IonizationAlgorithm, @@ -223,7 +223,7 @@ namespace picongpu * - boundElectrons: because species other than ions or atoms do not have them * (gets AUTOMATICALLY deselected because electrons do not have this attribute) */ - auto targetElectronClone = partOp::deselect>(childElectron); + auto targetElectronClone = partOp::deselect>(childElectron); partOp::assign(targetElectronClone, partOp::deselect(parentIon)); diff --git a/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.def b/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.def index 40008779ce6..ca2b3edac27 100644 --- a/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.def +++ b/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.def @@ -43,7 +43,7 @@ namespace picongpu * Modeling field ionization in an energy conserving form and resulting nonstandard fluid * dynamcis, Physics of Plasmas 5, 4466 (1998) https://doi.org/10.1063/1.873184 * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_Dim dimension of simulation * @tparam T_IonizationCurrent select type of ionization current (None or EnergyConservation) */ diff --git a/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.hpp b/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.hpp index 68963e23faa..562e15c0179 100644 --- a/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.hpp +++ b/include/picongpu/particles/ionization/byField/IonizationCurrent/IonizationCurrent.hpp @@ -37,7 +37,7 @@ namespace picongpu /**@{*/ /** Implementation of actual ionization current * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_Dim dimension of simulation */ template diff --git a/include/picongpu/particles/ionization/byField/IonizationCurrent/JIonizationAssignment.hpp b/include/picongpu/particles/ionization/byField/IonizationCurrent/JIonizationAssignment.hpp index 4c8442938c6..cbd2aafa3f6 100644 --- a/include/picongpu/particles/ionization/byField/IonizationCurrent/JIonizationAssignment.hpp +++ b/include/picongpu/particles/ionization/byField/IonizationCurrent/JIonizationAssignment.hpp @@ -32,7 +32,7 @@ namespace picongpu { /** defining traits for current assignment * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created */ template struct JIonizationAssignmentParent @@ -48,7 +48,7 @@ namespace picongpu /**@{*/ /** implementation of current assignment * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_Dim dimension of simulation */ template diff --git a/include/picongpu/particles/ionization/byField/Keldysh/Keldysh.def b/include/picongpu/particles/ionization/byField/Keldysh/Keldysh.def index 618d367e0bb..bd26daa579b 100644 --- a/include/picongpu/particles/ionization/byField/Keldysh/Keldysh.def +++ b/include/picongpu/particles/ionization/byField/Keldysh/Keldysh.def @@ -42,7 +42,7 @@ namespace picongpu typename T_IonizationAlgorithm, typename T_DestSpecies, typename T_IonizationCurrent, - typename T_SrcSpecies = bmpl::_1> + typename T_SrcSpecies = boost::mpl::_1> struct Keldysh_Impl; /** Keldysh ionization model diff --git a/include/picongpu/particles/ionization/byField/Keldysh/Keldysh_Impl.hpp b/include/picongpu/particles/ionization/byField/Keldysh/Keldysh_Impl.hpp index 58da2ff0b31..86a3d433854 100644 --- a/include/picongpu/particles/ionization/byField/Keldysh/Keldysh_Impl.hpp +++ b/include/picongpu/particles/ionization/byField/Keldysh/Keldysh_Impl.hpp @@ -54,9 +54,9 @@ namespace picongpu * \brief Ammosov-Delone-Krainov * Tunneling ionization for hydrogenlike atoms * - * @tparam T_DestSpecies type or name as boost::mpl::string of the electron species to be created + * @tparam T_DestSpecies type or name as PMACC_CSTRING of the electron species to be created * @tparam T_IonizationCurrent select type of ionization current (None or EnergyConservation) - * @tparam T_SrcSpecies type or name as boost::mpl::string of the particle species that is ionized + * @tparam T_SrcSpecies type or name as PMACC_CSTRING of the particle species that is ionized */ template< typename T_IonizationAlgorithm, @@ -235,7 +235,7 @@ namespace picongpu * - boundElectrons: because species other than ions or atoms do not have them * (gets AUTOMATICALLY deselected because electrons do not have this attribute) */ - auto targetElectronClone = partOp::deselect>(childElectron); + auto targetElectronClone = partOp::deselect>(childElectron); partOp::assign(targetElectronClone, partOp::deselect(parentIon)); diff --git a/include/picongpu/particles/manipulators/generic/FreeRng.def b/include/picongpu/particles/manipulators/generic/FreeRng.def index 4b8865ded6a..5a07ec6b923 100644 --- a/include/picongpu/particles/manipulators/generic/FreeRng.def +++ b/include/picongpu/particles/manipulators/generic/FreeRng.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/manipulators/unary/FreeTotalCellOffset.def b/include/picongpu/particles/manipulators/unary/FreeTotalCellOffset.def index 388ddadf30b..e57d0b35b10 100644 --- a/include/picongpu/particles/manipulators/unary/FreeTotalCellOffset.def +++ b/include/picongpu/particles/manipulators/unary/FreeTotalCellOffset.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/manipulators/unary/FreeTotalCellOffsetRng.def b/include/picongpu/particles/manipulators/unary/FreeTotalCellOffsetRng.def index f36dfcfb375..64f4a9c6770 100644 --- a/include/picongpu/particles/manipulators/unary/FreeTotalCellOffsetRng.def +++ b/include/picongpu/particles/manipulators/unary/FreeTotalCellOffsetRng.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/manipulators/unary/RandomPosition.def b/include/picongpu/particles/manipulators/unary/RandomPosition.def index e791fc3421a..32bb6e43734 100644 --- a/include/picongpu/particles/manipulators/unary/RandomPosition.def +++ b/include/picongpu/particles/manipulators/unary/RandomPosition.def @@ -23,9 +23,6 @@ #include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/particleToGrid/CombinedDerive.def b/include/picongpu/particles/particleToGrid/CombinedDerive.def index 7d02d415c75..fdcb5139681 100644 --- a/include/picongpu/particles/particleToGrid/CombinedDerive.def +++ b/include/picongpu/particles/particleToGrid/CombinedDerive.def @@ -142,7 +142,8 @@ namespace picongpu typename particles::traits::SpeciesEligibleForSolver::type; using EligibleForModifierAttribute = typename particles::traits::SpeciesEligibleForSolver::type; - using type = typename bmpl::and_; + using type + = std::bool_constant; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def b/include/picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def index 47983e58723..2ace38cfc2a 100644 --- a/include/picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def +++ b/include/picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def @@ -43,7 +43,6 @@ #include -#include #include #include @@ -198,7 +197,7 @@ namespace picongpu using FilteredAttribute = FilteredDerivedAttribute; using type = typename traits::GenerateSolversIfSpeciesEligible< - CreateFieldTmpOperation, + CreateFieldTmpOperation, SeqSpecies, FilteredAttribute>::type; }; diff --git a/include/picongpu/particles/particleToGrid/FilteredDerivedAttribute.hpp b/include/picongpu/particles/particleToGrid/FilteredDerivedAttribute.hpp index f1a89c53060..ff9f073fd60 100644 --- a/include/picongpu/particles/particleToGrid/FilteredDerivedAttribute.hpp +++ b/include/picongpu/particles/particleToGrid/FilteredDerivedAttribute.hpp @@ -23,9 +23,6 @@ #include "picongpu/particles/particleToGrid/derivedAttributes/DerivedAttributes.def" #include "picongpu/particles/traits/SpeciesEligibleForSolver.hpp" -#include - - namespace picongpu { namespace particles @@ -57,7 +54,7 @@ namespace picongpu typename particles::traits::SpeciesEligibleForSolver::type; using EligibleForFilter = typename particles::traits::SpeciesEligibleForSolver::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/FoldDeriveFields.hpp b/include/picongpu/particles/particleToGrid/FoldDeriveFields.hpp index b75a7d1d587..b887203e534 100644 --- a/include/picongpu/particles/particleToGrid/FoldDeriveFields.hpp +++ b/include/picongpu/particles/particleToGrid/FoldDeriveFields.hpp @@ -136,11 +136,11 @@ namespace picongpu */ void operator()(FieldTmp& fieldTmp1, uint32_t const& currentStep, uint32_t const& extraSlot) const { - using FilteredSpeciesSeq = - typename bmpl::transform>::type; + using FilteredSpeciesSeq + = pmacc::mp_transform_q, T_SpeciesSeq>; - using FirstFilteredSpecies = typename bmpl::at_c::type; - using RemainingFilteredSpecies = typename bmpl::pop_front::type; + using FirstFilteredSpecies = pmacc::mp_at_c; + using RemainingFilteredSpecies = pmacc::mp_pop_front; using DeriveOperation = particles::particleToGrid:: @@ -158,12 +158,12 @@ namespace picongpu if(event.has_value()) eventSystem::setTransactionEvent(*event); - if constexpr(!bmpl::empty::value) + if constexpr(!pmacc::mp_empty::value) { auto fieldTmp2 = dc.get(FieldTmp::getUniqueId(extraSlot), true); pmacc::meta::ForEach< RemainingFilteredSpecies, - detail::OpWithNextField>{}( + detail::OpWithNextField>{}( fieldTmp1, *fieldTmp2, currentStep, diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/ChargeDensity.def b/include/picongpu/particles/particleToGrid/derivedAttributes/ChargeDensity.def index 3c43005d703..74d9e9699e7 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/ChargeDensity.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/ChargeDensity.def @@ -27,8 +27,6 @@ #include #include -#include - #include @@ -105,7 +103,7 @@ namespace picongpu using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/Energy.def b/include/picongpu/particles/particleToGrid/derivedAttributes/Energy.def index 451513b8531..dfa87aaaa62 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/Energy.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/Energy.def @@ -27,8 +27,6 @@ #include #include -#include - #include @@ -105,7 +103,7 @@ namespace picongpu using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensity.def b/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensity.def index 82629381810..4e9de532214 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensity.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensity.def @@ -27,8 +27,6 @@ #include #include -#include - #include @@ -107,7 +105,7 @@ namespace picongpu using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensityCutoff.def b/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensityCutoff.def index 53a10eaecfd..15935a306f6 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensityCutoff.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/EnergyDensityCutoff.def @@ -28,8 +28,6 @@ #include #include -#include - #include namespace picongpu diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/LarmorPower.def b/include/picongpu/particles/particleToGrid/derivedAttributes/LarmorPower.def index 3d83c179735..e8fdfd2fe67 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/LarmorPower.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/LarmorPower.def @@ -27,11 +27,8 @@ #include #include -#include - #include - namespace picongpu { namespace particles @@ -103,7 +100,7 @@ namespace picongpu using SpeciesHasMass = typename pmacc::traits::HasFlag>::type; using SpeciesHasCharge = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/MidCurrentDensityComponent.def b/include/picongpu/particles/particleToGrid/derivedAttributes/MidCurrentDensityComponent.def index b565189b672..f2b20135b34 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/MidCurrentDensityComponent.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/MidCurrentDensityComponent.def @@ -29,11 +29,8 @@ #include #include -#include - #include - namespace picongpu { namespace particles @@ -124,7 +121,7 @@ namespace picongpu using SpeciesHasMass = typename pmacc::traits::HasFlag>::type; using SpeciesHasCharge = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/particleToGrid/derivedAttributes/WeightedVelocity.def b/include/picongpu/particles/particleToGrid/derivedAttributes/WeightedVelocity.def index c8860ad9424..224019e82fc 100644 --- a/include/picongpu/particles/particleToGrid/derivedAttributes/WeightedVelocity.def +++ b/include/picongpu/particles/particleToGrid/derivedAttributes/WeightedVelocity.def @@ -120,7 +120,7 @@ namespace picongpu typename pmacc::traits::HasIdentifiers::type; // needs mass using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = std::bool_constant; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/startPosition/OnePositionImpl.def b/include/picongpu/particles/startPosition/OnePositionImpl.def index d47c04ebdc4..34d0c816c7d 100644 --- a/include/picongpu/particles/startPosition/OnePositionImpl.def +++ b/include/picongpu/particles/startPosition/OnePositionImpl.def @@ -23,9 +23,6 @@ #include "picongpu/particles/startPosition/generic/Free.def" -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/startPosition/OnePositionImpl.hpp b/include/picongpu/particles/startPosition/OnePositionImpl.hpp index 73fd0b6ede9..2e6cab044e0 100644 --- a/include/picongpu/particles/startPosition/OnePositionImpl.hpp +++ b/include/picongpu/particles/startPosition/OnePositionImpl.hpp @@ -26,9 +26,6 @@ #include -#include - - namespace picongpu::particles::startPosition::acc { template diff --git a/include/picongpu/particles/startPosition/QuietImpl.def b/include/picongpu/particles/startPosition/QuietImpl.def index e99cf4eb5ac..0cfdd08965d 100644 --- a/include/picongpu/particles/startPosition/QuietImpl.def +++ b/include/picongpu/particles/startPosition/QuietImpl.def @@ -23,9 +23,6 @@ #include "picongpu/particles/startPosition/generic/Free.def" -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/startPosition/QuietImpl.hpp b/include/picongpu/particles/startPosition/QuietImpl.hpp index b595697bc4e..fdaeefe0025 100644 --- a/include/picongpu/particles/startPosition/QuietImpl.hpp +++ b/include/picongpu/particles/startPosition/QuietImpl.hpp @@ -23,9 +23,6 @@ #include "picongpu/particles/startPosition/generic/Free.def" -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/startPosition/RandomImpl.def b/include/picongpu/particles/startPosition/RandomImpl.def index 74959f3e2c8..91dc7f29589 100644 --- a/include/picongpu/particles/startPosition/RandomImpl.def +++ b/include/picongpu/particles/startPosition/RandomImpl.def @@ -25,9 +25,6 @@ #include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/startPosition/RandomImpl.hpp b/include/picongpu/particles/startPosition/RandomImpl.hpp index 417eb663fa4..4f9674ac4af 100644 --- a/include/picongpu/particles/startPosition/RandomImpl.hpp +++ b/include/picongpu/particles/startPosition/RandomImpl.hpp @@ -25,9 +25,6 @@ #include "picongpu/particles/startPosition/detail/WeightMacroParticles.hpp" #include "picongpu/particles/startPosition/generic/FreeRng.def" -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/startPosition/generic/FreeRng.def b/include/picongpu/particles/startPosition/generic/FreeRng.def index c0ee3b525a4..e767de445c2 100644 --- a/include/picongpu/particles/startPosition/generic/FreeRng.def +++ b/include/picongpu/particles/startPosition/generic/FreeRng.def @@ -21,10 +21,6 @@ #include "picongpu/simulation_defines.hpp" -#include -#include - - namespace picongpu { namespace particles diff --git a/include/picongpu/particles/traits/GenerateSolversIfSpeciesEligible.hpp b/include/picongpu/particles/traits/GenerateSolversIfSpeciesEligible.hpp index bd9eedf4cbb..7abfe5ec7a8 100644 --- a/include/picongpu/particles/traits/GenerateSolversIfSpeciesEligible.hpp +++ b/include/picongpu/particles/traits/GenerateSolversIfSpeciesEligible.hpp @@ -24,9 +24,6 @@ #include #include -#include -#include - namespace picongpu { @@ -58,18 +55,17 @@ namespace picongpu { // wrap single arguments to sequence using SeqSpecies = typename pmacc::ToSeq::type; + // unspecialized solver using Solver = T_Solver; - template - struct Op : bmpl::apply1 - { - }; - - using SeqEligibleSpecies = typename bmpl:: - copy_if>::type; + template + using Predicate = typename particles::traits::SpeciesEligibleForSolver::type; + using SeqEligibleSpecies = pmacc::mp_copy_if; - using type = typename bmpl::transform>::type; + template + using Op = typename boost::mpl::apply1::type; + using type = pmacc::mp_transform; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/particles/traits/GetDensityRatio.hpp b/include/picongpu/particles/traits/GetDensityRatio.hpp index b19b5d5c833..f83b143ccfc 100644 --- a/include/picongpu/particles/traits/GetDensityRatio.hpp +++ b/include/picongpu/particles/traits/GetDensityRatio.hpp @@ -25,9 +25,6 @@ #include #include -#include - - namespace picongpu { namespace traits @@ -52,7 +49,7 @@ namespace picongpu using DensityRatioOfSpecies = typename pmacc::traits::Resolve>::type>::type; - using type = typename bmpl::if_::type; + using type = pmacc::mp_if; }; } // namespace traits diff --git a/include/picongpu/particles/traits/GetExchangeMemCfg.hpp b/include/picongpu/particles/traits/GetExchangeMemCfg.hpp index 1231cac6bc1..5028e03827b 100644 --- a/include/picongpu/particles/traits/GetExchangeMemCfg.hpp +++ b/include/picongpu/particles/traits/GetExchangeMemCfg.hpp @@ -25,9 +25,6 @@ #include #include -#include - - namespace picongpu { namespace traits @@ -46,10 +43,10 @@ namespace picongpu using FrameType = typename T_Species::FrameType; using hasMemCfg = typename HasFlag>::type; - using type = typename bmpl::if_< + using type = pmacc::mp_if< hasMemCfg, typename pmacc::traits::Resolve>::type>::type, - ::picongpu::DefaultExchangeMemCfg>::type; + ::picongpu::DefaultExchangeMemCfg>; }; //! short hand traits for GetExchangeMemCfg diff --git a/include/picongpu/particles/traits/GetIonizerList.hpp b/include/picongpu/particles/traits/GetIonizerList.hpp index 42ee155edd9..fdc8a958f2b 100644 --- a/include/picongpu/particles/traits/GetIonizerList.hpp +++ b/include/picongpu/particles/traits/GetIonizerList.hpp @@ -57,7 +57,7 @@ namespace picongpu using type = typename pmacc::OperateOnSeq< FoundIonizerList, - bmpl::apply1, + boost::mpl::apply1, pmacc::meta::accessors::Type<>>::type; }; diff --git a/include/picongpu/particles/traits/GetMarginPusher.hpp b/include/picongpu/particles/traits/GetMarginPusher.hpp index 2aa64f8b1ad..5ac50a39ee4 100644 --- a/include/picongpu/particles/traits/GetMarginPusher.hpp +++ b/include/picongpu/particles/traits/GetMarginPusher.hpp @@ -38,15 +38,17 @@ namespace picongpu */ template< typename T_Species, - typename T_GetLowerMargin = GetLowerMargin>, - typename T_GetUpperMargin = GetUpperMargin>> + typename T_GetLowerMargin = GetLowerMargin>, + typename T_GetUpperMargin = GetUpperMargin>> struct GetMarginPusher { - using AddLowerMargins = pmacc::math::CT::add>, T_GetLowerMargin>; - using LowerMargin = typename bmpl::apply::type; + using AddLowerMargins + = pmacc::math::CT::add>, T_GetLowerMargin>; + using LowerMargin = typename boost::mpl::apply::type; - using AddUpperMargins = pmacc::math::CT::add>, T_GetUpperMargin>; - using UpperMargin = typename bmpl::apply::type; + using AddUpperMargins + = pmacc::math::CT::add>, T_GetUpperMargin>; + using UpperMargin = typename boost::mpl::apply::type; }; /** Get lower margin of a pusher for species diff --git a/include/picongpu/particles/traits/SpeciesEligibleForSolver.hpp b/include/picongpu/particles/traits/SpeciesEligibleForSolver.hpp index b47b1f9e566..3714c7e9599 100644 --- a/include/picongpu/particles/traits/SpeciesEligibleForSolver.hpp +++ b/include/picongpu/particles/traits/SpeciesEligibleForSolver.hpp @@ -19,8 +19,7 @@ #pragma once -#include - +#include namespace picongpu { @@ -30,7 +29,7 @@ namespace picongpu { /** Check if species fulfills requirements of a solver * - * Defines a boost::mpl::bool_ true type is the particle species as all + * Defines a pmacc::mp_bool true type is the particle species as all * requirements fulfilled for a solver. * * @tparam T_Species Species to check @@ -39,7 +38,7 @@ namespace picongpu template struct SpeciesEligibleForSolver { - using type = boost::mpl::bool_; + using type = pmacc::mp_bool; }; } // namespace traits diff --git a/include/picongpu/plugins/BinEnergyParticles.hpp b/include/picongpu/plugins/BinEnergyParticles.hpp index e5354247b12..eb7c59e28a5 100644 --- a/include/picongpu/plugins/BinEnergyParticles.hpp +++ b/include/picongpu/plugins/BinEnergyParticles.hpp @@ -45,8 +45,6 @@ #include #include -#include - #include #include #include @@ -212,9 +210,10 @@ namespace picongpu } // find all valid filter for the current used species - using EligibleFilters = typename MakeSeqFromNestedSeq>::type>::type; + template + using Op = typename particles::traits::GenerateSolversIfSpeciesEligible::type; + using EligibleFilters = + typename MakeSeqFromNestedSeq>::type; //! periodicity of computing the particle energy plugins::multi::Option notifyPeriod = {"period", "enable plugin [for each n-th step]"}; @@ -232,7 +231,7 @@ namespace picongpu boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> getEligibleFilterNames; + meta::ForEach> getEligibleFilterNames; getEligibleFilterNames(allowedFilters); concatenatedFilterNames = plugins::misc::concatenateToString(allowedFilters, ", "); @@ -450,7 +449,7 @@ namespace picongpu mapper, std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), currentStep, bindKernel); @@ -508,7 +507,7 @@ namespace picongpu // and also a mass ratio for energy calculation from momentum using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/plugins/ChargeConservation.hpp b/include/picongpu/plugins/ChargeConservation.hpp index 7f4dc119a2a..aae1ea59a97 100644 --- a/include/picongpu/plugins/ChargeConservation.hpp +++ b/include/picongpu/plugins/ChargeConservation.hpp @@ -28,11 +28,8 @@ #include #include -#include - #include - namespace picongpu { using namespace pmacc; @@ -94,7 +91,7 @@ namespace picongpu // and also a charge ratio for a charge density using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits diff --git a/include/picongpu/plugins/ChargeConservation.tpp b/include/picongpu/plugins/ChargeConservation.tpp index 6c6b697b236..a6673bfa7ad 100644 --- a/include/picongpu/plugins/ChargeConservation.tpp +++ b/include/picongpu/plugins/ChargeConservation.tpp @@ -174,6 +174,10 @@ namespace picongpu }; } // namespace detail + template + using SpeciesEligibleForChargeConservation = + typename particles::traits::SpeciesEligibleForSolver::type; + void ChargeConservation::notify(uint32_t currentStep) { typedef SuperCellSize BlockDim; @@ -186,16 +190,15 @@ namespace picongpu /* reset density values to zero */ fieldTmp->getGridBuffer().getDeviceBuffer().setValue(FieldTmp::ValueType(0.0)); - using EligibleSpecies = typename bmpl:: - copy_if>::type; + using EligibleSpecies = pmacc::mp_filter; // todo: log species that are used / ignored in this plugin with INFO /* calculate and add the charge density values from all species in FieldTmp */ meta::ForEach< EligibleSpecies, - picongpu::detail::ComputeChargeDensity>, - bmpl::_1> + picongpu::detail::ComputeChargeDensity>, + boost::mpl::_1> computeChargeDensity; computeChargeDensity(fieldTmp.get(), currentStep); diff --git a/include/picongpu/plugins/Emittance.hpp b/include/picongpu/plugins/Emittance.hpp index be419a3b811..e0656e34e2f 100644 --- a/include/picongpu/plugins/Emittance.hpp +++ b/include/picongpu/plugins/Emittance.hpp @@ -45,8 +45,6 @@ #include #include -#include - #include #include #include @@ -221,9 +219,10 @@ namespace picongpu } // find all valid filter for the current used species - using EligibleFilters = typename MakeSeqFromNestedSeq>::type>::type; + template + using Op = typename particles::traits::GenerateSolversIfSpeciesEligible::type; + using EligibleFilters = + typename MakeSeqFromNestedSeq>::type; //! periodicity of computing the particle energy plugins::multi::Option notifyPeriod @@ -239,7 +238,7 @@ namespace picongpu boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> getEligibleFilterNames; + meta::ForEach> getEligibleFilterNames; getEligibleFilterNames(allowedFilters); concatenatedFilterNames = plugins::misc::concatenateToString(allowedFilters, ", "); @@ -491,7 +490,7 @@ namespace picongpu mapper, std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), currentStep, binaryKernel); @@ -763,7 +762,7 @@ namespace picongpu // and also a mass ratio for energy calculation from momentum using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/plugins/EnergyParticles.hpp b/include/picongpu/plugins/EnergyParticles.hpp index effad835be0..4af32255e4f 100644 --- a/include/picongpu/plugins/EnergyParticles.hpp +++ b/include/picongpu/plugins/EnergyParticles.hpp @@ -42,8 +42,6 @@ #include #include -#include - #include #include #include @@ -178,9 +176,10 @@ namespace picongpu } // find all valid filter for the current used species - using EligibleFilters = typename MakeSeqFromNestedSeq>::type>::type; + template + using Op = typename particles::traits::GenerateSolversIfSpeciesEligible::type; + using EligibleFilters = + typename MakeSeqFromNestedSeq>::type; //! periodicity of computing the particle energy plugins::multi::Option notifyPeriod @@ -197,7 +196,7 @@ namespace picongpu boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> getEligibleFilterNames; + meta::ForEach> getEligibleFilterNames; getEligibleFilterNames(allowedFilters); concatenatedFilterNames = plugins::misc::concatenateToString(allowedFilters, ", "); @@ -362,7 +361,7 @@ namespace picongpu mapper, std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), currentStep, binaryKernel); @@ -434,7 +433,7 @@ namespace picongpu // and also a mass ratio for energy calculation from momentum using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/plugins/IsaacPlugin.hpp b/include/picongpu/plugins/IsaacPlugin.hpp index 06fad038416..6aabc61c7d0 100644 --- a/include/picongpu/plugins/IsaacPlugin.hpp +++ b/include/picongpu/plugins/IsaacPlugin.hpp @@ -24,6 +24,7 @@ #include "picongpu/plugins/ILightweightPlugin.hpp" #include +#include #include #include @@ -34,8 +35,6 @@ #include #include #include -#include -#include #include @@ -56,8 +55,8 @@ namespace picongpu public: static const size_t featureDim = 3; static const ISAAC_IDX_TYPE guardSize = 0; - // static const bool hasGuard = bmpl::not_>::value; - static const bool persistent = bmpl::not_>::value; + // static const bool hasGuard = !std::is_same_v; + static const bool persistent = !std::is_same_v; typename FieldType::DataBoxType shifted; MappingDesc* cellDescription; TFieldSource() : cellDescription(nullptr) @@ -174,7 +173,7 @@ namespace picongpu public: static const size_t featureDim = 3; static const ISAAC_IDX_TYPE guardSize = 0; - static const bool persistent = bmpl::not_>::value; + static const bool persistent = !std::is_same_v; typename FieldType::DataBoxType shifted; MappingDesc* cellDescription; TVectorFieldSource() : cellDescription(nullptr) @@ -378,15 +377,17 @@ namespace picongpu { public: static const ISAAC_IDX_TYPE textureDim = 1024; - using SourceList = bmpl:: - transform::type, Transformoperator>::type; - using VectorFieldSourceList = bmpl::transform< - boost::fusion::result_of::as_list::type, - VectorFieldTransformoperator>::type; + using SourceList = pmacc::mp_transform< + Transformoperator, + pmacc::meta::detail::SeqToList::type>>; + + using VectorFieldSourceList = pmacc::mp_transform< + VectorFieldTransformoperator, + pmacc::meta::detail::SeqToList::type>>; // create compile time particle list - using ParticleList = bmpl::transform< - boost::fusion::result_of::as_list::type, - ParticleTransformoperator>::type; + using ParticleList = pmacc::mp_transform< + ParticleTransformoperator, + pmacc::meta::detail::SeqToList::type>>; using VisualizationType = IsaacVisualization< cupla::AccHost, cupla::Acc, @@ -790,7 +791,7 @@ namespace picongpu = cellDescription->getGridLayout().getDataSpaceWithoutGuarding().productOfComponents(); cellCount = localNrOfCells * numProc; particleCount = localNrOfCells * particles::TYPICAL_PARTICLES_PER_CELL - * (bmpl::size::type::value) * numProc; + * (pmacc::mp_size::type::value) * numProc; lastNotify = getTicksUs(); if(rank == 0) { diff --git a/include/picongpu/plugins/PhaseSpace/PhaseSpace.hpp b/include/picongpu/plugins/PhaseSpace/PhaseSpace.hpp index 008abf38753..341af3d8c76 100644 --- a/include/picongpu/plugins/PhaseSpace/PhaseSpace.hpp +++ b/include/picongpu/plugins/PhaseSpace/PhaseSpace.hpp @@ -33,11 +33,6 @@ #include #include -#include -#include -#include -#include - #include #include #include @@ -73,10 +68,12 @@ namespace picongpu new PhaseSpace(help, id, cellDescription)); } + template + using GenerateSolversIfSpeciesEligible = particles::traits::GenerateSolversIfSpeciesEligible; + // find all valid filter for the current used species - using EligibleFilters = typename MakeSeqFromNestedSeq>::type>::type; + using EligibleFilters = typename MakeSeqFromNestedSeq< + pmacc::mp_transform>::type; //! periodicity of computing the particle energy plugins::multi::Option notifyPeriod = {"period", "notify period"}; @@ -105,7 +102,7 @@ namespace picongpu boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> getEligibleFilterNames; + meta::ForEach> getEligibleFilterNames; getEligibleFilterNames(allowedFilters); concatenatedFilterNames = plugins::misc::concatenateToString(allowedFilters, ", "); @@ -201,9 +198,8 @@ namespace picongpu * we use not more than 32KB shared memory * Note: checking the longest edge for all phase space configurations * is a conservative work around until #469 is implemented */ - typedef typename bmpl:: - accumulate, bmpl::max>::type - SuperCellsLongestEdge; + using SuperCellsLongestEdge = typename pmacc::math::CT::max::type; + /* Note: the previously used 32 KB shared memory size is not correct * for CPUs, as discovered in #3329. As a quick patch, slightly reduce * it so that the buffer plus a few small shared memory variables @@ -307,7 +303,7 @@ namespace picongpu using SpeciesHasMass = typename pmacc::traits::HasFlag>::type; using SpeciesHasCharge = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/plugins/PhaseSpace/PhaseSpace.tpp b/include/picongpu/plugins/PhaseSpace/PhaseSpace.tpp index 7a894a56323..7d7a01ae35c 100644 --- a/include/picongpu/plugins/PhaseSpace/PhaseSpace.tpp +++ b/include/picongpu/plugins/PhaseSpace/PhaseSpace.tpp @@ -186,7 +186,7 @@ namespace picongpu // particle filter std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), currentStep, bindFunctor); diff --git a/include/picongpu/plugins/PluginController.hpp b/include/picongpu/plugins/PluginController.hpp index 183fe88eba1..f4be25686a0 100644 --- a/include/picongpu/plugins/PluginController.hpp +++ b/include/picongpu/plugins/PluginController.hpp @@ -69,6 +69,8 @@ #include "picongpu/plugins/ISimulationPlugin.hpp" #include +#include +#include #include #include @@ -111,12 +113,9 @@ namespace picongpu * with two components */ template - struct Apply - : bmpl::apply1< - typename pmacc::math::CT::At>::type, - typename pmacc::math::CT::At>::type> - { - }; + using Apply = typename boost::mpl::apply1< + pmacc::mp_at>, + pmacc::mp_at>>::type; /** Check the combination Species+Plugin in the Tuple * @@ -125,15 +124,16 @@ namespace picongpu template struct IsEligible { - using Species = typename pmacc::math::CT::At>::type; - using Solver = typename pmacc::math::CT::At>::type; + using Species = pmacc::mp_at>; + using Solver = pmacc::mp_at>; - using type = typename particles::traits::SpeciesEligibleForSolver::type; + static constexpr bool value + = particles::traits::SpeciesEligibleForSolver::type::value; }; }; /* define stand alone plugins */ - using StandAlonePlugins = bmpl::vector< + using StandAlonePlugins = pmacc::mp_list< Checkpoint, EnergyFields, ChargeConservation @@ -154,39 +154,39 @@ namespace picongpu #endif >; - using AllFields = bmpl::vector; + using AllFields = pmacc::mp_list; /* define species plugins */ - using UnspecializedSpeciesPlugins = bmpl::vector< - plugins::multi::Master>, - plugins::multi::Master>, - plugins::multi::Master>, - CountParticles, - PngPlugin>, - plugins::transitionRadiation::TransitionRadiation + using UnspecializedSpeciesPlugins = pmacc::mp_list< + plugins::multi::Master>, + plugins::multi::Master>, + plugins::multi::Master>, + CountParticles, + PngPlugin>, + plugins::transitionRadiation::TransitionRadiation #if ENABLE_OPENPMD , - plugins::radiation::Radiation + plugins::radiation::Radiation #endif #if(ENABLE_OPENPMD == 1) , - plugins::multi::Master>, - plugins::multi::Master> + plugins::multi::Master>, + plugins::multi::Master> #endif #if(ENABLE_OPENPMD == 1) , - PerSuperCell + PerSuperCell #endif >; - using CombinedUnspecializedSpeciesPlugins = - typename AllCombinations>::type; + using CombinedUnspecializedSpeciesPlugins + = AllCombinations, UnspecializedSpeciesPlugins>; - using CombinedUnspecializedSpeciesPluginsEligible = typename bmpl:: - copy_if>::type; + using CombinedUnspecializedSpeciesPluginsEligible + = pmacc::mp_copy_if; - using SpeciesPlugins = typename bmpl:: - transform>::type; + using SpeciesPlugins + = pmacc::mp_transform; /* create sequence with all fully specialized plugins */ using AllPlugins = MakeSeq_t; @@ -196,7 +196,7 @@ namespace picongpu */ virtual void init() { - meta::ForEach> pushBack; + meta::ForEach> pushBack; pushBack(plugins); } diff --git a/include/picongpu/plugins/PngPlugin.hpp b/include/picongpu/plugins/PngPlugin.hpp index 32d2c6e69fd..5347665b7f0 100644 --- a/include/picongpu/plugins/PngPlugin.hpp +++ b/include/picongpu/plugins/PngPlugin.hpp @@ -30,8 +30,6 @@ #include #include -#include - #include #include #include diff --git a/include/picongpu/plugins/common/openPMDWriteMeta.hpp b/include/picongpu/plugins/common/openPMDWriteMeta.hpp index c47c35358dc..6942d7335ed 100644 --- a/include/picongpu/plugins/common/openPMDWriteMeta.hpp +++ b/include/picongpu/plugins/common/openPMDWriteMeta.hpp @@ -48,7 +48,7 @@ namespace picongpu * * @tparam numSpecies count of defined species */ - template::type::value> + template::value> struct OfAllSpecies { /** write meta data for species @@ -61,7 +61,7 @@ namespace picongpu /* * @todo set boundary per species */ - GetStringProperties::type> particleBoundaryProp; + GetStringProperties> particleBoundaryProp; std::vector listParticleBoundary; std::vector listParticleBoundaryParam; auto n = NumberOfExchanges::value; diff --git a/include/picongpu/plugins/misc/SpeciesFilter.hpp b/include/picongpu/plugins/misc/SpeciesFilter.hpp index 5fbd98f2058..1967ae692d0 100644 --- a/include/picongpu/plugins/misc/SpeciesFilter.hpp +++ b/include/picongpu/plugins/misc/SpeciesFilter.hpp @@ -80,16 +80,16 @@ namespace picongpu /** evaluate if the filter and species combination is valid * * @tparam T_SpeciesFilter SpeciesFilter, type of the filter and species - * @return ::type boost::mpl::bool_<>, if the species is eligible for the filter + * @return ::type pmacc::mp_bool<>, if the species is eligible for the filter */ template struct IsEligible { - using type = boost::mpl::and_< - typename particles::traits::SpeciesEligibleForSolver< + using type = std::bool_constant< + particles::traits::SpeciesEligibleForSolver< typename T_SpeciesFilter::Species, - typename T_SpeciesFilter::Filter>::type, - boost::mpl::bool_>; + typename T_SpeciesFilter::Filter>::type::value + && T_SpeciesFilter::Filter::isDeterministic>; }; } // namespace speciesFilter diff --git a/include/picongpu/plugins/openPMD/WriteSpecies.hpp b/include/picongpu/plugins/openPMD/WriteSpecies.hpp index 9f046aa6302..1856a9f27cb 100644 --- a/include/picongpu/plugins/openPMD/WriteSpecies.hpp +++ b/include/picongpu/plugins/openPMD/WriteSpecies.hpp @@ -43,17 +43,11 @@ #include #include -#include -#include -#include -#include -#include -#include +#include #include #include // std::remove_reference_t - namespace picongpu { namespace openPMD @@ -113,14 +107,14 @@ namespace picongpu { /* malloc host memory */ log("openPMD: (begin) malloc host memory: %1%") % name; - meta::ForEach> mallocMem; + meta::ForEach> mallocMem; mallocMem(hostFrame, myNumParticles); log("openPMD: ( end ) malloc host memory: %1%") % name; } void free(openPMDFrameType& hostFrame) override { - meta::ForEach> freeMem; + meta::ForEach> freeMem; freeMem(hostFrame); } @@ -183,14 +177,14 @@ namespace picongpu { log("openPMD: (begin) malloc mapped memory: %1%") % name; /*malloc mapped memory*/ - meta::ForEach> mallocMem; + meta::ForEach> mallocMem; mallocMem(mappedFrame, myNumParticles); log("openPMD: ( end ) malloc mapped memory: %1%") % name; } void free(openPMDFrameType& mappedFrame) override { - meta::ForEach> freeMem; + meta::ForEach> freeMem; freeMem(mappedFrame); } @@ -238,11 +232,11 @@ namespace picongpu using ParticleAttributeList = typename FrameType::ValueTypeSeq; /* delete multiMask and localCellIdx in openPMD particle*/ - using TypesToDelete = bmpl::vector; + using TypesToDelete = pmacc::mp_list; using ParticleCleanedAttributeList = typename RemoveFromSeq::type; /* add totalCellIdx for openPMD particle*/ - using ParticleNewAttributeList = typename MakeSeq::type; + using ParticleNewAttributeList = MakeSeq_t; using NewParticleDescription = typename ReplaceValueTypeSeq::type; @@ -338,7 +332,7 @@ namespace picongpu // enforce that the filter interface is fulfilled particles::filter::IUnary particleFilter{params->currentStep}; - using usedFilters = bmpl::vector::type>; + using usedFilters = pmacc::mp_list::type>; using MyParticleFilter = typename FilterFactory::FilterType; MyParticleFilter filter; filter.setWindowPosition(params->localWindowToDomainOffset, params->window.localDimensions.size); @@ -424,7 +418,7 @@ namespace picongpu log("openPMD: (begin) write particle records for %1%") % T_SpeciesFilter::getName(); - meta::ForEach> + meta::ForEach> writeToOpenPMD; writeToOpenPMD( params, diff --git a/include/picongpu/plugins/openPMD/openPMDWriter.hpp b/include/picongpu/plugins/openPMD/openPMDWriter.hpp index 7b5858b6f73..f2df1ee3d60 100644 --- a/include/picongpu/plugins/openPMD/openPMDWriter.hpp +++ b/include/picongpu/plugins/openPMD/openPMDWriter.hpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include #include @@ -69,12 +70,7 @@ #include #include -#include -#include -#include -#include -#include -#include +#include #include @@ -258,21 +254,21 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. bool selfRegister = false; template - struct CreateSpeciesFilter - { - using type = plugins::misc::SpeciesFilter< - typename pmacc::math::CT::At>::type, - typename pmacc::math::CT::At>::type>; - }; + using CreateSpeciesFilter = plugins::misc::SpeciesFilter< + pmacc::mp_at>, + pmacc::mp_at>>; - using AllParticlesTimesAllFilters = typename AllCombinations< - bmpl::vector>::type; + using AllParticlesTimesAllFilters + = AllCombinations; - using AllSpeciesFilter = - typename bmpl::transform>::type; + using AllSpeciesFilter = pmacc::mp_transform; - using AllEligibleSpeciesSources = - typename bmpl::copy_if>::type; + private: + template + using IsEligible = typename plugins::misc::speciesFilter::IsEligible::type; + + public: + using AllEligibleSpeciesSources = pmacc::mp_copy_if; using AllFieldSources = FileOutputFields; @@ -281,11 +277,11 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> + meta::ForEach> getEligibleDataSourceNames; getEligibleDataSourceNames(allowedDataSources); - meta::ForEach> appendFieldSourceNames; + meta::ForEach> appendFieldSourceNames; appendFieldSourceNames(allowedDataSources); // string list with all possible particle sources @@ -1111,11 +1107,11 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. mThreadParams.localWindowToDomainOffset = DataSpace::create(0); /* load all fields */ - meta::ForEach> ForEachLoadFields; + meta::ForEach> ForEachLoadFields; ForEachLoadFields(&mThreadParams); /* load all particles */ - meta::ForEach> ForEachLoadSpecies; + meta::ForEach> ForEachLoadSpecies; ForEachLoadSpecies(&mThreadParams, restartChunkSize); loadRngStates(&mThreadParams); @@ -1201,7 +1197,7 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. * them for sure (checkpoint) or just some user-defined species * (dump) */ - meta::ForEach> copySpeciesToHost; + meta::ForEach> copySpeciesToHost; copySpeciesToHost(); lastSpeciesSyncStep = currentStep; } @@ -1537,19 +1533,19 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. log("openPMD: (begin) writing fields."); if(threadParams->isCheckpoint) { - meta::ForEach> ForEachGetFields; + meta::ForEach> ForEachGetFields; ForEachGetFields(threadParams); } else { if(dumpFields) { - meta::ForEach> ForEachGetFields; + meta::ForEach> ForEachGetFields; ForEachGetFields(threadParams); } // move over all field data sources - meta::ForEach>{}( + meta::ForEach>{}( vectorOfDataSourceNames, threadParams); } @@ -1563,8 +1559,8 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. meta::ForEach< FileCheckpointParticles, WriteSpecies< - plugins::misc::SpeciesFilter, - plugins::misc::UnfilteredSpecies>> + plugins::misc::SpeciesFilter, + plugins::misc::UnfilteredSpecies>> writeSpecies; writeSpecies(threadParams, particleToTotalDomainOffset); } @@ -1574,13 +1570,15 @@ make sure that environment variable OPENPMD_BP_BACKEND is not set to ADIOS1. if(dumpAllParticles) { // move over all species defined in FileOutputParticles - meta::ForEach>> + meta::ForEach< + FileOutputParticles, + WriteSpecies>> writeSpecies; writeSpecies(threadParams, particleToTotalDomainOffset); } // move over all species data sources - meta::ForEach>{}( + meta::ForEach>{}( vectorOfDataSourceNames, threadParams, particleToTotalDomainOffset); diff --git a/include/picongpu/plugins/openPMD/restart/LoadSpecies.hpp b/include/picongpu/plugins/openPMD/restart/LoadSpecies.hpp index 3136d4b0798..4065fca1cf1 100644 --- a/include/picongpu/plugins/openPMD/restart/LoadSpecies.hpp +++ b/include/picongpu/plugins/openPMD/restart/LoadSpecies.hpp @@ -32,12 +32,7 @@ #include #include -#include -#include -#include -#include -#include -#include +#include #include #include @@ -65,11 +60,11 @@ namespace picongpu /* delete multiMask and localCellIdx in openPMD particle*/ - using TypesToDelete = bmpl::vector2; + using TypesToDelete = pmacc::mp_list; using ParticleCleanedAttributeList = typename RemoveFromSeq::type; /* add totalCellIdx for openPMD particle*/ - using ParticleNewAttributeList = typename MakeSeq::type; + using ParticleNewAttributeList = MakeSeq_t; using NewParticleDescription = typename ReplaceValueTypeSeq::type; @@ -139,11 +134,12 @@ namespace picongpu openPMDFrameType mappedFrame; log("openPMD: malloc mapped memory: %1%") % speciesName; /*malloc mapped memory*/ - meta::ForEach> mallocMem; + meta::ForEach> mallocMem; mallocMem(mappedFrame, totalNumParticles); - meta::ForEach> - loadAttributes; + meta:: + ForEach> + loadAttributes; loadAttributes(params, mappedFrame, particleSpecies, particleOffset, totalNumParticles); if(totalNumParticles != 0) @@ -159,7 +155,7 @@ namespace picongpu picLog::INPUT_OUTPUT()); /*free host memory*/ - meta::ForEach> freeMem; + meta::ForEach> freeMem; freeMem(mappedFrame); } log("openPMD: ( end ) load species: %1%") % speciesName; diff --git a/include/picongpu/plugins/output/WriteSpeciesCommon.hpp b/include/picongpu/plugins/output/WriteSpeciesCommon.hpp index 81d049f2b43..ac1b78c0cec 100644 --- a/include/picongpu/plugins/output/WriteSpeciesCommon.hpp +++ b/include/picongpu/plugins/output/WriteSpeciesCommon.hpp @@ -24,9 +24,6 @@ #include #include -#include - - namespace picongpu { using namespace pmacc; @@ -128,7 +125,8 @@ namespace picongpu template struct apply { - typedef bmpl::pair::type::type>> type; + using type + = pmacc::meta::Pair::type::type>>; }; }; diff --git a/include/picongpu/plugins/output/images/Visualisation.hpp b/include/picongpu/plugins/output/images/Visualisation.hpp index 7b4d9a7ec6f..f49c0f010f8 100644 --- a/include/picongpu/plugins/output/images/Visualisation.hpp +++ b/include/picongpu/plugins/output/images/Visualisation.hpp @@ -207,7 +207,7 @@ namespace picongpu HDINLINE static float_X getAmplitude() { using Profiles = fields::incidentField::UniqueEnabledProfiles; - meta::ForEach> calculateMaxAmplitude; + meta::ForEach> calculateMaxAmplitude; auto maxAmplitude = 0.0_X; calculateMaxAmplitude(maxAmplitude); return maxAmplitude; diff --git a/include/picongpu/plugins/particleCalorimeter/ParticleCalorimeter.hpp b/include/picongpu/plugins/particleCalorimeter/ParticleCalorimeter.hpp index 7249b599b30..b713755e821 100644 --- a/include/picongpu/plugins/particleCalorimeter/ParticleCalorimeter.hpp +++ b/include/picongpu/plugins/particleCalorimeter/ParticleCalorimeter.hpp @@ -41,7 +41,6 @@ #include #include -#include #include #include @@ -387,6 +386,7 @@ namespace picongpu series.iterations[currentStep].close(); } + public: struct Help : public plugins::multi::IHelp { @@ -403,10 +403,13 @@ namespace picongpu return std::shared_ptr(new ParticleCalorimeter(help, id, cellDescription)); } + template + using GenerateSolversIfSpeciesEligible + = particles::traits::GenerateSolversIfSpeciesEligible; + // find all valid filter for the current used species - using EligibleFilters = typename MakeSeqFromNestedSeq>::type>::type; + using EligibleFilters = typename MakeSeqFromNestedSeq< + pmacc::mp_transform>::type; //! periodicity of computing the particle energy plugins::multi::Option notifyPeriod = {"period", "enable plugin [for each n-th step]"}; @@ -439,7 +442,7 @@ namespace picongpu boost::program_options::options_description& desc, std::string const& masterPrefix = std::string{}) override { - meta::ForEach> getEligibleFilterNames; + meta::ForEach> getEligibleFilterNames; getEligibleFilterNames(allowedFilters); concatenatedFilterNames = plugins::misc::concatenateToString(allowedFilters, ", "); @@ -579,7 +582,7 @@ namespace picongpu endInternalCellsLocal, std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), currentStep, unaryKernel); @@ -645,7 +648,7 @@ namespace picongpu endExternalCellsLocal, std::placeholders::_1); - meta::ForEach>{}( + meta::ForEach>{}( m_help->filter.get(m_id), Environment<>::get().SimulationDescription().getCurrentStep(), unaryKernel); @@ -709,7 +712,7 @@ namespace picongpu // and also a mass ratio for energy calculation from momentum using SpeciesHasFlags = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/plugins/radiation/Radiation.hpp b/include/picongpu/plugins/radiation/Radiation.hpp index 68fcbc9010f..14b1241e05b 100644 --- a/include/picongpu/plugins/radiation/Radiation.hpp +++ b/include/picongpu/plugins/radiation/Radiation.hpp @@ -1167,7 +1167,7 @@ namespace picongpu using SpeciesHasCharge = typename pmacc::traits::HasFlag>::type; - using type = typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits diff --git a/include/picongpu/plugins/transitionRadiation/TransitionRadiation.hpp b/include/picongpu/plugins/transitionRadiation/TransitionRadiation.hpp index 72137fc74f3..6f255a01acb 100644 --- a/include/picongpu/plugins/transitionRadiation/TransitionRadiation.hpp +++ b/include/picongpu/plugins/transitionRadiation/TransitionRadiation.hpp @@ -530,8 +530,7 @@ namespace picongpu // this plugin needs the transitionRadiationMask flag using SpeciesHasMask = typename pmacc::traits::HasIdentifier::type; - using type = - typename bmpl::and_; + using type = pmacc::mp_and; }; } // namespace traits } // namespace particles diff --git a/include/picongpu/simulation/control/Simulation.hpp b/include/picongpu/simulation/control/Simulation.hpp index 61e273ebcca..d7e5c656de9 100644 --- a/include/picongpu/simulation/control/Simulation.hpp +++ b/include/picongpu/simulation/control/Simulation.hpp @@ -79,8 +79,7 @@ #include #include -#include -#include +#include #include #include @@ -355,7 +354,7 @@ namespace picongpu #endif // Allocate and initialize particle species with all left-over memory below - meta::ForEach> createSpeciesMemory; + meta::ForEach> createSpeciesMemory; createSpeciesMemory(deviceHeap, cellDescription.get()); size_t freeGpuMem = freeDeviceMemory(); @@ -395,7 +394,7 @@ namespace picongpu #endif - meta::ForEach> + meta::ForEach> logMemoryStatisticsForSpecies; logMemoryStatisticsForSpecies(deviceHeap); @@ -464,7 +463,7 @@ namespace picongpu else { initialiserController->init(); - meta::ForEach> initSpecies; + meta::ForEach> initSpecies; initSpecies(0); /* Remove all particles that are outside the respective boundaries * (this can happen if density functor didn't account for it). @@ -557,7 +556,7 @@ namespace picongpu void resetAll(uint32_t currentStep) override { resetFields(currentStep); - meta::ForEach> resetParticles; + meta::ForEach> resetParticles; resetParticles(currentStep); } @@ -570,7 +569,7 @@ namespace picongpu log("slide in step %1%") % currentStep; resetAll(currentStep); initialiserController->slide(currentStep); - meta::ForEach> initSpecies; + meta::ForEach> initSpecies; initSpecies(currentStep); } } diff --git a/include/picongpu/simulation/stage/AtomicPhysics.hpp b/include/picongpu/simulation/stage/AtomicPhysics.hpp index 075a6723cf9..c0ec2be34fb 100644 --- a/include/picongpu/simulation/stage/AtomicPhysics.hpp +++ b/include/picongpu/simulation/stage/AtomicPhysics.hpp @@ -81,8 +81,9 @@ namespace picongpu typename pmacc::particles::traits::FilterByFlag>::type; //! kernel to be called for each species - pmacc::meta::ForEach> - callAtomicPhysics; + pmacc::meta:: + ForEach> + callAtomicPhysics; /** Description of cell structure used for PIC-Simulations. * diff --git a/include/picongpu/simulation/stage/Collision.hpp b/include/picongpu/simulation/stage/Collision.hpp index 346e9459651..b4f4e992d36 100644 --- a/include/picongpu/simulation/stage/Collision.hpp +++ b/include/picongpu/simulation/stage/Collision.hpp @@ -54,7 +54,7 @@ namespace picongpu uint32_t const& currentStep) { (particles::collision::CallCollider< - typename bmpl::at_c::type, + pmacc::mp_at_c, I>{}(deviceHeap, currentStep), ...); } @@ -161,11 +161,10 @@ namespace picongpu // Calculate squared Debye length using the formula form [Perez 2012]. // A species temperature is assumed to be (2/3) constexpr auto numScreeningSpecies - = picongpu::particles::collision::CollisionScreeningSpecies::size::value; + = pmacc::mp_size::value; if constexpr(numScreeningSpecies > 0u) { - constexpr size_t requiredSlots = bmpl:: - if_, bmpl::int_<2>, bmpl::int_<3>>::type::value; + constexpr size_t requiredSlots = numScreeningSpecies == 1u ? 2 : 3; PMACC_CASSERT_MSG( _please_allocate_enough_FieldTmp_in_memory_param, @@ -207,7 +206,7 @@ namespace picongpu debug(currentStep, screeningLengthSquared); } // Call all colliders - constexpr size_t numColliders = bmpl::size::type::value; + constexpr size_t numColliders = pmacc::mp_size::value; std::make_index_sequence indexColliders{}; collision::CallColliders{}(indexColliders, m_heap, currentStep); } diff --git a/include/picongpu/simulation/stage/CurrentDeposition.hpp b/include/picongpu/simulation/stage/CurrentDeposition.hpp index 5023b03c0cc..1d4fb6ac46b 100644 --- a/include/picongpu/simulation/stage/CurrentDeposition.hpp +++ b/include/picongpu/simulation/stage/CurrentDeposition.hpp @@ -74,7 +74,7 @@ namespace picongpu typename pmacc::particles::traits::FilterByFlag>::type; meta::ForEach< SpeciesWithCurrentSolver, - detail::CurrentDeposition>> + detail::CurrentDeposition>> depositCurrent; depositCurrent(step, fieldJ, dc); } diff --git a/include/picongpu/simulation/stage/CurrentInterpolationAndAdditionToEMF.hpp b/include/picongpu/simulation/stage/CurrentInterpolationAndAdditionToEMF.hpp index 196a127a506..1ebe0d8d7e6 100644 --- a/include/picongpu/simulation/stage/CurrentInterpolationAndAdditionToEMF.hpp +++ b/include/picongpu/simulation/stage/CurrentInterpolationAndAdditionToEMF.hpp @@ -32,7 +32,6 @@ #include #include -#include #include #include @@ -101,7 +100,7 @@ namespace picongpu using namespace pmacc; using SpeciesWithCurrentSolver = typename pmacc::particles::traits::FilterByFlag>::type; - auto const numSpeciesWithCurrentSolver = bmpl::size::type::value; + auto const numSpeciesWithCurrentSolver = pmacc::mp_size::value; auto const existsParticleCurrent = numSpeciesWithCurrentSolver > 0; if(existsParticleCurrent) { diff --git a/include/picongpu/simulation/stage/IterationStart.hpp b/include/picongpu/simulation/stage/IterationStart.hpp index 5c33b878508..32beee1b162 100644 --- a/include/picongpu/simulation/stage/IterationStart.hpp +++ b/include/picongpu/simulation/stage/IterationStart.hpp @@ -44,7 +44,7 @@ namespace picongpu */ void operator()(uint32_t const step) const { - meta::ForEach> callFunctors; + meta::ForEach> callFunctors; callFunctors(step); } }; diff --git a/include/picongpu/simulation/stage/ParticleBoundaries.hpp b/include/picongpu/simulation/stage/ParticleBoundaries.hpp index c31b6231687..3e6faea7867 100644 --- a/include/picongpu/simulation/stage/ParticleBoundaries.hpp +++ b/include/picongpu/simulation/stage/ParticleBoundaries.hpp @@ -231,7 +231,7 @@ namespace picongpu using SpeciesWithPusher = typename pmacc::particles::traits::FilterByFlag>::type; //! Functor to process all affected species - meta::ForEach> processSpecies; + meta::ForEach> processSpecies; }; } // namespace stage diff --git a/include/picongpu/simulation/stage/ParticleIonization.hpp b/include/picongpu/simulation/stage/ParticleIonization.hpp index 5cd5eb78c3c..65f2a2f979a 100644 --- a/include/picongpu/simulation/stage/ParticleIonization.hpp +++ b/include/picongpu/simulation/stage/ParticleIonization.hpp @@ -58,7 +58,8 @@ namespace picongpu { using pmacc::particles::traits::FilterByFlag; using SpeciesWithIonizers = typename FilterByFlag>::type; - pmacc::meta::ForEach> particleIonization; + pmacc::meta::ForEach> + particleIonization; particleIonization(cellDescription, step); } diff --git a/include/picongpu/simulation/stage/RuntimeDensityFile.hpp b/include/picongpu/simulation/stage/RuntimeDensityFile.hpp index d8746f3942b..1fd6c9eea83 100644 --- a/include/picongpu/simulation/stage/RuntimeDensityFile.hpp +++ b/include/picongpu/simulation/stage/RuntimeDensityFile.hpp @@ -116,7 +116,7 @@ namespace picongpu private: //! Functor to process all species - meta::ForEach> processSpecies; + meta::ForEach> processSpecies; }; } // namespace stage diff --git a/include/pmacc/functor/Call.hpp b/include/pmacc/functor/Call.hpp index a4e4229d67b..40a04efdf8f 100644 --- a/include/pmacc/functor/Call.hpp +++ b/include/pmacc/functor/Call.hpp @@ -37,7 +37,7 @@ namespace pmacc * @tparam T_Functor stateless unary functor type, must be default-constructible and * operator() must take the current time step as the only parameter */ - template + template struct Call { //! Functor type diff --git a/include/pmacc/identifier/alias.hpp b/include/pmacc/identifier/alias.hpp index 615d1b2ee33..a442e612191 100644 --- a/include/pmacc/identifier/alias.hpp +++ b/include/pmacc/identifier/alias.hpp @@ -27,8 +27,6 @@ #include "pmacc/traits/Resolve.hpp" #include "pmacc/types.hpp" -#include - #include #include @@ -73,10 +71,10 @@ namespace pmacc struct Resolve> { /*solve recursive if alias is nested*/ - using type = typename bmpl::if_< + using type = mp_if< std::is_same::type>, T_AnyType, - typename Resolve::type>::type; + typename Resolve::type>; }; } // namespace traits diff --git a/include/pmacc/mappings/simulation/ResourceMonitor.tpp b/include/pmacc/mappings/simulation/ResourceMonitor.tpp index 2e7e4f482e0..39ac1baa37d 100644 --- a/include/pmacc/mappings/simulation/ResourceMonitor.tpp +++ b/include/pmacc/mappings/simulation/ResourceMonitor.tpp @@ -68,9 +68,9 @@ namespace pmacc T_MappingDesc& cellDescription, T_ParticleFilter& parFilter) { - using dim = bmpl::integral_c; + using dim = std::integral_constant; std::vector particleCounts; - meta::ForEach> countParticles; + meta::ForEach> countParticles; countParticles(particleCounts, cellDescription, parFilter); return particleCounts; } diff --git a/include/pmacc/math/MapTuple.hpp b/include/pmacc/math/MapTuple.hpp index 447bf1e815d..055a2cc1567 100644 --- a/include/pmacc/math/MapTuple.hpp +++ b/include/pmacc/math/MapTuple.hpp @@ -24,12 +24,6 @@ #include "pmacc/particles/boostExtension/InheritLinearly.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include - - namespace pmacc { namespace math @@ -38,13 +32,13 @@ namespace pmacc /** wrap a datum * - * @tparam T_Pair boost mpl pair< key, type of the value > + * @tparam T_Pair mp_list< key, type of the value > */ template struct TaggedValue { - using Key = typename T_Pair::first; - using ValueType = typename T_Pair::second; + using Key = mp_first; + using ValueType = mp_second; ValueType value; }; @@ -53,7 +47,7 @@ namespace pmacc struct MapTuple : protected InheritLinearly { template - using TaggedValueFor = TaggedValue::type>>; + using TaggedValueFor = TaggedValue>; /** access a value with a key * diff --git a/include/pmacc/math/vector/Vector.hpp b/include/pmacc/math/vector/Vector.hpp index fa7d9531ef2..1da1c5ed9b8 100644 --- a/include/pmacc/math/vector/Vector.hpp +++ b/include/pmacc/math/vector/Vector.hpp @@ -31,7 +31,6 @@ #include "pmacc/types.hpp" #include -#include #include #include diff --git a/include/pmacc/math/vector/compile-time/Float.hpp b/include/pmacc/math/vector/compile-time/Float.hpp index 375076ccc82..4bd99fe9863 100644 --- a/include/pmacc/math/vector/compile-time/Float.hpp +++ b/include/pmacc/math/vector/compile-time/Float.hpp @@ -21,19 +21,13 @@ #pragma once -#include - -#include - -namespace mpl = boost::mpl; - namespace pmacc { namespace math { namespace CT { - template + template struct Float { using x = X; diff --git a/include/pmacc/math/vector/compile-time/Int.hpp b/include/pmacc/math/vector/compile-time/Int.hpp index e78da1549fd..30a0a930d05 100644 --- a/include/pmacc/math/vector/compile-time/Int.hpp +++ b/include/pmacc/math/vector/compile-time/Int.hpp @@ -24,8 +24,6 @@ #include "pmacc/math/vector/Vector.hpp" #include "pmacc/traits/Limits.hpp" -#include - #include #include "pmacc/math/vector/compile-time/Vector.hpp" @@ -50,7 +48,11 @@ namespace pmacc int x = traits::limits::Max::value, int y = traits::limits::Max::value, int z = traits::limits::Max::value> - struct Int : public CT::Vector, mpl::integral_c, mpl::integral_c> + struct Int + : public CT::Vector< + std::integral_constant, + std::integral_constant, + std::integral_constant> { }; @@ -60,12 +62,12 @@ namespace pmacc }; template - struct Int : public CT::Vector> + struct Int : public CT::Vector> { }; template - struct Int : public CT::Vector, mpl::integral_c> + struct Int : public CT::Vector, std::integral_constant> { }; diff --git a/include/pmacc/math/vector/compile-time/Size_t.hpp b/include/pmacc/math/vector/compile-time/Size_t.hpp index 71019a0969d..bbb5bae8224 100644 --- a/include/pmacc/math/vector/compile-time/Size_t.hpp +++ b/include/pmacc/math/vector/compile-time/Size_t.hpp @@ -24,8 +24,6 @@ #include "pmacc/math/vector/Vector.hpp" #include "pmacc/traits/Limits.hpp" -#include - #include #include "pmacc/math/vector/compile-time/Vector.hpp" @@ -51,7 +49,10 @@ namespace pmacc size_t y = traits::limits::Max::value, size_t z = traits::limits::Max::value> struct Size_t - : public CT::Vector, mpl::integral_c, mpl::integral_c> + : public CT::Vector< + std::integral_constant, + std::integral_constant, + std::integral_constant> { }; @@ -61,12 +62,13 @@ namespace pmacc }; template - struct Size_t : public CT::Vector> + struct Size_t : public CT::Vector> { }; template - struct Size_t : public CT::Vector, mpl::integral_c> + struct Size_t + : public CT::Vector, std::integral_constant> { }; diff --git a/include/pmacc/math/vector/compile-time/UInt32.hpp b/include/pmacc/math/vector/compile-time/UInt32.hpp index 02dbfcf34ab..35da48eaab1 100644 --- a/include/pmacc/math/vector/compile-time/UInt32.hpp +++ b/include/pmacc/math/vector/compile-time/UInt32.hpp @@ -24,8 +24,6 @@ #include "pmacc/math/vector/Vector.hpp" #include "pmacc/traits/Limits.hpp" -#include - #include #include "pmacc/math/vector/compile-time/Vector.hpp" @@ -51,8 +49,10 @@ namespace pmacc uint32_t y = traits::limits::Max::value, uint32_t z = traits::limits::Max::value> struct UInt32 - : public CT:: - Vector, mpl::integral_c, mpl::integral_c> + : public CT::Vector< + std::integral_constant, + std::integral_constant, + std::integral_constant> { }; @@ -62,12 +62,13 @@ namespace pmacc }; template - struct UInt32 : public CT::Vector> + struct UInt32 : public CT::Vector> { }; template - struct UInt32 : public CT::Vector, mpl::integral_c> + struct UInt32 + : public CT::Vector, std::integral_constant> { }; diff --git a/include/pmacc/math/vector/compile-time/UInt64.hpp b/include/pmacc/math/vector/compile-time/UInt64.hpp index 7aca5e7f0af..e2d7d895d9e 100644 --- a/include/pmacc/math/vector/compile-time/UInt64.hpp +++ b/include/pmacc/math/vector/compile-time/UInt64.hpp @@ -24,8 +24,6 @@ #include "pmacc/math/vector/Vector.hpp" #include "pmacc/traits/Limits.hpp" -#include - #include #include "pmacc/math/vector/compile-time/Vector.hpp" @@ -51,8 +49,10 @@ namespace pmacc uint64_t y = traits::limits::Max::value, uint64_t z = traits::limits::Max::value> struct UInt64 - : public CT:: - Vector, mpl::integral_c, mpl::integral_c> + : public CT::Vector< + std::integral_constant, + std::integral_constant, + std::integral_constant> { }; @@ -62,12 +62,13 @@ namespace pmacc }; template - struct UInt64 : public CT::Vector> + struct UInt64 : public CT::Vector> { }; template - struct UInt64 : public CT::Vector, mpl::integral_c> + struct UInt64 + : public CT::Vector, std::integral_constant> { }; diff --git a/include/pmacc/math/vector/compile-time/Vector.hpp b/include/pmacc/math/vector/compile-time/Vector.hpp index 34d557d85dc..7f18b6ba67d 100644 --- a/include/pmacc/math/vector/compile-time/Vector.hpp +++ b/include/pmacc/math/vector/compile-time/Vector.hpp @@ -24,18 +24,7 @@ #include "pmacc/math/vector/Vector.hpp" #include "pmacc/types.hpp" -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include #include @@ -45,8 +34,6 @@ namespace pmacc { namespace CT { - namespace mpl = boost::mpl; - namespace detail { template @@ -91,6 +78,10 @@ namespace pmacc } }; + struct na + { + }; + template struct TypeSelector { @@ -99,37 +90,35 @@ namespace pmacc /** get integral type*/ template - struct TypeSelector> + struct TypeSelector> { using type = T; }; template<> - struct TypeSelector + struct TypeSelector { - using type = mpl::int_<0>; + using type = mp_int<0>; }; } // namespace detail - namespace mpl = boost::mpl; - - template + template struct Vector { using x = Arg0; using y = Arg1; using z = Arg2; - using mplVector = mpl::vector; + using mplVector = mp_remove, detail::na>; template struct at { - using type = typename mpl::at_c::type; + using type = mp_at_c; }; - static constexpr int dim = mpl::size::type::value; + static constexpr int dim = mp_size::value; using type = typename detail::TypeSelector::type; using This = Vector; @@ -162,7 +151,7 @@ namespace pmacc //________________________OperatorBase____________________________ - template + template typename T_BinaryOperator> struct applyOperator { using type = @@ -170,10 +159,10 @@ namespace pmacc type; }; - template + template typename T_BinaryOperator> struct applyOperator, CT::Vector, T_BinaryOperator> { - using OpResult = typename mpl::apply::type; + using OpResult = T_BinaryOperator; using type = CT::Vector; }; @@ -182,11 +171,12 @@ namespace pmacc typename T_TypeA1, typename T_TypeB0, typename T_TypeB1, + template typename T_BinaryOperator> struct applyOperator, CT::Vector, T_BinaryOperator> { - using OpResult0 = typename mpl::apply::type; - using OpResult1 = typename mpl::apply::type; + using OpResult0 = T_BinaryOperator; + using OpResult1 = T_BinaryOperator; using type = CT::Vector; }; @@ -197,27 +187,29 @@ namespace pmacc typename T_TypeB0, typename T_TypeB1, typename T_TypeB2, + template typename T_BinaryOperator> struct applyOperator< CT::Vector, CT::Vector, T_BinaryOperator> { - using OpResult0 = typename mpl::apply::type; - using OpResult1 = typename mpl::apply::type; - using OpResult2 = typename mpl::apply::type; + using OpResult0 = T_BinaryOperator; + using OpResult1 = T_BinaryOperator; + using OpResult2 = T_BinaryOperator; using type = CT::Vector; }; + template + using mp_times = std::integral_constant; + //________________________A D D____________________________ template struct add { - using type = typename applyOperator< - typename Lhs::vector_type, - typename Rhs::vector_type, - mpl::plus>::type; + using type = + typename applyOperator::type; }; //________________________M U L____________________________ @@ -225,10 +217,8 @@ namespace pmacc template struct mul { - using type = typename applyOperator< - typename Lhs::vector_type, - typename Rhs::vector_type, - mpl::times>::type; + using type = + typename applyOperator::type; }; //________________________M A X____________________________ @@ -243,10 +233,8 @@ namespace pmacc template struct max { - using type = typename applyOperator< - typename Lhs::vector_type, - typename Rhs::vector_type, - mpl::max>::type; + using type = + typename applyOperator::type; }; @@ -258,8 +246,7 @@ namespace pmacc template struct max { - using type = typename mpl:: - accumulate>::type; + using type = mp_apply; }; //________________________M I N____________________________ @@ -275,10 +262,8 @@ namespace pmacc template struct min { - using type = typename applyOperator< - typename Lhs::vector_type, - typename Rhs::vector_type, - mpl::min>::type; + using type = + typename applyOperator::type; }; /** get element with minimum value @@ -289,8 +274,7 @@ namespace pmacc template struct min { - using type = typename mpl:: - accumulate>::type; + using type = mp_apply; }; //________________________D O T____________________________ @@ -299,8 +283,7 @@ namespace pmacc struct dot { using MulResult = typename mul::type; - using type = typename mpl:: - accumulate, mpl::plus>::type; + using type = mp_fold, mp_plus>; }; //________________________V O L U M E____________________________ @@ -308,8 +291,7 @@ namespace pmacc template struct volume { - using type = typename mpl:: - accumulate, mpl::times>::type; + using type = mp_fold, mp_times>; }; //________________________S H R I N K T O________________________ @@ -336,14 +318,14 @@ namespace pmacc struct shrinkTo { using Vec = T_Vec; - using type = CT::Vector; + using type = CT::Vector; }; template struct shrinkTo { using Vec = T_Vec; - using type = CT::Vector; + using type = CT::Vector; }; //________________________A S S I G N________________________ @@ -353,26 +335,26 @@ namespace pmacc * defines a public type as result * * @tparam T_Vec math::CT::Vector which should be changed - * @tparam T_ComponentPos number of component to changed (type must be bmpl::integral_c) + * @tparam T_ComponentPos number of component to changed (type must be std::integral_constant) * @tparam T_Value new value */ template struct Assign; template - struct Assign, bmpl::integral_c, T_Value> + struct Assign, std::integral_constant, T_Value> { using type = pmacc::math::CT::Vector; }; template - struct Assign, bmpl::integral_c, T_Value> + struct Assign, std::integral_constant, T_Value> { using type = pmacc::math::CT::Vector; }; template - struct Assign, bmpl::integral_c, T_Value> + struct Assign, std::integral_constant, T_Value> { using type = pmacc::math::CT::Vector; }; @@ -384,17 +366,14 @@ namespace pmacc * defines a public type as result * * @tparam T_Vec math::CT::Vector which should be changed - * @tparam T_ComponentPos number of component to changed (type must be bmpl::integral_c) + * @tparam T_ComponentPos number of component to changed (type must be std::integral_constant) * @tparam T_Value new value */ template struct AssignIfInRange { - using VectorDim = bmpl::integral_c; - using type = typename bmpl::if_< - bmpl::less, - typename pmacc::math::CT::Assign::type, - T_Vec>::type; + using type = mp_if_c + < T_ComponentPos::value::type, T_Vec>; }; //________________________At_c____________________________ @@ -409,7 +388,7 @@ namespace pmacc template struct At_c { - using type = typename mpl::at_c::type; + using type = mp_at_c; }; //________________________At____________________________ @@ -419,12 +398,12 @@ namespace pmacc * defines a public type as result * * @tparam T_Vec input CT::Vector - * @tparam T_Idx integral type index of the component (e.g. boost::mpl::int_<2>) + * @tparam T_Idx integral type index of the component (e.g. pmacc::mp_int<2>) */ template struct At { - using type = typename mpl::at::type; + using type = mp_at; }; //________________________make_Vector___________________ @@ -473,11 +452,11 @@ namespace pmacc template struct make_BasisVector { - using Zeroes = typename make_Vector>::type; + using Zeroes = typename make_Vector>::type; using type = typename AssignIfInRange< Zeroes, - bmpl::integral_c, - bmpl::integral_c>::type; + std::integral_constant, + std::integral_constant>::type; }; } // namespace CT diff --git a/include/pmacc/memory/boxes/SharedBox.hpp b/include/pmacc/memory/boxes/SharedBox.hpp index f962720c6ea..efb28a35b8f 100644 --- a/include/pmacc/memory/boxes/SharedBox.hpp +++ b/include/pmacc/memory/boxes/SharedBox.hpp @@ -28,27 +28,6 @@ namespace pmacc { - namespace detail - { - template - HDINLINE auto& subscript(T_TYPE* p, int const idx, std::integral_constant) - { - return p[idx]; - } - - template - HDINLINE auto* subscript(T_TYPE* p, int const idx, std::integral_constant) - { - return p + idx * T_Vector::x::value; - } - - template - HDINLINE auto* subscript(T_TYPE* p, int const idx, std::integral_constant) - { - return p + idx * (T_Vector::x::value * T_Vector::y::value); - } - } // namespace detail - /** create shared memory on gpu * * @tparam T_TYPE type of memory objects @@ -73,16 +52,16 @@ namespace pmacc HDINLINE SharedBox(SharedBox const&) = default; - using ReducedType1D = T_TYPE&; - using ReducedType2D = SharedBox, T_id>; - using ReducedType3D = SharedBox, T_id>; - using ReducedType - = std::conditional_t>; - - HDINLINE ReducedType operator[](const int idx) const + HDINLINE decltype(auto) operator[](const int idx) const { - ///@todo(bgruber): inline and replace this by if constexpr in C++17 - return {detail::subscript(fixedPointer, idx, std::integral_constant{})}; + if constexpr(Dim == 1) + return fixedPointer[idx]; + else if constexpr(Dim == 2) + return SharedBox, T_id>{ + fixedPointer + idx * T_Vector::x::value}; + else if constexpr(Dim == 3) + return SharedBox, T_id>{ + fixedPointer + idx * (T_Vector::x::value * T_Vector::y::value)}; } /*!return the first value in the box (list) @@ -102,13 +81,6 @@ namespace pmacc return fixedPointer; } - using CursorPitch1d = math::CT::Int<>; - using CursorPitch2d = math::CT::Int; - using CursorPitch3d = math::CT:: - Int; - using CursorPitch - = std::conditional_t>; - /** create a shared memory box * * This call synchronizes a block and must be called from all threads and diff --git a/include/pmacc/meta/AllCombinations.hpp b/include/pmacc/meta/AllCombinations.hpp index 5b2be017163..2843bbeca66 100644 --- a/include/pmacc/meta/AllCombinations.hpp +++ b/include/pmacc/meta/AllCombinations.hpp @@ -21,150 +21,13 @@ #pragma once -#include "pmacc/math/Vector.hpp" -#include "pmacc/meta/conversion/MakeSeq.hpp" -#include "pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp" -#include "pmacc/meta/conversion/SeqToMap.hpp" -#include "pmacc/meta/conversion/TypeToAliasPair.hpp" -#include "pmacc/meta/conversion/TypeToPair.hpp" -#include "pmacc/types.hpp" - -#include -#include -#include -#include -#include +#include "Mp11.hpp" namespace pmacc { - namespace bmpl = boost::mpl; - - namespace detail - { - /** Create tuples out of the elements of N sequences - * - * Combines all elements of N given sequences in T_MplSeq into N-tuples. - * If the number of elements in each sequence is S0, S1, ... S(N-1) - * than the resulting sequence will contain S0 * S1 * ... S(N-1) tuples. - * - * @tparam T_MplSeq sequence of input sequences - * @tparam T_TmpResult temporary result - * @tparam T_isEmpty true if T_MplSeq is empty else false - */ - template< - typename T_MplSeq, - typename T_TmpResult = bmpl::vector0<>, - bool T_isEmpty = bmpl::empty::value> - struct AllCombinations; - - /** implementation for inner recursive creation - */ - template - struct AllCombinations - { - using MplSeq = T_MplSeq; - using TmpResult = T_TmpResult; - - static constexpr uint32_t rangeVectorSize = bmpl::size::value; - using LastElement = typename bmpl::at>::type; - using IsLastElementEmpty = bmpl::empty; - using LastElementAsSequence = typename MakeSeq::type; - using ShrinkedRangeVector = typename bmpl::pop_back::type; - - /* copy last given sequence to a mpl::vector to be sure that we can later on - * call mpl::transform even if the input sequence is mpl::range_c - */ - using TmpVector = typename bmpl::copy>>::type; - - /** Assign to each element in a sequence of CT::Vector(s) a type at a given - * component position - * - * @tparam T_ComponentPos position of the component to be changed (type must be - * bmpl::integral_c) - * @tparam T_Element value (type) which should replace the component at position T_Component - * in the CT::Vector elements - */ - template - struct AssignToAnyElementInVector - { - using InVector = TmpResult; - using Element = T_Element; - - using type = typename bmpl:: - transform>::type; - }; - - using NestedSeq = typename bmpl::transform< - TmpVector, - AssignToAnyElementInVector, bmpl::_1>>::type; - - using OneSeq = typename MakeSeqFromNestedSeq::type; - - using ResultIfNotEmpty = typename detail::AllCombinations::type; - using type = typename bmpl::if_, ResultIfNotEmpty>::type; - }; - - /** recursive end implementation - */ - template - struct AllCombinations - { - using type = T_TmpResult; - }; - - } // namespace detail - - - /** Create tuples out of the elements of N sequences - * - * Combines all elements of N given sequences in T_MplSeq into N-tuples. - * If the number of elements in each sequence is S0, S1, ... S(N-1) - * than the resulting sequence will contain S0 * S1 * ... S(N-1) tuples. - * - * example: - * - * sequence == [ ] - * tuple == ( ) - * - * T_MplSeq = [[1,2],[1],[4,3]] - * combined to - * AllCombinations::type = [(1,1,4),(1,1,3),(2,1,4),(2,1,3)] - * - * @tparam T_MplSeq N-dimensional sequence with input values - * or single type (e.g. `bmpl::integral_c`) - * (if `T_MplSeq` is only one type it will be transformed to a sequence) - * @typedef AllCombinations::type - * MplSequence of N-tuples - */ - template - struct AllCombinations - { - /* if T_MplSeq is no sequence it is a single type, we put this type in - * a sequence because all next algorithms can only work with sequences */ - using MplSeq = typename MakeSeq::type; - - static constexpr uint32_t rangeVectorSize = bmpl::size::value; - using LastElement = typename bmpl::at>::type; - using IsLastElementEmpty = bmpl::empty; - using LastElementAsSequence = typename MakeSeq::type; - - using ShrinkedRangeVector = typename bmpl::pop_back::type; - /* copy last given sequence to a mpl::vector to be sure that we can later on - * call mpl::transform even if the input sequence is mpl::range_c - */ - using TmpVector = typename bmpl::copy>>::type; - - - /* transform all elements in the vector to math::CT::vector<> */ - using EmptyVector = math::CT::Vector<>; - using FirstList = typename bmpl::transform< - TmpVector, - pmacc::math::CT::Assign, bmpl::_1>>::type; - - /* result type: MplSequence of N-tuples */ - using ResultIfNotEmpty = typename detail::AllCombinations::type; - using type = typename bmpl::if_, ResultIfNotEmpty>::type; - }; - - + /// Carthesian product of the given lists. + /// Lists = [1,2],[1],[4,3] + /// Result: [(1,1,4),(1,1,3),(2,1,4),(2,1,3)] + template + using AllCombinations = mp_product; } // namespace pmacc diff --git a/include/pmacc/meta/ForEach.hpp b/include/pmacc/meta/ForEach.hpp index 4552bae1e30..ebbbac8fb66 100644 --- a/include/pmacc/meta/ForEach.hpp +++ b/include/pmacc/meta/ForEach.hpp @@ -21,57 +21,15 @@ #pragma once +#include "pmacc/meta/SeqToList.hpp" #include "pmacc/meta/accessors/Identity.hpp" #include -#include -#include -#include #include -#include - namespace pmacc::meta { - namespace detail - { - /** call the functor were itBegin points to - * - * @tparam itBegin iterator to an element in a mpl sequence - * @tparam itEnd iterator to the end of a mpl sequence - */ - template - struct CallFunctorOfIterator - { - using Functor = typename boost::mpl::deref::type; - - PMACC_NO_NVCC_HDWARNING - template - HDINLINE void operator()(T_Types&&... ts) const - { - if constexpr(!std::is_same_v) - { - Functor()(std::forward(ts)...); - using NextCall = CallFunctorOfIterator::type, itEnd>; - NextCall()(ts...); - } - } - - PMACC_NO_NVCC_HDWARNING - template - HDINLINE void operator()(T_Types&&... ts) - { - if constexpr(!std::is_same_v) - { - Functor()(std::forward(ts)...); - using NextCall = CallFunctorOfIterator::type, itEnd>; - NextCall()(ts...); - } - } - }; - } // namespace detail - /** Compile-Time for each for Boost::MPL Type Lists * * @tparam T_MPLSeq A mpl sequence that can be accessed by mpl::begin, mpl::end, mpl::next @@ -82,7 +40,7 @@ namespace pmacc::meta * @tparam T_Accessor An unary lambda operation * * Example: - * MPLSeq = boost::mpl::vector + * MPLSeq = pmacc::mp_list * Functor = any unary lambda functor * Accessor = lambda operation identity * @@ -95,36 +53,19 @@ namespace pmacc::meta template> struct ForEach { - template - struct ReplacePlaceholder : bmpl::apply1::type> - { - }; - - using SolvedFunctors = typename bmpl::transform>::type; + using List = detail::SeqToList; - using begin = typename boost::mpl::begin::type; - using end = typename boost::mpl::end::type; - - - using NextCall = detail::CallFunctorOfIterator; + template + using ReplacePlaceholder = + typename boost::mpl::apply1::type>::type; - /* this functor does nothing */ - using Functor = detail::CallFunctorOfIterator; + using SolvedFunctors = mp_transform; PMACC_NO_NVCC_HDWARNING template HDINLINE void operator()(T_Types&&... ts) const { - Functor()(std::forward(ts)...); - NextCall()(ts...); - } - - PMACC_NO_NVCC_HDWARNING - template - HDINLINE void operator()(T_Types&&... ts) - { - Functor()(std::forward(ts)...); - NextCall()(ts...); + mp_for_each([&](auto functor) { functor(std::forward(ts)...); }); } }; diff --git a/include/pmacc/meta/GetKeyFromAlias.hpp b/include/pmacc/meta/GetKeyFromAlias.hpp index d84b6ac1da3..b8420ec4ca6 100644 --- a/include/pmacc/meta/GetKeyFromAlias.hpp +++ b/include/pmacc/meta/GetKeyFromAlias.hpp @@ -27,8 +27,7 @@ #include "pmacc/meta/errorHandlerPolicies/ReturnType.hpp" #include "pmacc/types.hpp" -#include -#include +#include #include @@ -40,7 +39,7 @@ namespace pmacc * @tparam T_MPLSeq Sequence of keys to search * @tparam T_Key Key or alias of a key in the sequence * @tparam T_KeyNotFoundPolicy Binary meta-function that is called like (T_MPLSeq, T_Key) - * when T_Key is not found in the sequence. Default is to return bmpl::void_ + * when T_Key is not found in the sequence. Default is to return void */ template> struct GetKeyFromAlias @@ -48,24 +47,23 @@ namespace pmacc private: using KeyNotFoundPolicy = T_KeyNotFoundPolicy; /*create a map where Key is a undeclared alias and value is real type*/ - using AliasMap = typename SeqToMap>::type; + using AliasMap = typename SeqToMap>::type; /*create a map where Key and value is real type*/ - using KeyMap = typename SeqToMap>::type; + using KeyMap = typename SeqToMap>::type; /*combine both maps*/ - using Map_inserter = bmpl::inserter>; - using FullMap = typename bmpl::copy::type; + using FullMap = mp_fold; /* search for given key, * - we get the real type if key found * - else we get boost::mpl::void_ */ - using MapType = typename bmpl::at::type; + using MapType = mp_map_find; public: /* Check for KeyNotFound and calculate final type. (Uses lazy evaluation) */ - using type = typename bmpl::if_< - std::is_same, - bmpl::apply, - bmpl::identity>::type::type; + using type = typename mp_if< + std::is_same, + boost::mpl::apply, + mp_defer>::type; }; } // namespace pmacc diff --git a/include/pmacc/meta/Mp11.hpp b/include/pmacc/meta/Mp11.hpp new file mode 100644 index 00000000000..72a5787f95b --- /dev/null +++ b/include/pmacc/meta/Mp11.hpp @@ -0,0 +1,30 @@ +/* Copyright 2021 Bernhard Manfred Gruber + * + * This file is part of PMacc. + * + * PMacc is free software: you can redistribute it and/or modify + * it under the terms of either the GNU General Public License or + * the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * PMacc is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License and the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * and the GNU Lesser General Public License along with PMacc. + * If not, see . + */ + +#pragma once + +#include +#include + +namespace pmacc +{ + using namespace boost::mp11; +} // namespace pmacc diff --git a/include/pmacc/meta/Pair.hpp b/include/pmacc/meta/Pair.hpp new file mode 100644 index 00000000000..74ed573be5c --- /dev/null +++ b/include/pmacc/meta/Pair.hpp @@ -0,0 +1,32 @@ +/* Copyright 2021 Bernhard Manfred Gruber + * + * This file is part of PMacc. + * + * PMacc is free software: you can redistribute it and/or modify + * it under the terms of either the GNU General Public License or + * the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * PMacc is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License and the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * and the GNU Lesser General Public License along with PMacc. + * If not, see . + */ + +#pragma once + +namespace pmacc::meta +{ + template + struct Pair + { + using first = First; + using second = Second; + }; +} // namespace pmacc::meta diff --git a/include/pmacc/meta/conversion/JoinToSeq.hpp b/include/pmacc/meta/SeqToList.hpp similarity index 57% rename from include/pmacc/meta/conversion/JoinToSeq.hpp rename to include/pmacc/meta/SeqToList.hpp index a9265646e5e..3491f14c9ca 100644 --- a/include/pmacc/meta/conversion/JoinToSeq.hpp +++ b/include/pmacc/meta/SeqToList.hpp @@ -1,4 +1,4 @@ -/* Copyright 2013-2022 Rene Widera +/* Copyright 2013-2022 Rene Widera, Bernhard Manfred Gruber * * This file is part of PMacc. * @@ -19,33 +19,20 @@ * If not, see . */ - #pragma once -#include "pmacc/meta/conversion/ToSeq.hpp" +#include "Mp11.hpp" -#include #include -#include -#include namespace pmacc { - /** Join both input types to one boost mpl sequence - * - * @tparam T_1 a boost mpl sequence or single type - * @tparam T_2 a boost mpl sequence or single type - */ - - template> - struct JoinToSeq + namespace meta { - private: - using Seq1 = typename ToSeq::type; - using Seq2 = typename ToSeq::type; - - public: - using type = typename bmpl::copy>::type; - }; - + namespace detail + { + template + using SeqToList = typename boost::mpl::copy>>::type; + } // namespace detail + } // namespace meta } // namespace pmacc diff --git a/include/pmacc/meta/accessors/Identity.hpp b/include/pmacc/meta/accessors/Identity.hpp index 0aebe30f794..2efb641f82d 100644 --- a/include/pmacc/meta/accessors/Identity.hpp +++ b/include/pmacc/meta/accessors/Identity.hpp @@ -24,7 +24,7 @@ #include "pmacc/types.hpp" -#include +#include namespace pmacc { @@ -37,9 +37,10 @@ namespace pmacc * @tparam T in type * */ - template - struct Identity : bmpl::identity + template + struct Identity { + using type = T; }; } // namespace accessors diff --git a/include/pmacc/meta/accessors/Type.hpp b/include/pmacc/meta/accessors/Type.hpp index 73d2b037a98..b514beeff27 100644 --- a/include/pmacc/meta/accessors/Type.hpp +++ b/include/pmacc/meta/accessors/Type.hpp @@ -38,7 +38,7 @@ namespace pmacc * * T must have defined ::type */ - template + template struct Type { using type = typename T::type; diff --git a/include/pmacc/meta/conversion/MakeSeq.hpp b/include/pmacc/meta/conversion/MakeSeq.hpp index 02bccce63a2..908712a52c4 100644 --- a/include/pmacc/meta/conversion/MakeSeq.hpp +++ b/include/pmacc/meta/conversion/MakeSeq.hpp @@ -22,34 +22,12 @@ #pragma once - #include "pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp" -#include - namespace pmacc { - /** combine all input types to one sequence - * - * Note: if the input type is a sequence itself, its elements will be unfolded - * and added separately - * - * @tparam T_Args a boost mpl sequence or single type - * - * @code - * using MyType = typename MakeSeq< A, B >::type - * using MyType2 = typename MakeSeq< boost::mpl::vector, C >::type - * @endcode - * - */ - template - struct MakeSeq - { - using type = typename MakeSeqFromNestedSeq>::type; - }; - - /** short hand definition for @see MakeSeq<> */ + /** short hand definition for @see MakeSeqFromNestedSeq<> */ template - using MakeSeq_t = typename MakeSeq::type; + using MakeSeq_t = typename MakeSeqFromNestedSeq>::type; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp b/include/pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp index f39d3ad9a1b..70856a68b37 100644 --- a/include/pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp +++ b/include/pmacc/meta/conversion/MakeSeqFromNestedSeq.hpp @@ -22,12 +22,9 @@ #pragma once -#include "pmacc/meta/conversion/JoinToSeq.hpp" +#include "pmacc/meta/Mp11.hpp" #include "pmacc/meta/conversion/ToSeq.hpp" -#include -#include - namespace pmacc { /** combine all elements of the input type to a single vector @@ -40,11 +37,7 @@ namespace pmacc template struct MakeSeqFromNestedSeq { - private: - using Seq = typename ToSeq::type; - - public: - using type = typename bmpl::fold, JoinToSeq>::type; + using type = mp_flatten::type>; }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/OperateOnSeq.hpp b/include/pmacc/meta/conversion/OperateOnSeq.hpp index d1935677c57..281c4085149 100644 --- a/include/pmacc/meta/conversion/OperateOnSeq.hpp +++ b/include/pmacc/meta/conversion/OperateOnSeq.hpp @@ -21,15 +21,11 @@ #pragma once +#include "pmacc/meta/Mp11.hpp" #include "pmacc/meta/accessors/Identity.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include -#include -#include +#include namespace pmacc { @@ -40,19 +36,16 @@ namespace pmacc * to a mpl pair * @tparam T_Accessor an unary lambda operator that is used before the type * from the sequence is passed to T_UnaryOperator - * @return ::type bmpl::vector + * @return ::type mp_list */ template> struct OperateOnSeq { template - struct Op : bmpl::apply1::type> - { - }; + using Op = + typename boost::mpl::apply1::type>::type; - using MPLSeq = T_MPLSeq; - using Inserter = bmpl::back_inserter>; - using type = typename bmpl::transform, Inserter>::type; + using type = mp_transform; }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/RemoveFromSeq.hpp b/include/pmacc/meta/conversion/RemoveFromSeq.hpp index 1d32e248016..889a410a286 100644 --- a/include/pmacc/meta/conversion/RemoveFromSeq.hpp +++ b/include/pmacc/meta/conversion/RemoveFromSeq.hpp @@ -23,11 +23,6 @@ #include "pmacc/types.hpp" -#include -#include -#include -#include - namespace pmacc { /* remove types from a sequence @@ -39,12 +34,9 @@ namespace pmacc struct RemoveFromSeq { template - struct hasId - { - using type = bmpl::contains; - }; + using hasId = mp_contains; - using type = typename bmpl::remove_if>::type; + using type = mp_remove_if; }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/ResolveAliases.hpp b/include/pmacc/meta/conversion/ResolveAliases.hpp index 49ac90a531a..5d5bac29217 100644 --- a/include/pmacc/meta/conversion/ResolveAliases.hpp +++ b/include/pmacc/meta/conversion/ResolveAliases.hpp @@ -22,14 +22,10 @@ #pragma once #include "pmacc/meta/GetKeyFromAlias.hpp" +#include "pmacc/meta/Mp11.hpp" #include "pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include - namespace pmacc { /** Translate all pmacc alias types to full specialized types @@ -49,15 +45,12 @@ namespace pmacc using MPLSeq = T_MPLSeq; using MPLSeqLookup = T_MPLSeqLookup; using AliasNotFoundPolicy = T_AliasNotFoundPolicy; - using Inserter = bmpl::back_inserter>; template - struct GetKeyFromAliasAccessor - { - using type = typename GetKeyFromAlias::type; - }; + using GetKeyFromAliasAccessor = + typename GetKeyFromAlias::type; - using type = typename bmpl::transform>::type; + using type = mp_transform; }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/SeqToMap.hpp b/include/pmacc/meta/conversion/SeqToMap.hpp index c585b960caa..193d3667fac 100644 --- a/include/pmacc/meta/conversion/SeqToMap.hpp +++ b/include/pmacc/meta/conversion/SeqToMap.hpp @@ -21,21 +21,17 @@ #pragma once +#include "pmacc/meta/SeqToList.hpp" #include "pmacc/meta/accessors/Identity.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include -#include -#include +#include namespace pmacc { - /** convert boost mpl sequence to a mpl map + /** convert boost mp11 list to a map * - * @tparam T_MPLSeq any boost mpl sequence + * @tparam T_MPLSeq any boost mp11 list * @tparam T_UnaryOperator unary operator to translate type from the sequence * to a mpl pair * @tparam T_Accessor An unary lambda operator which is used before the type @@ -46,13 +42,10 @@ namespace pmacc struct SeqToMap { template - struct Op : bmpl::apply1::type> - { - }; + using Op = + typename boost::mpl::apply1::type>::type; - using MPLSeq = T_MPLSeq; - using Map_inserter = bmpl::inserter, bmpl::insert>; - using type = typename bmpl::transform, Map_inserter>::type; + using ListOfTuples = mp_transform>; + using type = mp_fold, mp_map_insert>; }; - } // namespace pmacc diff --git a/include/pmacc/meta/conversion/ToSeq.hpp b/include/pmacc/meta/conversion/ToSeq.hpp index ee1b6bc1a39..65cebee6717 100644 --- a/include/pmacc/meta/conversion/ToSeq.hpp +++ b/include/pmacc/meta/conversion/ToSeq.hpp @@ -23,21 +23,21 @@ #include "pmacc/types.hpp" -#include -#include -#include - - namespace pmacc { /** cast type to boost mpl vector * @return ::type if T_Type is sequence then identity of T_Type - * else boost::mpl::vector + * else mp_list */ template struct ToSeq { - using type = typename bmpl::if_, T_Type, bmpl::vector1>::type; + using type = mp_list; }; + template + struct ToSeq> + { + using type = mp_list; + }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/TypeToAliasPair.hpp b/include/pmacc/meta/conversion/TypeToAliasPair.hpp index a9e64628945..948cd3ac796 100644 --- a/include/pmacc/meta/conversion/TypeToAliasPair.hpp +++ b/include/pmacc/meta/conversion/TypeToAliasPair.hpp @@ -22,14 +22,13 @@ #pragma once #include "pmacc/identifier/alias.hpp" +#include "pmacc/meta/Pair.hpp" #include "pmacc/meta/conversion/TypeToPair.hpp" #include "pmacc/types.hpp" -#include - namespace pmacc { - /** create boost mpl pair + /** create pmacc::meta::Pair * * If T_Type is a pmacc alias than first is set to anonym alias name * and second is set to T_Type. @@ -48,7 +47,8 @@ namespace pmacc template class T_Alias, typename T_Type> struct TypeToAliasPair> { - using type = bmpl::pair, T_Alias>; + using type + = pmacc::meta::Pair, T_Alias>; }; diff --git a/include/pmacc/meta/conversion/TypeToPair.hpp b/include/pmacc/meta/conversion/TypeToPair.hpp index 9f3d7a7549e..ec1f964565d 100644 --- a/include/pmacc/meta/conversion/TypeToPair.hpp +++ b/include/pmacc/meta/conversion/TypeToPair.hpp @@ -21,21 +21,20 @@ #pragma once +#include "pmacc/meta/Pair.hpp" #include "pmacc/types.hpp" -#include - namespace pmacc { - /** create boost mpl pair + /** create pmacc::meta::Pair * * @tparam T_Type any type - * @resturn ::type boost mpl pair where first and second is set to T_Type + * @resturn ::type pmacc::meta::Pair where first and second is set to T_Type */ template struct TypeToPair { - using type = bmpl::pair; + using type = pmacc::meta::Pair; }; diff --git a/include/pmacc/meta/conversion/TypeToPointerPair.hpp b/include/pmacc/meta/conversion/TypeToPointerPair.hpp index 33dcb22149e..8e0eb850020 100644 --- a/include/pmacc/meta/conversion/TypeToPointerPair.hpp +++ b/include/pmacc/meta/conversion/TypeToPointerPair.hpp @@ -21,11 +21,9 @@ #pragma once +#include "pmacc/meta/Pair.hpp" #include "pmacc/types.hpp" -#include - - namespace pmacc { /** Wrapper to use any type as identifier @@ -59,16 +57,16 @@ namespace pmacc using type = TypeAsIdentifier; }; - /** create boost mpl pair ,PointerOfType> + /** create pmacc::meta::Pair,PointerOfType> * * @tparam T_Type any type - * @return ::type boost::mpl::pair,PointerOfType> + * @return ::type pmacc::meta::Pair,PointerOfType> */ template struct TypeToPointerPair { using TypePtr = T_Type*; - using type = bmpl::pair::type, TypePtr>; + using type = pmacc::meta::Pair::type, TypePtr>; }; } // namespace pmacc diff --git a/include/pmacc/meta/conversion/Unique.hpp b/include/pmacc/meta/conversion/Unique.hpp index 5769a3607a8..0c3defbc392 100644 --- a/include/pmacc/meta/conversion/Unique.hpp +++ b/include/pmacc/meta/conversion/Unique.hpp @@ -50,11 +50,11 @@ namespace pmacc * Take the front element, remove its other instances from the rest of the sequence, * recursively repeat for the remaining elements. */ - template::value> + template::value> struct Unique { - using Front = typename bmpl::front::type; - using Tail = typename bmpl::remove::type; + using Front = mp_front; + using Tail = mp_remove; using UniqueTail = typename Unique::type; using type = MakeSeq_t; }; @@ -77,6 +77,6 @@ namespace pmacc * @tparam T_Seq sequence */ template - static constexpr bool isUnique = (bmpl::size::value == bmpl::size>::value); + static constexpr bool isUnique = (mp_size::value == mp_size>::value); } // namespace pmacc diff --git a/include/pmacc/meta/errorHandlerPolicies/ReturnType.hpp b/include/pmacc/meta/errorHandlerPolicies/ReturnType.hpp index 3ba1afbfb10..2fdc3d08448 100644 --- a/include/pmacc/meta/errorHandlerPolicies/ReturnType.hpp +++ b/include/pmacc/meta/errorHandlerPolicies/ReturnType.hpp @@ -30,7 +30,7 @@ namespace pmacc /** Returns the given type * Binary meta function that takes any boost mpl sequence and a type */ - template + template struct ReturnType { template diff --git a/include/pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp b/include/pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp index 4e81c95683b..50760d6a352 100644 --- a/include/pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp +++ b/include/pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp @@ -45,7 +45,7 @@ namespace pmacc * `sizeof(ANY_TYPE) != 0` is always true and defers the evaluation. */ PMACC_CASSERT_MSG_TYPE(value_not_found_in_seq, T_Value, false && (sizeof(T_MPLSeq) != 0)); - using type = bmpl::void_; + using type = boost::mpl::void_; }; }; diff --git a/include/pmacc/particles/ParticleDescription.hpp b/include/pmacc/particles/ParticleDescription.hpp index 3d6f268b84b..716660d4838 100644 --- a/include/pmacc/particles/ParticleDescription.hpp +++ b/include/pmacc/particles/ParticleDescription.hpp @@ -27,9 +27,6 @@ #include "pmacc/particles/policies/DeleteParticles.hpp" #include "pmacc/particles/policies/ExchangeParticles.hpp" -#include - - namespace pmacc { /** ParticleDescription defines attributes, methods and flags of a particle @@ -39,7 +36,7 @@ namespace pmacc * particle. * * @tparam T_Name name of described particle (e.g. electron, ion) - * type must be a boost::mpl::string + * type must be a PMACC_CSTRING * @tparam T_SuperCellSize compile time size of a super cell * @tparam T_ValueTypeSeq sequence or single type with value_identifier, must not have duplicates * @tparam T_Flags sequence or single type with identifier to add flags on a frame, must not have duplicates @@ -47,7 +44,7 @@ namespace pmacc * (e.g. calculate mass, gamma, ...) * (e.g. useSolverXY, calcRadiation, ...) * @tparam T_FrameExtensionList sequence or single class with frame extensions - * - extension must be an unary template class that supports bmpl::apply1<> + * - extension must be an unary template class that supports boost::mpl::apply1<> * - type of the final frame is applied to each extension class * (this allows pointers and references to a frame itself) * - the final frame that uses ParticleDescription inherits from all @@ -57,11 +54,11 @@ namespace pmacc typename T_Name, typename T_SuperCellSize, typename T_ValueTypeSeq, - typename T_Flags = bmpl::vector0<>, + typename T_Flags = mp_list<>, typename T_HandleGuardRegion = HandleGuardRegion, - typename T_MethodsList = bmpl::vector0<>, - typename T_FrameExtensionList = bmpl::vector0<>> + typename T_MethodsList = mp_list<>, + typename T_FrameExtensionList = mp_list<>> struct ParticleDescription { using Name = T_Name; diff --git a/include/pmacc/particles/boostExtension/InheritGenerators.hpp b/include/pmacc/particles/boostExtension/InheritGenerators.hpp index cf08baf67b9..57cc74c889b 100644 --- a/include/pmacc/particles/boostExtension/InheritGenerators.hpp +++ b/include/pmacc/particles/boostExtension/InheritGenerators.hpp @@ -24,17 +24,6 @@ #include "pmacc/particles/memory/frames/NullFrame.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include - - namespace pmacc { template @@ -52,7 +41,7 @@ namespace pmacc * * Create a fork and inherit from head and combined classes from Vec */ - template::value> + template::value> struct TypelistLinearInherit; template @@ -93,9 +82,7 @@ namespace pmacc template struct LinearInherit { - using type = - typename TypelistLinearInherit::type, typename bmpl::pop_front::type>:: - type; + using type = typename TypelistLinearInherit, mp_pop_front>::type; }; } // namespace pmacc diff --git a/include/pmacc/particles/boostExtension/InheritLinearly.hpp b/include/pmacc/particles/boostExtension/InheritLinearly.hpp index c4453628822..63df94af722 100644 --- a/include/pmacc/particles/boostExtension/InheritLinearly.hpp +++ b/include/pmacc/particles/boostExtension/InheritLinearly.hpp @@ -19,40 +19,17 @@ * If not, see . */ - #pragma once - -#include "pmacc/meta/accessors/Identity.hpp" - -#include -#include -#include -#include +#include "pmacc/types.hpp" namespace pmacc { - namespace detail - { - /** get combined type which inherit from a boost mpl sequence - * - * @tparam T_Sequence boost mpl sequence with classes - * @tparam T_Accessor unary operator to transform each element of the sequence - */ - template class T_Accessor = meta::accessors::Identity> - using InheritLinearly = - typename bmpl::inherit_linearly>>::type; - - } // namespace detail + template typename T_Accessor = mp_identity_t> + struct InheritLinearly; - /** type which inherits from multiple classes - * - * @tparam T_Sequence boost mpl sequence with classes - * @tparam T_Accessor unary operator to transform each element of the sequence - */ - template class T_Accessor = meta::accessors::Identity> - struct InheritLinearly : detail::InheritLinearly + template typename T_Accessor> + struct InheritLinearly, T_Accessor> : T_Accessor... { }; - } // namespace pmacc diff --git a/include/pmacc/particles/memory/buffers/ParticlesBuffer.hpp b/include/pmacc/particles/memory/buffers/ParticlesBuffer.hpp index 174447535ce..1294f567c22 100644 --- a/include/pmacc/particles/memory/buffers/ParticlesBuffer.hpp +++ b/include/pmacc/particles/memory/buffers/ParticlesBuffer.hpp @@ -25,6 +25,7 @@ #include "pmacc/math/Vector.hpp" #include "pmacc/memory/buffers/GridBuffer.hpp" #include "pmacc/memory/dataTypes/Mask.hpp" +#include "pmacc/meta/Pair.hpp" #include "pmacc/meta/conversion/MakeSeq.hpp" #include "pmacc/particles/Identifier.hpp" #include "pmacc/particles/ParticleDescription.hpp" @@ -38,26 +39,12 @@ #include "pmacc/particles/memory/frames/Frame.hpp" #include "pmacc/traits/GetUniqueTypeId.hpp" -#include -#include -#include -#include - #include namespace pmacc { - /** - * Describes DIM-dimensional buffer for particles data on the host. - * - * @tParam T_ParticleDescription Object which describe a frame @see ParticleDescription.hpp - * @tparam SuperCellSize_ TVec which descripe size of a superce - * @tparam DIM dimension of the buffer (1-3) - */ - template - class ParticlesBuffer + namespace detail { - public: /** create static array */ template @@ -66,11 +53,24 @@ namespace pmacc template struct apply { - using type = bmpl:: - pair::type::type, bmpl::integral_c>>; + using type = meta::Pair< + X, + StaticArray::type::type, std::integral_constant>>; }; }; + } // namespace detail + /** + * Describes DIM-dimensional buffer for particles data on the host. + * + * @tParam T_ParticleDescription Object which describe a frame @see ParticleDescription.hpp + * @tparam SuperCellSize_ TVec which descripe size of a superce + * @tparam DIM dimension of the buffer (1-3) + */ + template + class ParticlesBuffer + { + public: /** type of the border frame management object * * contains: @@ -82,17 +82,15 @@ namespace pmacc using SuperCellSize = SuperCellSize_; - using ParticleAttributeList = - typename MakeSeq::type; + using ParticleAttributeList = MakeSeq_t; - using ParticleAttributeListBorder = - typename MakeSeq::type; + using ParticleAttributeListBorder = MakeSeq_t; using FrameDescriptionWithManagementAttributes = typename ReplaceValueTypeSeq::type; /** double linked list pointer */ - using LinkedListPointer = typename MakeSeq, NextFramePtr<>>::type; + using LinkedListPointer = MakeSeq_t, NextFramePtr<>>; /* extent particle description with pointer to a frame*/ using FrameDescription = @@ -103,7 +101,7 @@ namespace pmacc * a group of particles is stored as frame */ using FrameType = Frame< - OperatorCreatePairStaticArray::type::value>, + detail::OperatorCreatePairStaticArray::type::value>, FrameDescription>; using FrameDescriptionBorder = @@ -114,7 +112,7 @@ namespace pmacc * - each frame contains only one particle * - local administration attributes of a particle are removed */ - using FrameTypeBorder = Frame, FrameDescriptionBorder>; + using FrameTypeBorder = Frame, FrameDescriptionBorder>; using SuperCellType = SuperCell; diff --git a/include/pmacc/particles/memory/dataTypes/ListPointer.hpp b/include/pmacc/particles/memory/dataTypes/ListPointer.hpp index 1c84d7dc528..e662b4a9725 100644 --- a/include/pmacc/particles/memory/dataTypes/ListPointer.hpp +++ b/include/pmacc/particles/memory/dataTypes/ListPointer.hpp @@ -27,13 +27,13 @@ namespace pmacc { - template + template struct PreviousFramePtr { PMACC_ALIGN(previousFrame, Pointer); }; - template + template struct NextFramePtr { PMACC_ALIGN(nextFrame, Pointer); diff --git a/include/pmacc/particles/memory/dataTypes/Particle.hpp b/include/pmacc/particles/memory/dataTypes/Particle.hpp index f0dc5794c66..8dad256b966 100644 --- a/include/pmacc/particles/memory/dataTypes/Particle.hpp +++ b/include/pmacc/particles/memory/dataTypes/Particle.hpp @@ -37,14 +37,7 @@ #include "pmacc/traits/HasIdentifier.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include -#include -#include -#include -#include +#include #include @@ -167,7 +160,7 @@ namespace pmacc */ using SolvedAliasName = typename GetKeyFromAlias::type; - using type = bmpl::contains; + using type = mp_contains; }; template @@ -210,19 +203,14 @@ namespace pmacc using SrcTypeSeq = typename Src::ValueTypeSeq; /* create attribute list with a subset of common attributes in two sequences - * bmpl::contains has lower complexity than traits::HasIdentifier + * mp_contains has lower complexity than traits::HasIdentifier * and was used for this reason */ - using CommonTypeSeq = typename bmpl::copy_if< - DestTypeSeq, - bmpl::contains, - bmpl::back_inserter>>::type; + using CommonTypeSeq = mp_copy_if_q>; /* create sequences with disjunct attributes from `DestTypeSeq` */ - using UniqueInDestTypeSeq = typename bmpl::copy_if< - DestTypeSeq, - bmpl::not_>, - bmpl::back_inserter>>::type; + using UniqueInDestTypeSeq + = mp_copy_if_q>>; /** Assign particle attributes * @@ -239,11 +227,11 @@ namespace pmacc { using pmacc::meta::ForEach; /* assign attributes from src to dest*/ - ForEach> copy; + ForEach> copy; copy(dest, src); /* set all attributes which are not in src to their default value*/ - ForEach> setAttributeToDefault; + ForEach> setAttributeToDefault; setAttributeToDefault(dest); }; }; diff --git a/include/pmacc/particles/memory/frames/Frame.hpp b/include/pmacc/particles/memory/frames/Frame.hpp index ad5ce79e788..9e54e89b249 100644 --- a/include/pmacc/particles/memory/frames/Frame.hpp +++ b/include/pmacc/particles/memory/frames/Frame.hpp @@ -34,11 +34,7 @@ #include "pmacc/traits/HasIdentifier.hpp" #include "pmacc/types.hpp" -#include -#include -#include -#include -#include +#include namespace pmacc { @@ -60,12 +56,13 @@ namespace pmacc template struct Frame - : public InheritLinearly - , protected pmath::MapTuple< + : protected pmath::MapTuple< typename SeqToMap::type> - , public InheritLinearly>>::type> + , public InheritLinearly>>::type>> { using ParticleDescription = T_ParticleDescription; using Name = typename ParticleDescription::Name; @@ -135,7 +132,7 @@ namespace pmacc */ using SolvedAliasName = typename GetKeyFromAlias::type; - using type = bmpl::contains; + using type = mp_contains; }; template @@ -147,7 +144,7 @@ namespace pmacc using FlagList = typename FrameType::FlagList; public: - using type = bmpl::contains; + using type = mp_contains; }; template diff --git a/include/pmacc/particles/meta/FindByNameOrType.hpp b/include/pmacc/particles/meta/FindByNameOrType.hpp index 7d37c1f10dd..814fe14658c 100644 --- a/include/pmacc/particles/meta/FindByNameOrType.hpp +++ b/include/pmacc/particles/meta/FindByNameOrType.hpp @@ -24,15 +24,10 @@ #include "pmacc/meta/errorHandlerPolicies/ThrowValueNotFound.hpp" #include "pmacc/traits/GetCTName.hpp" -#include -#include -#include -#include -#include +#include #include - namespace pmacc { namespace particles @@ -58,17 +53,18 @@ namespace pmacc template struct HasTypeOrName { - using type = bmpl::or_< - std::is_same, - std::is_same, T_Identifier>>; + static constexpr bool value + = std::is_same_v< + T_Identifier, + T_Value> || std::is_same_v, T_Identifier>; }; - using FilteredSeq = typename bmpl::copy_if>::type; + using FilteredSeq = mp_copy_if; - using type = typename bmpl::if_< - bmpl::empty, - bmpl::apply, - bmpl::front>::type::type; + using type = typename mp_if< + mp_empty, + boost::mpl::apply, + mp_defer>::type; }; template< diff --git a/include/pmacc/particles/operations/CountParticles.hpp b/include/pmacc/particles/operations/CountParticles.hpp index 0d467b5d3f5..36bdb2d90bf 100644 --- a/include/pmacc/particles/operations/CountParticles.hpp +++ b/include/pmacc/particles/operations/CountParticles.hpp @@ -190,7 +190,7 @@ namespace pmacc const Space& size, T_ParticleFilter& parFilter) { - using usedFilters = bmpl::vector::type>; + using usedFilters = mp_list::type>; using MyParticleFilter = typename FilterFactory::FilterType; MyParticleFilter filter; filter.setWindowPosition(origin, size); diff --git a/include/pmacc/particles/operations/Deselect.hpp b/include/pmacc/particles/operations/Deselect.hpp index a0c95d9be99..d8a01a20d4a 100644 --- a/include/pmacc/particles/operations/Deselect.hpp +++ b/include/pmacc/particles/operations/Deselect.hpp @@ -22,12 +22,6 @@ #pragma once #include "pmacc/meta/conversion/ToSeq.hpp" -#include "pmacc/types.hpp" - -#include -#include -#include -#include namespace pmacc { diff --git a/include/pmacc/particles/operations/splitIntoListOfFrames.kernel b/include/pmacc/particles/operations/splitIntoListOfFrames.kernel index 883c4c25326..4d11e5e393e 100644 --- a/include/pmacc/particles/operations/splitIntoListOfFrames.kernel +++ b/include/pmacc/particles/operations/splitIntoListOfFrames.kernel @@ -229,7 +229,7 @@ namespace pmacc { /* copy attributes and activate particle*/ auto parDest = destFramePtr[masterVirtualThreadIdx][idx]; - auto parDestDeselect = deselect>(parDest); + auto parDestDeselect = deselect>(parDest); assign(parDestDeselect, srcFrame[srcParticleIdx]); parDest[localCellIdx_] = lCellIdx; diff --git a/include/pmacc/particles/particleFilter/FilterFactory.hpp b/include/pmacc/particles/particleFilter/FilterFactory.hpp index 18c6c40119b..0e4d76a6863 100644 --- a/include/pmacc/particles/particleFilter/FilterFactory.hpp +++ b/include/pmacc/particles/particleFilter/FilterFactory.hpp @@ -27,18 +27,12 @@ #include "pmacc/particles/memory/frames/NullFrame.hpp" #include "pmacc/particles/particleFilter/system/TrueFilter.hpp" -#include -#include -#include -#include -#include - namespace pmacc { - template> + template> class FilterFactory { public: - using FilterType = typename LinearInherit::type>::type; + using FilterType = typename LinearInherit>::type; }; } // namespace pmacc diff --git a/include/pmacc/particles/traits/FilterByFlag.hpp b/include/pmacc/particles/traits/FilterByFlag.hpp index d36f7e54e86..da7cca1a396 100644 --- a/include/pmacc/particles/traits/FilterByFlag.hpp +++ b/include/pmacc/particles/traits/FilterByFlag.hpp @@ -24,9 +24,6 @@ #include "pmacc/traits/HasFlag.hpp" #include "pmacc/types.hpp" -#include -#include - namespace pmacc { namespace particles @@ -41,16 +38,10 @@ namespace pmacc template struct FilterByFlag { - using MPLSeq = T_MPLSeq; - using Flag = T_Flag; - template - struct HasFlag - { - using type = typename ::pmacc::traits::HasFlag::type; - }; + using HasFlag = typename ::pmacc::traits::HasFlag::type; - using type = typename bmpl::copy_if>::type; + using type = mp_copy_if; }; } // namespace traits diff --git a/include/pmacc/particles/traits/FilterByIdentifier.hpp b/include/pmacc/particles/traits/FilterByIdentifier.hpp index 5aa8db5f6c9..2a9bbd3d3b1 100644 --- a/include/pmacc/particles/traits/FilterByIdentifier.hpp +++ b/include/pmacc/particles/traits/FilterByIdentifier.hpp @@ -24,10 +24,6 @@ #include "pmacc/traits/HasIdentifier.hpp" #include "pmacc/types.hpp" -#include -#include - - namespace pmacc { namespace particles @@ -39,22 +35,16 @@ namespace pmacc * @tparam T_MPLSeq sequence of particle species * @tparam T_Identifier identifier to be filtered * - * @typedef type boost mpl forward sequence + * @typedef type boost mp11 list sequence */ template struct FilterByIdentifier { - using MPLSeq = T_MPLSeq; - using Identifier = T_Identifier; - template - struct HasIdentifier - { - using type = - typename ::pmacc::traits::HasIdentifier::type; - }; + using HasIdentifier = + typename ::pmacc::traits::HasIdentifier::type; - using type = typename bmpl::copy_if>::type; + using type = mp_copy_if; }; } // namespace traits diff --git a/include/pmacc/particles/traits/ResolveAliasFromSpecies.hpp b/include/pmacc/particles/traits/ResolveAliasFromSpecies.hpp index eadd0a59691..63bbe4aeaa3 100644 --- a/include/pmacc/particles/traits/ResolveAliasFromSpecies.hpp +++ b/include/pmacc/particles/traits/ResolveAliasFromSpecies.hpp @@ -38,7 +38,7 @@ namespace pmacc * Example: * * \code{.cpp} - * typedef bmpl::vector< + * typedef mp_list< * particlePusher, * shape, * interpolation, diff --git a/include/pmacc/random/distributions/uniform/Uniform_Integral32Bit.hpp b/include/pmacc/random/distributions/uniform/Uniform_Integral32Bit.hpp index d93dad0e867..e928b16aa6b 100644 --- a/include/pmacc/random/distributions/uniform/Uniform_Integral32Bit.hpp +++ b/include/pmacc/random/distributions/uniform/Uniform_Integral32Bit.hpp @@ -41,7 +41,7 @@ namespace pmacc class Uniform< T_Type, T_RNGMethod, - typename bmpl::if_c && sizeof(T_Type) <= 4, void, T_Type>::type> + std::conditional_t && sizeof(T_Type) <= 4, void, T_Type>> { using RNGMethod = T_RNGMethod; using StateType = typename RNGMethod::StateType; diff --git a/include/pmacc/random/distributions/uniform/Uniform_Integral64Bit.hpp b/include/pmacc/random/distributions/uniform/Uniform_Integral64Bit.hpp index bd2d3ded986..ab26a3f8027 100644 --- a/include/pmacc/random/distributions/uniform/Uniform_Integral64Bit.hpp +++ b/include/pmacc/random/distributions/uniform/Uniform_Integral64Bit.hpp @@ -42,7 +42,7 @@ namespace pmacc class Uniform< T_Type, T_RNGMethod, - typename bmpl::if_c && sizeof(T_Type) == 8, void, T_Type>::type> + std::conditional_t && sizeof(T_Type) == 8, void, T_Type>> { using RNGMethod = T_RNGMethod; using StateType = typename RNGMethod::StateType; diff --git a/include/pmacc/result_of_Functor.hpp b/include/pmacc/result_of_Functor.hpp index ec8e08f7f1c..e538cacfbe6 100644 --- a/include/pmacc/result_of_Functor.hpp +++ b/include/pmacc/result_of_Functor.hpp @@ -21,30 +21,11 @@ #pragma once -#include - -namespace mpl = boost::mpl; - namespace pmacc { namespace result_of { - template< - typename _Functor, - typename Arg0 = mpl::void_, - typename Arg1 = mpl::void_, - typename Arg2 = mpl::void_, - typename Arg3 = mpl::void_, - typename Arg4 = mpl::void_, - typename Arg5 = mpl::void_, - typename Arg6 = mpl::void_, - typename Arg7 = mpl::void_, - typename Arg8 = mpl::void_, - typename Arg9 = mpl::void_, - typename Arg10 = mpl::void_, - typename Arg11 = mpl::void_, - typename Arg12 = mpl::void_, - typename dummy = mpl::void_> + template struct Functor { using type = typename _Functor::result_type; diff --git a/include/pmacc/test/memory/HostBuffer/copyFrom.hpp b/include/pmacc/test/memory/HostBuffer/copyFrom.hpp index 9348f08e15b..8bc8991381f 100644 --- a/include/pmacc/test/memory/HostBuffer/copyFrom.hpp +++ b/include/pmacc/test/memory/HostBuffer/copyFrom.hpp @@ -93,5 +93,5 @@ namespace pmacc TEST_CASE("HostBuffer::copyFrom", "[copyFrom]") { using namespace pmacc::test::memory::HostBuffer; - ::boost::mpl::for_each(CopyFromTest()); + ::pmacc::mp_for_each(CopyFromTest()); } diff --git a/include/pmacc/test/memory/HostBuffer/reset.hpp b/include/pmacc/test/memory/HostBuffer/reset.hpp index 3fb872805e9..e07f6c1d7e8 100644 --- a/include/pmacc/test/memory/HostBuffer/reset.hpp +++ b/include/pmacc/test/memory/HostBuffer/reset.hpp @@ -79,5 +79,5 @@ namespace pmacc TEST_CASE("HostBuffer::reset", "[reset]") { using namespace pmacc::test::memory::HostBuffer; - ::boost::mpl::for_each(ResetTest()); + ::pmacc::mp_for_each(ResetTest()); } diff --git a/include/pmacc/test/memory/HostBuffer/setValue.hpp b/include/pmacc/test/memory/HostBuffer/setValue.hpp index 8650fa63566..9535e11086c 100644 --- a/include/pmacc/test/memory/HostBuffer/setValue.hpp +++ b/include/pmacc/test/memory/HostBuffer/setValue.hpp @@ -80,5 +80,5 @@ namespace pmacc TEST_CASE("HostBuffer::setValue", "[setValue]") { using namespace pmacc::test::memory::HostBuffer; - ::boost::mpl::for_each(setValueTest()); + ::pmacc::mp_for_each(setValueTest()); } diff --git a/include/pmacc/test/memory/memoryUT.cpp b/include/pmacc/test/memory/memoryUT.cpp index d5e6323bda3..f13a3ae1c59 100644 --- a/include/pmacc/test/memory/memoryUT.cpp +++ b/include/pmacc/test/memory/memoryUT.cpp @@ -31,9 +31,7 @@ #include // BOOST -#include -#include -#include +#include "pmacc/meta/Mp11.hpp" // MPI #include /* MPI_Init, MPI_Finalize */ @@ -91,9 +89,9 @@ namespace pmacc * Definition of a list of dimension types. This * List is used to test memory operations in * each dimension setup automatically. For this - * purpose boost::mpl::for_each is used. + * purpose pmacc::mp_for_each is used. */ -using Dims = ::boost::mpl::list, boost::mpl::int_, boost::mpl::int_>; +using Dims = ::pmacc::mp_list, pmacc::mp_int, pmacc::mp_int>; /******************************************************************************* * Test Suites diff --git a/include/pmacc/traits/HasFlag.hpp b/include/pmacc/traits/HasFlag.hpp index 09653d253d9..974105cc5fd 100644 --- a/include/pmacc/traits/HasFlag.hpp +++ b/include/pmacc/traits/HasFlag.hpp @@ -32,7 +32,7 @@ namespace pmacc * @tparam T_Key a class which is used as identifier * * This struct must define - * ::type (boost::mpl::bool_<>) + * ::type (pmacc::mp_bool_<>) */ template struct HasFlag; diff --git a/include/pmacc/traits/HasIdentifier.hpp b/include/pmacc/traits/HasIdentifier.hpp index c3671cd9ded..9e955619bc2 100644 --- a/include/pmacc/traits/HasIdentifier.hpp +++ b/include/pmacc/traits/HasIdentifier.hpp @@ -34,7 +34,7 @@ namespace pmacc * @tparam T_Key a class which is used as identifier * * This struct must define - * ::type (boost::mpl::bool_<>) + * ::type (pmacc::mp_bool_<>) */ template struct HasIdentifier diff --git a/include/pmacc/traits/HasIdentifiers.hpp b/include/pmacc/traits/HasIdentifiers.hpp index bc21781c679..1e346880af3 100644 --- a/include/pmacc/traits/HasIdentifiers.hpp +++ b/include/pmacc/traits/HasIdentifiers.hpp @@ -21,12 +21,9 @@ #pragma once +#include "pmacc/meta/Mp11.hpp" #include "pmacc/traits/HasIdentifier.hpp" -#include -#include -#include - namespace pmacc { @@ -35,24 +32,21 @@ namespace pmacc /** Checks if an object has all specified identifiers * * Individual identifiers checks are logically connected via - * boost::mpl::and_ . + * mp_all_of . * * @tparam T_Object any object (class or typename) * @tparam T_SeqKeys a sequence of identifiers * * This struct must define - * ::type (boost::mpl::bool_<>) + * ::type (pmacc::mp_bool_<>) */ template struct HasIdentifiers { - using SeqHasIdentifiers = - typename boost::mpl::transform>::type; + template + using Predicate = typename HasIdentifier::type; - using type = typename boost::mpl::accumulate< - SeqHasIdentifiers, - boost::mpl::bool_, - boost::mpl::and_>::type; + using type = pmacc::mp_all_of; }; template diff --git a/include/pmacc/types.hpp b/include/pmacc/types.hpp index 7700e02cd1c..522fc0e6848 100644 --- a/include/pmacc/types.hpp +++ b/include/pmacc/types.hpp @@ -50,20 +50,19 @@ #include "pmacc/dimensions/Definition.hpp" #include "pmacc/eventSystem/EventType.hpp" #include "pmacc/memory/Align.hpp" +#include "pmacc/meta/Mp11.hpp" #include "pmacc/ppFunctions.hpp" #include "pmacc/type/Area.hpp" #include "pmacc/type/Exchange.hpp" #include "pmacc/type/Integral.hpp" #include -#include #include namespace pmacc { - namespace bmpl = boost::mpl; namespace bfs = boost::filesystem; } // namespace pmacc diff --git a/share/picongpu/benchmarks/SPEC/include/picongpu/param/fileOutput.param b/share/picongpu/benchmarks/SPEC/include/picongpu/param/fileOutput.param index 98f4851ab2c..fc5e19bf510 100644 --- a/share/picongpu/benchmarks/SPEC/include/picongpu/param/fileOutput.param +++ b/share/picongpu/benchmarks/SPEC/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmpSolvers groups all solvers that create data for FieldTmp ****** diff --git a/share/picongpu/benchmarks/SPEC/include/picongpu/param/speciesInitialization.param b/share/picongpu/benchmarks/SPEC/include/picongpu/param/speciesInitialization.param index 3aa75050fd9..971cdf3fe79 100644 --- a/share/picongpu/benchmarks/SPEC/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/benchmarks/SPEC/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, CreateDensity, Manipulate, diff --git a/share/picongpu/benchmarks/Thermal/include/picongpu/param/speciesInitialization.param b/share/picongpu/benchmarks/Thermal/include/picongpu/param/speciesInitialization.param index 25f17081b14..6f2aaaa0e69 100644 --- a/share/picongpu/benchmarks/Thermal/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/benchmarks/Thermal/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate>; diff --git a/share/picongpu/examples/Bunch/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/Bunch/include/picongpu/param/speciesInitialization.param index ee41063a836..1be60043a9d 100644 --- a/share/picongpu/examples/Bunch/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/Bunch/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< #ifdef PARAM_SINGLE_PARTICLE CreateDensity, #else diff --git a/share/picongpu/examples/FieldAbsorberTest/include/picongpu/param/fileOutput.param b/share/picongpu/examples/FieldAbsorberTest/include/picongpu/param/fileOutput.param index 8125579e3db..43c7b3c88c6 100644 --- a/share/picongpu/examples/FieldAbsorberTest/include/picongpu/param/fileOutput.param +++ b/share/picongpu/examples/FieldAbsorberTest/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmp output (calculated at runtime) ******************************* diff --git a/share/picongpu/examples/FoilLCT/include/picongpu/param/fileOutput.param b/share/picongpu/examples/FoilLCT/include/picongpu/param/fileOutput.param index e4c23401362..dc2a54042c8 100644 --- a/share/picongpu/examples/FoilLCT/include/picongpu/param/fileOutput.param +++ b/share/picongpu/examples/FoilLCT/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmp output (calculated at runtime) ******************************* diff --git a/share/picongpu/examples/FoilLCT/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/FoilLCT/include/picongpu/param/speciesInitialization.param index ce0385acd47..706c5e60045 100644 --- a/share/picongpu/examples/FoilLCT/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/FoilLCT/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, /* derive the other two ion species and adjust their weighting to have always all * three of macro ions present in a cell, even in cut-off regions of the density profile */ diff --git a/share/picongpu/examples/KelvinHelmholtz/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/KelvinHelmholtz/include/picongpu/param/speciesInitialization.param index 08b0147da4a..9491375c662 100644 --- a/share/picongpu/examples/KelvinHelmholtz/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/KelvinHelmholtz/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Derive, Manipulate, diff --git a/share/picongpu/examples/LaserWakefield/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/LaserWakefield/include/picongpu/param/speciesInitialization.param index ff0307c921e..e9d9cc9698f 100644 --- a/share/picongpu/examples/LaserWakefield/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/LaserWakefield/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< #if(PARAM_IONIZATION == 0) CreateDensity # if(PARAM_IONS == 1) diff --git a/share/picongpu/examples/SingleParticleTest/include/picongpu/param/fileOutput.param b/share/picongpu/examples/SingleParticleTest/include/picongpu/param/fileOutput.param index 71593a2e00b..67417b35642 100644 --- a/share/picongpu/examples/SingleParticleTest/include/picongpu/param/fileOutput.param +++ b/share/picongpu/examples/SingleParticleTest/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmp output (calculated at runtime) ******************************* diff --git a/share/picongpu/examples/SingleParticleTest/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/SingleParticleTest/include/picongpu/param/speciesInitialization.param index 3f3e4fe1f77..01ffbe65701 100644 --- a/share/picongpu/examples/SingleParticleTest/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/SingleParticleTest/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate>; diff --git a/share/picongpu/examples/TransitionRadiation/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/TransitionRadiation/include/picongpu/param/speciesInitialization.param index 5a586b1dd98..a5c1636a4a0 100644 --- a/share/picongpu/examples/TransitionRadiation/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/TransitionRadiation/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate>; diff --git a/share/picongpu/examples/WeibelTransverse/include/picongpu/param/speciesInitialization.param b/share/picongpu/examples/WeibelTransverse/include/picongpu/param/speciesInitialization.param index cf0f6047203..ba4abea174d 100644 --- a/share/picongpu/examples/WeibelTransverse/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/examples/WeibelTransverse/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, ManipulateDerive< /* make sure in speciesDefinition.param that diff --git a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/collision.param b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/collision.param index ba349b3ffc2..95ac76298c3 100644 --- a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/collision.param +++ b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/collision.param @@ -72,7 +72,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using CollisionPipeline = bmpl::vector< + using CollisionPipeline = pmacc::mp_list< Collider>, OneFilter>, Collider< ColliderFunctor, diff --git a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/fileOutput.param b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/fileOutput.param index 1b7d31c163d..8de2acb88a4 100644 --- a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/fileOutput.param +++ b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/fileOutput.param @@ -28,9 +28,6 @@ #include "picongpu/particles/particleToGrid/CombinedDerive.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { namespace particles diff --git a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/speciesInitialization.param index 9b1a850cd60..92ad16da3a6 100755 --- a/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/CollisionsBeamRelaxation/include/picongpu/param/speciesInitialization.param @@ -45,7 +45,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< // Generate Densities CreateDensity, CreateDensity, diff --git a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/collision.param b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/collision.param index 5e3cd93e544..cd93f79d33a 100644 --- a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/collision.param +++ b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/collision.param @@ -75,7 +75,7 @@ namespace picongpu #else using IntraCollider = Collider, Pairs2>; #endif - using CollisionPipeline = bmpl::vector; + using CollisionPipeline = pmacc::mp_list; } // namespace collision } // namespace particles diff --git a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/fileOutput.param b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/fileOutput.param index db79f825b56..092c1c75542 100644 --- a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/fileOutput.param +++ b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/fileOutput.param @@ -28,9 +28,6 @@ #include "picongpu/particles/particleToGrid/CombinedDerive.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmp output (calculated at runtime) ******************************* diff --git a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/speciesInitialization.param index f89d3d53511..75a932d21d6 100755 --- a/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/CollisionsThermalisation/include/picongpu/param/speciesInitialization.param @@ -45,7 +45,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< // Generate Densities CreateDensity, CreateDensity, diff --git a/share/picongpu/tests/KHI_growthRate/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/KHI_growthRate/include/picongpu/param/speciesInitialization.param index 08b0147da4a..9491375c662 100644 --- a/share/picongpu/tests/KHI_growthRate/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/KHI_growthRate/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Derive, Manipulate, diff --git a/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/fileOutput.param b/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/fileOutput.param index 4edc9523c98..a7fbae01ffe 100644 --- a/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/fileOutput.param +++ b/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmpSolvers groups all solvers that create data for FieldTmp ****** diff --git a/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/speciesInitialization.param index 847f834ac2f..94bcb139210 100644 --- a/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/compileCurrentSolver/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate, Manipulate>; diff --git a/share/picongpu/tests/compileFieldSolver/include/picongpu/param/fileOutput.param b/share/picongpu/tests/compileFieldSolver/include/picongpu/param/fileOutput.param index 4edc9523c98..a7fbae01ffe 100644 --- a/share/picongpu/tests/compileFieldSolver/include/picongpu/param/fileOutput.param +++ b/share/picongpu/tests/compileFieldSolver/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmpSolvers groups all solvers that create data for FieldTmp ****** diff --git a/share/picongpu/tests/compileIterationStart/include/picongpu/param/iterationStart.param b/share/picongpu/tests/compileIterationStart/include/picongpu/param/iterationStart.param index 81429e780fb..88bf1082da5 100644 --- a/share/picongpu/tests/compileIterationStart/include/picongpu/param/iterationStart.param +++ b/share/picongpu/tests/compileIterationStart/include/picongpu/param/iterationStart.param @@ -74,7 +74,7 @@ namespace picongpu * Since some particles of PIC_Electrons may be removed, the following FillAllGaps is needed * (for PIC_HighGammaElectrons it is done as part of ManipulateDerive<>). */ - using IterationStartPipeline = bmpl::vector< + using IterationStartPipeline = pmacc::mp_list< particles::ManipulateDerive, particles::FillAllGaps>; diff --git a/share/picongpu/tests/compileIterationStart/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/compileIterationStart/include/picongpu/param/speciesInitialization.param index 692a27d1e53..5df053b2973 100644 --- a/share/picongpu/tests/compileIterationStart/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/compileIterationStart/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate>; diff --git a/share/picongpu/tests/compileParticlePusher/include/picongpu/param/fileOutput.param b/share/picongpu/tests/compileParticlePusher/include/picongpu/param/fileOutput.param index 4edc9523c98..a7fbae01ffe 100644 --- a/share/picongpu/tests/compileParticlePusher/include/picongpu/param/fileOutput.param +++ b/share/picongpu/tests/compileParticlePusher/include/picongpu/param/fileOutput.param @@ -26,9 +26,6 @@ #include "picongpu/fields/Fields.def" #include "picongpu/particles/particleToGrid/ComputeGridValuePerFrame.def" -#include - - namespace picongpu { /** FieldTmpSolvers groups all solvers that create data for FieldTmp ****** diff --git a/share/picongpu/tests/compileParticlePusher/include/picongpu/param/speciesInitialization.param b/share/picongpu/tests/compileParticlePusher/include/picongpu/param/speciesInitialization.param index 1ecdb950aff..67aa8abbed3 100644 --- a/share/picongpu/tests/compileParticlePusher/include/picongpu/param/speciesInitialization.param +++ b/share/picongpu/tests/compileParticlePusher/include/picongpu/param/speciesInitialization.param @@ -39,7 +39,7 @@ namespace picongpu * * the functors are called in order (from first to last functor) */ - using InitPipeline = bmpl::vector< + using InitPipeline = pmacc::mp_list< CreateDensity, Manipulate>;