diff --git a/tests/BasicLbmScenarios/TestBasicLbmScenarios.cpp b/tests/BasicLbmScenarios/TestBasicLbmScenarios.cpp index fd017d632fbb3463cb31d75b8b5f62d561491e93..2aca12901ad03f3dca908fd9ce0f2a2e2933987a 100644 --- a/tests/BasicLbmScenarios/TestBasicLbmScenarios.cpp +++ b/tests/BasicLbmScenarios/TestBasicLbmScenarios.cpp @@ -8,8 +8,8 @@ #include "vtk/all.h" #include <array> - #include <iostream> +#include <map> #include "SimDomain.hpp" @@ -17,7 +17,7 @@ namespace BasicLbmScenarios { using namespace walberla; -using TestFunction = std::function< void(mpi::Environment &) >; +using TestFunction = std::function< void(mpi::Environment&) >; /** * Fully periodic force-driven flow. @@ -62,7 +62,7 @@ void fullyPeriodic(mpi::Environment& env) */ void mirroredHalfChannel(mpi::Environment& env) { - size_t zCells { 64 }; + size_t zCells{ 64 }; /** * Need one more cell in z-direction for the free-slip boundary to be on the inner layer */ @@ -73,19 +73,17 @@ void mirroredHalfChannel(mpi::Environment& env) /* Hagen-Poiseuille-law in lattice units */ const real_t u_max{ 0.025 }; const real_t reynolds{ 10.0 }; - const real_t L_z{ real_c( 2 * zCells ) }; - const real_t radius { L_z / 2.0 }; - const real_t r_squared { radius * radius }; + const real_t L_z{ real_c(2 * zCells) }; + const real_t radius{ L_z / 2.0 }; + const real_t r_squared{ radius * radius }; const real_t lattice_viscosity{ L_z * u_max / reynolds }; - const real_t omega { 2. / (6. * lattice_viscosity + 1.) }; - const real_t acceleration { (u_max * 2.0 * lattice_viscosity) / r_squared }; + const real_t omega{ 2. / (6. * lattice_viscosity + 1.) }; + const real_t acceleration{ (u_max * 2.0 * lattice_viscosity) / r_squared }; const Vector3< real_t > force{ acceleration, 0., 0. }; auto velocityProfile = [&](real_t z) -> real_t { - return acceleration / (2.0 * lattice_viscosity) * ( - r_squared - z * z - ); + return acceleration / (2.0 * lattice_viscosity) * (r_squared - z * z); }; dom.forAllBlocks([&](IBlock& block) { @@ -106,10 +104,10 @@ void mirroredHalfChannel(mpi::Environment& env) dom.fields2device(); dom.initFromFields(force); - auto streamCollide = dom.streamCollideSweep(omega, force); - auto noSlipTop = dom.noSlipTop(); + auto streamCollide = dom.streamCollideSweep(omega, force); + auto noSlipTop = dom.noSlipTop(); auto freeSlipBottom = dom.freeSlipBottom(); - auto velOutput = field::createVTKOutput< VectorField_T >(dom.cpuFields.uId, *dom.blocks, "vel"); + auto velOutput = field::createVTKOutput< VectorField_T >(dom.cpuFields.uId, *dom.blocks, "vel"); for (uint_t t = 0; t < 50; ++t) { @@ -169,7 +167,7 @@ void freeSlipPipe(mpi::Environment& env) const real_t maxVelocity{ 0.02 }; const Vector3< real_t > force{ 0., 0., 0. }; - dom.forAllBlocks([&](IBlock & block) { + dom.forAllBlocks([&](IBlock& block) { FlagField_T& flagField = *block.getData< FlagField_T >(dom.cpuFields.flagFieldId); const uint8_t freeSlipFlag{ flagField.getOrRegisterFlag(freeSlipFlagUID) }; @@ -207,10 +205,8 @@ void freeSlipPipe(mpi::Environment& env) dom.fields2device(); dom.initFromFields(force); - gen::bc_sparse::FreeSlipIrregular freeSlip{ - dom.irregularFreeSlipFactory() - .fromFlagField< FlagField_T >(dom.cpuFields.flagFieldId, freeSlipFlagUID, fluidFlagUid) - }; + gen::bc_sparse::FreeSlipIrregular freeSlip{ dom.irregularFreeSlipFactory().fromFlagField< FlagField_T >( + dom.cpuFields.flagFieldId, freeSlipFlagUID, fluidFlagUid) }; auto streamCollide = dom.streamCollideSweep(1.0, force); @@ -218,19 +214,17 @@ void freeSlipPipe(mpi::Environment& env) for (uint_t i = 0; i < 10; ++i) { - dom.forAllBlocks([&](IBlock & block){ - streamCollide(&block); - }); + dom.forAllBlocks([&](IBlock& block) { streamCollide(&block); }); dom.syncGhostLayers(); dom.fields2host(); - dom.forAllBlocks([&](IBlock & block){ + dom.forAllBlocks([&](IBlock& block) { VectorField_T& velField = *block.getData< VectorField_T >(dom.cpuFields.uId); FlagField_T& flagField = *block.getData< FlagField_T >(dom.cpuFields.flagFieldId); uint8_t fluidFlag = flagField.getFlag(fluidFlagUid); - dom.forAllCells([&](Cell c){ + dom.forAllCells([&](Cell c) { if (flagField.isFlagSet(c, fluidFlag)) { WALBERLA_CHECK_FLOAT_EQUAL(velField.get(c, 0), maxVelocity); @@ -251,10 +245,10 @@ void freeSlipPipe(mpi::Environment& env) velOutput(); } -std::vector< std::tuple< std::string, TestFunction > > TESTS { - {"FullyPeriodic", fullyPeriodic}, - {"MirroredHalfChannel", mirroredHalfChannel}, - {"FreeSlipPipe", freeSlipPipe}, +std::map< std::string, TestFunction > TESTS{ + { "FullyPeriodic", fullyPeriodic }, + { "MirroredHalfChannel", mirroredHalfChannel }, + { "FreeSlipPipe", freeSlipPipe }, }; } // namespace BasicLbmScenarios @@ -263,17 +257,19 @@ int main(int argc, char** argv) { walberla::mpi::Environment env{ argc, argv }; - if( argc < 1 ){ + if (argc < 1) + { std::cerr << "No Test ID was specified." << std::endl; - return -1; + return -1; } - std::string testId { argv[1] }; + std::string testId{ argv[1] }; - for( auto& entry : BasicLbmScenarios::TESTS ){ - if( std::get< std::string >(entry) == testId ){ - std::get< BasicLbmScenarios::TestFunction >(entry)(env); - } + if (auto entry = BasicLbmScenarios::TESTS.find(testId); entry != BasicLbmScenarios::TESTS.end()) + { + std::get< BasicLbmScenarios::TestFunction >(*entry)(env); + return EXIT_SUCCESS; } - + + WALBERLA_ABORT("Invalid test ID: " << testId); }