From 26ac8bb59479829584fab3cc54676b79f8307c42 Mon Sep 17 00:00:00 2001 From: Christian Godenschwager <christian.godenschwager@fau.de> Date: Wed, 30 May 2018 15:53:51 +0200 Subject: [PATCH] Replace boost::bind with std::bind Part of issue #48 --- apps/benchmarks/CouetteFlow/CouetteFlow.cpp | 8 +-- .../ForcesOnSphereNearPlaneInShearFlow.cpp | 6 +- .../MotionSingleHeavySphere.cpp | 5 +- .../NonUniformGrid/NonUniformGrid.cpp | 3 +- .../PoiseuilleChannel/PoiseuilleChannel.cpp | 11 ++-- .../SchaeferTurek/SchaeferTurek.cpp | 9 +-- .../BidisperseFluidizedBedDPM.cpp | 40 ++++++------ apps/tutorials/basics/02_Sweeps.cpp | 4 +- apps/tutorials/pe/02_ConfinedGasExtended.cpp | 10 +-- src/blockforest/Initialization.cpp | 4 +- src/blockforest/StructuredBlockForest.h | 3 +- .../communication/NonUniformBufferedScheme.h | 61 +++++++++---------- .../communication/UniformBufferedScheme.h | 26 ++++---- .../communication/UniformDirectScheme.h | 6 +- .../python/CommunicationExport.impl.h | 4 +- src/core/DataTypes.h | 4 -- src/core/Environment.cpp | 4 +- src/core/debug/Debug.h | 3 +- src/cuda/AddGPUFieldToStorage.impl.h | 4 +- src/cuda/FieldCopy.h | 4 +- .../MakeBlockDataInitFunction.h | 21 +++---- .../StructuredBlockStorage.h | 6 +- src/field/StabilityChecker.h | 2 +- src/field/adaptors/AdaptorCreators.h | 4 +- src/field/python/FieldExport.impl.h | 8 +-- src/lbm/BlockForestEvaluation.h | 2 +- .../DefaultBoundaryHandlingCollection.h | 4 +- .../DefaultDiffusionBoundaryHandling.h | 4 +- src/lbm/python/ExportBasic.impl.h | 4 +- src/lbm/python/ExportBoundary.impl.h | 2 +- src/lbm/python/ExportSweeps.impl.h | 2 +- src/pde/sweeps/RBGS.h | 6 +- src/pde/sweeps/RBGSFixedStencil.h | 6 +- src/pde/sweeps/SOR.h | 6 +- src/pde/sweeps/SORFixedStencil.h | 6 +- src/python_coupling/DictWrapper.h | 4 +- src/python_coupling/DictWrapper.impl.h | 4 +- src/python_coupling/Manager.h | 2 +- .../basic_exports/BasicExports.cpp | 4 +- src/python_coupling/helper/MplHelpers.h | 4 +- src/timeloop/PerformanceMeter.cpp | 4 +- src/timeloop/PerformanceMeter.h | 4 +- src/timeloop/SelectableFunctionCreators.h | 3 +- src/vtk/Initialization.cpp | 9 +-- tests/lbm/DiffusionTest.cpp | 12 ++-- .../lbm/boundary/SimpleDiffusionDirichlet.cpp | 4 +- .../refinement/CommunicationEquivalence.cpp | 5 +- tests/lbm/refinement/NonConstantDiffusion.cpp | 3 +- tests/lbm/refinement/Uniformity.cpp | 5 +- tests/mesh/PeVTKMeshWriterTest.cpp | 3 +- tests/pe/DeleteBody.cpp | 6 +- tests/pe/ShadowCopy.cpp | 6 +- .../HinderedSettlingDynamicsDPM.cpp | 45 +++++++------- .../SphereWallCollisionBehaviorDPM.cpp | 43 ++++++------- .../BodyAtBlockBoarderCheck.cpp | 5 +- .../DragForceSphereMEMRefinement.cpp | 3 +- ...lobalBodyAsBoundaryMEMStaticRefinement.cpp | 4 +- .../LubricationCorrectionMEM.cpp | 4 +- .../PeriodicParticleChannelMEM.cpp | 3 +- .../SegreSilberbergMEM.cpp | 10 +-- .../SettlingSphereMEM.cpp | 10 +-- .../SettlingSphereMEMDynamicRefinement.cpp | 14 +++-- .../SettlingSphereMEMStaticRefinement.cpp | 12 ++-- .../momentum_exchange_method/SquirmerTest.cpp | 5 +- .../TaylorCouetteFlowMEM.cpp | 4 +- .../DragForceSpherePSMRefinement.cpp | 3 +- .../SegreSilberbergPSM.cpp | 4 +- 67 files changed, 297 insertions(+), 256 deletions(-) diff --git a/apps/benchmarks/CouetteFlow/CouetteFlow.cpp b/apps/benchmarks/CouetteFlow/CouetteFlow.cpp index 815e6cdf1..fb9f383b9 100644 --- a/apps/benchmarks/CouetteFlow/CouetteFlow.cpp +++ b/apps/benchmarks/CouetteFlow/CouetteFlow.cpp @@ -91,7 +91,6 @@ #include "vtk/Initialization.h" #include "vtk/VTKOutput.h" -#include <boost/bind.hpp> #include <boost/mpl/or.hpp> #include <boost/type_traits/is_same.hpp> @@ -99,6 +98,7 @@ #include <cmath> #include <cstdlib> #include <cstring> +#include <functional> #include <iostream> #include <utility> #include <vector> @@ -294,7 +294,7 @@ static shared_ptr< SetupBlockForest > createSetupBlockForest( const blockforest: ( setup.zCells + uint_t(2) * FieldGhostLayers ) ) * memoryPerCell; forest->addRefinementSelectionFunction( refinementSelectionFunctions ); - forest->addWorkloadMemorySUIDAssignmentFunction( boost::bind( workloadAndMemoryAssignment, _1, memoryPerBlock ) ); + forest->addWorkloadMemorySUIDAssignmentFunction( std::bind( workloadAndMemoryAssignment, std::placeholders::_1, memoryPerBlock ) ); forest->init( AABB( real_c(0), real_c(0), real_c(0), real_c( setup.xBlocks * setup.xCells ), real_c( setup.yBlocks * setup.yCells ), @@ -736,11 +736,11 @@ void run( const shared_ptr< Config > & config, const LatticeModel_T & latticeMod // evaluation - const auto exactSolutionFunction = boost::bind( exactVelocity, _1, blocks->getDomain(), setup.maxVelocity_L ); + const auto exactSolutionFunction = std::bind( exactVelocity, std::placeholders::_1, blocks->getDomain(), setup.maxVelocity_L ); auto volumetricFlowRate = field::makeVolumetricFlowRateEvaluation< VelocityAdaptor_T, FlagField_T >( configBlock, blocks, velocityAdaptorId, flagFieldId, Fluid_Flag, - boost::bind( exactFlowRate, setup.flowRate_L ), + std::bind( exactFlowRate, setup.flowRate_L ), exactSolutionFunction ); volumetricFlowRate->setNormalizationFactor( real_t(1) / setup.maxVelocity_L ); volumetricFlowRate->setDomainNormalization( Vector3<real_t>( real_t(1) ) ); diff --git a/apps/benchmarks/ForcesOnSphereNearPlaneInShearFlow/ForcesOnSphereNearPlaneInShearFlow.cpp b/apps/benchmarks/ForcesOnSphereNearPlaneInShearFlow/ForcesOnSphereNearPlaneInShearFlow.cpp index 62cd5258d..64bc16481 100644 --- a/apps/benchmarks/ForcesOnSphereNearPlaneInShearFlow/ForcesOnSphereNearPlaneInShearFlow.cpp +++ b/apps/benchmarks/ForcesOnSphereNearPlaneInShearFlow/ForcesOnSphereNearPlaneInShearFlow.cpp @@ -62,6 +62,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace forces_on_sphere_near_plane_in_shear_flow { @@ -177,7 +179,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const AABB & do WALBERLA_LOG_INFO_ON_ROOT(" - refinement box: " << refinementBox); - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, numberOfLevels, refinementBox ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, numberOfLevels, refinementBox ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( domainAABB, numberOfCoarseBlocksPerDirection[0], numberOfCoarseBlocksPerDirection[1], numberOfCoarseBlocksPerDirection[2], true, true, false ); @@ -576,7 +578,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_t( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies diff --git a/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp b/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp index fc6a084ff..825af2b2d 100644 --- a/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp +++ b/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp @@ -58,6 +58,7 @@ #include "vtk/Initialization.h" #include "vtk/VTKOutput.h" +#include <functional> #include <memory> @@ -811,9 +812,9 @@ int main( int argc, char **argv ) const real_t overlap = real_t( 1.5 ) * dx; std::function<void(void)> syncCall; if( XBlocks <= uint_t(4) ) - syncCall = boost::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); else - syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); real_t xParticle = real_t(0); diff --git a/apps/benchmarks/NonUniformGrid/NonUniformGrid.cpp b/apps/benchmarks/NonUniformGrid/NonUniformGrid.cpp index 38057f0f3..0602976bc 100644 --- a/apps/benchmarks/NonUniformGrid/NonUniformGrid.cpp +++ b/apps/benchmarks/NonUniformGrid/NonUniformGrid.cpp @@ -76,6 +76,7 @@ #include "vtk/VTKOutput.h" #include <cstdlib> +#include <functional> #include <iostream> @@ -279,7 +280,7 @@ void createSetupBlockForest( blockforest::SetupBlockForest & sforest, const Conf uint_c( 19 * sizeof(real_t) ) ) / numeric_cast< memory_t >( 1024 * 1024 ); sforest.addRefinementSelectionFunction( refinementSelection ); - sforest.addWorkloadMemorySUIDAssignmentFunction( boost::bind( workloadAndMemoryAssignment, _1, memoryPerBlock ) ); + sforest.addWorkloadMemorySUIDAssignmentFunction( std::bind( workloadAndMemoryAssignment, std::placeholders::_1, memoryPerBlock ) ); sforest.init( AABB( real_t(0), real_t(0), real_t(0), real_c( numberOfXBlocks * numberOfXCellsPerBlock ), real_c( numberOfYBlocks * numberOfYCellsPerBlock ), diff --git a/apps/benchmarks/PoiseuilleChannel/PoiseuilleChannel.cpp b/apps/benchmarks/PoiseuilleChannel/PoiseuilleChannel.cpp index d19c5f3c8..bba9184c5 100644 --- a/apps/benchmarks/PoiseuilleChannel/PoiseuilleChannel.cpp +++ b/apps/benchmarks/PoiseuilleChannel/PoiseuilleChannel.cpp @@ -88,12 +88,11 @@ #include "vtk/Initialization.h" #include "vtk/VTKOutput.h" -#include <boost/bind.hpp> - #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> +#include <functional> #include <iostream> #include <utility> #include <vector> @@ -303,7 +302,7 @@ static shared_ptr< SetupBlockForest > createSetupBlockForest( const blockforest: ( setup.zCells + uint_t(2) * FieldGhostLayers ) ) * memoryPerCell; forest->addRefinementSelectionFunction( refinementSelectionFunctions ); - forest->addWorkloadMemorySUIDAssignmentFunction( boost::bind( workloadAndMemoryAssignment, _1, memoryPerBlock ) ); + forest->addWorkloadMemorySUIDAssignmentFunction( std::bind( workloadAndMemoryAssignment, std::placeholders::_1, memoryPerBlock ) ); forest->init( AABB( real_c(0), real_c(0), real_c(0), real_c( setup.xBlocks * setup.xCells ), real_c( setup.yBlocks * setup.yCells ), @@ -847,12 +846,12 @@ void run( const shared_ptr< Config > & config, const LatticeModel_T & latticeMod // evaluation - const auto exactSolutionFunction = setup.circularProfile ? boost::bind( exactPipeVelocity, _1, blocks, setup ) : - boost::bind( exactPlatesVelocity, _1, blocks, setup ); + const auto exactSolutionFunction = setup.circularProfile ? std::bind( exactPipeVelocity, std::placeholders::_1, blocks, setup ) : + std::bind( exactPlatesVelocity, std::placeholders::_1, blocks, setup ); auto volumetricFlowRate = field::makeVolumetricFlowRateEvaluation< VelocityAdaptor_T, FlagField_T >( configBlock, blocks, velocityAdaptorId, flagFieldId, Fluid_Flag, - boost::bind( exactFlowRate, setup.flowRate_L ), + std::bind( exactFlowRate, setup.flowRate_L ), exactSolutionFunction ); volumetricFlowRate->setNormalizationFactor( real_t(1) / setup.maxVelocity_L ); volumetricFlowRate->setDomainNormalization( Vector3<real_t>( real_t(1) ) ); diff --git a/apps/benchmarks/SchaeferTurek/SchaeferTurek.cpp b/apps/benchmarks/SchaeferTurek/SchaeferTurek.cpp index ed907fc37..b7f9d2997 100644 --- a/apps/benchmarks/SchaeferTurek/SchaeferTurek.cpp +++ b/apps/benchmarks/SchaeferTurek/SchaeferTurek.cpp @@ -106,12 +106,12 @@ #include <boost/mpl/equal_to.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/or.hpp> -#include <boost/bind.hpp> #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> +#include <functional> #include <iostream> #include <utility> #include <vector> @@ -656,7 +656,7 @@ static shared_ptr< SetupBlockForest > createSetupBlockForest( const blockforest: ( setup.xCells + uint_t(2) * FieldGhostLayers ) ) * memoryPerCell; forest->addRefinementSelectionFunction( refinementSelectionFunctions ); - forest->addWorkloadMemorySUIDAssignmentFunction( boost::bind( workloadMemoryAndSUIDAssignment, _1, memoryPerBlock, boost::cref( setup ) ) ); + forest->addWorkloadMemorySUIDAssignmentFunction( std::bind( workloadMemoryAndSUIDAssignment, std::placeholders::_1, memoryPerBlock, std::cref( setup ) ) ); forest->init( AABB( real_c(0), real_c(0), real_c(0), setup.H * ( real_c(setup.xBlocks) * real_c(setup.xCells) ) / ( real_c(setup.yzBlocks) * real_c(setup.yzCells) ), setup.H, setup.H ), @@ -2602,7 +2602,8 @@ void run( const shared_ptr< Config > & config, const LatticeModel_T & latticeMod adaptiveRefinementLog = oss.str(); } - minTargetLevelDeterminationFunctions.add( boost::bind( keepInflowOutflowAtTheSameLevel, _1, _2, _3, boost::cref(setup) ) ); + minTargetLevelDeterminationFunctions.add( std::bind( keepInflowOutflowAtTheSameLevel, std::placeholders::_1, std::placeholders::_2, + std::placeholders::_3, std::cref(setup) ) ); if( Is2D< LatticeModel_T >::value ) minTargetLevelDeterminationFunctions.add( pseudo2DTargetLevelCorrection ); @@ -3171,7 +3172,7 @@ int main( int argc, char **argv ) refinementSelectionFunctions.add( cylinderRefinementSelection ); } - refinementSelectionFunctions.add( boost::bind( setInflowOutflowToSameLevel, _1, setup ) ); + refinementSelectionFunctions.add( std::bind( setInflowOutflowToSameLevel, std::placeholders::_1, setup ) ); if( setup.pseudo2D ) refinementSelectionFunctions.add( Pseudo2DRefinementSelectionCorrection ); diff --git a/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp b/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp index de0512d8d..b175c7c1d 100644 --- a/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp +++ b/apps/showcases/BidisperseFluidizedBed/BidisperseFluidizedBedDPM.cpp @@ -889,7 +889,7 @@ int main( int argc, char **argv ) { // connect to pe const real_t overlap = real_t(1.5) * dx; - auto syncCall = boost::bind(pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), + auto syncCall = std::bind(pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree *>(NULL), overlap, false); shared_ptr<CollisionPropertiesEvaluator> collisionPropertiesEvaluator = walberla::make_shared<CollisionPropertiesEvaluator>(*cr); @@ -1196,7 +1196,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::NearestNeighborFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1204,7 +1204,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::IKernel) { if (dist == Distribution::DNearestNeighbor) { @@ -1214,7 +1214,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::KernelFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1222,7 +1222,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::ITrilinear) { if (dist == Distribution::DNearestNeighbor) { @@ -1232,7 +1232,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::TrilinearFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1240,7 +1240,7 @@ int main( int argc, char **argv ) { velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } } @@ -1260,7 +1260,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1268,7 +1268,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1279,7 +1279,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1287,7 +1287,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1298,7 +1298,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1306,7 +1306,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1320,7 +1320,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1328,7 +1328,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1339,7 +1339,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1347,7 +1347,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1358,7 +1358,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1366,7 +1366,7 @@ int main( int argc, char **argv ) { shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1376,7 +1376,7 @@ int main( int argc, char **argv ) { { typedef pe_coupling::discrete_particle_methods::LubricationForceEvaluator LE_T; shared_ptr<LE_T> lubEval = make_shared<LE_T>( blocks, globalBodyStorage, bodyStorageID, viscosity, lubricationCutOffDistance ); - lubricationEvaluationFunction = boost::bind(&LE_T::operator(), lubEval); + lubricationEvaluationFunction = std::bind(&LE_T::operator(), lubEval); } else { diff --git a/apps/tutorials/basics/02_Sweeps.cpp b/apps/tutorials/basics/02_Sweeps.cpp index 03ef87b5e..95c0cf1ab 100644 --- a/apps/tutorials/basics/02_Sweeps.cpp +++ b/apps/tutorials/basics/02_Sweeps.cpp @@ -24,7 +24,7 @@ #include "gui/Gui.h" #include "timeloop/SweepTimeloop.h" -#include <boost/bind.hpp> +#include <functional> using namespace walberla; @@ -125,7 +125,7 @@ int main( int argc, char ** argv ) // registering the function sweep auto pointerToTwoArgFunction = & simpleSweep; - auto pointerToOneArgFunction = boost::bind( pointerToTwoArgFunction, _1, fieldID ); + auto pointerToOneArgFunction = std::bind( pointerToTwoArgFunction, std::placeholders::_1, fieldID ); timeloop.add() << Sweep( pointerToOneArgFunction, "BogusAlgorithm" ); // registering the class sweep diff --git a/apps/tutorials/pe/02_ConfinedGasExtended.cpp b/apps/tutorials/pe/02_ConfinedGasExtended.cpp index b1ac3e4a3..da217ac17 100644 --- a/apps/tutorials/pe/02_ConfinedGasExtended.cpp +++ b/apps/tutorials/pe/02_ConfinedGasExtended.cpp @@ -32,6 +32,8 @@ #include <postprocessing/sqlite/SQLite.h> #include <vtk/VTKOutput.h> +#include <functional> + using namespace walberla; using namespace walberla::pe; using namespace walberla::timing; @@ -150,20 +152,20 @@ int main( int argc, char ** argv ) std::function<void(void)> syncCall; if (!syncShadowOwners) { - syncCall = boost::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(*forest), storageID, &tt, real_c(0.0), false ); + syncCall = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(*forest), storageID, &tt, real_c(0.0), false ); } else { - syncCall = boost::bind( pe::syncShadowOwners<BodyTuple>, boost::ref(*forest), storageID, &tt, real_c(0.0), false ); + syncCall = std::bind( pe::syncShadowOwners<BodyTuple>, std::ref(*forest), storageID, &tt, real_c(0.0), false ); } //! [Bind Sync Call] std::function<void(void)> syncCallWithoutTT; if (!syncShadowOwners) { - syncCallWithoutTT = boost::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCallWithoutTT = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } else { - syncCallWithoutTT = boost::bind( pe::syncShadowOwners<BodyTuple>, boost::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCallWithoutTT = std::bind( pe::syncShadowOwners<BodyTuple>, std::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } //! [Bind Sync Call] diff --git a/src/blockforest/Initialization.cpp b/src/blockforest/Initialization.cpp index 8704ae5f0..dea96fed6 100644 --- a/src/blockforest/Initialization.cpp +++ b/src/blockforest/Initialization.cpp @@ -31,6 +31,8 @@ #include "stencil/D3Q19.h" +#include <functional> + namespace walberla { namespace blockforest { @@ -500,7 +502,7 @@ createUniformBlockGrid( const AABB& domainAABB, numeric_cast< memory_t >( maxBlocksPerProcess ); GlobalLoadBalancing::MetisConfiguration< SetupBlock > metisConfig( includeMetis, forceMetis, - boost::bind( cellWeightedCommunicationCost,_1,_2, + std::bind( cellWeightedCommunicationCost, std::placeholders::_1, std::placeholders::_2, numberOfXCellsPerBlock, numberOfYCellsPerBlock, numberOfZCellsPerBlock ) ); diff --git a/src/blockforest/StructuredBlockForest.h b/src/blockforest/StructuredBlockForest.h index 82f4e810d..ac021fe66 100644 --- a/src/blockforest/StructuredBlockForest.h +++ b/src/blockforest/StructuredBlockForest.h @@ -24,6 +24,7 @@ #include "BlockForest.h" #include "domain_decomposition/StructuredBlockStorage.h" +#include <functional> namespace walberla { namespace blockforest { @@ -205,7 +206,7 @@ inline StructuredBlockForest::StructuredBlockForest( const shared_ptr< BlockFore blockForest_( blockForest ) { blockForest_->addRefreshCallbackFunctionBeforeBlockDataIsUnpacked( - BlockForest::RefreshCallbackWrappper( boost::bind( resetCellDecompositionInStorage, boost::ref(*this) ) ) ); + BlockForest::RefreshCallbackWrappper( std::bind( resetCellDecompositionInStorage, std::ref(*this) ) ) ); blockCells_[0] = blockXCells; blockCells_[1] = blockYCells; diff --git a/src/blockforest/communication/NonUniformBufferedScheme.h b/src/blockforest/communication/NonUniformBufferedScheme.h index e2eca543d..3e206f36d 100644 --- a/src/blockforest/communication/NonUniformBufferedScheme.h +++ b/src/blockforest/communication/NonUniformBufferedScheme.h @@ -36,10 +36,9 @@ #include "core/selectable/IsSetSelected.h" #include "core/uid/SUID.h" -#include <boost/bind.hpp> -#include <functional> #include <map> +#include <functional> #include <set> #include <vector> @@ -110,7 +109,7 @@ public: //@{ void startCommunication() { startCommunicateEqualLevel(); startCommunicateCoarseToFine(); startCommunicateFineToCoarse(); } - std::function<void()> getStartCommunicateFunctor() { return boost::bind( &NonUniformBufferedScheme::startCommunication, this ); } + std::function<void()> getStartCommunicateFunctor() { return std::bind( &NonUniformBufferedScheme::startCommunication, this ); } inline void startCommunicateEqualLevel(); inline void startCommunicateCoarseToFine(); @@ -121,7 +120,7 @@ public: inline void startCommunicateFineToCoarse( const uint_t fineLevel ); void wait() { waitCommunicateEqualLevel(); waitCommunicateCoarseToFine(); waitCommunicateFineToCoarse(); } - std::function<void() > getWaitFunctor() { return boost::bind( &NonUniformBufferedScheme::wait, this ); } + std::function<void() > getWaitFunctor() { return std::bind( &NonUniformBufferedScheme::wait, this ); } inline void waitCommunicateEqualLevel(); inline void waitCommunicateCoarseToFine(); @@ -659,13 +658,13 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationEqualLevel( const uint localBuffers.push_back( buffer ); const uint_t bufferIndex = uint_c( localBuffers.size() ) - uint_t(1); - VoidFunction pack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, - EQUAL_LEVEL, index, bufferIndex, boost::cref( *packInfo ), block, neighbor, *dir ); + VoidFunction pack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, + EQUAL_LEVEL, index, bufferIndex, std::cref( *packInfo ), block, neighbor, *dir ); threadsafeLocalCommunication.push_back( pack ); - VoidFunction unpack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, - EQUAL_LEVEL, index, bufferIndex, boost::cref( *packInfo ), neighbor, block, *dir ); + VoidFunction unpack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, + EQUAL_LEVEL, index, bufferIndex, std::cref( *packInfo ), neighbor, block, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunicationUnpack.push_back( unpack ); @@ -674,7 +673,7 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationEqualLevel( const uint } else { - VoidFunction localCommunicationFunction = boost::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalEqualLevel, + VoidFunction localCommunicationFunction = std::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalEqualLevel, *packInfo, block, neighbor, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunication.push_back( localCommunicationFunction ); @@ -688,10 +687,10 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationEqualLevel( const uint auto nProcess = block->getNeighborProcess( neighborIdx, uint_t(0) ); if( !packInfos_.empty() ) - sendFunctions[ nProcess ].push_back( boost::bind( NonUniformBufferedScheme<Stencil>::writeHeader, _1, block->getId(), receiverId, *dir ) ); + sendFunctions[ nProcess ].push_back( std::bind( NonUniformBufferedScheme<Stencil>::writeHeader, std::placeholders::_1, block->getId(), receiverId, *dir ) ); for( auto packInfo = packInfos_.begin(); packInfo != packInfos_.end(); ++packInfo ) - sendFunctions[ nProcess ].push_back( boost::bind( &blockforest::communication::NonUniformPackInfo::packDataEqualLevel, *packInfo, block, *dir, _1 ) ); + sendFunctions[ nProcess ].push_back( std::bind( &blockforest::communication::NonUniformPackInfo::packDataEqualLevel, *packInfo, block, *dir, std::placeholders::_1 ) ); } } } @@ -700,8 +699,8 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationEqualLevel( const uint for( auto sender = sendFunctions.begin(); sender != sendFunctions.end(); ++sender ) { - bufferSystem->addSendingFunction ( int_c(sender->first), boost::bind( NonUniformBufferedScheme<Stencil>::send, _1, sender->second ) ); - bufferSystem->addReceivingFunction( int_c(sender->first), boost::bind( &NonUniformBufferedScheme<Stencil>::receive, this, _1 ) ); + bufferSystem->addSendingFunction ( int_c(sender->first), std::bind( NonUniformBufferedScheme<Stencil>::send, std::placeholders::_1, sender->second ) ); + bufferSystem->addReceivingFunction( int_c(sender->first), std::bind( &NonUniformBufferedScheme<Stencil>::receive, this, std::placeholders::_1 ) ); } setupBeforeNextCommunication = char(0); @@ -785,13 +784,13 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationCoarseToFine( const ui localBuffers.push_back( buffer ); const uint_t bufferIndex = uint_c( localBuffers.size() ) - uint_t(1); - VoidFunction pack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, - COARSE_TO_FINE, index, bufferIndex, boost::cref( *packInfo ), block, neighbor, *dir ); + VoidFunction pack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, + COARSE_TO_FINE, index, bufferIndex, std::cref( *packInfo ), block, neighbor, *dir ); threadsafeLocalCommunication.push_back( pack ); - VoidFunction unpack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, - COARSE_TO_FINE, index, bufferIndex, boost::cref( *packInfo ), neighbor, block, *dir ); + VoidFunction unpack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, + COARSE_TO_FINE, index, bufferIndex, std::cref( *packInfo ), neighbor, block, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunicationUnpack.push_back( unpack ); @@ -800,7 +799,7 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationCoarseToFine( const ui } else { - VoidFunction localCommunicationFunction = boost::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalCoarseToFine, + VoidFunction localCommunicationFunction = std::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalCoarseToFine, *packInfo, block, neighbor, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunication.push_back( localCommunicationFunction ); @@ -814,10 +813,10 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationCoarseToFine( const ui auto nProcess = block->getNeighborProcess( neighborIdx, n ); if( !packInfos_.empty() ) - sendFunctions[ nProcess ].push_back( boost::bind( NonUniformBufferedScheme<Stencil>::writeHeader, _1, block->getId(), receiverId, *dir ) ); + sendFunctions[ nProcess ].push_back( std::bind( NonUniformBufferedScheme<Stencil>::writeHeader, std::placeholders::_1, block->getId(), receiverId, *dir ) ); for( auto packInfo = packInfos_.begin(); packInfo != packInfos_.end(); ++packInfo ) - sendFunctions[ nProcess ].push_back( boost::bind( &blockforest::communication::NonUniformPackInfo::packDataCoarseToFine, *packInfo, block, receiverId, *dir, _1 ) ); + sendFunctions[ nProcess ].push_back( std::bind( &blockforest::communication::NonUniformPackInfo::packDataCoarseToFine, *packInfo, block, receiverId, *dir, std::placeholders::_1 ) ); } } } @@ -844,10 +843,10 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationCoarseToFine( const ui resetBufferSystem( bufferSystem ); for( auto sender = sendFunctions.begin(); sender != sendFunctions.end(); ++sender ) - bufferSystem->addSendingFunction( int_c(sender->first), boost::bind( NonUniformBufferedScheme<Stencil>::send, _1, sender->second ) ); + bufferSystem->addSendingFunction( int_c(sender->first), std::bind( NonUniformBufferedScheme<Stencil>::send, std::placeholders::_1, sender->second ) ); for( auto receiver = ranksToReceiveFrom.begin(); receiver != ranksToReceiveFrom.end(); ++receiver ) - bufferSystem->addReceivingFunction( int_c(*receiver), boost::bind( &NonUniformBufferedScheme<Stencil>::receive, this, _1 ) ); + bufferSystem->addReceivingFunction( int_c(*receiver), std::bind( &NonUniformBufferedScheme<Stencil>::receive, this, std::placeholders::_1 ) ); setupBeforeNextCommunication = char(0); } @@ -931,13 +930,13 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationFineToCoarse( const ui localBuffers.push_back( buffer ); const uint_t bufferIndex = uint_c( localBuffers.size() ) - uint_t(1); - VoidFunction pack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, - FINE_TO_COARSE, index, bufferIndex, boost::cref( *packInfo ), block, neighbor, *dir ); + VoidFunction pack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferPacking, this, + FINE_TO_COARSE, index, bufferIndex, std::cref( *packInfo ), block, neighbor, *dir ); threadsafeLocalCommunication.push_back( pack ); - VoidFunction unpack = boost::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, - FINE_TO_COARSE, index, bufferIndex, boost::cref( *packInfo ), neighbor, block, *dir ); + VoidFunction unpack = std::bind( &NonUniformBufferedScheme<Stencil>::localBufferUnpacking, this, + FINE_TO_COARSE, index, bufferIndex, std::cref( *packInfo ), neighbor, block, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunicationUnpack.push_back( unpack ); @@ -946,7 +945,7 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationFineToCoarse( const ui } else { - VoidFunction localCommunicationFunction = boost::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalFineToCoarse, + VoidFunction localCommunicationFunction = std::bind( &blockforest::communication::NonUniformPackInfo::communicateLocalFineToCoarse, *packInfo, block, neighbor, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunication.push_back( localCommunicationFunction ); @@ -960,10 +959,10 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationFineToCoarse( const ui auto nProcess = block->getNeighborProcess( neighborIdx, uint_t(0) ); if( !packInfos_.empty() ) - sendFunctions[ nProcess ].push_back( boost::bind( NonUniformBufferedScheme<Stencil>::writeHeader, _1, block->getId(), receiverId, *dir ) ); + sendFunctions[ nProcess ].push_back( std::bind( NonUniformBufferedScheme<Stencil>::writeHeader, std::placeholders::_1, block->getId(), receiverId, *dir ) ); for( auto packInfo = packInfos_.begin(); packInfo != packInfos_.end(); ++packInfo ) - sendFunctions[ nProcess ].push_back( boost::bind( &blockforest::communication::NonUniformPackInfo::packDataFineToCoarse, *packInfo, block, receiverId, *dir, _1 ) ); + sendFunctions[ nProcess ].push_back( std::bind( &blockforest::communication::NonUniformPackInfo::packDataFineToCoarse, *packInfo, block, receiverId, *dir, std::placeholders::_1 ) ); } } } @@ -989,10 +988,10 @@ void NonUniformBufferedScheme<Stencil>::startCommunicationFineToCoarse( const ui resetBufferSystem( bufferSystem ); for( auto sender = sendFunctions.begin(); sender != sendFunctions.end(); ++sender ) - bufferSystem->addSendingFunction( int_c(sender->first), boost::bind( NonUniformBufferedScheme<Stencil>::send, _1, sender->second ) ); + bufferSystem->addSendingFunction( int_c(sender->first), std::bind( NonUniformBufferedScheme<Stencil>::send, std::placeholders::_1, sender->second ) ); for( auto receiver = ranksToReceiveFrom.begin(); receiver != ranksToReceiveFrom.end(); ++receiver ) - bufferSystem->addReceivingFunction( int_c(*receiver), boost::bind( &NonUniformBufferedScheme<Stencil>::receive, this, _1 ) ); + bufferSystem->addReceivingFunction( int_c(*receiver), std::bind( &NonUniformBufferedScheme<Stencil>::receive, this, std::placeholders::_1 ) ); setupBeforeNextCommunication = char(0); } diff --git a/src/blockforest/communication/UniformBufferedScheme.h b/src/blockforest/communication/UniformBufferedScheme.h index 393301f6c..1abd5a955 100644 --- a/src/blockforest/communication/UniformBufferedScheme.h +++ b/src/blockforest/communication/UniformBufferedScheme.h @@ -38,9 +38,7 @@ #include "core/selectable/IsSetSelected.h" #include "core/uid/SUID.h" -#include <boost/bind.hpp> #include <functional> - #include <map> #include <vector> @@ -321,13 +319,13 @@ void UniformBufferedScheme<Stencil>::startCommunication() localBuffers_.push_back( buffer ); const uint_t index = uint_c( localBuffers_.size() ) - uint_t(1); - VoidFunction pack = boost::bind( &UniformBufferedScheme<Stencil>::localBufferPacking, this, - index, boost::cref( *packInfo ), block, *dir ); + VoidFunction pack = std::bind( &UniformBufferedScheme<Stencil>::localBufferPacking, this, + index, std::cref( *packInfo ), block, *dir ); threadsafeLocalCommunication_.push_back( pack ); - VoidFunction unpack = boost::bind( &UniformBufferedScheme<Stencil>::localBufferUnpacking, this, - index, boost::cref( *packInfo ), neighbor, *dir ); + VoidFunction unpack = std::bind( &UniformBufferedScheme<Stencil>::localBufferUnpacking, this, + index, std::cref( *packInfo ), neighbor, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunicationUnpack_.push_back( unpack ); @@ -336,7 +334,7 @@ void UniformBufferedScheme<Stencil>::startCommunication() } else { - VoidFunction localCommunicationFunction = boost::bind( &walberla::communication::UniformPackInfo::communicateLocal, + VoidFunction localCommunicationFunction = std::bind( &walberla::communication::UniformPackInfo::communicateLocal, *packInfo, block, neighbor, *dir ); if( (*packInfo)->threadsafeReceiving() ) threadsafeLocalCommunication_.push_back( localCommunicationFunction ); @@ -350,11 +348,11 @@ void UniformBufferedScheme<Stencil>::startCommunication() auto nProcess = block->getNeighborProcess( neighborIdx, uint_t(0) ); if( !packInfos_.empty() ) - sendFunctions[ nProcess ].push_back( boost::bind( UniformBufferedScheme<Stencil>::writeHeader, _1, nBlockId, *dir ) ); + sendFunctions[ nProcess ].push_back( std::bind( UniformBufferedScheme<Stencil>::writeHeader, std::placeholders::_1, nBlockId, *dir ) ); for( auto packInfo = packInfos_.begin(); packInfo != packInfos_.end(); ++packInfo ) - sendFunctions[ nProcess ].push_back( boost::bind( &walberla::communication::UniformPackInfo::packData, - *packInfo, block, *dir, _1 ) ); + sendFunctions[ nProcess ].push_back( std::bind( &walberla::communication::UniformPackInfo::packData, + *packInfo, block, *dir, std::placeholders::_1 ) ); } } } @@ -368,8 +366,8 @@ void UniformBufferedScheme<Stencil>::startCommunication() for( auto sender = sendFunctions.begin(); sender != sendFunctions.end(); ++sender ) { - bufferSystem_.addSendingFunction ( int_c(sender->first), boost::bind( UniformBufferedScheme<Stencil>::send, _1, sender->second ) ); - bufferSystem_.addReceivingFunction( int_c(sender->first), boost::bind( &UniformBufferedScheme<Stencil>::receive, this, _1 ) ); + bufferSystem_.addSendingFunction ( int_c(sender->first), std::bind( UniformBufferedScheme<Stencil>::send, std::placeholders::_1, sender->second ) ); + bufferSystem_.addReceivingFunction( int_c(sender->first), std::bind( &UniformBufferedScheme<Stencil>::receive, this, std::placeholders::_1 ) ); } setupBeforeNextCommunication_ = false; @@ -539,13 +537,13 @@ void UniformBufferedScheme<Stencil>::localBufferUnpacking( const uint_t index, c template< typename Stencil > std::function<void()> UniformBufferedScheme<Stencil>::getStartCommunicateFunctor() { - return boost::bind( &UniformBufferedScheme::startCommunication, this ); + return std::bind( &UniformBufferedScheme::startCommunication, this ); } template< typename Stencil > std::function<void()> UniformBufferedScheme<Stencil>::getWaitFunctor() { - return boost::bind( &UniformBufferedScheme::wait, this ); + return std::bind( &UniformBufferedScheme::wait, this ); } diff --git a/src/blockforest/communication/UniformDirectScheme.h b/src/blockforest/communication/UniformDirectScheme.h index 16d6e9fdd..863930893 100644 --- a/src/blockforest/communication/UniformDirectScheme.h +++ b/src/blockforest/communication/UniformDirectScheme.h @@ -32,6 +32,8 @@ #include <vector> #include <map> +#include <functional> + #include "communication/UniformMPIDatatypeInfo.h" namespace walberla { @@ -112,8 +114,8 @@ public: void startCommunication(); void wait(); - std::function<void()> getStartCommunicateFunctor() { return boost::bind( &UniformDirectScheme::startCommunication, this ); } - std::function<void()> getWaitFunctor() { return boost::bind( &UniformDirectScheme::wait, this ); } + std::function<void()> getStartCommunicateFunctor() { return std::bind( &UniformDirectScheme::startCommunication, this ); } + std::function<void()> getWaitFunctor() { return std::bind( &UniformDirectScheme::wait, this ); } //@} //******************************************************************************************************************* diff --git a/src/blockforest/python/CommunicationExport.impl.h b/src/blockforest/python/CommunicationExport.impl.h index 934058546..09041944f 100644 --- a/src/blockforest/python/CommunicationExport.impl.h +++ b/src/blockforest/python/CommunicationExport.impl.h @@ -106,7 +106,7 @@ namespace internal const int tag ) { UniformBufferedSchemeCreator creator( bf, stencil, tag ); - python_coupling::for_each_noncopyable_type< Stencils > ( boost::ref(creator) ); + python_coupling::for_each_noncopyable_type< Stencils > ( std::ref(creator) ); if ( creator.getResult() == boost::python::object() ) { @@ -185,7 +185,7 @@ namespace internal const std::string & stencil, const int tag ) { UniformDirectSchemeCreator creator( bf, stencil, tag ); - python_coupling::for_each_noncopyable_type< Stencils > ( boost::ref(creator) ); + python_coupling::for_each_noncopyable_type< Stencils > ( std::ref(creator) ); if ( creator.getResult() == boost::python::object() ) { diff --git a/src/core/DataTypes.h b/src/core/DataTypes.h index b0442f524..4c348dfe7 100644 --- a/src/core/DataTypes.h +++ b/src/core/DataTypes.h @@ -42,7 +42,6 @@ namespace walberla { template <typename> struct never_true : std::false_type {}; - // shared ptr using std::shared_ptr; @@ -50,9 +49,6 @@ using std::weak_ptr; using std::make_shared; using std::dynamic_pointer_cast; -// functions, use this when "function" namespace is no longer needed -//using std::function; -//using std::bind; // numeric cast (performs range checks in debug mode) diff --git a/src/core/Environment.cpp b/src/core/Environment.cpp index 6e6958654..17f2e990b 100644 --- a/src/core/Environment.cpp +++ b/src/core/Environment.cpp @@ -31,10 +31,10 @@ #include "core/uid/SUID.h" #include <boost/algorithm/string.hpp> -#include <boost/bind.hpp> #include <boost/foreach.hpp> #include <algorithm> +#include <functional> #include <sstream> #include <string> @@ -85,7 +85,7 @@ void configureGlobalState( const shared_ptr<Config> & config ) { std::vector< std::string > states; boost::split( states, suids, boost::is_any_of(", \t") ); - states.erase( std::remove_if( states.begin(), states.end(), boost::bind( &std::string::empty, _1 ) ), states.end() ); + states.erase( std::remove_if( states.begin(), states.end(), std::bind( &std::string::empty, std::placeholders::_1 ) ), states.end() ); Set<SUID> state; for( auto it = states.begin(); it != states.end(); ++it ) diff --git a/src/core/debug/Debug.h b/src/core/debug/Debug.h index 3ea4bcd05..ac3f0f3e2 100644 --- a/src/core/debug/Debug.h +++ b/src/core/debug/Debug.h @@ -26,7 +26,6 @@ #ifndef NDEBUG # include "CheckFunctions.h" # include <functional> -# include <boost/bind.hpp> # include <string> #endif @@ -265,7 +264,7 @@ private: /// \endcond #define WALBERLA_ASSERT_SECTION(condition) if(true)\ - if(const walberla::debug::ConditionalExec COND_EXEC = walberla::debug::ConditionalExec(!(condition),boost::bind(walberla::debug::myAssert,__FILE__,__LINE__))) + if(const walberla::debug::ConditionalExec COND_EXEC = walberla::debug::ConditionalExec(!(condition),std::bind(walberla::debug::myAssert,__FILE__,__LINE__))) #else diff --git a/src/cuda/AddGPUFieldToStorage.impl.h b/src/cuda/AddGPUFieldToStorage.impl.h index 03b90c728..1befc3e81 100644 --- a/src/cuda/AddGPUFieldToStorage.impl.h +++ b/src/cuda/AddGPUFieldToStorage.impl.h @@ -73,7 +73,7 @@ namespace cuda { uint_t nrOfGhostLayers, bool usePitchedMem ) { - auto func = boost::bind ( internal::createGPUField<GPUField_T>, _1, _2, nrOfGhostLayers, fSize, layout, usePitchedMem ); + auto func = std::bind ( internal::createGPUField<GPUField_T>, std::placeholders::_1, std::placeholders::_2, nrOfGhostLayers, fSize, layout, usePitchedMem ); return bs->addStructuredBlockData< GPUField_T >( func, identifier ); } @@ -84,7 +84,7 @@ namespace cuda { const std::string & identifier, bool usePitchedMem ) { - auto func = boost::bind ( internal::createGPUFieldFromCPUField<Field_T>, _1, _2, cpuFieldID, usePitchedMem ); + auto func = std::bind ( internal::createGPUFieldFromCPUField<Field_T>, std::placeholders::_1, std::placeholders::_2, cpuFieldID, usePitchedMem ); return bs->addStructuredBlockData< GPUField<typename Field_T::value_type> >( func, identifier ); } diff --git a/src/cuda/FieldCopy.h b/src/cuda/FieldCopy.h index 07fd04c80..4f13fa999 100644 --- a/src/cuda/FieldCopy.h +++ b/src/cuda/FieldCopy.h @@ -52,7 +52,7 @@ namespace cuda { std::function<void()> fieldCpyFunctor( const shared_ptr< StructuredBlockStorage > & blocks, BlockDataID dstID, ConstBlockDataID srcID ) { - return boost::bind( fieldCpy<DstType,SrcType>, blocks, dstID, srcID ); + return std::bind( fieldCpy<DstType,SrcType>, blocks, dstID, srcID ); } @@ -68,7 +68,7 @@ namespace cuda { template<typename DstType, typename SrcType> std::function<void(IBlock*)> fieldCpyFunctor( BlockDataID dstID, ConstBlockDataID srcID ) { - return boost::bind( fieldCpySweepFunction<DstType,SrcType>, dstID, srcID, _1 ); + return std::bind( fieldCpySweepFunction<DstType,SrcType>, dstID, srcID, std::placeholders::_1 ); } diff --git a/src/domain_decomposition/MakeBlockDataInitFunction.h b/src/domain_decomposition/MakeBlockDataInitFunction.h index 466f944c1..c6446b919 100644 --- a/src/domain_decomposition/MakeBlockDataInitFunction.h +++ b/src/domain_decomposition/MakeBlockDataInitFunction.h @@ -23,7 +23,6 @@ #include "IBlock.h" -#include <boost/bind.hpp> #include <functional> @@ -93,61 +92,61 @@ namespace internal template<class T> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction() { - return boost::bind( internal::newFunc<T>, _1); + return std::bind( internal::newFunc<T>, std::placeholders::_1); } template<class T, class P1> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1) { - return boost::bind( internal::newFunc<T,P1>, _1,p1); + return std::bind( internal::newFunc<T,P1>, std::placeholders::_1,p1); } template<class T, class P1, class P2> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2) { - return boost::bind( internal::newFunc<T,P1,P2>, _1,p1,p2); + return std::bind( internal::newFunc<T,P1,P2>, std::placeholders::_1,p1,p2); } template<class T, class P1, class P2, class P3> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3) { - return boost::bind( internal::newFunc<T,P1,P2,P3>, _1,p1,p2,p3); + return std::bind( internal::newFunc<T,P1,P2,P3>, std::placeholders::_1,p1,p2,p3); } template<class T, class P1, class P2, class P3, class P4> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4>, _1,p1,p2,p3,p4); + return std::bind( internal::newFunc<T,P1,P2,P3,P4>, std::placeholders::_1,p1,p2,p3,p4); } template<class T, class P1, class P2, class P3, class P4, class P5> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4,P5>, _1,p1,p2,p3,p4,p5); + return std::bind( internal::newFunc<T,P1,P2,P3,P4,P5>, std::placeholders::_1,p1,p2,p3,p4,p5); } template<class T, class P1, class P2, class P3, class P4, class P5, class P6> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5, const P6 & p6) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6>, _1,p1,p2,p3,p4,p5,p6); + return std::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6>, std::placeholders::_1,p1,p2,p3,p4,p5,p6); } template<class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5, const P6 & p6, const P7 & p7) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7>, _1,p1,p2,p3,p4,p5,p6,p7); + return std::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7>, std::placeholders::_1,p1,p2,p3,p4,p5,p6,p7); } template<class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5, const P6 & p6, const P7 & p7, const P8 & p8) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7,P8>, _1,p1,p2,p3,p4,p5,p6,p7,p8); + return std::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7,P8>, std::placeholders::_1,p1,p2,p3,p4,p5,p6,p7,p8); } template<class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> std::function< T* ( const IBlock* const block ) > makeBlockDataInitFunction(const P1 & p1, const P2 & p2, const P3 & p3, const P4 & p4, const P5 & p5, const P6 & p6, const P7 & p7, const P8 & p8, const P9 & p9) { - return boost::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7,P8,P9>, _1,p1,p2,p3,p4,p5,p6,p7,p8,p9); + return std::bind( internal::newFunc<T,P1,P2,P3,P4,P5,P6,P7,P8,P9>, std::placeholders::_1,p1,p2,p3,p4,p5,p6,p7,p8,p9); } diff --git a/src/domain_decomposition/StructuredBlockStorage.h b/src/domain_decomposition/StructuredBlockStorage.h index 4315429d2..2d398ca3d 100644 --- a/src/domain_decomposition/StructuredBlockStorage.h +++ b/src/domain_decomposition/StructuredBlockStorage.h @@ -29,7 +29,7 @@ #include "core/cell/CellInterval.h" #include "core/debug/Debug.h" -#include <boost/bind.hpp> +#include <functional> namespace walberla { @@ -112,7 +112,7 @@ public: bdc.incompatibleSelectors_, bdc.identifier_ ); return *this; } template< typename T > StructuredBlockDataAdder & operator<<( const StructuredBlockDataCreator<T> & sbdc ) { - dataHandling_.add( walberla::make_shared< internal::BlockDataHandlingHelper<T> >( walberla::make_shared< internal::BlockDataHandlingFunctionAdaptor<T> >( boost::bind( sbdc.function_, _1, &storage_ ) ) ), + dataHandling_.add( walberla::make_shared< internal::BlockDataHandlingHelper<T> >( walberla::make_shared< internal::BlockDataHandlingFunctionAdaptor<T> >( std::bind( sbdc.function_, std::placeholders::_1, &storage_ ) ) ), sbdc.requiredSelectors_, sbdc.incompatibleSelectors_, sbdc.identifier_ ); return *this; } operator BlockDataID() { return storage_.getBlockStorage().addBlockData( dataHandling_, identifier_ ); } private: @@ -1076,7 +1076,7 @@ inline BlockDataID StructuredBlockStorage::addStructuredBlockData( const std::string& identifier, const Set<SUID>& requiredSelectors, const Set<SUID>& incompatibleSelectors ) { internal::SelectableBlockDataHandlingWrapper dataHandling( - walberla::make_shared< internal::BlockDataHandlingHelper<T> >( walberla::make_shared< internal::BlockDataHandlingFunctionAdaptor<T> >( boost::bind( function, _1, this ) ) ), + walberla::make_shared< internal::BlockDataHandlingHelper<T> >( walberla::make_shared< internal::BlockDataHandlingFunctionAdaptor<T> >( std::bind( function, std::placeholders::_1, this ) ) ), requiredSelectors, incompatibleSelectors, identifier ); diff --git a/src/field/StabilityChecker.h b/src/field/StabilityChecker.h index 396a7c077..74b4470ed 100644 --- a/src/field/StabilityChecker.h +++ b/src/field/StabilityChecker.h @@ -394,7 +394,7 @@ void StabilityChecker< Field_T, Filter_T >::operator()() vtkWriter->addCellDataWriter( walberla::make_shared< vtk::DumpBlockStructureProcess >( "process" ) ); vtkWriter->addCellDataWriter( walberla::make_shared< vtk::DumpBlockStructureLevel >( "level" ) ); - vtkWriter->addCellDataWriter( walberla::make_shared< FValueVTKWriter >( boost::ref( failedCells_ ), "F" ) ); + vtkWriter->addCellDataWriter( walberla::make_shared< FValueVTKWriter >( std::ref( failedCells_ ), "F" ) ); vtkWriter->addCellDataWriter( walberla::make_shared< LocalCoordVTKWriter >( "blockLocalCoordinate" ) ); vtkWriter->addCellDataWriter( walberla::make_shared< GlobalCoordVTKWriter >( "globalCoordinate" ) ); diff --git a/src/field/adaptors/AdaptorCreators.h b/src/field/adaptors/AdaptorCreators.h index af7f5e55b..1c410ca91 100644 --- a/src/field/adaptors/AdaptorCreators.h +++ b/src/field/adaptors/AdaptorCreators.h @@ -23,7 +23,9 @@ #pragma once #include "blockforest/BlockDataHandling.h" -#include <boost/bind.hpp> + +#include <functional> + namespace walberla { diff --git a/src/field/python/FieldExport.impl.h b/src/field/python/FieldExport.impl.h index ecbbbae8c..4dc9d0c3b 100644 --- a/src/field/python/FieldExport.impl.h +++ b/src/field/python/FieldExport.impl.h @@ -1006,7 +1006,7 @@ namespace internal { auto result = make_shared<boost::python::object>(); AddToStorageExporter exporter( blocks, name, fs, gl, layout, type, initValue ); - python_coupling::for_each_noncopyable_type< FieldTypes > ( boost::ref(exporter) ); + python_coupling::for_each_noncopyable_type< FieldTypes > ( std::ref(exporter) ); if ( ! exporter.successful() ) { PyErr_SetString( PyExc_ValueError, "Adding Field failed."); @@ -1079,7 +1079,7 @@ namespace internal { auto fieldID = python_coupling::blockDataIDFromString( *blocks, name ); CreateVTKWriterExporter exporter(blocks, fieldID, vtkName); - python_coupling::for_each_noncopyable_type< FieldTypes > ( boost::ref(exporter) ); + python_coupling::for_each_noncopyable_type< FieldTypes > ( std::ref(exporter) ); if ( ! exporter.getCreatedWriter() ) { PyErr_SetString( PyExc_ValueError, "Failed to create writer"); throw boost::python::error_already_set(); @@ -1154,7 +1154,7 @@ namespace internal { auto fieldID = python_coupling::blockDataIDFromString( *blocks, name ); CreateFlagFieldVTKWriterExporter exporter(blocks, fieldID, vtkName, flagMapping); - python_coupling::for_each_noncopyable_type< FieldTypes > ( boost::ref(exporter) ); + python_coupling::for_each_noncopyable_type< FieldTypes > ( std::ref(exporter) ); if ( ! exporter.getCreatedWriter() ) { PyErr_SetString( PyExc_ValueError, "Failed to create writer"); throw boost::python::error_already_set(); @@ -1221,7 +1221,7 @@ namespace internal { auto fieldID = python_coupling::blockDataIDFromString( *blocks, name ); CreateBinarizationVTKWriterExporter exporter(blocks, fieldID, vtkName, mask); - python_coupling::for_each_noncopyable_type< FieldTypes > ( boost::ref(exporter) ); + python_coupling::for_each_noncopyable_type< FieldTypes > ( std::ref(exporter) ); if ( ! exporter.getCreatedWriter() ) { PyErr_SetString( PyExc_ValueError, "Failed to create writer"); throw boost::python::error_already_set(); diff --git a/src/lbm/BlockForestEvaluation.h b/src/lbm/BlockForestEvaluation.h index 5a8ed59d7..f9b823696 100644 --- a/src/lbm/BlockForestEvaluation.h +++ b/src/lbm/BlockForestEvaluation.h @@ -38,8 +38,8 @@ #include "field/CellCounter.h" #include "field/FlagUID.h" -#include <boost/bind.hpp> +#include <functional> #include <map> #include <string> #include <sstream> diff --git a/src/lbm/boundary/factories/DefaultBoundaryHandlingCollection.h b/src/lbm/boundary/factories/DefaultBoundaryHandlingCollection.h index e54c74bca..4bee0c6c1 100644 --- a/src/lbm/boundary/factories/DefaultBoundaryHandlingCollection.h +++ b/src/lbm/boundary/factories/DefaultBoundaryHandlingCollection.h @@ -26,6 +26,8 @@ #include "lbm/boundary/factories/DefaultBoundaryHandling.h" #include "lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h" +#include <functional> + namespace walberla { namespace lbm{ @@ -67,7 +69,7 @@ public: static BlockDataID addDefaultBoundaryHandlingCollectionToStorage( const shared_ptr< StructuredBlockStorage >& bs, const std::string & identifier, const BlockDataID& flagFieldID, const BlockDataID& handlingID, const BlockDataID& diffusionHandlingID ) { - auto func = boost::bind( createDefaultBoundaryHandlingCollectionFactory, _1, _2, flagFieldID, handlingID, diffusionHandlingID ); + auto func = std::bind( createDefaultBoundaryHandlingCollectionFactory, std::placeholders::_1, std::placeholders::_2, flagFieldID, handlingID, diffusionHandlingID ); return bs->addStructuredBlockData< BoundaryHandlingCollection_T >( func, identifier ); } diff --git a/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h b/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h index 3104c3f7e..42e3c7536 100644 --- a/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h +++ b/src/lbm/boundary/factories/DefaultDiffusionBoundaryHandling.h @@ -36,6 +36,8 @@ #include <boost/tuple/tuple.hpp> +#include <functional> + namespace walberla { namespace lbm{ @@ -136,7 +138,7 @@ public: static BlockDataID addDefaultDiffusionBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage >& bs, const std::string & identifier, const BlockDataID& flagFieldID, const Set<FlagUID>& domainFlagUIDs, const BlockDataID& pdfFieldID, const Set<FlagUID>& initFlagUIDs ) { - auto func = boost::bind( createDefaultDiffusionBoundaryHandlingFactory, _1, _2, flagFieldID, domainFlagUIDs, pdfFieldID, initFlagUIDs ); + auto func = std::bind( createDefaultDiffusionBoundaryHandlingFactory, std::placeholders::_1, std::placeholders::_2, flagFieldID, domainFlagUIDs, pdfFieldID, initFlagUIDs ); return bs->addStructuredBlockData< BoundaryHandling_T >( func, identifier ); } diff --git a/src/lbm/python/ExportBasic.impl.h b/src/lbm/python/ExportBasic.impl.h index afae7a5a1..c0097f54e 100644 --- a/src/lbm/python/ExportBasic.impl.h +++ b/src/lbm/python/ExportBasic.impl.h @@ -165,7 +165,7 @@ namespace internal using namespace boost::python; LatticeModelCreator creator( compressible, equilibriumAccuracyOrder, stencil, collisionModel, forceModel ); - python_coupling::for_each_noncopyable_type<LatticeModels>( boost::ref(creator) ); + python_coupling::for_each_noncopyable_type<LatticeModels>( std::ref(creator) ); if ( creator.getResult() == object() ) { @@ -346,7 +346,7 @@ namespace internal internal::AddPdfFieldToStorageExporter exporter( blocks, identifier, latticeModel, initialVelocity, initialDensity, gl, layout, densityAdaptor, velocityAdaptor, shearRateAdaptor ); - python_coupling::for_each_noncopyable_type< LatticeModels > ( boost::ref(exporter) ); + python_coupling::for_each_noncopyable_type< LatticeModels > ( std::ref(exporter) ); if ( ! exporter.successful() ) { PyErr_SetString( PyExc_ValueError, "Adding Pdf Field failed."); throw error_already_set(); diff --git a/src/lbm/python/ExportBoundary.impl.h b/src/lbm/python/ExportBoundary.impl.h index 009bda532..06845e35a 100644 --- a/src/lbm/python/ExportBoundary.impl.h +++ b/src/lbm/python/ExportBoundary.impl.h @@ -227,7 +227,7 @@ namespace internal } ExtendedBoundaryHandlingCreator creator( bs, name, pdfFieldID, flagFieldID ); - python_coupling::for_each_noncopyable_type<LatticeModels>( boost::ref( creator ) ); + python_coupling::for_each_noncopyable_type<LatticeModels>( std::ref( creator ) ); if ( ! creator.successful() ) { diff --git a/src/lbm/python/ExportSweeps.impl.h b/src/lbm/python/ExportSweeps.impl.h index fa01bf969..5f9440114 100644 --- a/src/lbm/python/ExportSweeps.impl.h +++ b/src/lbm/python/ExportSweeps.impl.h @@ -221,7 +221,7 @@ namespace internal auto flagUidSet = python_coupling::uidSetFromStringContainer< FlagUID >( flagList ); CellwiseSweepCreator creator( bs, pdfFieldID, flagFieldStringID, velocityFieldStringID, flagUidSet ); - python_coupling::for_each_noncopyable_type<LatticeModel_FlagField_Pairs>( boost::ref( creator ) ); + python_coupling::for_each_noncopyable_type<LatticeModel_FlagField_Pairs>( std::ref( creator ) ); if ( creator.getResult() == object() ) { diff --git a/src/pde/sweeps/RBGS.h b/src/pde/sweeps/RBGS.h index 1f3404341..69f7245fa 100644 --- a/src/pde/sweeps/RBGS.h +++ b/src/pde/sweeps/RBGS.h @@ -26,7 +26,7 @@ #include "stencil/Directions.h" #include <map> - +#include <functional> namespace walberla { @@ -53,12 +53,12 @@ public: std::function< void ( IBlock * const ) > getRedSweep() { - return boost::bind( &RBGS::update, this, _1, true ); + return std::bind( &RBGS::update, this, std::placeholders::_1, true ); } std::function< void ( IBlock * const ) > getBlackSweep() { - return boost::bind( &RBGS::update, this, _1, false ); + return std::bind( &RBGS::update, this, std::placeholders::_1, false ); } private: diff --git a/src/pde/sweeps/RBGSFixedStencil.h b/src/pde/sweeps/RBGSFixedStencil.h index 76df00055..75196987f 100644 --- a/src/pde/sweeps/RBGSFixedStencil.h +++ b/src/pde/sweeps/RBGSFixedStencil.h @@ -26,7 +26,7 @@ #include "stencil/Directions.h" #include <map> - +#include <functional> namespace walberla { @@ -52,12 +52,12 @@ public: std::function< void ( IBlock * const ) > getRedSweep() { - return boost::bind( &RBGSFixedStencil::update, this, _1, true ); + return std::bind( &RBGSFixedStencil::update, this, std::placeholders::_1, true ); } std::function< void ( IBlock * const ) > getBlackSweep() { - return boost::bind( &RBGSFixedStencil::update, this, _1, false ); + return std::bind( &RBGSFixedStencil::update, this, std::placeholders::_1, false ); } private: diff --git a/src/pde/sweeps/SOR.h b/src/pde/sweeps/SOR.h index 90be98268..4997b40d6 100644 --- a/src/pde/sweeps/SOR.h +++ b/src/pde/sweeps/SOR.h @@ -26,7 +26,7 @@ #include "stencil/Directions.h" #include <map> - +#include <functional> namespace walberla { @@ -53,12 +53,12 @@ public: std::function< void ( IBlock * const ) > getRedSweep() { - return boost::bind( &SOR::update, this, _1, true ); + return std::bind( &SOR::update, this, std::placeholders::_1, true ); } std::function< void ( IBlock * const ) > getBlackSweep() { - return boost::bind( &SOR::update, this, _1, false ); + return std::bind( &SOR::update, this, std::placeholders::_1, false ); } private: diff --git a/src/pde/sweeps/SORFixedStencil.h b/src/pde/sweeps/SORFixedStencil.h index 51535e037..d3983ab18 100644 --- a/src/pde/sweeps/SORFixedStencil.h +++ b/src/pde/sweeps/SORFixedStencil.h @@ -26,7 +26,7 @@ #include "stencil/Directions.h" #include <map> - +#include <functional> namespace walberla { @@ -52,12 +52,12 @@ public: std::function< void ( IBlock * const ) > getRedSweep() { - return boost::bind( &SORFixedStencil::update, this, _1, true ); + return std::bind( &SORFixedStencil::update, this, std::placeholders::_1, true ); } std::function< void ( IBlock * const ) > getBlackSweep() { - return boost::bind( &SORFixedStencil::update, this, _1, false ); + return std::bind( &SORFixedStencil::update, this, std::placeholders::_1, false ); } private: diff --git a/src/python_coupling/DictWrapper.h b/src/python_coupling/DictWrapper.h index 912ce3a83..0d2f0cab1 100644 --- a/src/python_coupling/DictWrapper.h +++ b/src/python_coupling/DictWrapper.h @@ -28,7 +28,9 @@ #include "PythonWrapper.h" #include "core/DataTypes.h" #include "core/Abort.h" -#include <boost/bind.hpp> + +#include <functional> + namespace walberla { namespace python_coupling { diff --git a/src/python_coupling/DictWrapper.impl.h b/src/python_coupling/DictWrapper.impl.h index 400eb2e7f..b6ffecb9b 100644 --- a/src/python_coupling/DictWrapper.impl.h +++ b/src/python_coupling/DictWrapper.impl.h @@ -19,6 +19,8 @@ // //====================================================================================================================== +#include <functional> + namespace walberla { namespace python_coupling { @@ -113,7 +115,7 @@ inline void runPythonObject( boost::python::object obj ) { template<> inline std::function<void()> DictWrapper::get( const std::string & name ) { boost::python::object obj ( d_[name] ); - return boost::bind( &runPythonObject, obj ); + return std::bind( &runPythonObject, obj ); } template<> diff --git a/src/python_coupling/Manager.h b/src/python_coupling/Manager.h index b6294b6fb..ed843ff11 100644 --- a/src/python_coupling/Manager.h +++ b/src/python_coupling/Manager.h @@ -61,7 +61,7 @@ namespace python_coupling { boost::python::object testBlockData( IBlock & block, BlockDataID blockDataID ) { BlockDataToObjectTester tester( &block, blockDataID ); - for_each_noncopyable_type< TypeList > ( boost::ref(tester) ); + for_each_noncopyable_type< TypeList > ( std::ref(tester) ); return tester.getResult(); } diff --git a/src/python_coupling/basic_exports/BasicExports.cpp b/src/python_coupling/basic_exports/BasicExports.cpp index a3e4a8f31..724efcfce 100644 --- a/src/python_coupling/basic_exports/BasicExports.cpp +++ b/src/python_coupling/basic_exports/BasicExports.cpp @@ -43,6 +43,8 @@ #include <boost/version.hpp> +#include <functional> + using namespace boost::python; @@ -842,7 +844,7 @@ object * blockDataCreationHelper( IBlock * block, StructuredBlockStorage * bs, uint_t StructuredBlockStorage_addBlockData( StructuredBlockStorage & s, const std::string & name, object functionPtr ) { BlockDataID res = s.addStructuredBlockData(name) - << StructuredBlockDataCreator<object>( boost::bind( &blockDataCreationHelper, _1,_2, functionPtr ) ); + << StructuredBlockDataCreator<object>( std::bind( &blockDataCreationHelper, std::placeholders::_1, std::placeholders::_2, functionPtr ) ); //TODO extend this for moving block data ( packing und unpacking with pickle ) return res; } diff --git a/src/python_coupling/helper/MplHelpers.h b/src/python_coupling/helper/MplHelpers.h index 640f45637..d9b008664 100644 --- a/src/python_coupling/helper/MplHelpers.h +++ b/src/python_coupling/helper/MplHelpers.h @@ -28,8 +28,8 @@ #include <boost/mpl/pair.hpp> #include <boost/mpl/transform.hpp> -#include <boost/bind.hpp> +#include <functional> #include <map> @@ -102,7 +102,7 @@ public: return map_[ blockDataID ]; Exporter exporter( block_, blockDataID ); - for_each_noncopyable_type< FieldTypeList> ( boost::ref(exporter) ); + for_each_noncopyable_type< FieldTypeList> ( std::ref(exporter) ); map_[ blockDataID ] = exporter.result; return exporter.result; } diff --git a/src/timeloop/PerformanceMeter.cpp b/src/timeloop/PerformanceMeter.cpp index 7af5f847d..884291215 100644 --- a/src/timeloop/PerformanceMeter.cpp +++ b/src/timeloop/PerformanceMeter.cpp @@ -53,7 +53,7 @@ namespace timeloop { *******************************************************************************************************************/ std::function<void () > PerformanceMeter::getBeforeFunction() { - return boost::bind ( &PerformanceMeter::timingStart, this ); + return std::bind ( &PerformanceMeter::timingStart, this ); } @@ -66,7 +66,7 @@ namespace timeloop { *******************************************************************************************************************/ std::function<void () > PerformanceMeter::getAfterFunction() { - return boost::bind ( &PerformanceMeter::timingEnd, this ); + return std::bind ( &PerformanceMeter::timingEnd, this ); } diff --git a/src/timeloop/PerformanceMeter.h b/src/timeloop/PerformanceMeter.h index 732121789..731f968fe 100644 --- a/src/timeloop/PerformanceMeter.h +++ b/src/timeloop/PerformanceMeter.h @@ -23,9 +23,7 @@ #include "core/timing/Timer.h" #include "domain_decomposition/StructuredBlockStorage.h" -#include <boost/bind.hpp> #include <functional> - #include <iostream> #include <map> #include <string> @@ -180,7 +178,7 @@ namespace timeloop { typename FField::flag_t activeMask, uint_t countFreq , real_t scaling ) { - this->addMeasurement( name, boost::bind( flagFieldCountFunction<FField>, _1, flagFieldID, activeMask ), + this->addMeasurement( name, std::bind( flagFieldCountFunction<FField>, std::placeholders::_1, flagFieldID, activeMask ), countFreq, scaling ); } diff --git a/src/timeloop/SelectableFunctionCreators.h b/src/timeloop/SelectableFunctionCreators.h index b6762e469..4deaa2ce4 100644 --- a/src/timeloop/SelectableFunctionCreators.h +++ b/src/timeloop/SelectableFunctionCreators.h @@ -25,7 +25,6 @@ #include "core/uid/SUID.h" #include "domain_decomposition/BlockStorage.h" -#include <boost/bind.hpp> #include <functional> #include <string> @@ -177,7 +176,7 @@ namespace timeloop { BlockDataID bdId = bs_.addBlockData() << bdCreator; // add a sweep function that fetches the block data sweep and executes it - auto sweepFunc = boost::bind ( executeSweepOnBlock<SweepClass>, _1, bdId ); + auto sweepFunc = std::bind ( executeSweepOnBlock<SweepClass>, std::placeholders::_1, bdId ); ( *this ) << Sweep ( sweepFunc, sw.identifier_, sw.requiredSelectors_, sw.incompatibleSelectors_ ); return *this; diff --git a/src/vtk/Initialization.cpp b/src/vtk/Initialization.cpp index d551086d5..bac98bdb9 100644 --- a/src/vtk/Initialization.cpp +++ b/src/vtk/Initialization.cpp @@ -29,7 +29,8 @@ #include <boost/algorithm/string/classification.hpp> #include <boost/algorithm/string/predicate.hpp> #include <boost/algorithm/string/split.hpp> -#include <boost/bind.hpp> + +#include <functional> namespace walberla { @@ -43,7 +44,7 @@ static void splitVector( T& x, T& y, T& z, const Config::BlockHandle& bb, const std::vector< std::string > coordinates; std::string vector = bb.getParameter< std::string >( vertex ); boost::split( coordinates, vector, boost::is_any_of("<,> \t") ); - coordinates.erase( std::remove_if( coordinates.begin(), coordinates.end(), boost::bind( &std::string::empty, _1 ) ), coordinates.end() ); + coordinates.erase( std::remove_if( coordinates.begin(), coordinates.end(), std::bind( &std::string::empty, std::placeholders::_1 ) ), coordinates.end() ); if( coordinates.size() != 3 ) WALBERLA_ABORT( errorMsg ); @@ -60,7 +61,7 @@ static std::vector< std::string > splitList( const std::string& string ) std::vector< std::string > list; boost::split( list, string, boost::is_any_of(", \t") ); - list.erase( std::remove_if( list.begin(), list.end(), boost::bind( &std::string::empty, _1 ) ), list.end() ); + list.erase( std::remove_if( list.begin(), list.end(), std::bind( &std::string::empty, std::placeholders::_1 ) ), list.end() ); return list; } @@ -71,7 +72,7 @@ static void addStates( Set<SUID>& set, const std::string& string ) { std::vector< std::string > states; boost::split( states, string, boost::is_any_of(", \t") ); - states.erase( std::remove_if( states.begin(), states.end(), boost::bind( &std::string::empty, _1 ) ), states.end() ); + states.erase( std::remove_if( states.begin(), states.end(), std::bind( &std::string::empty, std::placeholders::_1 ) ), states.end() ); for( auto it = states.begin(); it != states.end(); ++it ) set += SUID( *it ); diff --git a/tests/lbm/DiffusionTest.cpp b/tests/lbm/DiffusionTest.cpp index a6f126a35..4bed8c474 100644 --- a/tests/lbm/DiffusionTest.cpp +++ b/tests/lbm/DiffusionTest.cpp @@ -79,6 +79,8 @@ #include <boost/lexical_cast.hpp> +#include <functional> + namespace walberla { @@ -280,16 +282,16 @@ int run( int argc, char **argv ) scheme.addPackInfo( make_shared< field::communication::PackInfo< AdvDiffPDFField > >( srcFieldID ) ); timeloop.addFuncBeforeTimeStep( scheme, "Communication" ); - using boost::ref; + using std::ref; - timeloop.add() << Sweep( boost::bind( hydroFunc, _1, velFieldID, u, tperiod, ref(timestep) ), "Hydro Func" ); + timeloop.add() << Sweep( std::bind( hydroFunc, std::placeholders::_1, velFieldID, u, tperiod, ref(timestep) ), "Hydro Func" ); timeloop.add() << Sweep( makeSharedSweep( lbm::makeCellwiseAdvectionDiffusionSweep< AdvDiffLatticeModel, VectorField, MyFlagField >( srcFieldID, velFieldID, flagFieldID, getFluidFlag() ) ), "LBM_SRT" ); - timeloop.add() << BeforeFunction( boost::bind( prepFunc, u[dim], dv, D, cperiod, tperiod, ref(timestep), ref(cosi), ref(sisi), ref(sexp) ), "prepare test" ) - << Sweep ( boost::bind( testFunc<AdvDiffPDFField>, _1, srcFieldID, dim, v, cperiod, ref(cosi), ref(sisi), ref(sexp), ref(E_mean_) ), "Test Func" ) - << AfterFunction ( boost::bind( incTimeFunc, ref(timestep) ), "increment time" ); + timeloop.add() << BeforeFunction( std::bind( prepFunc, u[dim], dv, D, cperiod, tperiod, ref(timestep), ref(cosi), ref(sisi), ref(sexp) ), "prepare test" ) + << Sweep ( std::bind( testFunc<AdvDiffPDFField>, std::placeholders::_1, srcFieldID, dim, v, cperiod, ref(cosi), ref(sisi), ref(sexp), ref(E_mean_) ), "Test Func" ) + << AfterFunction ( std::bind( incTimeFunc, ref(timestep) ), "increment time" ); // --- run timeloop --- // diff --git a/tests/lbm/boundary/SimpleDiffusionDirichlet.cpp b/tests/lbm/boundary/SimpleDiffusionDirichlet.cpp index d28603a3f..1cc3e60f9 100644 --- a/tests/lbm/boundary/SimpleDiffusionDirichlet.cpp +++ b/tests/lbm/boundary/SimpleDiffusionDirichlet.cpp @@ -76,6 +76,7 @@ #include <stdexcept> #include <array> +#include <functional> #include "gather/GnuPlotGraphWriter.h" #include "field/vtk/FlagFieldCellFilter.h" @@ -85,7 +86,6 @@ #include "vtk/VTKOutput.h" - namespace walberla { typedef GhostLayerField< real_t, 1 > ScalarField; @@ -138,7 +138,7 @@ shared_ptr< StructuredBlockForest > makeStructuredBlockStorage( uint_t length, u uint_t cells[] = { length, width, width }; uint_t blocks[] = { uint_t(1u), uint_t(1u), uint_t(1u) }; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, refinement ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, refinement ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( diff --git a/tests/lbm/refinement/CommunicationEquivalence.cpp b/tests/lbm/refinement/CommunicationEquivalence.cpp index 32f029d77..6cd232235 100644 --- a/tests/lbm/refinement/CommunicationEquivalence.cpp +++ b/tests/lbm/refinement/CommunicationEquivalence.cpp @@ -50,11 +50,10 @@ #include "timeloop/SweepTimeloop.h" -#include <boost/bind.hpp> - #include <algorithm> #include <cstdlib> #include <fstream> +#include <functional> //#define TEST_USES_VTK_OUTPUT #ifdef TEST_USES_VTK_OUTPUT @@ -190,7 +189,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const uint_t le // initialize SetupBlockForest = determine domain decomposition SetupBlockForest sforest; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, levels ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, levels ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( AABB( real_c(0), real_c(0), real_c(0), real_c( numberOfXBlocks * numberOfXCellsPerBlock ), diff --git a/tests/lbm/refinement/NonConstantDiffusion.cpp b/tests/lbm/refinement/NonConstantDiffusion.cpp index 12d96631a..dca9d0529 100644 --- a/tests/lbm/refinement/NonConstantDiffusion.cpp +++ b/tests/lbm/refinement/NonConstantDiffusion.cpp @@ -75,6 +75,7 @@ #include <boost/lexical_cast.hpp> #include <stdexcept> +#include <functional> #include "gather/GnuPlotGraphWriter.h" #include "field/vtk/FlagFieldCellFilter.h" @@ -137,7 +138,7 @@ shared_ptr< StructuredBlockForest > makeStructuredBlockStorage( uint_t length, u uint_t cells[] = { length, width, width }; uint_t blocks[] = { uint_t(1u), uint_t(1u), uint_t(1u) }; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, refinement ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, refinement ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( diff --git a/tests/lbm/refinement/Uniformity.cpp b/tests/lbm/refinement/Uniformity.cpp index 67e73915a..aabd8d6fb 100644 --- a/tests/lbm/refinement/Uniformity.cpp +++ b/tests/lbm/refinement/Uniformity.cpp @@ -50,10 +50,9 @@ #include "timeloop/SweepTimeloop.h" -#include <boost/bind.hpp> - #include <algorithm> #include <cstdlib> +#include <functional> //#define TEST_USES_VTK_OUTPUT #ifdef TEST_USES_VTK_OUTPUT @@ -150,7 +149,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const uint_t le // initialize SetupBlockForest = determine domain decomposition SetupBlockForest sforest; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, levels ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, levels ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( AABB( real_c(0), real_c(0), real_c(0), real_c( numberOfXBlocks * numberOfXCellsPerBlock ), diff --git a/tests/mesh/PeVTKMeshWriterTest.cpp b/tests/mesh/PeVTKMeshWriterTest.cpp index a765f30c4..5399af727 100644 --- a/tests/mesh/PeVTKMeshWriterTest.cpp +++ b/tests/mesh/PeVTKMeshWriterTest.cpp @@ -42,6 +42,7 @@ #include <postprocessing/sqlite/SQLite.h> #include <vtk/VTKOutput.h> +#include <functional> #include <random> using namespace walberla; @@ -142,7 +143,7 @@ int main( int argc, char ** argv ) cr.setRelaxationParameter( real_t(0.7) ); cr.setGlobalLinearAcceleration( Vec3(0,0,5) ); - std::function<void(void)> syncCall = boost::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + std::function<void(void)> syncCall = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(*forest), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); typedef mesh::FloatPolyMesh OutputMeshType; typedef mesh::pe::DefaultTesselation<OutputMeshType> TesselationType; diff --git a/tests/pe/DeleteBody.cpp b/tests/pe/DeleteBody.cpp index 64f03d42a..a37e73bff 100644 --- a/tests/pe/DeleteBody.cpp +++ b/tests/pe/DeleteBody.cpp @@ -31,6 +31,8 @@ #include "core/debug/TestSubsystem.h" #include "core/math/Random.h" +#include <functional> + using namespace walberla; using namespace walberla::pe; @@ -83,10 +85,10 @@ int main( int argc, char** argv ) std::function<void(void)> syncCall; if (!syncShadowOwners) { - syncCall = boost::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCall = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } else { - syncCall = boost::bind( pe::syncShadowOwners<BodyTuple>, boost::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCall = std::bind( pe::syncShadowOwners<BodyTuple>, std::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } pe::createSphere(*globalBodyStorage, forest->getBlockStorage(), storageID, 0, Vec3(5,5,5), 2); diff --git a/tests/pe/ShadowCopy.cpp b/tests/pe/ShadowCopy.cpp index cbd4958e3..da6c31cef 100644 --- a/tests/pe/ShadowCopy.cpp +++ b/tests/pe/ShadowCopy.cpp @@ -28,6 +28,8 @@ #include "core/debug/TestSubsystem.h" +#include <functional> + using namespace walberla; using namespace walberla::pe; @@ -65,10 +67,10 @@ int main( int argc, char** argv ) std::function<void(void)> syncCall; if (!syncShadowOwners) { - syncCall = boost::bind( pe::syncNextNeighbors<BodyTuple>, boost::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCall = std::bind( pe::syncNextNeighbors<BodyTuple>, std::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } else { - syncCall = boost::bind( pe::syncShadowOwners<BodyTuple>, boost::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); + syncCall = std::bind( pe::syncShadowOwners<BodyTuple>, std::ref(forest->getBlockForest()), storageID, static_cast<WcTimingTree*>(NULL), real_c(0.0), false ); } WALBERLA_LOG_PROGRESS_ON_ROOT( " *** SPHERE *** "); diff --git a/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp b/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp index d9fd26707..ca71c9f03 100644 --- a/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp +++ b/tests/pe_coupling/discrete_particle_methods/HinderedSettlingDynamicsDPM.cpp @@ -44,6 +44,7 @@ #include "vtk/VTKOutput.h" +#include <functional> #include <vector> #include <iomanip> #include <iostream> @@ -851,7 +852,7 @@ int main( int argc, char **argv ) // connect to pe const real_t overlap = real_t( 1.5 ) * dx; - auto syncCall = boost::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + auto syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); shared_ptr<CollisionPropertiesEvaluator> collisionPropertiesEvaluator = walberla::make_shared<CollisionPropertiesEvaluator>( *cr ); // create the spheres @@ -1147,7 +1148,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::NearestNeighborFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1155,7 +1156,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::IKernel) { if (dist == Distribution::DNearestNeighbor) { @@ -1165,7 +1166,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::KernelFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1173,7 +1174,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::ITrilinear) { if (dist == Distribution::DNearestNeighbor) { @@ -1183,7 +1184,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::TrilinearFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -1191,7 +1192,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } } @@ -1211,7 +1212,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1219,7 +1220,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1230,7 +1231,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1238,7 +1239,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1249,7 +1250,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1257,7 +1258,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1271,7 +1272,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1279,7 +1280,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1290,7 +1291,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1298,7 +1299,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1309,7 +1310,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1317,7 +1318,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1329,13 +1330,13 @@ int main( int argc, char **argv ) { typedef pe_coupling::LubricationCorrection LE_T; shared_ptr<LE_T> lubEval = make_shared<LE_T>( blocks, globalBodyStorage, bodyStorageID, viscosity, lubricationCutOffDistance ); - lubricationEvaluationFunction = boost::bind(&LE_T::operator(), lubEval); + lubricationEvaluationFunction = std::bind(&LE_T::operator(), lubEval); } else { typedef pe_coupling::discrete_particle_methods::LubricationForceEvaluator LE_T; shared_ptr<LE_T> lubEval = make_shared<LE_T>( blocks, globalBodyStorage, bodyStorageID, viscosity, lubricationCutOffDistance ); - lubricationEvaluationFunction = boost::bind(&LE_T::operator(), lubEval); + lubricationEvaluationFunction = std::bind(&LE_T::operator(), lubEval); } } else { lubricationEvaluationFunction = emptyFunction; @@ -1343,7 +1344,7 @@ int main( int argc, char **argv ) // function to evaluate the mean fluid velocity - std::function<Vector3<real_t> ()> evaluateMeanFluidVelocity = boost::bind(getGNSMeanFluidVelocity, blocks, pdfFieldID, svfFieldID, domainVolume); + std::function<Vector3<real_t> ()> evaluateMeanFluidVelocity = std::bind(getGNSMeanFluidVelocity, blocks, pdfFieldID, svfFieldID, domainVolume); ////////////////////////////// diff --git a/tests/pe_coupling/discrete_particle_methods/SphereWallCollisionBehaviorDPM.cpp b/tests/pe_coupling/discrete_particle_methods/SphereWallCollisionBehaviorDPM.cpp index 5ec32af40..052676d3f 100644 --- a/tests/pe_coupling/discrete_particle_methods/SphereWallCollisionBehaviorDPM.cpp +++ b/tests/pe_coupling/discrete_particle_methods/SphereWallCollisionBehaviorDPM.cpp @@ -44,6 +44,7 @@ #include "vtk/VTKOutput.h" #include <vector> +#include <functional> #include <iomanip> #include <iostream> #include <random> @@ -698,7 +699,7 @@ int main( int argc, char **argv ) // connect to pe const real_t overlap = real_t( 1.5 ) * dx; - auto syncCall = boost::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + auto syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create the sphere const real_t restitutionCoeff = real_t(0.97); @@ -943,7 +944,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::NearestNeighborFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -951,7 +952,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::IKernel) { if (dist == Distribution::DNearestNeighbor) { @@ -961,7 +962,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::KernelFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -969,7 +970,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if (interpol == Interpolation::ITrilinear) { if (dist == Distribution::DNearestNeighbor) { @@ -979,7 +980,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if (dist == Distribution::DKernel) { typedef pe_coupling::discrete_particle_methods::InteractionForceEvaluator<FlagField_T, field::TrilinearFieldInterpolator, field::KernelDistributor> IFE_T; shared_ptr<IFE_T> forceEvaluatorPtr = make_shared<IFE_T>(blocks, dragForceFieldID, bodyStorageID, @@ -987,7 +988,7 @@ int main( int argc, char **argv ) velocityFieldID, svfFieldID, pressureGradientFieldID, dragCorrelationFunction, viscosity); - dragAndPressureForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + dragAndPressureForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } } @@ -1007,7 +1008,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1015,7 +1016,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1026,7 +1027,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1034,7 +1035,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1045,7 +1046,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1053,7 +1054,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, liftForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, velocityFieldID, velocityCurlFieldID, liftCorrelationFunction, viscosity ); - liftForceEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + liftForceEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1068,7 +1069,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1076,7 +1077,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::IKernel ) @@ -1087,7 +1088,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1095,7 +1096,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } else if( interpol == Interpolation::ITrilinear ) @@ -1106,7 +1107,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } else if( dist == Distribution::DKernel ) { @@ -1114,7 +1115,7 @@ int main( int argc, char **argv ) shared_ptr< IFE_T > forceEvaluatorPtr = make_shared< IFE_T > ( blocks, amForceFieldID, bodyStorageID, flagFieldID, Fluid_Flag, timeDerivativeVelocityFieldID, addedMassCorrelationFunction, bodyVelocityTimeDerivativeEvaluator ); - addedMassEvaluationFunction = boost::bind(&IFE_T::operator(), forceEvaluatorPtr); + addedMassEvaluationFunction = std::bind(&IFE_T::operator(), forceEvaluatorPtr); } } @@ -1126,13 +1127,13 @@ int main( int argc, char **argv ) { typedef pe_coupling::LubricationCorrection LE_T; shared_ptr<LE_T> lubEval = make_shared<LE_T>( blocks, globalBodyStorage, bodyStorageID, viscosity, lubricationCutOffDistance ); - lubricationEvaluationFunction = boost::bind(&LE_T::operator(), lubEval); + lubricationEvaluationFunction = std::bind(&LE_T::operator(), lubEval); } else { typedef pe_coupling::discrete_particle_methods::LubricationForceEvaluator LE_T; shared_ptr<LE_T> lubEval = make_shared<LE_T>( blocks, globalBodyStorage, bodyStorageID, viscosity, lubricationCutOffDistance ); - lubricationEvaluationFunction = boost::bind(&LE_T::operator(), lubEval); + lubricationEvaluationFunction = std::bind(&LE_T::operator(), lubEval); } } else { lubricationEvaluationFunction = emptyFunction; diff --git a/tests/pe_coupling/momentum_exchange_method/BodyAtBlockBoarderCheck.cpp b/tests/pe_coupling/momentum_exchange_method/BodyAtBlockBoarderCheck.cpp index 4133741c7..bbf5224bf 100644 --- a/tests/pe_coupling/momentum_exchange_method/BodyAtBlockBoarderCheck.cpp +++ b/tests/pe_coupling/momentum_exchange_method/BodyAtBlockBoarderCheck.cpp @@ -64,6 +64,7 @@ #include <vector> #include <iomanip> #include <iostream> +#include <functional> namespace body_at_block_boarder_check { @@ -132,7 +133,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( AABB domainAABB uint_c(domainAABB.zMax()) / blockSizeInCells[2] ); AABB refinementBox( domainAABB.xMin(), domainAABB.yMin(), domainAABB.zMin(), domainAABB.xMax() * real_c(0.5), domainAABB.yMax(), domainAABB.zMax() ); - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, numberOfLevels, refinementBox ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, numberOfLevels, refinementBox ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( domainAABB, numberOfCoarseBlocksPerDirection[0], numberOfCoarseBlocksPerDirection[1], numberOfCoarseBlocksPerDirection[2], true, true, true ); @@ -281,7 +282,7 @@ int main( int argc, char **argv ) // connect to pe const real_t overlap = real_c( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); auto sphereMaterialID = pe::createMaterial( "sphereMat", real_c(1) , real_c(0.3), real_c(0.2), real_c(0.2), real_c(0.24), real_c(200), real_c(200), real_c(0), real_c(0) ); // create two spheres: one which overlaps with a block boundary and one inside the block diff --git a/tests/pe_coupling/momentum_exchange_method/DragForceSphereMEMRefinement.cpp b/tests/pe_coupling/momentum_exchange_method/DragForceSphereMEMRefinement.cpp index a084604c7..33371ade9 100644 --- a/tests/pe_coupling/momentum_exchange_method/DragForceSphereMEMRefinement.cpp +++ b/tests/pe_coupling/momentum_exchange_method/DragForceSphereMEMRefinement.cpp @@ -67,6 +67,7 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> #include <vector> #include <iomanip> #include <iostream> @@ -165,7 +166,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const Setup & s // initialize SetupBlockForest = determine domain decomposition SetupBlockForest sforest; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, setup.levels, setup.radius * real_c(2), setup.length ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, setup.levels, setup.radius * real_c(2), setup.length ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( AABB( real_c(0), real_c(0), real_c(0), setup.length, setup.length, setup.length ), diff --git a/tests/pe_coupling/momentum_exchange_method/GlobalBodyAsBoundaryMEMStaticRefinement.cpp b/tests/pe_coupling/momentum_exchange_method/GlobalBodyAsBoundaryMEMStaticRefinement.cpp index 27626a2e5..393df5213 100644 --- a/tests/pe_coupling/momentum_exchange_method/GlobalBodyAsBoundaryMEMStaticRefinement.cpp +++ b/tests/pe_coupling/momentum_exchange_method/GlobalBodyAsBoundaryMEMStaticRefinement.cpp @@ -60,6 +60,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace global_body_as_boundary_mem_static_refinement { @@ -163,7 +165,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const AABB & do WALBERLA_LOG_INFO_ON_ROOT(" - refinement box: " << refinementBox); - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, numberOfLevels, refinementBox ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, numberOfLevels, refinementBox ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( domainAABB, numberOfCoarseBlocksPerDirection[0], numberOfCoarseBlocksPerDirection[1], numberOfCoarseBlocksPerDirection[2], false, false, false ); diff --git a/tests/pe_coupling/momentum_exchange_method/LubricationCorrectionMEM.cpp b/tests/pe_coupling/momentum_exchange_method/LubricationCorrectionMEM.cpp index d0d021395..124cbad21 100644 --- a/tests/pe_coupling/momentum_exchange_method/LubricationCorrectionMEM.cpp +++ b/tests/pe_coupling/momentum_exchange_method/LubricationCorrectionMEM.cpp @@ -57,6 +57,8 @@ #include "pe_coupling/momentum_exchange_method/all.h" #include "pe_coupling/utility/all.h" +#include <functional> + namespace lubrication_correction_mem { @@ -789,7 +791,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_c( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create the material const auto myMat = pe::createMaterial( "myMat", real_c(1.4), real_t(0), real_t(1), real_t(1), real_t(0), real_t(1), real_t(1), real_t(0), real_t(0) ); diff --git a/tests/pe_coupling/momentum_exchange_method/PeriodicParticleChannelMEM.cpp b/tests/pe_coupling/momentum_exchange_method/PeriodicParticleChannelMEM.cpp index ef64aa7a8..bbf831d83 100644 --- a/tests/pe_coupling/momentum_exchange_method/PeriodicParticleChannelMEM.cpp +++ b/tests/pe_coupling/momentum_exchange_method/PeriodicParticleChannelMEM.cpp @@ -65,6 +65,7 @@ #include "vtk/all.h" +#include <functional> #include <vector> namespace periodic_particle_channel_mem @@ -413,7 +414,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_c( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies const auto material = pe::createMaterial( "granular", real_c(1.2), real_c(0.25), real_c(0.4), real_c(0.4), real_c(0.35), real_c(1.39e11), real_c(5.18e7), real_c(1.07e2), real_c(1.07e2) ); diff --git a/tests/pe_coupling/momentum_exchange_method/SegreSilberbergMEM.cpp b/tests/pe_coupling/momentum_exchange_method/SegreSilberbergMEM.cpp index 6ccc9f5c7..c05c2636c 100644 --- a/tests/pe_coupling/momentum_exchange_method/SegreSilberbergMEM.cpp +++ b/tests/pe_coupling/momentum_exchange_method/SegreSilberbergMEM.cpp @@ -65,6 +65,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace segre_silberberg_mem { @@ -549,10 +551,10 @@ int main( int argc, char **argv ) std::function<void(void)> syncCall; if (!syncShadowOwners) { - syncCall = boost::bind( pe::syncNextNeighbors<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + syncCall = std::bind( pe::syncNextNeighbors<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); } else { - syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); } // create pe bodies @@ -670,9 +672,9 @@ int main( int argc, char **argv ) } shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer1 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> storeForceTorqueInCont1 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); + std::function<void(void)> storeForceTorqueInCont1 = std::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer2 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> setForceTorqueOnBodiesFromCont2 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); + std::function<void(void)> setForceTorqueOnBodiesFromCont2 = std::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); bodiesFTContainer2->store(); diff --git a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEM.cpp b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEM.cpp index 6674cde01..ed9c8da8c 100644 --- a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEM.cpp +++ b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEM.cpp @@ -63,6 +63,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace settling_sphere_mem { @@ -457,7 +459,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_t( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies @@ -530,11 +532,11 @@ int main( int argc, char **argv ) ( blocks, boundaryHandlingID, bodyStorageID, globalBodyStorage, bodyFieldID, reconstructor, FormerMO_Flag, Fluid_Flag ), "PDF Restore" ); shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer1 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> storeForceTorqueInCont1 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); + std::function<void(void)> storeForceTorqueInCont1 = std::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer2 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> setForceTorqueOnBodiesFromCont2 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); + std::function<void(void)> setForceTorqueOnBodiesFromCont2 = std::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); shared_ptr<pe_coupling::ForceTorqueOnBodiesScaler> forceScaler = make_shared<pe_coupling::ForceTorqueOnBodiesScaler>(blocks, bodyStorageID, real_t(1)); - std::function<void(void)> setForceScalingFactorToHalf = boost::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); + std::function<void(void)> setForceScalingFactorToHalf = std::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); if( averageForceTorqueOverTwoTimSteps ) { bodiesFTContainer2->store(); diff --git a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMDynamicRefinement.cpp b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMDynamicRefinement.cpp index 0e44a2e57..6ebde5403 100644 --- a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMDynamicRefinement.cpp +++ b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMDynamicRefinement.cpp @@ -65,6 +65,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace settling_sphere_mem_dynamic_refinement { @@ -251,7 +253,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const AABB & do WALBERLA_LOG_INFO_ON_ROOT(" - refinement box: " << refinementBox); - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, numberOfLevels, refinementBox ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, numberOfLevels, refinementBox ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( domainAABB, numberOfCoarseBlocksPerDirection[0], numberOfCoarseBlocksPerDirection[1], numberOfCoarseBlocksPerDirection[2], false, false, false ); @@ -677,7 +679,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_t( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies @@ -728,12 +730,12 @@ int main( int argc, char **argv ) // force averaging functionality shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer1 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> storeForceTorqueInCont1 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); + std::function<void(void)> storeForceTorqueInCont1 = std::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer2 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> setForceTorqueOnBodiesFromCont2 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); + std::function<void(void)> setForceTorqueOnBodiesFromCont2 = std::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); shared_ptr<pe_coupling::ForceTorqueOnBodiesScaler> forceScaler = make_shared<pe_coupling::ForceTorqueOnBodiesScaler>(blocks, bodyStorageID, real_t(0.5)); - std::function<void(void)> setForceScalingFactorToOne = boost::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(1)); - std::function<void(void)> setForceScalingFactorToHalf = boost::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); + std::function<void(void)> setForceScalingFactorToOne = std::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(1)); + std::function<void(void)> setForceScalingFactorToHalf = std::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); if( averageForceTorqueOverTwoTimSteps ) { bodiesFTContainer2->store(); diff --git a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMStaticRefinement.cpp b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMStaticRefinement.cpp index 391ab7b89..b8cbd96b2 100644 --- a/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMStaticRefinement.cpp +++ b/tests/pe_coupling/momentum_exchange_method/SettlingSphereMEMStaticRefinement.cpp @@ -63,6 +63,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace settling_sphere_mem_static_refinement { @@ -170,7 +172,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const AABB & do WALBERLA_LOG_INFO_ON_ROOT(" - refinement box: " << refinementBox); - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, numberOfLevels, refinementBox ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, numberOfLevels, refinementBox ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( domainAABB, numberOfCoarseBlocksPerDirection[0], numberOfCoarseBlocksPerDirection[1], numberOfCoarseBlocksPerDirection[2], false, false, false ); @@ -544,7 +546,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_t( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies @@ -595,11 +597,11 @@ int main( int argc, char **argv ) // force averaging functionality shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer1 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> storeForceTorqueInCont1 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); + std::function<void(void)> storeForceTorqueInCont1 = std::bind(&pe_coupling::BodiesForceTorqueContainer::store, bodiesFTContainer1); shared_ptr<pe_coupling::BodiesForceTorqueContainer> bodiesFTContainer2 = make_shared<pe_coupling::BodiesForceTorqueContainer>(blocks, bodyStorageID); - std::function<void(void)> setForceTorqueOnBodiesFromCont2 = boost::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); + std::function<void(void)> setForceTorqueOnBodiesFromCont2 = std::bind(&pe_coupling::BodiesForceTorqueContainer::setOnBodies, bodiesFTContainer2); shared_ptr<pe_coupling::ForceTorqueOnBodiesScaler> forceScaler = make_shared<pe_coupling::ForceTorqueOnBodiesScaler>(blocks, bodyStorageID, real_t(1)); - std::function<void(void)> setForceScalingFactorToHalf = boost::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); + std::function<void(void)> setForceScalingFactorToHalf = std::bind(&pe_coupling::ForceTorqueOnBodiesScaler::resetScalingFactor,forceScaler,real_t(0.5)); if( averageForceTorqueOverTwoTimSteps ) { bodiesFTContainer2->store(); diff --git a/tests/pe_coupling/momentum_exchange_method/SquirmerTest.cpp b/tests/pe_coupling/momentum_exchange_method/SquirmerTest.cpp index 82fd10937..08a7ad4d2 100644 --- a/tests/pe_coupling/momentum_exchange_method/SquirmerTest.cpp +++ b/tests/pe_coupling/momentum_exchange_method/SquirmerTest.cpp @@ -66,6 +66,7 @@ #include "lbm/vtk/Velocity.h" #include "vtk/VTKOutput.h" +#include <functional> namespace squirmer { @@ -289,8 +290,8 @@ int main(int argc, char **argv) { return EXIT_FAILURE; } - std::function<void(void)> syncCall = boost::bind(pe::syncShadowOwners<BodyTypeTuple>, - boost::ref(blocks->getBlockForest()), bodyStorageID, + std::function<void(void)> syncCall = std::bind(pe::syncShadowOwners<BodyTypeTuple>, + std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree *>(NULL), overlap, false); const auto myMat = pe::createMaterial("myMat", real_c(1), real_t(0), real_t(1), real_t(1), real_t(0), real_t(1), diff --git a/tests/pe_coupling/momentum_exchange_method/TaylorCouetteFlowMEM.cpp b/tests/pe_coupling/momentum_exchange_method/TaylorCouetteFlowMEM.cpp index e6d43a5d0..54cf9698e 100644 --- a/tests/pe_coupling/momentum_exchange_method/TaylorCouetteFlowMEM.cpp +++ b/tests/pe_coupling/momentum_exchange_method/TaylorCouetteFlowMEM.cpp @@ -57,6 +57,8 @@ #include "vtk/all.h" +#include <functional> + namespace taylor_coette_flow_mem { @@ -303,7 +305,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_t( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies const auto material = pe::createMaterial( "granular", real_t(1.2), real_t(0.25), real_t(0.4), real_t(0.4), real_t(0.35), real_t(1.39e11), real_t(5.18e7), real_t(1.07e2), real_t(1.07e2) ); diff --git a/tests/pe_coupling/partially_saturated_cells_method/DragForceSpherePSMRefinement.cpp b/tests/pe_coupling/partially_saturated_cells_method/DragForceSpherePSMRefinement.cpp index f29f7d650..d3b4fce22 100644 --- a/tests/pe_coupling/partially_saturated_cells_method/DragForceSpherePSMRefinement.cpp +++ b/tests/pe_coupling/partially_saturated_cells_method/DragForceSpherePSMRefinement.cpp @@ -67,6 +67,7 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> #include <vector> #include <iomanip> #include <iostream> @@ -185,7 +186,7 @@ static shared_ptr< StructuredBlockForest > createBlockStructure( const Setup & s // initialize SetupBlockForest = determine domain decomposition SetupBlockForest sforest; - sforest.addRefinementSelectionFunction( boost::bind( refinementSelection, _1, setup.levels, setup.radius * real_c(2), real_c(setup.length) ) ); + sforest.addRefinementSelectionFunction( std::bind( refinementSelection, std::placeholders::_1, setup.levels, setup.radius * real_c(2), real_c(setup.length) ) ); sforest.addWorkloadMemorySUIDAssignmentFunction( workloadAndMemoryAssignment ); sforest.init( AABB( real_c(0), real_c(0), real_c(0), real_c(setup.length), real_c(setup.length), real_c(setup.length) ), diff --git a/tests/pe_coupling/partially_saturated_cells_method/SegreSilberbergPSM.cpp b/tests/pe_coupling/partially_saturated_cells_method/SegreSilberbergPSM.cpp index 7e0ad3250..f0153483f 100644 --- a/tests/pe_coupling/partially_saturated_cells_method/SegreSilberbergPSM.cpp +++ b/tests/pe_coupling/partially_saturated_cells_method/SegreSilberbergPSM.cpp @@ -64,6 +64,8 @@ #include "field/vtk/all.h" #include "lbm/vtk/all.h" +#include <functional> + namespace segre_silberberg_psm { @@ -502,7 +504,7 @@ int main( int argc, char **argv ) // set up synchronization procedure const real_t overlap = real_c( 1.5 ) * dx; - std::function<void(void)> syncCall = boost::bind( pe::syncShadowOwners<BodyTypeTuple>, boost::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); + std::function<void(void)> syncCall = std::bind( pe::syncShadowOwners<BodyTypeTuple>, std::ref(blocks->getBlockForest()), bodyStorageID, static_cast<WcTimingTree*>(NULL), overlap, false ); // create pe bodies -- GitLab