diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 13fc46959a5b2342ea9c9263fec26d9e4d848cac..b694794c36ea1ba4e3b36fdb1d21f69716ab59fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -856,30 +856,86 @@ clang_4.0_mpionly: clang_4.0_hybrid: <<: *build_hybrid_definition image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:4.0 + only: + - triggers tags: - docker clang_4.0_serial_dbg: <<: *build_serial_dbg_definition image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:4.0 + only: + - triggers tags: - docker clang_4.0_mpionly_dbg: <<: *build_mpionly_dbg_definition image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:4.0 + only: + - triggers tags: - docker clang_4.0_hybrid_dbg: <<: *build_hybrid_dbg_definition image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:4.0 + only: + - triggers tags: - docker clang_4.0_hybrid_dbg_sp: <<: *build_hybrid_dbg_sp_definition image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:4.0 + only: + - triggers + tags: + - docker + +clang_5.0_serial: + <<: *build_serial_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + only: + - triggers + tags: + - docker + +clang_5.0_mpionly: + <<: *build_mpionly_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + only: + - triggers + tags: + - docker + +clang_5.0_hybrid: + <<: *build_hybrid_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + tags: + - docker + +clang_5.0_serial_dbg: + <<: *build_serial_dbg_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + tags: + - docker + +clang_5.0_mpionly_dbg: + <<: *build_mpionly_dbg_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + tags: + - docker + +clang_5.0_hybrid_dbg: + <<: *build_hybrid_dbg_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 + tags: + - docker + +clang_5.0_hybrid_dbg_sp: + <<: *build_hybrid_dbg_sp_definition + image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:5.0 tags: - docker diff --git a/src/pde/iterations/VCycles.impl.h b/src/pde/iterations/VCycles.impl.h index 107112bc0bae55cdee0441f5d768a0b2230903d8..8ad0833d4f9c4f1173f32a9dd4a2d011b6c8fa07 100644 --- a/src/pde/iterations/VCycles.impl.h +++ b/src/pde/iterations/VCycles.impl.h @@ -34,6 +34,8 @@ #include "pde/iterations/CGFixedStencilIteration.h" #include "pde/iterations/CGIteration.h" +#include <functional> + namespace walberla { namespace pde { @@ -85,9 +87,7 @@ VCycles< Stencil_T >::VCycles( shared_ptr< StructuredBlockForest > blocks, const // Set up fields for coarser levels for ( uint_t lvl = 1; lvl < numLvl; ++lvl ) { - auto getSize = [this,lvl] ( const shared_ptr< StructuredBlockStorage > & sbs, IBlock * const b ) { - return VCycles<Stencil_T>::getSizeForLevel(lvl, sbs, b); - }; + auto getSize = std::bind(VCycles<Stencil_T>::getSizeForLevel, lvl, std::placeholders::_1, std::placeholders::_2); uId_.push_back( field::addToStorage< PdeField_T >( blocks, "u_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); fId_.push_back( field::addToStorage< PdeField_T >( blocks, "f_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); rId_.push_back( field::addToStorage< PdeField_T >( blocks, "r_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); @@ -100,9 +100,7 @@ VCycles< Stencil_T >::VCycles( shared_ptr< StructuredBlockForest > blocks, const } // Set up fields for CG on coarsest level - auto getFineSize = [this,numLvl] ( const shared_ptr< StructuredBlockStorage > & sbs, IBlock * const b ) { - return VCycles<Stencil_T>::getSizeForLevel(numLvl-1, sbs, b); - }; + auto getFineSize = std::bind(VCycles<Stencil_T>::getSizeForLevel, numLvl-1, std::placeholders::_1, std::placeholders::_2); dId_ = field::addToStorage< PdeField_T >( blocks, "d", getFineSize, real_t(0), field::zyxf, uint_t(1) ); zId_ = field::addToStorage< PdeField_T >( blocks, "z", getFineSize, real_t(0), field::zyxf, uint_t(1) ); @@ -194,9 +192,7 @@ VCycles< Stencil_T >::VCycles( shared_ptr< StructuredBlockForest > blocks, const // Set up fields for coarser levels for ( uint_t lvl = 1; lvl < numLvl; ++lvl ) { - auto getSize = [this,lvl] ( const shared_ptr< StructuredBlockStorage > & sbs, IBlock * const b ) { - return VCycles<Stencil_T>::getSizeForLevel(lvl, sbs, b); - }; + auto getSize = std::bind(VCycles<Stencil_T>::getSizeForLevel, lvl, std::placeholders::_1, std::placeholders::_2); uId_.push_back( field::addToStorage< PdeField_T >( blocks, "u_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); fId_.push_back( field::addToStorage< PdeField_T >( blocks, "f_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); rId_.push_back( field::addToStorage< PdeField_T >( blocks, "r_"+boost::lexical_cast<std::string>(lvl), getSize, real_t(0), field::zyxf, uint_t(1) ) ); @@ -206,9 +202,7 @@ VCycles< Stencil_T >::VCycles( shared_ptr< StructuredBlockForest > blocks, const coarsenStencilFields(); // scaling by ( 1/h^2 )^lvl // Set up fields for CG on coarsest level - auto getFineSize = [this,numLvl] ( const shared_ptr< StructuredBlockStorage > & sbs, IBlock * const b ) { - return VCycles<Stencil_T>::getSizeForLevel(numLvl-1, sbs, b); - }; + auto getFineSize = std::bind(VCycles<Stencil_T>::getSizeForLevel, numLvl-1, std::placeholders::_1, std::placeholders::_2); dId_ = field::addToStorage< PdeField_T >( blocks, "d", getFineSize, real_t(0), field::zyxf, uint_t(1) ); zId_ = field::addToStorage< PdeField_T >( blocks, "z", getFineSize, real_t(0), field::zyxf, uint_t(1) );