diff --git a/lizard.txt b/lizard.txt
deleted file mode 100644
index 927eca599897274df6b26beab673c50248f58b7d..0000000000000000000000000000000000000000
--- a/lizard.txt
+++ /dev/null
@@ -1,185 +0,0 @@
-src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.cpp:90: warning: RayCastingDiscretizationStrategy::doDiscretize has 117 NLOC, 33 CCN, 1018 token, 4 PARAM, 138 length
-src/gpu/GridGenerator/TransientBCSetter/TransientBCSetter.cpp:259: warning: VTKReader::fillArrays has 110 NLOC, 23 CCN, 976 token, 2 PARAM, 132 length
-src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp:232: warning: MultipleGridBuilder::getStaggeredCoordinates has 61 NLOC, 24 CCN, 827 token, 6 PARAM, 114 length
-src/gpu/GridGenerator/grid/GridImp.cpp:364: warning: GridImp::fixRefinementIntoWall has 36 NLOC, 44 CCN, 630 token, 4 PARAM, 58 length
-src/gpu/GridGenerator/grid/GridImp.cpp:612: warning: GridImp::nodeInNextCellIs has 24 NLOC, 17 CCN, 346 token, 2 PARAM, 30 length
-src/gpu/GridGenerator/grid/GridImp.cpp:643: warning: GridImp::nodeInPreviousCellIs has 24 NLOC, 17 CCN, 346 token, 2 PARAM, 30 length
-src/gpu/GridGenerator/io/STLReaderWriter/STLReader.cpp:110: warning: STLReader::readASCIISTLWithPatches has 76 NLOC, 24 CCN, 599 token, 2 PARAM, 99 length
-src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp:162: warning: GridVTKWriter::writeInterpolationCellsToVTKXML has 84 NLOC, 16 CCN, 1035 token, 3 PARAM, 114 length
-src/gpu/core/LBM/Simulation.cpp:88: warning: Simulation::init has 127 NLOC, 24 CCN, 1214 token, 4 PARAM, 307 length
-src/gpu/core/LBM/Simulation.cpp:506: warning: Simulation::calculateTimestep has 151 NLOC, 31 CCN, 1391 token, 1 PARAM, 209 length
-src/gpu/core/LBM/Simulation.cpp:716: warning: Simulation::readAndWriteFiles has 77 NLOC, 21 CCN, 718 token, 1 PARAM, 258 length
-src/gpu/core/LBM/Simulation.cpp:975: warning: Simulation::~Simulation has 96 NLOC, 24 CCN, 748 token, 0 PARAM, 153 length
-src/gpu/core/GPU/GeometryUtils.h:19: warning: findNearestCellBSW has 18 NLOC, 16 CCN, 347 token, 11 PARAM, 23 length
-src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.cpp:329: warning: GridReader::initalValuesDomainDecompostion has 157 NLOC, 21 CCN, 2302 token, 1 PARAM, 212 length
-src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp:210: warning: GridGenerator::allocArrays_BoundaryValues has 177 NLOC, 23 CCN, 2395 token, 0 PARAM, 272 length
-src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp:483: warning: GridGenerator::initalValuesDomainDecompostion has 321 NLOC, 42 CCN, 4222 token, 0 PARAM, 429 length
-src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp:913: warning: GridGenerator::allocArrays_BoundaryQs has 135 NLOC, 21 CCN, 1339 token, 0 PARAM, 235 length
-src/gpu/core/Particles/Particles.cpp:58: warning: initParticles has 156 NLOC, 29 CCN, 2248 token, 1 PARAM, 239 length
-src/gpu/core/Calculation/Cp.cpp:224: warning: excludeGridInterfaceNodesForMirror has 55 NLOC, 16 CCN, 899 token, 2 PARAM, 59 length
-src/gpu/core/Calculation/Cp.cpp:373: warning: printGeoFile has 132 NLOC, 25 CCN, 1208 token, 2 PARAM, 166 length
-src/gpu/core/Parameter/Parameter.cpp:83: warning: Parameter::readConfigData has 175 NLOC, 82 CCN, 1974 token, 1 PARAM, 268 length
-src/gpu/core/FindInterface/FindInterface.cpp:3: warning: interpolation has 2320 NLOC, 271 CCN, 22540 token, 16 PARAM, 2893 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:170: warning: UnstructuredGridWriter::writeUnstrucuredGridLT has 86 NLOC, 20 CCN, 978 token, 3 PARAM, 129 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:307: warning: UnstructuredGridWriter::writeUnstrucuredGridLTwithTurbulentViscosity has 89 NLOC, 20 CCN, 1018 token, 3 PARAM, 115 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:430: warning: UnstructuredGridWriter::writeUnstrucuredGridLTwithTurbulentViscosityDebug has 122 NLOC, 20 CCN, 1566 token, 3 PARAM, 146 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:584: warning: UnstructuredGridWriter::writeUnstrucuredGridPM has 86 NLOC, 36 CCN, 1278 token, 3 PARAM, 128 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:720: warning: UnstructuredGridWriter::writeUnstrucuredGridLTConc has 89 NLOC, 20 CCN, 1030 token, 3 PARAM, 112 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:845: warning: UnstructuredGridWriter::writeUnstrucuredGridBig has 169 NLOC, 42 CCN, 2461 token, 4 PARAM, 246 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:1285: warning: UnstructuredGridWriter::writeUnstrucuredGridMedianLT has 86 NLOC, 20 CCN, 965 token, 3 PARAM, 109 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:1403: warning: UnstructuredGridWriter::writeUnstrucuredGridMedianLTConc has 88 NLOC, 20 CCN, 993 token, 3 PARAM, 108 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:1520: warning: UnstructuredGridWriter::writeUnstrucuredGridMedianLTwithDerivationsAndSqaredVelos has 115 NLOC, 20 CCN, 1669 token, 3 PARAM, 138 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:2209: warning: UnstructuredGridWriter::writeQs has 81 NLOC, 30 CCN, 1196 token, 3 PARAM, 96 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:2313: warning: UnstructuredGridWriter::writeQsInflow has 82 NLOC, 31 CCN, 1210 token, 3 PARAM, 97 length
-src/gpu/core/Output/UnstructuredGridWriter.hpp:2418: warning: UnstructuredGridWriter::writeQsPressure has 82 NLOC, 31 CCN, 1210 token, 3 PARAM, 97 length
-src/gpu/core/Output/FileWriter.cpp:305: warning: FileWriter::writeUnstructuredGridMedianLT has 79 NLOC, 23 CCN, 957 token, 3 PARAM, 101 length
-src/gpu/core/Output/InterfaceDebugWriter.hpp:719: warning: InterfaceDebugWriter::writeSendNodesStream has 79 NLOC, 16 CCN, 943 token, 2 PARAM, 96 length
-src/gpu/core/Output/VtkSGWriter.hpp:118: warning: VtkSGWriter::writeVTKsgSP has 119 NLOC, 21 CCN, 1071 token, 25 PARAM, 146 length
-src/gpu/core/Output/VtkSGWriter.hpp:272: warning: VtkSGWriter::writeVTKsgSPbin has 120 NLOC, 24 CCN, 1229 token, 26 PARAM, 138 length
-src/gpu/core/Output/VtkSGWriter.hpp:413: warning: VtkSGWriter::writeVTKmedSPbin has 120 NLOC, 24 CCN, 1252 token, 27 PARAM, 138 length
-src/gpu/core/Output/VtkSGWriter.hpp:554: warning: VtkSGWriter::writeVTKsgSPbinTEST has 77 NLOC, 17 CCN, 643 token, 1 PARAM, 85 length
-src/gpu/core/Output/VtkSGWriter.hpp:646: warning: VtkSGWriter::writeVTKsgThS has 109 NLOC, 20 CCN, 999 token, 25 PARAM, 125 length
-src/gpu/core/Output/VtkSGWriter.hpp:776: warning: VtkSGWriter::writeVTKsgSPbinAS has 125 NLOC, 30 CCN, 1207 token, 28 PARAM, 153 length
-src/gpu/core/Output/VtkSGWriter.hpp:932: warning: VtkSGWriter::writeVTKmedSPbinAS has 125 NLOC, 30 CCN, 1233 token, 29 PARAM, 155 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp:153: warning: MultiphaseScaleDistributionLBMKernel::calculate has 841 NLOC, 95 CCN, 15448 token, 1 PARAM, 4867 length
-src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterLBMKernel.cpp:147: warning: MultiphasePressureFilterLBMKernel::calculate has 1056 NLOC, 38 CCN, 15517 token, 1 PARAM, 1485 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseScratchCumulantLBMKernel.cpp:136: warning: MultiphaseScratchCumulantLBMKernel::calculate has 998 NLOC, 15 CCN, 15155 token, 1 PARAM, 2793 length
-src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterCompressibleAirLBMKernel.cpp:147: warning: MultiphasePressureFilterCompressibleAirLBMKernel::calculate has 954 NLOC, 37 CCN, 13902 token, 1 PARAM, 1337 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel.cpp:139: warning: MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate has 1183 NLOC, 48 CCN, 17408 token, 1 PARAM, 3150 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseSimpleVelocityBaseExternalPressureLBMKernel.cpp:145: warning: MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate has 1091 NLOC, 20 CCN, 16030 token, 1 PARAM, 2659 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseCumulantLBMKernel.cpp:83: warning: MultiphaseCumulantLBMKernel::calculate has 840 NLOC, 21 CCN, 11775 token, 1 PARAM, 1099 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseSharpInterfaceLBMKernel.cpp:153: warning: MultiphaseSharpInterfaceLBMKernel::calculate has 780 NLOC, 87 CCN, 13990 token, 1 PARAM, 1305 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsCumulantLBMKernel.cpp:137: warning: MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate has 1183 NLOC, 14 CCN, 17738 token, 1 PARAM, 2855 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsPressureFilterLBMKernel.cpp:151: warning: MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate has 1173 NLOC, 37 CCN, 17390 token, 1 PARAM, 3207 length
-src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.h:138: warning: MultiphaseScaleDistributionLBMKernel::isGas has 33 NLOC, 28 CCN, 282 token, 3 PARAM, 33 length
-src/cpu/MultiphaseFlow/SimulationObservers/WriteSharpInterfaceQuantitiesSimulationObserver.cpp:144: warning: WriteSharpInterfaceQuantitiesSimulationObserver::addDataMQ has 151 NLOC, 30 CCN, 2116 token, 1 PARAM, 226 length
-src/cpu/MultiphaseFlow/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp:147: warning: WriteMultiphaseQuantitiesSimulationObserver::addDataMQ has 235 NLOC, 37 CCN, 3976 token, 1 PARAM, 329 length
-src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBC.cpp:177: warning: MultiphaseVelocityBC::init has 82 NLOC, 30 CCN, 907 token, 2 PARAM, 91 length
-src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp:65: warning: MultiphaseSlipBCStrategy::applyBC has 64 NLOC, 29 CCN, 1117 token, 0 PARAM, 79 length
-src/cpu/LiggghtsCoupling/LBM/IBcumulantK17LBMKernel.cpp:99: warning: IBcumulantK17LBMKernel::calculate has 502 NLOC, 20 CCN, 7949 token, 1 PARAM, 809 length
-src/cpu/LiggghtsCoupling/LBM/IBsharpInterfaceLBMKernel.cpp:173: warning: IBsharpInterfaceLBMKernel::calculate has 919 NLOC, 97 CCN, 17677 token, 1 PARAM, 1367 length
-src/cpu/LiggghtsCoupling/SimulationObserver/LiggghtsCouplingSimulationObserver.cpp:92: warning: LiggghtsCouplingSimulationObserver::setSingleSphere3D has 64 NLOC, 21 CCN, 839 token, 5 PARAM, 112 length
-src/cpu/NonNewtonianFluids/LBM/RheologyK17LBMKernel.cpp:97: warning: RheologyK17LBMKernel::calculate has 613 NLOC, 16 CCN, 8545 token, 1 PARAM, 1037 length
-src/cpu/NonNewtonianFluids/LBM/ThixotropyLBMKernel.cpp:68: warning: ThixotropyLBMKernel::calculate has 1355 NLOC, 14 CCN, 25623 token, 1 PARAM, 1750 length
-src/cpu/NonNewtonianFluids/LBM/ThixotropyExpLBMKernel.cpp:68: warning: ThixotropyExpLBMKernel::calculate has 1353 NLOC, 14 CCN, 25585 token, 1 PARAM, 1756 length
-src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp:65: warning: ThixotropyVelocityWithDensityBCStrategy::applyBC has 50 NLOC, 16 CCN, 520 token, 0 PARAM, 67 length
-src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp:70: warning: ThixotropyNonReflectingOutflowBCStrategy::applyBC has 280 NLOC, 19 CCN, 7096 token, 0 PARAM, 305 length
-src/cpu/NonNewtonianFluids/Visitors/RheologyBoundaryConditionsBlockVisitor.cpp:61: warning: BoundaryConditionsBlockVisitor::visit has 63 NLOC, 16 CCN, 551 token, 2 PARAM, 75 length
-src/cpu/core/LBM/Interpolation/Interpolator.cpp:77: warning: Interpolator::findNeighborICell has 220 NLOC, 53 CCN, 1748 token, 12 PARAM, 255 length
-src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp:35: warning: IncompressibleCumulantWithSpongeLayerLBMKernel::initRelaxFactor has 74 NLOC, 16 CCN, 597 token, 4 PARAM, 82 length
-src/cpu/core/LBM/D3Q27System.h:246: warning: D3Q27System::getDirectionString has 60 NLOC, 27 CCN, 182 token, 1 PARAM, 61 length
-src/cpu/core/LBM/D3Q27System.h:308: warning: D3Q27System::setNeighborCoordinatesForDirection has 114 NLOC, 27 CCN, 337 token, 4 PARAM, 115 length
-src/cpu/core/LBM/D3Q27System.h:551: warning: D3Q27System::getCompFeqForDirection has 93 NLOC, 28 CCN, 1594 token, 5 PARAM, 94 length
-src/cpu/core/LBM/D3Q27System.h:695: warning: D3Q27System::getIncompFeqForDirection has 84 NLOC, 28 CCN, 1472 token, 5 PARAM, 86 length
-src/cpu/core/LBM/D3Q27System.h:826: warning: D3Q27System::getBoundaryVelocityForDirection has 61 NLOC, 27 CCN, 676 token, 4 PARAM, 62 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:150: warning: CoarseToFineVectorConnector<VectorTransmitter>::CoarseToFineVectorConnector has 23 NLOC, 27 CCN, 227 token, 11 PARAM, 24 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:182: warning: CoarseToFineVectorConnector<VectorTransmitter>::isRemoteConnector has 11 NLOC, 16 CCN, 93 token, 0 PARAM, 11 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:301: warning: CoarseToFineVectorConnector<VectorTransmitter>::init has 80 NLOC, 35 CCN, 526 token, 0 PARAM, 87 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:390: warning: CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors has 311 NLOC, 27 CCN, 3140 token, 0 PARAM, 406 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:896: warning: CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors has 592 NLOC, 27 CCN, 6167 token, 0 PARAM, 706 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:1634: warning: CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax has 120 NLOC, 73 CCN, 933 token, 6 PARAM, 139 length
-src/cpu/core/Connectors/CoarseToFineVectorConnector.h:1775: warning: CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax has 121 NLOC, 73 CCN, 935 token, 7 PARAM, 138 length
-src/cpu/core/Connectors/FullDirectConnector.cpp:60: warning: FullDirectConnector::exchangeData has 115 NLOC, 51 CCN, 1071 token, 0 PARAM, 129 length
-src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp:64: warning: ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData has 234 NLOC, 51 CCN, 2628 token, 0 PARAM, 256 length
-src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp:51: warning: ThreeDistributionsDoubleGhostLayerFullVectorConnector::init has 42 NLOC, 28 CCN, 384 token, 0 PARAM, 50 length
-src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp:108: warning: ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData has 230 NLOC, 51 CCN, 2353 token, 0 PARAM, 258 length
-src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp:373: warning: ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData has 230 NLOC, 51 CCN, 2353 token, 0 PARAM, 248 length
-src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.cpp:51: warning: TwoDistributionsFullVectorConnector::init has 40 NLOC, 28 CCN, 322 token, 0 PARAM, 48 length
-src/cpu/core/Connectors/OneDistributionFullVectorConnector.cpp:13: warning: OneDistributionFullVectorConnector::init has 55 NLOC, 28 CCN, 294 token, 0 PARAM, 63 length
-src/cpu/core/Connectors/FullVectorConnector.cpp:60: warning: FullVectorConnector::fillData has 177 NLOC, 62 CCN, 979 token, 0 PARAM, 189 length
-src/cpu/core/Connectors/FullVectorConnector.cpp:256: warning: FullVectorConnector::distributeData has 175 NLOC, 62 CCN, 925 token, 0 PARAM, 185 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:140: warning: FineToCoarseVectorConnector<VectorTransmitter>::FineToCoarseVectorConnector has 22 NLOC, 27 CCN, 187 token, 6 PARAM, 25 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:227: warning: FineToCoarseVectorConnector<VectorTransmitter>::init has 57 NLOC, 27 CCN, 373 token, 0 PARAM, 61 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:290: warning: FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors has 422 NLOC, 28 CCN, 3315 token, 0 PARAM, 500 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:856: warning: FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors has 233 NLOC, 27 CCN, 1623 token, 0 PARAM, 262 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:1164: warning: FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax has 120 NLOC, 73 CCN, 933 token, 6 PARAM, 140 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:1306: warning: FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax has 121 NLOC, 73 CCN, 935 token, 7 PARAM, 139 length
-src/cpu/core/Connectors/FineToCoarseVectorConnector.h:1458: warning: FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins has 74 NLOC, 37 CCN, 312 token, 6 PARAM, 101 length
-src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp:62: warning: TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData has 234 NLOC, 51 CCN, 2628 token, 0 PARAM, 256 length
-src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp:51: warning: TwoDistributionsDoubleGhostLayerFullVectorConnector::init has 41 NLOC, 28 CCN, 358 token, 0 PARAM, 49 length
-src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp:107: warning: TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData has 230 NLOC, 51 CCN, 2353 token, 0 PARAM, 258 length
-src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp:372: warning: TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData has 230 NLOC, 51 CCN, 2353 token, 0 PARAM, 248 length
-src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.cpp:51: warning: ThreeDistributionsFullVectorConnector::init has 41 NLOC, 28 CCN, 348 token, 0 PARAM, 49 length
-src/cpu/core/Interactors/D3Q27Interactor.cpp:286: warning: D3Q27Interactor::setDifferencesToGbObject3D has 233 NLOC, 55 CCN, 2007 token, 1 PARAM, 289 length
-src/cpu/core/Interactors/D3Q27Interactor.cpp:576: warning: D3Q27Interactor::addQsLineSet has 180 NLOC, 35 CCN, 1190 token, 2 PARAM, 192 length
-src/cpu/core/Interactors/D3Q27Interactor.cpp:769: warning: D3Q27Interactor::getQsLineSet has 213 NLOC, 71 CCN, 1422 token, 0 PARAM, 223 length
-src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp:123: warning: D3Q27TriFaceMeshInteractor::setQs has 290 NLOC, 46 CCN, 3345 token, 1 PARAM, 454 length
-src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp:592: warning: D3Q27TriFaceMeshInteractor::initInteractor2 has 389 NLOC, 62 CCN, 4303 token, 1 PARAM, 719 length
-src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp:1312: warning: D3Q27TriFaceMeshInteractor::refineBlockGridToLevel has 129 NLOC, 26 CCN, 1733 token, 3 PARAM, 181 length
-src/cpu/core/Interactors/Interactor3D.cpp:107: warning: Interactor3D::isBlockOutsideGeoObject has 33 NLOC, 21 CCN, 406 token, 7 PARAM, 39 length
-src/cpu/core/Interactors/Interactor3D.cpp:147: warning: Interactor3D::isBlockInsideGeoObject has 33 NLOC, 21 CCN, 405 token, 7 PARAM, 39 length
-src/cpu/core/Interactors/Interactor3D.cpp:187: warning: Interactor3D::isBlockCuttingGeoObject has 33 NLOC, 21 CCN, 405 token, 7 PARAM, 39 length
-src/cpu/core/Parallel/SimpleGeometricPartitioner.h:21: warning: SimpleGeometricPartitioner::createDimensions has 59 NLOC, 20 CCN, 414 token, 4 PARAM, 69 length
-src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp:92: warning: InSituCatalystSimulationObserver::addData has 63 NLOC, 16 CCN, 655 token, 1 PARAM, 76 length
-src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp:209: warning: InSituCatalystSimulationObserver::addVTKGridData has 97 NLOC, 21 CCN, 1115 token, 1 PARAM, 126 length
-src/cpu/core/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp:855: warning: MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::write4DArray.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::write4DArray.MPIIOMigrationBESimulationObserver::write3DArray.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::write4DArray.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::writeDataSet.MPIIOMigrationBESimulationObserver::write4DArray.MPIIOMigrationBESimulationObserver::write3DArray.MPIIOMigrationBESimulationObserver::writeBoundaryConds.MPIIOMigrationBESimulationObserver::blocksExchange has 110 NLOC, 21 CCN, 939 token, 6 PARAM, 132 length
-src/cpu/core/SimulationObservers/InSituVTKSimulationObserver.cpp:125: warning: InSituVTKSimulationObserver::addData has 101 NLOC, 21 CCN, 1188 token, 1 PARAM, 136 length
-src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp:111: warning: WriteMQFromSelectionSimulationObserver::addDataMQ has 74 NLOC, 16 CCN, 756 token, 1 PARAM, 103 length
-src/cpu/core/SimulationObservers/QCriterionSimulationObserver.cpp:205: warning: QCriterionSimulationObserver::getNeighborVelocities has 103 NLOC, 30 CCN, 1174 token, 9 PARAM, 143 length
-src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp:144: warning: WriteMacroscopicQuantitiesSimulationObserver::addDataMQ has 79 NLOC, 18 CCN, 1004 token, 1 PARAM, 135 length
-src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.cpp:43: warning: PressureCoefficientSimulationObserver::calculateRho has 68 NLOC, 16 CCN, 642 token, 0 PARAM, 79 length
-src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.cpp:89: warning: LineTimeSeriesSimulationObserver::collectData has 111 NLOC, 26 CCN, 957 token, 0 PARAM, 116 length
-src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp:144: warning: WriteMacroscopicQuantitiesPlusMassSimulationObserver::addDataMQ has 79 NLOC, 19 CCN, 1016 token, 1 PARAM, 135 length
-src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp:193: warning: TimeAveragedValuesSimulationObserver::addData has 126 NLOC, 18 CCN, 1543 token, 1 PARAM, 161 length
-src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp:579: warning: TimeAveragedValuesSimulationObserver::calculateAverageValues.TimeAveragedValuesSimulationObserver::planarAverage has 97 NLOC, 19 CCN, 805 token, 1 PARAM, 122 length
-src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp:413: warning: ShearStressSimulationObserver::findPlane has 399 NLOC, 122 CCN, 3322 token, 10 PARAM, 417 length
-src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp:845: warning: ShearStressSimulationObserver::initDistance has 85 NLOC, 24 CCN, 739 token, 0 PARAM, 109 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:199: warning: D3Q27EsoTwist3DSplittedVector::setPostCollisionDistributionForDirection has 59 NLOC, 28 CCN, 1083 token, 5 PARAM, 60 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:260: warning: D3Q27EsoTwist3DSplittedVector::setPostCollisionDistributionForDirection has 90 NLOC, 28 CCN, 772 token, 5 PARAM, 91 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:352: warning: D3Q27EsoTwist3DSplittedVector::setPreCollisionDistributionForDirection has 59 NLOC, 28 CCN, 1083 token, 5 PARAM, 60 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:413: warning: D3Q27EsoTwist3DSplittedVector::setPreCollisionDistributionForDirection has 90 NLOC, 28 CCN, 774 token, 5 PARAM, 91 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:505: warning: D3Q27EsoTwist3DSplittedVector::getPreCollisionDistributionForDirection has 62 NLOC, 28 CCN, 688 token, 4 PARAM, 63 length
-src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp:569: warning: D3Q27EsoTwist3DSplittedVector::getDistributionInvForDirection has 62 NLOC, 28 CCN, 688 token, 4 PARAM, 63 length
-src/cpu/core/Simulation/Simulation.cpp:128: warning: Simulation::initRemoteConnectors has 50 NLOC, 16 CCN, 435 token, 0 PARAM, 67 length
-src/cpu/core/Simulation/Simulation.cpp:245: warning: Simulation::run has 59 NLOC, 20 CCN, 452 token, 0 PARAM, 110 length
-src/cpu/core/Simulation/Grid3D.cpp:181: warning: Grid3D::getBlock has 29 NLOC, 21 CCN, 316 token, 4 PARAM, 32 length
-src/cpu/core/Simulation/Grid3D.cpp:1103: warning: Grid3D::getNeighborBlocksForDirection has 87 NLOC, 27 CCN, 641 token, 7 PARAM, 88 length
-src/cpu/core/Simulation/Grid3D.cpp:1209: warning: Grid3D::getSubBlocksZero has 50 NLOC, 17 CCN, 510 token, 6 PARAM, 58 length
-src/cpu/core/Simulation/Grid3D.cpp:1268: warning: Grid3D::getNeighborBlocksForDirectionWithREST has 90 NLOC, 28 CCN, 663 token, 7 PARAM, 91 length
-src/cpu/core/BoundaryConditions/BoundaryConditions.h:194: warning: BoundaryConditions::getBoundaryVelocity has 62 NLOC, 27 CCN, 661 token, 1 PARAM, 63 length
-src/cpu/core/BoundaryConditions/VelocityBC.cpp:201: warning: VelocityBC::init has 77 NLOC, 30 CCN, 901 token, 2 PARAM, 85 length
-src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.cpp:59: warning: SimpleSlipBCStrategy::applyBC has 56 NLOC, 29 CCN, 928 token, 0 PARAM, 62 length
-src/cpu/core/BoundaryConditions/SlipBCStrategy.cpp:21: warning: SlipBCStrategy::applyBC has 57 NLOC, 29 CCN, 1020 token, 0 PARAM, 64 length
-src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp:73: warning: SetInterpolationConnectorsBlockVisitor::setInterpolationConnectors has 221 NLOC, 101 CCN, 2901 token, 2 PARAM, 264 length
-src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp:338: warning: SetInterpolationConnectorsBlockVisitor::setInterpolationConnectors has 67 NLOC, 22 CCN, 678 token, 6 PARAM, 72 length
-src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.cpp:16: warning: SetUndefinedNodesBlockVisitor::visit has 630 NLOC, 119 CCN, 4504 token, 2 PARAM, 653 length
-src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.cpp:12: warning: SetInterpolationDirsBlockVisitor::visit has 128 NLOC, 46 CCN, 822 token, 2 PARAM, 133 length
-src/cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp:26: warning: InitDistributionsWithInterpolationGridVisitor::visit has 57 NLOC, 19 CCN, 479 token, 1 PARAM, 69 length
-src/basics/utilities/Vector3D.cpp:274: warning: Vector3D::GetBarycentrics has 154 NLOC, 25 CCN, 1462 token, 5 PARAM, 186 length
-src/basics/writer/WbWriterAvsASCII.cpp:219: warning: WbWriterAvsASCII::writeQuadsWithNodeData has 104 NLOC, 17 CCN, 1162 token, 5 PARAM, 131 length
-src/basics/writer/WbWriterAvsASCII.cpp:351: warning: WbWriterAvsASCII::writeQuadsWithCellData has 106 NLOC, 17 CCN, 1166 token, 5 PARAM, 134 length
-src/basics/writer/WbWriterAvsASCII.cpp:486: warning: WbWriterAvsASCII::writeQuadsWithNodeAndCellData has 140 NLOC, 25 CCN, 1567 token, 7 PARAM, 181 length
-src/basics/writer/WbWriterAvsASCII.cpp:741: warning: WbWriterAvsASCII::writeTrianglesWithNodeData has 105 NLOC, 17 CCN, 1146 token, 5 PARAM, 132 length
-src/basics/writer/WbWriterAvsASCII.cpp:874: warning: WbWriterAvsASCII::writeOctsWithCellData has 112 NLOC, 17 CCN, 1286 token, 5 PARAM, 140 length
-src/basics/writer/WbWriterAvsASCII.cpp:1015: warning: WbWriterAvsASCII::writeOctsWithNodeData has 116 NLOC, 19 CCN, 1334 token, 5 PARAM, 144 length
-src/basics/writer/WbWriterVtkBinary.cpp:373: warning: WbWriterVtkBinary::writeQuadsWithNodeAndCellData has 105 NLOC, 19 CCN, 1147 token, 7 PARAM, 128 length
-src/basics/writer/WbWriterAvsBinary.cpp:389: warning: WbWriterAvsBinary::writeTrianglesWithNodeData has 105 NLOC, 17 CCN, 1144 token, 5 PARAM, 132 length
-src/basics/writer/WbWriterAvsBinary.cpp:522: warning: WbWriterAvsBinary::writeQuadsWithNodeData has 105 NLOC, 17 CCN, 1162 token, 5 PARAM, 132 length
-src/basics/writer/WbWriterAvsBinary.cpp:655: warning: WbWriterAvsBinary::writeQuadsWithCellData has 105 NLOC, 17 CCN, 1164 token, 5 PARAM, 133 length
-src/basics/writer/WbWriterAvsBinary.cpp:789: warning: WbWriterAvsBinary::writeQuadsWithNodeAndCellData has 139 NLOC, 25 CCN, 1565 token, 7 PARAM, 180 length
-src/basics/writer/WbWriterAvsBinary.cpp:970: warning: WbWriterAvsBinary::writeOctsWithCellData has 112 NLOC, 17 CCN, 1284 token, 5 PARAM, 140 length
-src/basics/writer/WbWriterAvsBinary.cpp:1111: warning: WbWriterAvsBinary::writeOctsWithNodeData has 116 NLOC, 19 CCN, 1332 token, 5 PARAM, 144 length
-src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h:162: warning: Kd::SAHSplit::findPossibleSplitCandidates has 37 NLOC, 18 CCN, 440 token, 3 PARAM, 61 length
-src/basics/geometry3d/GbObject3D.cpp:59: warning: GbObject3D::isCellCuttingGbObject3D has 15 NLOC, 17 CCN, 232 token, 6 PARAM, 15 length
-src/basics/geometry3d/GbTriangularMesh3D.cpp:156: warning: GbTriangularMesh3D::deleteRedundantNodes has 78 NLOC, 17 CCN, 740 token, 0 PARAM, 85 length
-src/basics/geometry3d/GbTriangularMesh3D.cpp:1339: warning: GbTriangularMesh3D::InTri2D has 21 NLOC, 34 CCN, 368 token, 2 PARAM, 30 length
-src/basics/geometry3d/GbTriangularMesh3D.cpp:1426: warning: GbTriangularMesh3D::SegTriCross has 27 NLOC, 25 CCN, 358 token, 3 PARAM, 42 length
-src/basics/geometry3d/GbMeshTools3D.h:70: warning: GbMeshTools3D::triBoxOverlap has 159 NLOC, 35 CCN, 1686 token, 3 PARAM, 245 length
-src/basics/geometry3d/GbTriFaceMesh3D.cpp:150: warning: GbTriFaceMesh3D::deleteRedundantNodes has 69 NLOC, 18 CCN, 589 token, 0 PARAM, 127 length
-src/basics/geometry3d/GbHalfSpaceKrischan3D.cpp:100: warning: GbHalfSpaceKrischan3D::getCellVolumeInsideGbObject3D has 117 NLOC, 27 CCN, 1378 token, 6 PARAM, 203 length
-src/basics/geometry3d/GbVoxelMatrix3D.cpp:173: warning: GbVoxelMatrix3D::getIntersectionRaytraceFactor has 36 NLOC, 26 CCN, 533 token, 6 PARAM, 43 length
-src/basics/geometry3d/GbVoxelMatrix3D.cpp:722: warning: GbVoxelMatrix3D::rotateAroundY has 44 NLOC, 20 CCN, 411 token, 1 PARAM, 63 length
-src/basics/geometry3d/GbSystem3D.cpp:47: warning: GbSystem3D::calculateIntersectionPoint3D has 55 NLOC, 22 CCN, 634 token, 4 PARAM, 60 length
-src/basics/geometry3d/GbSystem3D.cpp:109: warning: GbSystem3D::hasIntersectionPoint3D has 55 NLOC, 22 CCN, 626 token, 4 PARAM, 59 length
-src/basics/geometry3d/GbSystem3D.cpp:202: warning: GbSystem3D::createClipLine3D has 119 NLOC, 22 CCN, 1168 token, 8 PARAM, 147 length
-src/basics/geometry3d/GbSystem3D.cpp:687: warning: GbSystem3D::clipPolygon3D has 256 NLOC, 53 CCN, 3060 token, 7 PARAM, 292 length
-src/basics/geometry3d/GbSystem3D.cpp:980: warning: GbSystem3D::clipRectangle3D has 50 NLOC, 16 CCN, 388 token, 8 PARAM, 53 length
-src/basics/geometry3d/GbVector3D.cpp:308: warning: GbVector3D::GetBarycentrics has 156 NLOC, 25 CCN, 1574 token, 5 PARAM, 181 length
-src/basics/geometry3d/GbSphere3D.cpp:760: warning: GbSphere3D::getCellVolumeInsideGbObject3DHelperFunction has 113 NLOC, 27 CCN, 1309 token, 6 PARAM, 155 length
-src/basics/geometry3d/GbCylinder3D.cpp:114: warning: GbCylinder3D::calculateValues has 47 NLOC, 17 CCN, 407 token, 0 PARAM, 52 length
-src/basics/geometry3d/GbCylinder3D.cpp:252: warning: GbCylinder3D::isPointInGbObject3D has 23 NLOC, 21 CCN, 278 token, 4 PARAM, 31 length
-src/basics/geometry3d/GbCylinder3D.cpp:325: warning: GbCylinder3D::isCellInsideOrCuttingGbObject3D has 59 NLOC, 31 CCN, 657 token, 6 PARAM, 78 length
-src/basics/geometry3d/GbCylinder3D.cpp:404: warning: GbCylinder3D::createClippedLine3D has 250 NLOC, 48 CCN, 3201 token, 2 PARAM, 301 length
-src/basics/geometry3d/GbCylinder3D.cpp:1155: warning: GbCylinder3D::getIntersectionRaytraceFactor has 138 NLOC, 54 CCN, 1319 token, 6 PARAM, 189 length
-src/basics/geometry3d/GbTriangle3D.cpp:645: warning: GbTriangle3D::enclosesPoint2D has 79 NLOC, 30 CCN, 640 token, 2 PARAM, 88 length
-src/basics/geometry3d/GbTriangle3D.cpp:965: warning: GbTriangle3D::getDistanceFromPoint has 171 NLOC, 26 CCN, 1453 token, 1 PARAM, 184 length
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp
deleted file mode 100644
index 066f59c00d3dbfc20271b808ffa196037be0bb56..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp
+++ /dev/null
@@ -1,340 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file NonReflectingInflowBCStrategy.cpp
-//! \ingroup BoundarConditions
-//! \author Hussein Alihussein
-//=======================================================================================
-#include "NonReflectingInflowBCStrategy.h"
-
-#include "BoundaryConditions.h"
-#include "D3Q27System.h"
-#include "DistributionArray3D.h"
-
-NonReflectingInflowBCStrategy::NonReflectingInflowBCStrategy()
-{
-    BCStrategy::preCollision = true;
-}
-//////////////////////////////////////////////////////////////////////////
-NonReflectingInflowBCStrategy::~NonReflectingInflowBCStrategy() = default;
-//////////////////////////////////////////////////////////////////////////
-SPtr<BCStrategy> NonReflectingInflowBCStrategy::clone()
-{
-    SPtr<BCStrategy> bc(new NonReflectingInflowBCStrategy());
-    return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingInflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions)
-{
-    this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingInflowBCStrategy::applyBC()
-{
-    using namespace vf::lbm::dir;
-    using namespace D3Q27System;
- //   using namespace UbMath;
-    using namespace vf::basics::constant;
-
-    LBMReal f[ENDF + 1];
-    LBMReal ftemp[ENDF + 1];
-
-    int nx1       = x1;
-    int nx2       = x2;
-    int nx3       = x3;
-    int direction = -1;
-
-    // flag points in direction of fluid
-    if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) {
-        nx1 += 1;
-        direction = DIR_P00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) {
-        nx1 -= 1;
-        direction = DIR_M00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) {
-        nx2 += 1;
-        direction = DIR_0P0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) {
-        nx2 -= 1;
-        direction = DIR_0M0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) {
-        nx3 += 1;
-        direction = DIR_00P;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) {
-        nx3 -= 1;
-        direction = DIR_00M;
-    } else
-        UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-    distributions->getDistribution(f, x1, x2, x3);
-    distributions->getDistribution(ftemp, nx1, nx2, nx3);
-
-    LBMReal rho, vx1, vx2, vx3;
-    calcMacrosFct(f, rho, vx1, vx2, vx3);
-    //vx1                  = 0.;
-    LBMReal BCVeloWeight = c1o2;
-    // LBMReal velocity     = 0.004814077025232405; 
-     // LBMReal velocity     = 0.00057735;
-    //LBMReal velocity = 0.04; 
-      // LBMReal velocity = 0.01; 
-     // LBMReal velocity = 1./112.; 
-    // LBMReal velocity = 1./126.; 
-     LBMReal velocity = c1o100/2;
-     // LBMReal velocity = 0.005; 
-    //LBMReal delf         =(-velocity+vx1)*0.5 ;
-    LBMReal delf; 
-
-    switch (direction) {
-        case DIR_P00:
-            delf = (-velocity + vx1) * BCVeloWeight; 
-            // delf = (-velocity ) * BCVeloWeight;
-            f[DIR_P00]   = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00];
-            f[DIR_PP0]  = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0];
-            f[DIR_PM0]  = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0];
-            f[DIR_P0P]  = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P];
-            f[DIR_P0M]  = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM];
-            //f[DIR_P00] = (ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P00]) *
-            //           (1 - BCVeloWeight) +
-            //       (ftemp[DIR_M00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M00] +
-            //       velocity*(6)*WEIGTH[DIR_P00]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M00])*/) *
-            //           (BCVeloWeight)  ;
-            //f[DIR_PP0] = (ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PP0]) *
-            //            (1 - BCVeloWeight) +
-            //        (ftemp[DIR_MM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MM0] +
-            //         velocity * (6) * WEIGTH[DIR_PP0] /*bcPtr->getBoundaryVelocity(INVDIR[DIR_MM0])*/) *
-            //            (BCVeloWeight); 
-            //f[DIR_PM0] = (ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PM0]) *
-            //            (1 - BCVeloWeight) +
-            //        (ftemp[DIR_MP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MP0] +
-            //        velocity*(6)*WEIGTH[DIR_PP0]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_MP0])*/) *
-            //            (BCVeloWeight); 
-            //f[DIR_P0P] = (ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0P]) *
-            //            (1 - BCVeloWeight) +
-            //        (ftemp[DIR_M0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M0M] +
-            //        velocity*(6)*WEIGTH[DIR_P0P]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M0M])*/) *
-            //            (BCVeloWeight); 
-            //f[DIR_P0M] = (ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0M])*
-            //            (1 - BCVeloWeight) +
-            //        (ftemp[DIR_M0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M0P] +
-            //        velocity*(6)*WEIGTH[DIR_P0M]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M0P])*/) *
-            //            (BCVeloWeight); 
-            //f[DIR_PPP] = (ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPP])*
-            //            (1 - BCVeloWeight) +
-            //        (ftemp[DIR_MMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MMM] +
-            //     velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MMM])*/) *
-            //            (BCVeloWeight); 
-            //f[DIR_PMP] = (ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMP]) *
-            //             (1 - BCVeloWeight) +
-            //         (ftemp[DIR_MPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MPM] +
-            //     velocity * (6) * WEIGTH[DIR_PPP] /*bcPtr->getBoundaryVelocity(INVDIR[DIR_MPM])*/) *
-            //             (BCVeloWeight); 
-            //f[DIR_PPM] = (ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPM]) *
-            //             (1 - BCVeloWeight) +
-            //         (ftemp[DIR_MMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MMP] +
-            //     velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MMP])*/) *
-            //             (BCVeloWeight); 
-            //f[DIR_PMM] = (ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMM]) *
-            //             (1 - BCVeloWeight) +
-            //         (ftemp[DIR_MPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MPP] +
-            //     velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MPP])*/) *
-            //             (BCVeloWeight); 
-
-            distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            break;
-        case DIR_M00:
-            delf = (-velocity - vx1) * BCVeloWeight;
-            f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00] -
-                   delf * WEIGTH[DIR_M00];
-            f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0] -
-                    delf * WEIGTH[DIR_MP0];
-            f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0] -
-                    delf * WEIGTH[DIR_MM0];
-            f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P] -
-                    delf * WEIGTH[DIR_M0P];
-            f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M] -
-                    delf * WEIGTH[DIR_M0M];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP] -
-                     delf * WEIGTH[DIR_MPP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP] -
-                     delf * WEIGTH[DIR_MMP];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM] -
-                     delf * WEIGTH[DIR_MPM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM] -
-                     delf * WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_0P0:
-            delf = (-velocity + vx2) * BCVeloWeight;
-            f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0] -
-                   delf * WEIGTH[DIR_0P0];
-            f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0] -
-                    delf * WEIGTH[DIR_PP0];
-            f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0] -
-                    delf * WEIGTH[DIR_MP0];
-            f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP] -
-                    delf * WEIGTH[DIR_0PP];
-            f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM] -
-                    delf * WEIGTH[DIR_0PM];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP] -
-                     delf * WEIGTH[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP] -
-                     delf * WEIGTH[DIR_MPP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM] -
-                     delf * WEIGTH[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM] -
-                     delf * WEIGTH[DIR_MPM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            break;
-        case DIR_0M0:
-            delf = (-velocity - vx2) * BCVeloWeight;
-            f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0] -
-                   delf * WEIGTH[DIR_0M0];
-            f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0] -
-                    delf * WEIGTH[DIR_PM0];
-            f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0] -
-                    delf * WEIGTH[DIR_MM0];
-            f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP] -
-                    delf * WEIGTH[DIR_0MP];
-            f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM] -
-                    delf * WEIGTH[DIR_0MM];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP] -
-                     delf * WEIGTH[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP] -
-                     delf * WEIGTH[DIR_MMP];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM] -
-                     delf * WEIGTH[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM] -
-                     delf * WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_00P:
-            delf = (-velocity + vx3) * BCVeloWeight;
-            f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P] -
-                   delf * WEIGTH[DIR_00P];
-            f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P] -
-                    delf * WEIGTH[DIR_P0P];
-            f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P] -
-                    delf * WEIGTH[DIR_M0P];
-            f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP] -
-                    delf * WEIGTH[DIR_0PP];
-            f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP] -
-                    delf * WEIGTH[DIR_0MP];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP] -
-                     delf * WEIGTH[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP] -
-                     delf * WEIGTH[DIR_MPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP] -
-                     delf * WEIGTH[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP] -
-                     delf * WEIGTH[DIR_MMP];
-
-            distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            break;
-        case DIR_00M:
-            delf = (-velocity - vx3) * BCVeloWeight;
-            f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M] -
-                   delf * WEIGTH[DIR_00M];
-            f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M] -
-                    delf * WEIGTH[DIR_P0M];
-            f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M] -
-                    delf * WEIGTH[DIR_M0M];
-            f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM] -
-                    delf * WEIGTH[DIR_0PM];
-            f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM] -
-                    delf * WEIGTH[DIR_0MM];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM] -
-                     delf * WEIGTH[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM] -
-                     delf * WEIGTH[DIR_MPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM] -
-                     delf * WEIGTH[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM] -
-                     delf * WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        default:
-            UB_THROW(
-                UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!"));
-    }
-}
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp
deleted file mode 100644
index 637787dc0f9dcac4a90d3f76cac8316effd9544f..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file NonReflectingOutflowBCStrategy.cpp
-//! \ingroup BoundarConditions
-//! \author Konstantin Kutscher
-//=======================================================================================
-#include "NonReflectingOutflowBCStrategy.h"
-
-#include "BoundaryConditions.h"
-#include "D3Q27System.h"
-#include "DistributionArray3D.h"
-
-NonReflectingOutflowBCStrategy::NonReflectingOutflowBCStrategy()
-{
-    BCStrategy::preCollision = true;
-}
-//////////////////////////////////////////////////////////////////////////
-NonReflectingOutflowBCStrategy::~NonReflectingOutflowBCStrategy() = default;
-//////////////////////////////////////////////////////////////////////////
-SPtr<BCStrategy> NonReflectingOutflowBCStrategy::clone()
-{
-    SPtr<BCStrategy> bc(new NonReflectingOutflowBCStrategy());
-    return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingOutflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions)
-{
-    this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingOutflowBCStrategy::applyBC()
-{
-    using namespace vf::lbm::dir;
-
-    using namespace D3Q27System;
- //   using namespace UbMath;
-    using namespace vf::basics::constant;
-
-    real f[ENDF + 1];
-    real ftemp[ENDF + 1];
-
-    int nx1       = x1;
-    int nx2       = x2;
-    int nx3       = x3;
-    int direction = -1;
-
-    // flag points in direction of fluid
-    if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) {
-        nx1 += 1;
-        direction = DIR_P00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) {
-        nx1 -= 1;
-        direction = DIR_M00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) {
-        nx2 += 1;
-        direction = DIR_0P0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) {
-        nx2 -= 1;
-        direction = DIR_0M0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) {
-        nx3 += 1;
-        direction = DIR_00P;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) {
-        nx3 -= 1;
-        direction = DIR_00M;
-    } else
-        UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-    distributions->getDistribution(f, x1, x2, x3);
-    distributions->getDistribution(ftemp, nx1, nx2, nx3);
-
-    real rho, vx1, vx2, vx3;
-    calcMacrosFct(f, rho, vx1, vx2, vx3);
-
-    switch (direction) {
-        case DIR_P00:
-            f[DIR_P00]   = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00];
-            f[DIR_PP0]  = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0];
-            f[DIR_PM0]  = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0];
-            f[DIR_P0P]  = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P];
-            f[DIR_P0M]  = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            break;
-        case DIR_M00:
-            f[DIR_M00]   = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00];
-            f[DIR_MP0]  = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0];
-            f[DIR_MM0]  = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0];
-            f[DIR_M0P]  = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P];
-            f[DIR_M0M]  = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_0P0:
-            f[DIR_0P0]   = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0];
-            f[DIR_PP0]  = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0];
-            f[DIR_MP0]  = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0];
-            f[DIR_0PP]  = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP];
-            f[DIR_0PM]  = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            break;
-        case DIR_0M0:
-            f[DIR_0M0]   = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0];
-            f[DIR_PM0]  = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0];
-            f[DIR_MM0]  = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0];
-            f[DIR_0MP]  = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP];
-            f[DIR_0MM]  = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_00P:
-            f[DIR_00P]   = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P];
-            f[DIR_P0P]  = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P];
-            f[DIR_M0P]  = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P];
-            f[DIR_0PP]  = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP];
-            f[DIR_0MP]  = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP];
-
-            distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            break;
-        case DIR_00M:
-            f[DIR_00M]   = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M];
-            f[DIR_P0M]  = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M];
-            f[DIR_M0M]  = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M];
-            f[DIR_0PM]  = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM];
-            f[DIR_0MM]  = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        default:
-            UB_THROW(
-                UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!"));
-    }
-}
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp
deleted file mode 100644
index 0e7be0e3de4f53ee73233bfbced9f35a8c38f57a..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file NonReflectingOutflowWithRelaxationBCStrategy.cpp
-//! \ingroup BoundarConditions
-//! \author Konstantin Kutscher, Hussein Alihussein
-//=======================================================================================
-#include "NonReflectingOutflowWithRelaxationBCStrategy.h"
-
-#include "BoundaryConditions.h"
-#include "D3Q27System.h"
-#include "DistributionArray3D.h"
-
-NonReflectingOutflowWithRelaxationBCStrategy::NonReflectingOutflowWithRelaxationBCStrategy()
-{
-    BCStrategy::preCollision = true;
-}
-//////////////////////////////////////////////////////////////////////////
-NonReflectingOutflowWithRelaxationBCStrategy::~NonReflectingOutflowWithRelaxationBCStrategy() = default;
-//////////////////////////////////////////////////////////////////////////
-SPtr<BCStrategy> NonReflectingOutflowWithRelaxationBCStrategy::clone()
-{
-    SPtr<BCStrategy> bc(new NonReflectingOutflowWithRelaxationBCStrategy());
-    return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingOutflowWithRelaxationBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions)
-{
-    this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingOutflowWithRelaxationBCStrategy::applyBC()
-{
-    using namespace vf::lbm::dir;
-
-    using namespace D3Q27System;
- //   using namespace UbMath;
-    using namespace vf::basics::constant;
-
-    LBMReal f[ENDF + 1];
-    LBMReal ftemp[ENDF + 1];
-
-    int nx1       = x1;
-    int nx2       = x2;
-    int nx3       = x3;
-    int direction = -1;
-
-    // flag points in direction of fluid
-    if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) {
-        nx1 += 1;
-        direction = DIR_P00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) {
-        nx1 -= 1;
-        direction = DIR_M00;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) {
-        nx2 += 1;
-        direction = DIR_0P0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) {
-        nx2 -= 1;
-        direction = DIR_0M0;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) {
-        nx3 += 1;
-        direction = DIR_00P;
-    } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) {
-        nx3 -= 1;
-        direction = DIR_00M;
-    } else
-        UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-    distributions->getDistribution(f, x1, x2, x3);
-    distributions->getDistribution(ftemp, nx1, nx2, nx3);
-
-    LBMReal rho, vx1, vx2, vx3;
-    calcMacrosFct(f, rho, vx1, vx2, vx3);
-    LBMReal delf = rho* c1o100;
-    switch (direction) {
-        case DIR_P00:
-            f[DIR_P00]   = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00];
-            f[DIR_PP0]  = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0];
-            f[DIR_PM0]  = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0];
-            f[DIR_P0P]  = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P];
-            f[DIR_P0M]  = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            break;
-        case DIR_M00:
-            f[DIR_M00]   = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]- delf* WEIGTH[DIR_M00];
-            f[DIR_MP0]  = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0];
-            f[DIR_MM0]  = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0];
-            f[DIR_M0P]  = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P];
-            f[DIR_M0M]  = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_0P0:
-            f[DIR_0P0]   = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]- delf* WEIGTH[DIR_0P0];
-            f[DIR_PP0]  = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0];
-            f[DIR_MP0]  = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0];
-            f[DIR_0PP]  = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP];
-            f[DIR_0PM]  = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0);
-            distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0);
-            distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            break;
-        case DIR_0M0:
-            f[DIR_0M0]   = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]- delf* WEIGTH[DIR_0M0];
-            f[DIR_PM0]  = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0];
-            f[DIR_MM0]  = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0];
-            f[DIR_0MP]  = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP];
-            f[DIR_0MM]  = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0);
-            distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0);
-            distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        case DIR_00P:
-            f[DIR_00P]   = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]- delf* WEIGTH[DIR_00P];
-            f[DIR_P0P]  = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P];
-            f[DIR_M0P]  = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P];
-            f[DIR_0PP]  = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP];
-            f[DIR_0MP]  = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP];
-            f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP];
-            f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP];
-            f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP];
-            f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP];
-
-            distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M);
-            distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M);
-            distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M);
-            distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM);
-            distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM);
-            distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM);
-            distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM);
-            distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM);
-            distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM);
-            break;
-        case DIR_00M:
-            f[DIR_00M]   = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]- delf* WEIGTH[DIR_00M];
-            f[DIR_P0M]  = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M];
-            f[DIR_M0M]  = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M];
-            f[DIR_0PM]  = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM];
-            f[DIR_0MM]  = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM];
-            f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM];
-            f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM];
-            f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM];
-            f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM];
-
-            distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P);
-            distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P);
-            distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P);
-            distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP);
-            distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP);
-            distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP);
-            distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP);
-            distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP);
-            distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP);
-            break;
-        default:
-            UB_THROW(
-                UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!"));
-    }
-}
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp
deleted file mode 100644
index 1c8938e984ad38eb85acde5c0995479fd2318d21..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "SlipBCStrategy.h"
-#include "BoundaryConditions.h"
-#include "DistributionArray3D.h"
-
-SlipBCStrategy::SlipBCStrategy()
-{
-    BCStrategy::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-SlipBCStrategy::~SlipBCStrategy() = default;
-//////////////////////////////////////////////////////////////////////////
-SPtr<BCStrategy> SlipBCStrategy::clone()
-{
-    SPtr<BCStrategy> bc(new SlipBCStrategy());
-    return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void SlipBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) { this->distributions = distributions; }
-//////////////////////////////////////////////////////////////////////////
-void SlipBCStrategy::applyBC()
-{
-    using namespace vf::lbm::dir;
-
-    real f[D3Q27System::ENDF + 1];
-    real feq[D3Q27System::ENDF + 1];
-    distributions->getDistributionInv(f, x1, x2, x3);
-    real rho, vx1, vx2, vx3, drho;
-    calcMacrosFct(f, drho, vx1, vx2, vx3);
-    calcFeqFct(feq, drho, vx1, vx2, vx3);
-
-    UbTupleFloat3 normale = bcPtr->getNormalVector();
-    real amp            = vx1 * val<1>(normale) + vx2 * val<2>(normale) + vx3 * val<3>(normale);
-
-    vx1 = vx1 - amp * val<1>(normale); // normale zeigt von struktur weg!
-    vx2 = vx2 - amp * val<2>(normale); // normale zeigt von struktur weg!
-    vx3 = vx3 - amp * val<3>(normale); // normale zeigt von struktur weg!
-
-    rho = vf::basics::constant::c1o1 + drho * compressibleFactor;
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasSlipBoundaryFlag(fdir))
-      {
-         //quadratic bounce back
-         const int invDir = D3Q27System::INVDIR[fdir];
-         real q = bcPtr->getQ(invDir);// m+m q=0 stabiler
-         //vx3=0;
-         real velocity = vf::basics::constant::c0o1;
-         switch (invDir)
-         {
-         case DIR_P00: velocity = (vf::basics::constant::c4o9*(+vx1)); break;      //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3)
-         case DIR_M00: velocity = (vf::basics::constant::c4o9*(-vx1)); break;      //z.B. aus paper manfred MRT LB models in three dimensions (2002)   
-         case DIR_0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break;
-         case DIR_0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break;
-         case DIR_00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break;
-         case DIR_00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break;
-         case DIR_PP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break;
-         case DIR_MM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break;
-         case DIR_PM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break;
-         case DIR_MP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break;
-         case DIR_P0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break;
-         case DIR_M0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break;
-         case DIR_P0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break;
-         case DIR_M0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break;
-         case DIR_0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break;
-         case DIR_0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break;
-         case DIR_0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break;
-         case DIR_0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break;
-         case DIR_PPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break;
-         case DIR_MMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break;
-         case DIR_PPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break;
-         case DIR_MMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break;
-         case DIR_PMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break;
-         case DIR_MPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break;
-         case DIR_PMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break;
-         case DIR_MPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break;
-         default: throw UbException(UB_EXARGS, "unknown error");
-         }
-         real fReturn = ((vf::basics::constant::c1o1-q)/(vf::basics::constant::c1o1+q))*((f[invDir]-feq[invDir])/(vf::basics::constant::c1o1-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho)/(vf::basics::constant::c1o1+q));
-         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
-      }
-   }
-}
\ No newline at end of file