diff --git a/source/Applications/FNG/Bombadil.cfg b/source/Applications/FNG/Bombadil.cfg
deleted file mode 100644
index 0196e80f4e12cffd18d4b6d4524d148d6a7acd0a..0000000000000000000000000000000000000000
--- a/source/Applications/FNG/Bombadil.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-pathOut = d:/temp/fng
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-fngFileWhole = f16-ascii.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-
-numOfThreads = 1
-availMem = 20e9
-refineLevel = 3
-blockNx = 16 16 16
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [mm]
-boundingBox = -50 400 45 55 -60 80 
-deltaXfine = 0.1
-
-restartStep = 10000
-restartStepStart = 10000
-
-outTime = 1000
-endTime = 1000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
\ No newline at end of file
diff --git a/source/Applications/FNG/CMakeLists.txt b/source/Applications/FNG/CMakeLists.txt
deleted file mode 100644
index bf4e4174347ad2742114e28e5664eef112eca60a..0000000000000000000000000000000000000000
--- a/source/Applications/FNG/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(fng)
-
-INCLUDE(${SOURCE_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(fng BINARY)
diff --git a/source/Applications/FNG/fng.cpp b/source/Applications/FNG/fng.cpp
deleted file mode 100644
index 9e3448ed12aa03553507ae10cbf498f2e1fa76ad..0000000000000000000000000000000000000000
--- a/source/Applications/FNG/fng.cpp
+++ /dev/null
@@ -1,586 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <boost/pointer_cast.hpp>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getString("pathOut");
-      string          pathGeo = config.getString("pathGeo");
-      string          fngFileWhole = config.getString("fngFileWhole");
-      string          fngFileTrailingEdge = config.getString("fngFileTrailingEdge");
-      string          fngFileBodyPart = config.getString("fngFileBodyPart");
-      string          zigZagTape = config.getString("zigZagTape");
-      int             numOfThreads = config.getInt("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          uLB = config.getDouble("uLB");
-      double          restartStep = config.getDouble("restartStep");
-      double          restartStepStart = config.getDouble("restartStepStart");
-      double          endTime = config.getDouble("endTime");
-      double          outTime = config.getDouble("outTime");
-      double          availMem = config.getDouble("availMem");
-      int             refineLevel = config.getInt("refineLevel");
-      bool            logToFile = config.getBool("logToFile");
-      bool            porousTralingEdge = config.getBool("porousTralingEdge");
-      double          deltaXfine = config.getDouble("deltaXfine")*1000.0;
-      bool            thinWall = config.getBool("thinWall");
-      double          refineDistance = config.getDouble("refineDistance");
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathOut + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      
-      double g_minX1 = boundingBox[0]*1000.0;
-      double g_minX2 = boundingBox[2]*1000.0;
-      double g_minX3 = boundingBox[4]*1000.0;
-
-      double g_maxX1 = boundingBox[1]*1000.0;
-      double g_maxX2 = boundingBox[3]*1000.0;
-      double g_maxX3 = boundingBox[5]*1000.0;
-       
-      //////////////////////////////////////////////////////////////////////////
-      double deltaXcoarse = deltaXfine*(double)(1 << refineLevel);
-      //double nx2_temp = floor((g_maxX2 - g_minX2) / (deltaXcoarse*(double)blockNx[0]));
-
-      //deltaXcoarse = (g_maxX2 - g_minX2) / (nx2_temp*(double)blockNx[0]);
-      //UBLOG(logINFO, "nx2_temp:"<<nx2_temp);
-      //g_maxX2 -= 0.5* deltaXcoarse;
-      //////////////////////////////////////////////////////////////////////////
-      double blockLength = (double)blockNx[0] * deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re = 1e6;
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double nueReal = 153.5e-7; //m^2/s
-
-      double lReal = 3.0;//m
-      double uReal = Re*nueReal / lReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 0.15;//Ma-Real!
-      //double csReal = uReal / Ma;
-      //double hLB = lReal / deltaXcoarse;
-
-      //LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      //double u_LB = uReal   * unitConverter.getFactorVelocityWToLb();
-      //double nu_LB = nueReal * unitConverter.getFactorViscosityWToLb();
-      double l_LB = 300 / deltaXcoarse;
-      double nuLB = (uLB*l_LB) / Re; //0.005;
-      //double nuLB = 0.005;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(deltaXcoarse);
-      grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //gridCube->setCenterCoordinates(geo->getX1Centroid(), geo->getX2Centroid(), geo->getX3Centroid());
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(false);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStep));
-      RestartCoProcessor rp(grid, rSch, comm, pathOut, RestartCoProcessor::TXT);
-      //////////////////////////////////////////////////////////////////////////
-
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "* Re                  = "<<Re);
-            UBLOG(logINFO, "* Ma                  = "<<Ma);
-            UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-            UBLOG(logINFO, "* viscosity (nuReal)  = "<<nueReal<<" m^2/s");
-            UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-            UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-            UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse/1000.0<<" m");
-            UBLOG(logINFO, "* dx_refine           = "<<deltaXfine/1000.0<<" m");
-            UBLOG(logINFO, "* number of levels    = " << refineLevel + 1);
-            UBLOG(logINFO, "* number of threads   = " << numOfThreads);
-            UBLOG(logINFO, "* number of processes = " << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         GbTriFaceMesh3DPtr fngMeshWhole;
-         GbTriFaceMesh3DPtr fngMeshBodyPart;
-         GbTriFaceMesh3DPtr fngMeshTrailingEdge;
-         if (porousTralingEdge)
-         {
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:start");
-            fngMeshBodyPart = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileBodyPart, "fngMeshBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:end");
-            fngMeshBodyPart->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshBodyPart.get(), pathOut+"/geo/fngMeshBody", WbWriterVtkXmlBinary::getInstance());
-
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:start");
-            fngMeshTrailingEdge = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileTrailingEdge, "fngMeshTrailingEdge", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:end");
-            fngMeshTrailingEdge->rotate(0.0, 0.5, 0.0);
-            fngMeshTrailingEdge->translate(0,0,1.3);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshTrailingEdge.get(), pathOut+"/geo/fngMeshTrailingEdge", WbWriterVtkXmlBinary::getInstance());
-         }
-         else
-         {
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole:start");
-            fngMeshWhole = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole, "fngMeshWhole", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole:end");
-            fngMeshWhole->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole.get(), pathOut+"/geo/fngMeshWhole", WbWriterVtkXmlBinary::getInstance());
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         //////////////////////////////////////////////////////////////////////////
-         if (myid==0) UBLOG(logINFO, "Read zigZagTape:start");
-         string ZckbndFilename = pathGeo+"/"+zigZagTape;
-         GbTriFaceMesh3DPtr meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape1"));
-         meshBand1->rotate(0.0, 5, 0.0);
-         meshBand1->translate(15, 0, -12.65);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand1.get(), pathOut+"/geo/zigZagTape1", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband2
-         GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape2"));
-         meshBand2->rotate(0.0, 5, 0.0);
-         meshBand2->translate(15, 5, -12.65);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand2.get(), pathOut+"/geo/zigZagTape2", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband3
-         GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape13"));
-         meshBand3->rotate(0.0, 5, 0.0);
-         meshBand3->translate(15, 0, -12.35);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand3.get(), pathOut+"/geo/zigZagTape3", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband4
-         GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape4"));
-         meshBand4->rotate(0.0, 5, 0.0);
-         meshBand4->translate(15, 5, -12.35);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand4.get(), pathOut+"/geo/zigZagTape4", WbWriterVtkXmlASCII::getInstance());
-         if (myid==0) UBLOG(logINFO, "Read zigZagTape:end");
-         //////////////////////////////////////////////////////////////////////////
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr noSlipBCAdapter(new D3Q27NoSlipBCAdapter(bbOption));
-
-         Interactor3DPtr fngIntrWhole;
-         Interactor3DPtr fngIntrBodyPart;
-         Interactor3DPtr fngIntrTrailingEdge;
-         if (porousTralingEdge)
-         {
-            fngIntrBodyPart = D3Q27TriFaceMeshInteractorPtr(new D3Q27TriFaceMeshInteractor(fngMeshBodyPart, grid, noSlipBCAdapter, Interactor3D::SOLID));
-            fngIntrTrailingEdge = D3Q27TriFaceMeshInteractorPtr(new D3Q27TriFaceMeshInteractor(fngMeshTrailingEdge, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         }
-         else
-         {
-            fngIntrWhole = D3Q27TriFaceMeshInteractorPtr(new D3Q27TriFaceMeshInteractor(fngMeshWhole, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         }
-
-         D3Q27TriFaceMeshInteractorPtr triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         D3Q27TriFaceMeshInteractorPtr triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         D3Q27TriFaceMeshInteractorPtr triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand3, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         D3Q27TriFaceMeshInteractorPtr triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand4, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            //RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(geo, refineLevel);
-            //refineHelper.refine();
-            
-            //RefineAroundGbObjectHelper refineHelper1(grid, refineLevel-1, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr1), 0.0, 10.0, comm);
-            //refineHelper1.refine();
-            //RefineAroundGbObjectHelper refineHelper2(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr2), -1.0, 5.0, comm);
-            //refineHelper2.refine();
-            
-
-            int rank = grid->getRank();
-            grid->setRank(0);
-            boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand1Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand2Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand3Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand4Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            grid->setRank(rank);
-
-            if (porousTralingEdge)
-            {
-               int rank = grid->getRank();
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrBodyPart)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-               grid->setRank(rank);
-            }
-            else
-            {
-               int rank = grid->getRank();
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrWhole)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-               grid->setRank(rank);
-            }
-
-
-
-            ////////////////////////////////////////////
-            //METIS
-            Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-            ////////////////////////////////////////////
-            /////delete solid blocks
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-            InteractorsHelper intHelper(grid, metisVisitor);
-            if (porousTralingEdge)
-            {
-               intHelper.addInteractor(fngIntrBodyPart);
-            }
-            else
-            {
-               intHelper.addInteractor(fngIntrWhole);
-            }
-            //////////////////////////////////////////////////////////////////////////
-            intHelper.selectBlocks();
-            if (porousTralingEdge)
-            {
-               fngIntrBodyPart->removeSolidBlocks();
-               fngIntrBodyPart->removeTransBlocks();
-            }
-            else
-            {
-               fngIntrWhole->removeSolidBlocks();
-               fngIntrWhole->removeTransBlocks();
-            }
-
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////
-
-            if (porousTralingEdge)
-            {
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrTrailingEdge)->refineBlockGridToLevel(refineLevel, -2.0, refineDistance);
-               grid->setRank(rank);
-
-               //GbObject3DPtr trailingEdgeCube(new GbCuboid3D(fngMeshTrailingEdge->getX1Minimum()-blockLength, fngMeshTrailingEdge->getX2Minimum(), fngMeshTrailingEdge->getX3Minimum()-blockLength/2.0,
-               //   fngMeshTrailingEdge->getX1Maximum()+blockLength, fngMeshTrailingEdge->getX2Maximum(), fngMeshTrailingEdge->getX3Maximum()+blockLength/2.0));
-               //if (myid == 0) GbSystem3D::writeGeoObject(trailingEdgeCube.get(), pathOut + "/geo/trailingEdgeCube", WbWriterVtkXmlASCII::getInstance());
-
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitor(trailingEdgeCube, refineLevel);
-               //grid->accept(refVisitor);
-            }
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-            
-            do {
-               grid->accept(ratioVisitor);
-               checkRatio.resetState();
-               grid->accept(checkRatio);
-               if (myid == 0) UBLOG(logINFO, "count ="<<count++<<" state="<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-            //RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            //grid->accept(ratioSmoothVisitor);
-
-            {
-               WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-               ppblocks->process(0);
-               ppblocks.reset();
-            }
-
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            for (int i = D3Q27System::E; i <= D3Q27System::TS; i++)
-            {
-               dirs.push_back(i);
-            }
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         D3Q27BoundaryConditionAdapterPtr slipBCAdapter(new D3Q27SlipBCAdapter(bbOption));
-
-         //wall interactors
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         mu::Parser fct;
-         fct.SetExpr("U");
-         fct.DefineConst("U", uLB);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter(true, false, false, fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowIntr = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowIntr = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(triBand1Interactor);
-         intHelper.addInteractor(triBand2Interactor);
-         intHelper.addInteractor(triBand3Interactor);
-         intHelper.addInteractor(triBand4Interactor);
-         if (porousTralingEdge)
-         {
-            intHelper.addInteractor(fngIntrBodyPart);
-            //intHelper.addInteractor(fngIntrTrailingEdge);
-         } 
-         else
-         {
-            intHelper.addInteractor(fngIntrWhole);
-         }
-         
-         //////////////////////////////////////////////////////////////////////////
-         intHelper.selectBlocks();
-
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathOut, WbWriterVtkXmlASCII::getInstance(), comm));
-         ppblocks->process(1);
-         ppblocks.reset();
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0] + ghostLayer) * (blockNx[1] + ghostLayer) * (blockNx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blockNx[0], blockNx[1], blockNx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         //LBMKernel3DPtr kernel = LBMKernel3DPtr(new CompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], CompressibleCumulantLBMKernel::NORMAL));
-
-         BCProcessorPtr bcProc;
-         BoundaryConditionPtr noSlipBC;
-         //BoundaryConditionPtr velBC = VelocityBoundaryConditionPtr(new VelocityBoundaryCondition());
-         //BoundaryConditionPtr denBC = NonEqDensityBoundaryConditionPtr(new NonEqDensityBoundaryCondition());
-         BoundaryConditionPtr velBC = NonReflectingVelocityBoundaryConditionPtr(new NonReflectingVelocityBoundaryCondition());
-         BoundaryConditionPtr denBC = NonReflectingDensityBoundaryConditionPtr(new NonReflectingDensityBoundaryCondition());
-         BoundaryConditionPtr slipBC = SlipBoundaryConditionPtr(new SlipBoundaryCondition());
-
-         if (thinWall)
-         {
-            bcProc = BCProcessorPtr(new D3Q27ETForThinWallBCProcessor());
-            noSlipBC = BoundaryConditionPtr(new ThinWallNoSlipBoundaryCondition());
-         }
-         else
-         {
-            bcProc = BCProcessorPtr(new D3Q27ETBCProcessor());
-            noSlipBC = BoundaryConditionPtr(new NoSlipBoundaryCondition());
-         }
-
-         bcProc->addBC(noSlipBC);
-         bcProc->addBC(slipBC);
-         bcProc->addBC(velBC);
-         bcProc->addBC(denBC);
-
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //BC
-         intHelper.setBC();
-         
-         //////////////////////////////////////////////////////////////////////////
-         ///porous media
-
-         //////////////////////////////////////////////////////////////////////////
-
-         BoundaryConditionBlockVisitor bcVisitor;
-         grid->accept(bcVisitor);
-
-         //sponge layer
-         GbCuboid3DPtr spCube(new GbCuboid3D(960, g_minX2, g_minX3, 1210, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(spCube.get(), pathOut + "/geo/spCube", WbWriterVtkXmlASCII::getInstance());
-         SpongeLayerBlockVisitor spongeLayer(spCube);
-         grid->accept(spongeLayer);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(fct);
-         initVisitor.setNu(nuLB);
-         grid->accept(initVisitor);
-
-         ////set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
-         //ConnectorBlockVisitor setConnsVisitor(comm, nu_LB, iProcessor, factory);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         MacroscopicQuantitiesCoProcessorPtr ppgeo(
-            new MacroscopicQuantitiesCoProcessor(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-
-      MacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      //calculation->setTimeAveragedValuesCoProcessor(tav);
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " << argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/source/Applications/FNG/fng15Bombadil.cfg b/source/Applications/FNG/fng15Bombadil.cfg
deleted file mode 100644
index a27fbb5cf7eaddab5ea9becd3f8f18e4fe6428a2..0000000000000000000000000000000000000000
--- a/source/Applications/FNG/fng15Bombadil.cfg
+++ /dev/null
@@ -1,39 +0,0 @@
-pathOut = d:/temp/fngPorous
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 4
-availMem = 20e9
-refineLevel = 8
-#blockNx = 8 4 8
-blockNx = 21 6 13
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-
-#deltaXfine = 0.001
-#deltaXfine = 0.00375
-#deltaXfine = 1.46484375e-5
-#deltaXfine = 0.00001171875
-#deltaXfine = 9.765625e-6
-deltaXfine = 19.53125e-6
-#10e-6
-
-refineDistance = 0.3
-
-restartStep = 10000
-restartStepStart = 10000
-
-outTime = 1
-endTime = 2000
-
-logToFile = false
-
-porousTralingEdge = true
-
-thinWall = false
diff --git a/source/Applications/FNG/fng15BombadilTest.cfg b/source/Applications/FNG/fng15BombadilTest.cfg
deleted file mode 100644
index 28dd89f387d8813f35ac71fa265c3459aef1af78..0000000000000000000000000000000000000000
--- a/source/Applications/FNG/fng15BombadilTest.cfg
+++ /dev/null
@@ -1,39 +0,0 @@
-pathOut = d:/temp/fng5
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 4
-availMem = 20e9
-refineLevel = 0
-#blockNx = 8 4 8
-blockNx = 21 6 13
-uLB = 0.01
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-
-deltaXfine = 0.005
-#deltaXfine = 0.00375
-#deltaXfine = 1.46484375e-5
-#deltaXfine = 0.00001171875
-#deltaXfine = 9.765625e-6
-#deltaXfine = 19.53125e-6
-
-
-refineDistance = 0.3
-
-restartStep = 10000
-restartStepStart = 10000
-
-outTime = 10000
-endTime = 2000000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BCArray.cpp b/source/VirtualFluidsCore/BoundaryCondition/BCArray.cpp
deleted file mode 100644
index b3a66d3b2673096f07232e142a372889b8120495..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BCArray.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-#include "BCArray.h"
-
-
-const int BCArray::SOLID = -1;
-const int BCArray::FLUID = -2;
-const int BCArray::INTERFACECF = -3;
-const int BCArray::INTERFACEFC = -4;
-const int BCArray::UNDEFINED = -5;
-
-//////////////////////////////////////////////////////////////////////////
-BCArray::BCArray() {}
-//////////////////////////////////////////////////////////////////////////
-BCArray::BCArray(std::size_t nx1, std::size_t nx2, std::size_t nx3)
-{
-   bcindexmatrix.resize(nx1, nx2, nx3, UNDEFINED);
-}
-//////////////////////////////////////////////////////////////////////////
-BCArray::BCArray(std::size_t nx1, std::size_t nx2, std::size_t nx3, int val)
-{
-   bcindexmatrix.resize(nx1, nx2, nx3, val);
-}
-//////////////////////////////////////////////////////////////////////////
-BCArray::~BCArray() {}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::resize(std::size_t nx1, std::size_t nx2, std::size_t nx3)
-{
-   bcindexmatrix.resize(nx1, nx2, nx3);
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::resize(std::size_t nx1, std::size_t nx2, std::size_t nx3, int val)
-{
-   bcindexmatrix.resize(nx1, nx2, nx3, val);
-}
-//////////////////////////////////////////////////////////////////////////
-bool BCArray::validIndices(std::size_t x1, std::size_t x2, std::size_t x3)  const
-{
-   if (x1 < 0 || x1 >= this->bcindexmatrix.getNX1()) return false;
-   if (x2 < 0 || x2 >= this->bcindexmatrix.getNX2()) return false;
-   if (x3 < 0 || x3 >= this->bcindexmatrix.getNX3()) return false;
-   return true;
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::setBC(std::size_t x1, std::size_t x2, std::size_t x3, BCClassPtr const& bc)
-{
-   if (this->hasBC(x1, x2, x3))
-   {
-      if (this->getBC(x1, x2, x3) == bc) return;
-      else                            this->deleteBC(x1, x2, x3);
-   }
-
-   //wenn keine frei gewordene BCs vorhanden
-   if (indexContainer.empty())
-   {
-      bcvector.push_back(bc);
-      bcindexmatrix(x1, x2, x3) = (int)bcvector.size() - 1;
-   }
-   else
-   {
-      int index = indexContainer.back();
-      bcindexmatrix(x1, x2, x3) = index;
-      bcvector[index] = bc;
-      indexContainer.pop_back();
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::setSolid(std::size_t x1, std::size_t x2, std::size_t x3)
-{
-   if (this->hasBC(x1, x2, x3)) this->deleteBC(x1, x2, x3);
-   bcindexmatrix(x1, x2, x3) = SOLID;
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::setFluid(std::size_t x1, std::size_t x2, std::size_t x3)
-{
-   if (this->hasBC(x1, x2, x3)) this->deleteBC(x1, x2, x3);
-   bcindexmatrix(x1, x2, x3) = FLUID;
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::setUndefined(std::size_t x1, std::size_t x2, std::size_t x3)
-{
-   if (this->hasBC(x1, x2, x3)) this->deleteBC(x1, x2, x3);
-   bcindexmatrix(x1, x2, x3) = UNDEFINED;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getNumberOfSolidEntries() const
-{
-   const std::vector<int>& data = bcindexmatrix.getDataVector();
-   std::size_t counter = 0;
-   for (std::size_t i = 0; i < data.size(); i++)
-      if (data[i] == SOLID) counter++;
-   return counter;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getNumberOfFluidEntries() const
-{
-   const std::vector<int>& data = bcindexmatrix.getDataVector();
-   std::size_t counter = 0;
-   for (std::size_t i = 0; i < data.size(); i++)
-   {
-      int tmp = data[i];
-      if (tmp == FLUID || tmp >= 0) counter++;
-   }
-   return counter;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getNumberOfFluidWithoutBCEntries() const
-{
-   const std::vector<int>& data = bcindexmatrix.getDataVector();
-   std::size_t counter = 0;
-   for (std::size_t i = 0; i < data.size(); i++)
-      if (data[i] == FLUID) counter++;
-   return counter;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getNumberOfBCEntries() const
-{
-   const std::vector<int>& data = bcindexmatrix.getDataVector();
-   std::size_t counter = 0;
-   for (std::size_t i = 0; i < data.size(); i++)
-      if (data[i] >= 0) counter++;
-   return counter;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getNumberOfUndefinedEntries() const
-{
-   const std::vector<int>& data = bcindexmatrix.getDataVector();
-   std::size_t counter = 0;
-   for (std::size_t i = 0; i < data.size(); i++)
-      if (data[i] == UNDEFINED) counter++;
-   return counter;
-}
-//////////////////////////////////////////////////////////////////////////
-std::size_t BCArray::getBCVectorSize() const
-{
-   return this->bcvector.size();
-}
-//////////////////////////////////////////////////////////////////////////
-std::string BCArray::toString() const
-{
-   std::size_t solidCounter = 0;
-   std::size_t fluidCounter = 0;
-   std::size_t bcCounter = 0;
-   std::size_t undefCounter = 0;
-
-   for (int x1 = 0; x1 < bcindexmatrix.getNX1(); x1++)
-   {
-      for (int x2 = 0; x2 < bcindexmatrix.getNX2(); x2++)
-      {
-         for (int x3 = 0; x3 < bcindexmatrix.getNX3(); x3++)
-         {
-            if (bcindexmatrix(x1, x2, x3) >= 0) bcCounter++;
-            else if (bcindexmatrix(x1, x2, x3) == FLUID) fluidCounter++;
-            else if (bcindexmatrix(x1, x2, x3) == SOLID) solidCounter++;
-            else if (bcindexmatrix(x1, x2, x3) == UNDEFINED) undefCounter++;
-            else throw UbException(UB_EXARGS, "invalid matrixEntry");
-         }
-      }
-   }
-
-   std::size_t unrefEntriesInBcVector = 0;
-   for (std::size_t i = 0; i < bcvector.size(); i++) if (!bcvector[i]) unrefEntriesInBcVector++;
-
-   std::stringstream text;
-   text << "BCArray<" << typeid(BCClassPtr).name() << "," << typeid(int).name() << ">";
-   text << "[ entries: " << bcindexmatrix.getNX1() << "x" << bcindexmatrix.getNX2();
-   text << "x" << bcindexmatrix.getNX3() << "=";
-   text << bcindexmatrix.getNX1()*bcindexmatrix.getNX2()*bcindexmatrix.getNX3() << " ]:\n";
-   text << " - #fluid entries : " << fluidCounter << std::endl;
-   text << " - #bc    entries : " << bcCounter << std::endl;
-   text << " - #solid entries : " << solidCounter << std::endl;
-   text << " - #undef entries : " << undefCounter << std::endl;
-   text << " - bcvector-entries      : " << bcvector.size() << " (empty ones: " << unrefEntriesInBcVector << ")\n";
-   text << " - indexContainer-entries: " << indexContainer.size() << std::endl;
-
-   return text.str();
-}
-//////////////////////////////////////////////////////////////////////////
-void BCArray::deleteBCAndSetType(std::size_t x1, std::size_t x2, std::size_t x3, int type)
-   {
-      this->deleteBC(x1, x2, x3);
-
-      //matrix neuen Typ zuweisen
-      bcindexmatrix(x1, x2, x3) = type;
-   }
-//////////////////////////////////////////////////////////////////////////
-void BCArray::deleteBC(std::size_t x1, std::size_t x2, std::size_t x3)
-   {
-      //ueberpruefen, ob ueberhaupt BC vorhanden
-      int index = bcindexmatrix(x1, x2, x3);
-      if (index < 0) return;
-
-      //frei gewordenen Index in den Indexcontainer schieben
-      indexContainer.push_back(index);
-
-      //element "loeschen"
-      bcvector[index] = BCClassPtr();
-   }
\ No newline at end of file
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BCArray.h b/source/VirtualFluidsCore/BoundaryCondition/BCArray.h
deleted file mode 100644
index f4090c20641f495daab637e6b9eba05698a71458..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BCArray.h
+++ /dev/null
@@ -1,185 +0,0 @@
-#ifndef BCArray_H
-#define BCArray_H
-
-#include "D3Q27BoundaryCondition.h"
-#include "basics/container/CbArray3D.h"
-
-#include <typeinfo>
-
-#include <boost/serialization/serialization.hpp>
-#include <boost/shared_ptr.hpp>
-
-typedef boost::shared_ptr<D3Q27BoundaryCondition> BCClassPtr;
-
-class BCArray;
-typedef boost::shared_ptr<BCArray> BCArrayPtr;
-
-class BCArray
-{
-public:
-   //////////////////////////////////////////////////////////////////////////
-   BCArray();
-   //////////////////////////////////////////////////////////////////////////
-   BCArray(std::size_t nx1, std::size_t nx2, std::size_t nx3);
-   //////////////////////////////////////////////////////////////////////////
-   BCArray(std::size_t nx1, std::size_t nx2, std::size_t nx3, int val);
-   //////////////////////////////////////////////////////////////////////////
-   virtual ~BCArray();
-   //////////////////////////////////////////////////////////////////////////
-   inline std::size_t getNX1() const;
-   //////////////////////////////////////////////////////////////////////////
-   inline std::size_t getNX2() const;
-   //////////////////////////////////////////////////////////////////////////
-   inline std::size_t getNX3() const;
-   //////////////////////////////////////////////////////////////////////////
-   void resize(std::size_t nx1, std::size_t nx2, std::size_t nx3);
-   //////////////////////////////////////////////////////////////////////////
-   void resize(std::size_t nx1, std::size_t nx2, std::size_t nx3, int val);
-   //////////////////////////////////////////////////////////////////////////
-   bool validIndices(std::size_t x1, std::size_t x2, std::size_t x3)  const;
-   //////////////////////////////////////////////////////////////////////////
-   inline bool hasBC(std::size_t x1, std::size_t x2, std::size_t x3)  const;
-   //////////////////////////////////////////////////////////////////////////
-   void setBC(std::size_t x1, std::size_t x2, std::size_t x3, BCClassPtr const& bc);
-   //////////////////////////////////////////////////////////////////////////
-   inline int getBCVectorIndex(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   inline const BCClassPtr getBC(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   inline BCClassPtr getBC(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   void setSolid(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isSolid(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   void setFluid(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   //true : FLUID or BC
-   //false: UNDEFINED or SOLID
-   inline bool isFluid(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isFluidWithoutBC(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isUndefined(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   void setUndefined(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isInterfaceCF(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   void setInterfaceCF(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isInterfaceFC(std::size_t x1, std::size_t x2, std::size_t x3) const;
-   //////////////////////////////////////////////////////////////////////////
-   void setInterfaceFC(std::size_t x1, std::size_t x2, std::size_t x3);
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfSolidEntries() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfFluidEntries() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfFluidWithoutBCEntries() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfBCEntries() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfUndefinedEntries() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getBCVectorSize() const;
-   //////////////////////////////////////////////////////////////////////////
-   std::string toString() const;
-   //////////////////////////////////////////////////////////////////////////
-
-   static const int SOLID;     
-   static const int FLUID;     
-   static const int INTERFACECF; 
-   static const int INTERFACEFC; 
-   static const int UNDEFINED; 
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   void deleteBCAndSetType(std::size_t x1, std::size_t x2, std::size_t x3, int type);
-   //////////////////////////////////////////////////////////////////////////
-   void deleteBC(std::size_t x1, std::size_t x2, std::size_t x3);
-
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & bcindexmatrix;
-      ar & bcvector;
-      ar & indexContainer;
-   }
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   //-1 solid // -2 fluid -...
-   CbArray3D<int, IndexerX3X2X1> bcindexmatrix;
-   std::vector<BCClassPtr> bcvector;
-   std::vector<int> indexContainer;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-inline std::size_t BCArray::getNX1() const { return bcindexmatrix.getNX1(); }
-//////////////////////////////////////////////////////////////////////////
-inline std::size_t BCArray::getNX2() const { return bcindexmatrix.getNX2(); }
-//////////////////////////////////////////////////////////////////////////
-inline std::size_t BCArray::getNX3() const { return bcindexmatrix.getNX3(); }
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::hasBC(std::size_t x1, std::size_t x2, std::size_t x3)  const
-{
-   return bcindexmatrix(x1, x2, x3) >= 0;
-}
-//////////////////////////////////////////////////////////////////////////
-inline int BCArray::getBCVectorIndex(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3);
-}
-//////////////////////////////////////////////////////////////////////////
-inline const BCClassPtr  BCArray::getBC(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   int index = bcindexmatrix(x1, x2, x3);
-   if (index < 0) return BCClassPtr(); //=> NULL Pointer
-
-   return bcvector[index];
-}
-//////////////////////////////////////////////////////////////////////////
-inline BCClassPtr BCArray::getBC(std::size_t x1, std::size_t x2, std::size_t x3)
-{
-   int index = bcindexmatrix(x1, x2, x3);
-   if (index < 0) return BCClassPtr(); //=> NULL Pointer
-
-   return bcvector[index];
-}
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::isSolid(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3) == SOLID;
-}
-//////////////////////////////////////////////////////////////////////////
-//true : FLUID or BC
-//false: UNDEFINED or SOLID
-inline bool BCArray::isFluid(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   int tmp = bcindexmatrix(x1, x2, x3);
-   return (tmp == FLUID || tmp >= 0);
-}
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::isFluidWithoutBC(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3) == FLUID;
-}
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::isUndefined(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3) == UNDEFINED;
-}
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::isInterfaceCF(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3) == INTERFACECF;
-}
-//////////////////////////////////////////////////////////////////////////
-inline bool BCArray::isInterfaceFC(std::size_t x1, std::size_t x2, std::size_t x3) const
-{
-   return bcindexmatrix(x1, x2, x3) == INTERFACEFC;
-}
-
-#endif 
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BCArray3D.h b/source/VirtualFluidsCore/BoundaryCondition/BCArray3D.h
deleted file mode 100644
index f345f63600b7759214fac44b3b9c4f12fa2f0252..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BCArray3D.h
+++ /dev/null
@@ -1,338 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef BCARRAY_H
-#define BCARRAY_H
-
-#include <basics/container/CbArray3D.h>
-#include <typeinfo>
-
-#include <boost/serialization/serialization.hpp>
-
-//IndexType must be int or long or short!!!
-//no unsiged!
-
-template< typename BCClass , class IndexType = int >
-class BCArray3D
-{
-public:
-   typedef typename boost::shared_ptr<BCClass> BCClassPtr;
-   typedef std::size_t size_type;
-
-public:
-   //////////////////////////////////////////////////////////////////////////
-   BCArray3D() {}
-   //////////////////////////////////////////////////////////////////////////
-   BCArray3D(const size_type& nx1, const size_type& nx2, const size_type& nx3)
-   {
-      bcindexmatrix.resize(nx1,nx2,nx3,UNDEFINED);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   BCArray3D(const size_type& nx1, const size_type& nx2, const size_type& nx3, const IndexType& val)
-   {
-      bcindexmatrix.resize(nx1,nx2,nx3,val);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   virtual ~BCArray3D() {}
-   //////////////////////////////////////////////////////////////////////////
-   inline size_type getNX1() const { return bcindexmatrix.getNX1(); }
-   //////////////////////////////////////////////////////////////////////////
-   inline size_type getNX2() const { return bcindexmatrix.getNX2(); }
-   //////////////////////////////////////////////////////////////////////////
-   inline size_type getNX3() const { return bcindexmatrix.getNX3(); }
-   //////////////////////////////////////////////////////////////////////////
-   void resize(const size_type& nx1, const size_type& nx2, const size_type& nx3)
-   {
-      bcindexmatrix.resize(nx1,nx2,nx3);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void resize(const size_type& nx1, const size_type& nx2, const size_type& nx3, const IndexType& val)
-   {
-      bcindexmatrix.resize(nx1,nx2,nx3,val);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   bool validIndices(const size_type& x1, const size_type& x2, const size_type& x3)  const
-   {
-      if( x1 < 0 || x1 >= this->bcindexmatrix.getNX1()) return false;
-      if( x2 < 0 || x2 >= this->bcindexmatrix.getNX2()) return false;
-      if( x3 < 0 || x3 >= this->bcindexmatrix.getNX3()) return false;
-      return true;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline bool hasBC(const size_type& x1, const size_type& x2, const size_type& x3)  const
-   {
-      return bcindexmatrix(x1,x2,x3)>=0;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setBC(const size_type& x1, const size_type& x2, const size_type& x3, BCClassPtr const& bc)
-   {
-      if( this->hasBC(x1,x2,x3) )
-      {
-         if( this->getBC(x1,x2,x3)==bc ) return;
-         else                            this->deleteBC(x1,x2,x3);
-      }
-
-      //wenn keine frei gewordene BCs vorhanden
-      if( indexContainer.empty() )
-      {
-         bcvector.push_back(bc);
-         bcindexmatrix(x1,x2,x3) = (IndexType)bcvector.size()-1;
-      }
-      else
-      {
-         IndexType index = indexContainer.back();
-         bcindexmatrix(x1,x2,x3) = index;
-         bcvector[index] = bc;
-         indexContainer.pop_back();
-      }
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline IndexType getBCVectorIndex(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1,x2,x3);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline const BCClassPtr getBC(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      IndexType index = bcindexmatrix(x1,x2,x3);
-      if(index<0) return BCClassPtr(); //=> NULL Pointer
-
-      return bcvector[index];
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline BCClassPtr getBC(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      IndexType index = bcindexmatrix(x1,x2,x3);
-      if(index<0) return BCClassPtr(); //=> NULL Pointer
-
-      return bcvector[index];
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setSolid(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      if( this->hasBC(x1,x2,x3) ) this->deleteBC(x1,x2,x3);
-      bcindexmatrix(x1,x2,x3)=SOLID;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isSolid(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1,x2,x3)==SOLID;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setFluid(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      if( this->hasBC(x1,x2,x3) ) this->deleteBC(x1,x2,x3);
-      bcindexmatrix(x1,x2,x3)=FLUID;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //true : FLUID or BC
-   //false: UNDEFINED or SOLID
-   inline bool isFluid(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      int tmp = bcindexmatrix(x1,x2,x3);
-      return (tmp==FLUID || tmp>=0);
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isFluidWithoutBC(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1,x2,x3)==FLUID;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isUndefined(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1,x2,x3)==UNDEFINED;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setUndefined(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      if( this->hasBC(x1,x2,x3) ) this->deleteBC(x1,x2,x3);
-      bcindexmatrix(x1,x2,x3)=UNDEFINED;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //inline bool isInterface(const size_type& x1, const size_type& x2, const size_type& x3) const
-   //{
-   //   return bcindexmatrix(x1,x2,x3)==INTERFACE;
-   //}
-   ////////////////////////////////////////////////////////////////////////////
-   //void setInterface(const size_type& x1, const size_type& x2, const size_type& x3)
-   //{
-   //   if( this->hasBC(x1,x2,x3) ) this->deleteBC(x1,x2,x3);
-   //   bcindexmatrix(x1,x2,x3)=INTERFACE;
-   //}
-   inline bool isInterfaceCF(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1, x2, x3)==INTERFACECF;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setInterfaceCF(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      //if (this->hasBC(x1, x2, x3)) this->deleteBC(x1, x2, x3);
-      bcindexmatrix(x1, x2, x3) = INTERFACECF;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   inline bool isInterfaceFC(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return bcindexmatrix(x1, x2, x3)==INTERFACEFC;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void setInterfaceFC(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      //if (this->hasBC(x1, x2, x3)) this->deleteBC(x1, x2, x3);
-      bcindexmatrix(x1, x2, x3) = INTERFACEFC;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfSolidEntries() const 
-   {
-      const std::vector<IndexType>& data = bcindexmatrix.getDataVector();
-      std::size_t counter = 0;
-      for(std::size_t i=0; i<data.size(); i++)
-         if(data[i]==SOLID) counter++;
-      return counter;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfFluidEntries() const 
-   {
-      const std::vector<IndexType>& data = bcindexmatrix.getDataVector();
-      std::size_t counter = 0;
-      for(std::size_t i=0; i<data.size(); i++)
-      {
-         const IndexType& tmp = data[i];
-         if(tmp==FLUID || tmp>=0) counter++;
-      }
-      return counter;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfFluidWithoutBCEntries() const
-   {
-      const std::vector<IndexType>& data = bcindexmatrix.getDataVector();
-      std::size_t counter = 0;
-      for(std::size_t i=0; i<data.size(); i++)
-         if(data[i]==FLUID) counter++;
-      return counter;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfBCEntries() const
-   {
-      const std::vector<IndexType>& data = bcindexmatrix.getDataVector();
-      std::size_t counter = 0;
-      for(std::size_t i=0; i<data.size(); i++)
-         if(data[i]>=0) counter++;
-      return counter;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getNumberOfUndefinedEntries() const
-   {
-      const std::vector<IndexType>& data = bcindexmatrix.getDataVector();
-      std::size_t counter = 0;
-      for(std::size_t i=0; i<data.size(); i++)
-         if(data[i]==UNDEFINED) counter++;
-      return counter;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::size_t getBCVectorSize() const
-   {
-      return this->bcvector.size();
-   }
-   //////////////////////////////////////////////////////////////////////////
-   std::string toString() const
-   {
-      std::size_t solidCounter = 0;
-      std::size_t fluidCounter = 0;
-      std::size_t bcCounter    = 0;
-      std::size_t undefCounter = 0;
-
-      for(int x1=0; x1<bcindexmatrix.getNX1(); x1++)
-      {
-         for(int x2=0; x2<bcindexmatrix.getNX2(); x2++)
-         {
-            for(int x3=0; x3<bcindexmatrix.getNX3(); x3++)
-            {
-               if(bcindexmatrix(x1,x2,x3)>=0             ) bcCounter++;
-               else if(bcindexmatrix(x1,x2,x3)==FLUID    ) fluidCounter++;
-               else if(bcindexmatrix(x1,x2,x3)==SOLID    ) solidCounter++;
-               else if(bcindexmatrix(x1,x2,x3)==UNDEFINED) undefCounter++;
-               else throw UbException(UB_EXARGS,"invalid matrixEntry");
-            }
-         }
-      }
-
-      std::size_t unrefEntriesInBcVector=0;
-      for(std::size_t i=0; i<bcvector.size(); i++) if(!bcvector[i]) unrefEntriesInBcVector++;
-
-      std::stringstream text;
-      text<<"BCArray3D<"<<typeid(BCClass).name()<<","<<typeid(IndexType).name()<<">";
-      text<<"[ entries: "<<bcindexmatrix.getNX1()<<"x"<<bcindexmatrix.getNX2();
-      text<<"x"<<bcindexmatrix.getNX3()<<"=";
-      text<<bcindexmatrix.getNX1()*bcindexmatrix.getNX2()*bcindexmatrix.getNX3()<<" ]:\n";
-      text<<" - #fluid entries : "<<fluidCounter<<std::endl;
-      text<<" - #bc    entries : "<<bcCounter<<std::endl;
-      text<<" - #solid entries : "<<solidCounter<<std::endl;
-      text<<" - #undef entries : "<<undefCounter<<std::endl;
-      text<<" - bcvector-entries      : "<<bcvector.size()<<" (empty ones: "<<unrefEntriesInBcVector<<")\n";
-      text<<" - indexContainer-entries: "<<indexContainer.size()<<std::endl;
-
-      return text.str();
-   }
-//////////////////////////////////////////////////////////////////////////
-
-   static const IndexType SOLID;     //definiton erfolgt ausserhalb!!!
-   static const IndexType FLUID;     //definiton erfolgt ausserhalb!!!
-   //static const IndexType INTERFACE; //definiton erfolgt ausserhalb!!!
-   static const IndexType INTERFACECF; //definiton erfolgt ausserhalb!!!
-   static const IndexType INTERFACEFC; //definiton erfolgt ausserhalb!!!
-   static const IndexType UNDEFINED; //definiton erfolgt ausserhalb!!!
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   void deleteBCAndSetType(const size_type& x1, const size_type& x2, const size_type& x3, const IndexType& type)
-   {
-      this->deleteBC(x1,x2,x3);
-
-      //matrix neuen Typ zuweisen
-      bcindexmatrix(x1,x2,x3) = type;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void deleteBC(const size_type& x1,const size_type& x2, const size_type& x3)
-   {
-      //ueberpruefen, ob ueberhaupt BC vorhanden
-      IndexType index = bcindexmatrix(x1,x2,x3);
-      if(index<0) return;
-
-      //frei gewordenen Index in den Indexcontainer schieben
-      indexContainer.push_back(index);
-
-      //element "loeschen"
-      bcvector[index] = BCClassPtr();
-   }
-
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & bcindexmatrix;
-      ar & bcvector;
-      ar & indexContainer;
-   }
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   //CbArray3D<IndexType,IndexerX1X2X3> bcindexmatrix;  //-1 solid // -2 fluid -...
-   CbArray3D<IndexType,IndexerX3X2X1> bcindexmatrix;
-   std::vector<BCClassPtr> bcvector;
-   std::vector<IndexType> indexContainer;
-};
-
-template< typename BCClass , class IndexType>
-const IndexType BCArray3D<BCClass,IndexType>::SOLID  = -1;
-template< typename BCClass , class IndexType>
-const IndexType BCArray3D<BCClass,IndexType>::FLUID  = -2;
-template< typename BCClass , class IndexType> 
-const IndexType BCArray3D<BCClass,IndexType>::INTERFACECF = -3;
-template< typename BCClass, class IndexType>
-const IndexType BCArray3D<BCClass, IndexType>::INTERFACEFC = -4;
-template< typename BCClass , class IndexType>
-const IndexType BCArray3D<BCClass,IndexType>::UNDEFINED = -5;
-
-#endif //D3Q19BCMATRIX_H
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.cpp b/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.cpp
deleted file mode 100644
index 6e2f2589e364812052f21e34da8fb790d0271bd2..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "BCProcessor.h"
-
-BCProcessor::BCProcessor()
-{}
-//////////////////////////////////////////////////////////////////////////
-BCProcessor::~BCProcessor()
-{}
-//////////////////////////////////////////////////////////////////////////
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.h b/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.h
deleted file mode 100644
index 5eea70a1b86c7f23f6e94691c1bcb5c92f1c77c9..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BCProcessor.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef BCPROCESSOR_H
-#define BCPROCESSOR_H
-
-#include "EsoTwist3D.h"
-
-
-#include <boost/serialization/serialization.hpp>
-#include <boost/shared_ptr.hpp>
-
-class BCProcessor;
-typedef boost::shared_ptr<BCProcessor> BCProcessorPtr;
-
-#include "LBMKernel3D.h"
-#include "BoundaryCondition.h"
-
-class BCProcessor
-{
-public:
-   BCProcessor();
-   virtual ~BCProcessor();
-   virtual void applyPreCollisionBC() = 0;
-   virtual void applyPostCollisionBC() = 0;
-   virtual void addBC(BoundaryConditionPtr bc) = 0;
-   virtual BoundaryConditionPtr getBC(BoundaryCondition::Type type) = 0;
-   virtual BCProcessorPtr clone(LBMKernel3DPtr kernel) = 0;
-protected:
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-   }
-};
-
-#endif
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.cpp
deleted file mode 100644
index 76a2a603af917750cd57d89421dd1da7c209a2a9..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "BoundaryCondition.h"
-
-BoundaryCondition::BoundaryCondition() : compressible(false)
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::apply()
-{
-   if (this->compressible)
-   {
-      calcFeqsForDirFct = &D3Q27System::getCompFeqForDirection;
-      calcMacrosFct = &D3Q27System::calcCompMacroscopicValues;
-      calcFeqFct = &D3Q27System::calcCompFeq;
-   }
-   else
-   {
-      calcFeqsForDirFct = &D3Q27System::getIncompFeqForDirection;
-      calcMacrosFct = &D3Q27System::calcIncompMacroscopicValues;
-      calcFeqFct = &D3Q27System::calcIncompFeq;
-   }
-
-   int cbc = 0;
-   int cn = 0;
-   int j;
-
-   int nsize = (int)nodeVector.size();
-
-      for (j = cn; j < nsize;)
-      {
-         x1 = nodeVector[j++];
-         x2 = nodeVector[j++];
-         x3 = nodeVector[j++];
-
-         bcPtr = bcVector[cbc];
-         cbc++;
-
-         applyBC();
-      }
-      cn = j;
-}
-////////////////////////////////////////////////////////////////////////////
-//void BoundaryCondition::addDistributions(EsoTwist3DPtr distributions)
-//{
-//   this->distributions = distributions;
-//}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::addNode(int x1, int x2, int x3)
-{
-   nodeVector.push_back(x1);
-   nodeVector.push_back(x2);
-   nodeVector.push_back(x3);
-}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::addBcPointer(D3Q27BoundaryConditionPtr bcPtr)
-{
-   bcVector.push_back(bcPtr);
-}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::setCompressible(bool c)
-{
-   compressible = c;
-}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::setCollFactor(LBMReal cf)
-{
-   collFactor = cf;
-}
-
-//////////////////////////////////////////////////////////////////////////
-BoundaryCondition::Type BoundaryCondition::getType()
-{
-   return type;
-}
-//////////////////////////////////////////////////////////////////////////
-bool BoundaryCondition::isPreCollision()
-{
-   return preCollision;
-}
-//////////////////////////////////////////////////////////////////////////
-void BoundaryCondition::clearData()
-{
-   nodeVector.clear();
-   bcVector.clear();
-}
-
-
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.h
deleted file mode 100644
index a782e06f4fe90ad0625084166fab18bfbc19188f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/BoundaryCondition.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-#ifndef BOUNDARYCONDITION_H
-#define BOUNDARYCONDITION_H
-
-#include <vector>
-#include <string>
-
-#include "D3Q27BoundaryCondition.h"
-#include "D3Q27System.h"
-#include "EsoTwist3D.h"
-
-#include <boost/serialization/serialization.hpp>
-#include <boost/serialization/base_object.hpp>
-#include <boost/serialization/export.hpp>
-
-#include <boost/shared_ptr.hpp>
-
-class BoundaryCondition;
-typedef boost::shared_ptr<BoundaryCondition> BoundaryConditionPtr;
-
-class BoundaryCondition
-{
-public:
-   enum Type
-   {
-      Velocity, Density, NoSlip, Slip 
-   };
-public:
-   BoundaryCondition();
-   virtual ~BoundaryCondition() {}
-   
-   void apply();
-   virtual void addDistributions(DistributionArray3DPtr distributions) = 0;
-   void addNode(int x1, int x2, int x3);
-   void addBcPointer(D3Q27BoundaryConditionPtr bcPtr);
-   void setCompressible(bool c);
-   void setCollFactor(LBMReal cf);
-   BoundaryCondition::Type getType();
-   bool isPreCollision();
-   virtual BoundaryConditionPtr clone()=0;
-   void clearData();
-protected:
-   virtual void applyBC() = 0;
-   
-   std::vector <int> nodeVector;
-   std::vector <D3Q27BoundaryConditionPtr> bcVector;
-
-   bool compressible;
-   Type type;
-   bool preCollision;
-
-   D3Q27BoundaryConditionPtr bcPtr;
-   DistributionArray3DPtr distributions;
-
-   LBMReal collFactor;
-   int x1, x2, x3;
-
-   typedef void(*CalcMacrosFct)(const LBMReal* const& /*f[27]*/, LBMReal& /*rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
-   typedef LBMReal(*CalcFeqForDirFct)(const int& /*direction*/, const LBMReal& /*(d)rho*/, const LBMReal& /*vx1*/, const LBMReal& /*vx2*/, const LBMReal& /*vx3*/);
-   typedef  void(*CalcFeqFct)(LBMReal* const& /*feq/*[27]*/, const LBMReal& /*rho*/, const LBMReal& /*vx1*/, const LBMReal& /*vx2*/, const LBMReal& /*vx3*/);
-   
-   CalcFeqForDirFct calcFeqsForDirFct ;
-   CalcMacrosFct    calcMacrosFct;
-   CalcFeqFct       calcFeqFct;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nodeVector;
-      ar & bcVector;
-      ar & compressible;
-      ar & type;
-      ar & distributions;
-      ar & collFactor;
-   }
-};
-
-
-#endif 
diff --git a/source/VirtualFluidsCore/BoundaryCondition/CMakePackage.txt b/source/VirtualFluidsCore/BoundaryCondition/CMakePackage.txt
deleted file mode 100644
index de1dc5a88225180b8e40c6cf46f4a6fbb102778f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/CMakePackage.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-GET_FILENAME_COMPONENT( CURRENT_DIR  ${CMAKE_CURRENT_LIST_FILE} PATH) 
-COLLECT_PACKAGE_DATA_WITH_OPTION(${CURRENT_DIR} ALL_SOURCES)
\ No newline at end of file
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.cpp
deleted file mode 100644
index 6d4489cee079ca7f2ab422634ac2e495a257aa4e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "D3Q27BCFunction.h"
-
-const double D3Q27BCFunction::INFTIMEDEPENDENT = -1.0;
-const double D3Q27BCFunction::INFCONST         = -10.0;
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.h
deleted file mode 100644
index 7090afd4c17dde17a5eec219c89def1272b5494d..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BCFunction.h
+++ /dev/null
@@ -1,117 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef D3Q27BCFUNCTION_H
-#define D3Q27BCFUNCTION_H
-
-#include <boost/serialization/serialization.hpp>
-#include <boost/serialization/split_member.hpp>
-
-#include <basics/utilities/UbInfinity.h>
-
-#include <MuParser/include/muParser.h>
-
-
-class D3Q27BCFunction
-{
-public:
-   static const double INFTIMEDEPENDENT;
-   static const double INFCONST;
-
-public:
-   D3Q27BCFunction() 
-      : starttime(-Ub::inf ), endtime(-Ub::inf ) 
-   {
-
-   }
-   D3Q27BCFunction( const mu::Parser& function, const double& starttime, const double& endtime )
-      : function(function), starttime(starttime), endtime(endtime)
-   {
-
-   }
-   D3Q27BCFunction( const std::string& functionstring, const double& starttime, const double& endtime )
-      : starttime(starttime), endtime(endtime)
-   {
-      this->setFunction(functionstring); 
-   }
-   D3Q27BCFunction( const double& velocity, const double& starttime, const double& endtime )
-      : starttime(starttime), endtime(endtime)
-   {
-      this->setFunction(velocity); 
-   }
-
-   void setFunction(const mu::Parser& function) { this->function = function; }
-   void setFunction(const std::string& functionstring) { this->function.SetExpr(functionstring); }
-   void setFunction(const double& constVelocity) { std::stringstream dummy; dummy<<constVelocity; function.SetExpr(dummy.str());  }
-   void setStartTime(const double& starttime) {this->starttime = starttime; }
-   void setEndTime(const double& starttime) {this->endtime = endtime; }
-
-   mu::Parser&        getFunction()        { return function;  }
-   const mu::Parser&  getFunction()  const { return function;  }
-   const double&      getStartTime() const { return starttime; }
-   const double&      getEndTime()   const { return endtime;   }
-
-   std::string toString() const
-   {
-      std::stringstream info;
-      if     (starttime==INFTIMEDEPENDENT) info<<"start=inf. timedep., ";
-      else if(starttime==INFCONST        ) info<<"start=inf. const., ";
-      else                                 info<<"start="<<starttime<<", ";
-      if     (endtime==INFTIMEDEPENDENT) info<<"end=inf. timedep."<<std::endl;
-      else if(endtime==INFCONST        ) info<<"end=inf. const."<<std::endl;
-      else                               info<<"end="<<endtime<<std::endl;
-      info<<"expr="<<function.GetExpr()<<std::endl;
-      info<<"with constants: ";
-      mu::valmap_type cmap = function.GetConst();
-      for(mu::valmap_type::const_iterator item = cmap.begin(); item!=cmap.end(); ++item)
-         info<<item->first<<"="<<item->second<<", ";
-      return info.str();
-   }
-   /*==========================================================*/
-   friend inline std::ostream& operator << (std::ostream& os, const D3Q27BCFunction& bc) 
-   {
-      os<<bc.toString();
-      return os;
-   }
-
-protected:
-   mu::Parser function;
-   double starttime;
-   double endtime;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void save(Archive & ar, const unsigned int version) const
-   {
-      mu::string_type expr = function.GetExpr();
-      mu::valmap_type constants = function.GetConst();
-      ar & expr;
-      ar & constants;
-
-      ar & starttime;
-      ar & endtime;
-   }
-   template<class Archive>
-   void load(Archive & ar, const unsigned int version)
-   {
-      mu::string_type expr;
-      mu::valmap_type constants;
-      ar & expr;
-      ar & constants;
-      function.SetExpr(expr);
-      for (mu::valmap_type::iterator pos = constants.begin(); pos!=constants.end(); ++pos)
-         function.DefineConst(pos->first, pos->second);
-
-      function.InitConst();
-
-      ar & starttime;
-      ar & endtime;
-   }
-   BOOST_SERIALIZATION_SPLIT_MEMBER()
-};
-
-#endif //D3Q27BCFUNCTION_H
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.cpp
deleted file mode 100644
index ac1e0b1dceaf04c7fe9c4a12aa671cea7e85b29c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#include "D3Q27BoundaryCondition.h"
-
-const long long D3Q27BoundaryCondition::maxOptionVal = ( 1<<optionDigits ) - 1; //2^3-1 -> 7 
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.h
deleted file mode 100644
index 219d1d835c601bdf4a115a338bc46d8823d5a479..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryCondition.h
+++ /dev/null
@@ -1,282 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef D3Q27BOUNDARYCONDITION_H
-#define D3Q27BOUNDARYCONDITION_H
-
-#include <vector>
-#include <string>
-
-#include <basics/utilities/UbException.h>                  
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbTuple.h>
-#include "D3Q27System.h"
-
-#include <boost/serialization/serialization.hpp>
-
-class D3Q27BoundaryCondition;
-typedef boost::shared_ptr<D3Q27BoundaryCondition> D3Q27BoundaryConditionPtr;
-
-class D3Q27BoundaryCondition 
-{
-public:
-   D3Q27BoundaryCondition() 
-      : noslipBoundaryFlags(0)		
-      , slipBoundaryFlags(0)		
-      , velocityBoundaryFlags(0)		
-      , densityBoundaryFlags(0)		
-      , wallModelBoundaryFlags(0)
-      , bcVelocityX1(0.0f)
-      , bcVelocityX2(0.0f)
-      , bcVelocityX3(0.0f)
-      , bcDensity(0.0f)
-      , bcLodiDensity(0.0f)
-      , bcLodiVelocityX1(0.0f)
-      , bcLodiVelocityX2(0.0f)
-      , bcLodiVelocityX3(0.0f)
-      , bcLodiLentgh(0.0f)
-      , nx1(0.0f)
-      , nx2(0.0f)
-      , nx3(0.0f)
-   {
-      //wenn folgendes nicht geht, dann hat man weiter unten bei der bit-geschichte ein ernstes problem!!!
-      UB_STATIC_ASSERT( sizeof(long long) >= 8);
-      //UB_STATIC_ASSERT( sizeof(double) >= 16);
-      //UB_STATIC_ASSERT( sizeof(long long) == 32);
-      UB_STATIC_ASSERT( (sizeof(long long)*8) >= (D3Q27System::FENDDIR+1)*D3Q27BoundaryCondition::optionDigits );
-
-      for(int fdir=D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++) 
-         q[fdir] = -999.; 
-   }
-   virtual ~D3Q27BoundaryCondition() {}
-
-   virtual bool isEmpty() { return (noslipBoundaryFlags&slipBoundaryFlags&velocityBoundaryFlags&densityBoundaryFlags)==0;}
-   virtual bool hasBoundaryCondition()
-   {
-      return (  hasNoSlipBoundary() || hasSlipBoundary() 
-             || hasDensityBoundary() || hasVelocityBoundary() || hasWallModelBoundary() );
-   }
-
-   virtual bool hasBoundaryConditionFlag(const int& direction)
-   {
-      assert( direction >= D3Q27System::FSTARTDIR && direction <= D3Q27System::FENDDIR );
-
-      return (   hasNoSlipBoundaryFlag(direction) || hasSlipBoundaryFlag(direction) 
-              || hasDensityBoundaryFlag(direction) || hasVelocityBoundaryFlag(direction)  || hasWallModelBoundaryFlag(direction));
-   }
-protected:
-   void setFlagBits(long long& flag, const int& direction, const short& secOpt)
-   {
-      if( (secOpt+1)>maxOptionVal ) 
-         throw UbException(UB_EXARGS,"error: option > "+UbSystem::toString(maxOptionVal-1));
-      
-      //alle digits an den betreffenden postionen auf "0"
-      flag &= ~( maxOptionVal<<(direction*optionDigits) );
-      //alle digitsan den betreffenden postionen entsprechend der marke setzen
-      flag |= ((long long)(secOpt+1)<<(direction*optionDigits));
-   }
-public:
-   /*===================== NoSlip Boundary ==================================================*/	
-   void       setNoSlipBoundaryFlag(const int& direction, const short& secOpt=0)    { this->setFlagBits(noslipBoundaryFlags,direction,secOpt);                                     }  
-   void       unsetNoSlipBoundaryFlag(const int& direction)                         { this->noslipBoundaryFlags &= ~( maxOptionVal<<(direction*optionDigits) );                    }
-   void       unsetNoSlipBoundary()                                                 { this->noslipBoundaryFlags = 0;                                                               }
-   long long  getNoSlipBoundary()	                                                { return this->noslipBoundaryFlags;                                                            }
-   bool       hasNoSlipBoundary()					                                    { return (noslipBoundaryFlags!=0);                                                             }
-   bool       hasNoSlipBoundaryFlag(const int& direction)                           { return ( ( ( noslipBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) != 0);         }
-   short      getNoSlipSecondaryOption(const int& direction)                        { return (short)( (  ( noslipBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) - 1 ); }
-   /*===================== WallModel Boundary ==================================================*/	
-   void       setWallModelBoundaryFlag(const int& direction, const short& secOpt=0) { this->setFlagBits(wallModelBoundaryFlags,direction,secOpt);                                     }  
-   void       unsetWallModelBoundaryFlag(const int& direction)                      { this->wallModelBoundaryFlags &= ~( maxOptionVal<<(direction*optionDigits) );                    }
-   void       unsetWallModelBoundary()                                              { this->wallModelBoundaryFlags = 0;                                                               }
-   long long  getWallModelBoundary()	                                             { return this->wallModelBoundaryFlags;                                                            }
-   bool       hasWallModelBoundary()					                                 { return (wallModelBoundaryFlags!=0);                                                             }
-   bool       hasWallModelBoundaryFlag(const int& direction)                        { return ( ( ( wallModelBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) != 0);         }
-   short      getWallModelSecondaryOption(const int& direction)                     { return (short)( (  ( wallModelBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) - 1 ); }
-   /*===================== Slip-Solid Boundary ==================================================*/	
-   void       setSlipBoundaryFlag(const int& direction, const short& secOpt=0)      { this->setFlagBits(slipBoundaryFlags,direction,secOpt);                                     }  
-   void       unsetSlipBoundaryFlag(const int& direction)                           { this->slipBoundaryFlags &= ~( maxOptionVal<<(direction*optionDigits) );                    }
-   void       unsetSlipBoundary()                                                   { this->slipBoundaryFlags = 0;                                                               }
-   long long  getSlipBoundary()	                                                   { return this->slipBoundaryFlags;                                                            }
-   bool       hasSlipBoundary()					                                       { return (slipBoundaryFlags!=0);                                                             }
-   bool       hasSlipBoundaryFlag(const int& direction)	                           { return ( ( ( slipBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) != 0);         }
-   short      getSlipSecondaryOption(const int& direction)                          { return (short)( (  ( slipBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) - 1 ); }
-   void       setNormalVector(const float& nx1,const float& nx2,const float& nx3)   { this->nx1 = nx1; this->nx2 = nx2;  this->nx3 = nx3;}
-   UbTupleFloat3 getNormalVector()                                                  { return makeUbTuple(nx1,nx2,nx3); }
-
-   /*============== Velocity Boundary ========================*/
-   void       setVelocityBoundaryFlag(const int& direction, const short& secOpt=0)  { this->setFlagBits(velocityBoundaryFlags,direction,secOpt);                                     }  
-   void       unsetVelocityBoundaryFlag(const int& direction)                       { this->velocityBoundaryFlags &= ~( maxOptionVal<<(direction*optionDigits) );                    }
-   void       unsetVelocityBoundary()                 		                        { this->velocityBoundaryFlags = 0;                                                               }
-   long long  getVelocityBoundary()	               		                           { return this->velocityBoundaryFlags;                                                            }
-   bool       hasVelocityBoundary()   					 		                           { return this->velocityBoundaryFlags!=0;                                                         }
-   bool       hasVelocityBoundaryFlag(const int& direction)                         { return ( ( ( velocityBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) != 0);         }
-   short      getVelocitySecondaryOption(const int& direction)                      { return (short)( (  ( velocityBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) - 1 ); }
-
-   void  setBoundaryVelocityX1(const float& vx1) { this->bcVelocityX1 = vx1;  } 
-   void  setBoundaryVelocityX2(const float& vx2) { this->bcVelocityX2 = vx2;  } 
-   void  setBoundaryVelocityX3(const float& vx3) { this->bcVelocityX3 = vx3;  } 
-   float getBoundaryVelocityX1()                 { return this->bcVelocityX1; }
-   float getBoundaryVelocityX2()                 { return this->bcVelocityX2; }
-   float getBoundaryVelocityX3()                 { return this->bcVelocityX3; }
-   float getBoundaryVelocity(const int& direction) 
-   {                   
-      switch(direction)
-      {
-      case D3Q27System::E : return (float)( UbMath::c4o9*(+bcVelocityX1) );      //(2/cs^2)(=6)*rho_0(=1 bei inkompr)*wi*u*ei mit cs=1/sqrt(3)
-      case D3Q27System::W : return (float)( UbMath::c4o9*(-bcVelocityX1) );      //z.B. aus paper manfred MRT LB models in three dimensions (2002)   
-      case D3Q27System::N : return (float)( UbMath::c4o9*(+bcVelocityX2) );   
-      case D3Q27System::S : return (float)( UbMath::c4o9*(-bcVelocityX2) );
-      case D3Q27System::T : return (float)( UbMath::c4o9*(+bcVelocityX3) );
-      case D3Q27System::B : return (float)( UbMath::c4o9*(-bcVelocityX3) );
-      case D3Q27System::NE: return (float)( UbMath::c1o9*(+bcVelocityX1+bcVelocityX2             ) );
-      case D3Q27System::SW: return (float)( UbMath::c1o9*(-bcVelocityX1-bcVelocityX2             ) );
-      case D3Q27System::SE: return (float)( UbMath::c1o9*(+bcVelocityX1-bcVelocityX2             ) );
-      case D3Q27System::NW: return (float)( UbMath::c1o9*(-bcVelocityX1+bcVelocityX2             ) );
-      case D3Q27System::TE: return (float)( UbMath::c1o9*(+bcVelocityX1             +bcVelocityX3) );
-      case D3Q27System::BW: return (float)( UbMath::c1o9*(-bcVelocityX1             -bcVelocityX3) );
-      case D3Q27System::BE: return (float)( UbMath::c1o9*(+bcVelocityX1             -bcVelocityX3) );
-      case D3Q27System::TW: return (float)( UbMath::c1o9*(-bcVelocityX1             +bcVelocityX3) );
-      case D3Q27System::TN: return (float)( UbMath::c1o9*(             +bcVelocityX2+bcVelocityX3) );
-      case D3Q27System::BS: return (float)( UbMath::c1o9*(             -bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::BN: return (float)( UbMath::c1o9*(             +bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::TS: return (float)( UbMath::c1o9*(             -bcVelocityX2+bcVelocityX3) );
-      case D3Q27System::TNE: return (float)( UbMath::c1o36*(+bcVelocityX1+bcVelocityX2+bcVelocityX3) );
-      case D3Q27System::BSW: return (float)( UbMath::c1o36*(-bcVelocityX1-bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::BNE: return (float)( UbMath::c1o36*(+bcVelocityX1+bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::TSW: return (float)( UbMath::c1o36*(-bcVelocityX1-bcVelocityX2+bcVelocityX3) );
-      case D3Q27System::TSE: return (float)( UbMath::c1o36*(+bcVelocityX1-bcVelocityX2+bcVelocityX3) );
-      case D3Q27System::BNW: return (float)( UbMath::c1o36*(-bcVelocityX1+bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::BSE: return (float)( UbMath::c1o36*(+bcVelocityX1-bcVelocityX2-bcVelocityX3) );
-      case D3Q27System::TNW: return (float)( UbMath::c1o36*(-bcVelocityX1+bcVelocityX2+bcVelocityX3) ); 
-      default: throw UbException(UB_EXARGS,"unknown error");
-      }
-   }
-
-   /*============== Density Boundary ========================*/
-   void       setDensityBoundaryFlag(const int& direction, const short& secOpt=0) { this->setFlagBits(densityBoundaryFlags,direction,secOpt);                                     }  
-   void       unsetDensityBoundaryFlag(const int& direction)                      { this->densityBoundaryFlags &= ~( maxOptionVal<<(direction*optionDigits) );                    }
-   void       unsetDensityBoundary()                                              { this->densityBoundaryFlags = 0;                                                               }
-   long long  getDensityBoundary()	                                              { return this->densityBoundaryFlags;                                                            }
-   bool       hasDensityBoundary()					                                  { return (this->densityBoundaryFlags!=0);                                                       }
-   bool       hasDensityBoundaryFlag(const int& direction)	                      { return ( ( ( densityBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) != 0);         }
-   short      getDensitySecondaryOption(const int& direction)                     { return (short)( (  ( densityBoundaryFlags>>(optionDigits*direction) ) & maxOptionVal ) - 1 ); }
-
-   void  setBoundaryDensity(float density) { this->bcDensity = density; } 
-   float getBoundaryDensity()              { return this->bcDensity;    }
-
-   //Lodi extension
-   void  setDensityLodiDensity(const float& bcLodiDensity)       { this->bcLodiDensity    = bcLodiDensity;    } 
-   void  setDensityLodiVelocityX1(const float& bcLodiVelocityX1) { this->bcLodiVelocityX1 = bcLodiVelocityX1; } 
-   void  setDensityLodiVelocityX2(const float& bcLodiVelocityX2) { this->bcLodiVelocityX2 = bcLodiVelocityX2; } 
-   void  setDensityLodiVelocityX3(const float& bcLodiVelocityX3) { this->bcLodiVelocityX3 = bcLodiVelocityX3; } 
-   void  setDensityLodiLength(const float& bcLodiLentgh)         { this->bcLodiLentgh     = bcLodiLentgh;     } 
-   float getDensityLodiDensity() const                           { return this->bcLodiDensity;    } 
-   float getDensityLodiVelocityX1() const                        { return this->bcLodiVelocityX1; }
-   float getDensityLodiVelocityX2() const                        { return this->bcLodiVelocityX2; }
-   float getDensityLodiVelocityX3() const                        { return this->bcLodiVelocityX3; }
-   float getDensityLodiLength() const                            { return this->bcLodiLentgh;     }
-
-   float& densityLodiDensity()                                   { return this->bcLodiDensity;    } 
-   float& densityLodiVelocityX1()                                { return this->bcLodiVelocityX1; }
-   float& densityLodiVelocityX2()                                { return this->bcLodiVelocityX2; }
-   float& densityLodiVelocityX3()                                { return this->bcLodiVelocityX3; }
-   float& densityLodiLentgh()                                    { return this->bcLodiLentgh;     }
-
-   const float& densityLodiDensity()  const                      { return this->bcLodiDensity;    } 
-   const float& densityLodiVelocityX1() const                    { return this->bcLodiVelocityX1; }
-   const float& densityLodiVelocityX2() const                    { return this->bcLodiVelocityX2; }
-   const float& densityLodiVelocityX3() const                    { return this->bcLodiVelocityX3; }
-   const float& densityLodiLentgh()  const                       { return this->bcLodiLentgh;     }
-
-
-   /*======================= Qs =============================*/
-   void  setQ(const float& val, const int& direction) { q[direction] = val; }
-   float getQ(const int& direction)                   { return q[direction]; }
-   
-   virtual std::vector< std::string > getBCNames()
-   {
-      std::vector< std::string > tmp;
-      tmp.push_back( "NoSlipBC"   );
-      tmp.push_back( "SlipBC"     );
-      tmp.push_back( "VelocityBC" );
-      tmp.push_back( "DensityBC"  );
-      return tmp;
-   }
-   virtual std::vector< long long > getBCFlags()
-   {
-      std::vector< long long > tmp;
-      tmp.push_back( noslipBoundaryFlags   );
-      tmp.push_back( slipBoundaryFlags     );
-      tmp.push_back( velocityBoundaryFlags );
-      tmp.push_back( densityBoundaryFlags  );
-      return tmp;
-   }
-
-   static bool hasFlagForDirection(const long long& flag, const int& direction)
-   {
-      return ( ( ( flag>>(optionDigits*direction) ) & maxOptionVal ) != 0);
-   }
-
-public:
-   static const int       optionDigits = 2;  //--> 3 bits für secondary Option --> maxOptionVal = 7, da man mit drei Digits max die 7 darstellen kann
-   static const long long maxOptionVal;// = ( 1<<optionDigits ) - 1; //2^3-1 -> 7
-
-protected:
-   float q[D3Q27System::FENDDIR+1];
-   //float q[D3Q27System::STARTF+1];
-
-   long long noslipBoundaryFlags;		
-   long long slipBoundaryFlags;		
-   long long velocityBoundaryFlags;		
-   long long densityBoundaryFlags;		
-   long long wallModelBoundaryFlags;
-
-   float  bcVelocityX1;
-   float  bcVelocityX2;
-   float  bcVelocityX3;
-   float  bcDensity;
-
-   float  bcLodiDensity;
-   float  bcLodiVelocityX1;
-   float  bcLodiVelocityX2;
-   float  bcLodiVelocityX3;
-   float  bcLodiLentgh;
-
-   float  nx1,nx2,nx3;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & q; 
-
-      ar & noslipBoundaryFlags;		
-      ar & slipBoundaryFlags;		
-      ar & velocityBoundaryFlags;		
-      ar & densityBoundaryFlags;		
-
-      ar & bcVelocityX1;
-      ar & bcVelocityX2;
-      ar & bcVelocityX3;
-      ar & bcDensity;
-
-      ar & bcLodiDensity;
-      ar & bcLodiVelocityX1;
-      ar & bcLodiVelocityX2;
-      ar & bcLodiVelocityX3;
-      ar & bcLodiLentgh;
-
-      ar & wallModelBoundaryFlags;
-
-      ar & nx1;
-      ar & nx2;
-      ar & nx3;
-   }
-
-};
-
-#endif //D3Q27BOUNDARYCONDITION_H
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryConditionAdapter.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryConditionAdapter.h
deleted file mode 100644
index 668e3c0bfab781f6df7e97f9d385ad29c21c8cfb..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27BoundaryConditionAdapter.h
+++ /dev/null
@@ -1,90 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef D3Q27BOUNDARYCONDITIONADAPTER_H
-#define D3Q27BOUNDARYCONDITIONADAPTER_H
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-#include <boost/serialization/serialization.hpp>
-#include <boost/serialization/base_object.hpp>
-#include <boost/serialization/export.hpp>
-#include <boost/shared_ptr.hpp>
-
-class D3Q27BoundaryConditionAdapter;
-typedef boost::shared_ptr<D3Q27BoundaryConditionAdapter> D3Q27BoundaryConditionAdapterPtr;
-
-#include "D3Q27BoundaryCondition.h"
-#include "basics/objects/ObObject.h"
-#include "basics/objects/ObObjectCreator.h"
-#include "basics/utilities/UbFileOutput.h"
-#include "basics/utilities/UbFileInput.h"
-#include "basics/utilities/UbAutoRun.hpp"
-
-
-/*=========================================================================*/
-/*  D3Q27BoundaryConditionAdapter                                          */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 06.09.06
-*/ 
-
-/*
-usage: ...
-*/
-
-class D3Q27Interactor;
-
-class D3Q27BoundaryConditionAdapter
-{
-public:
-   D3Q27BoundaryConditionAdapter() 
-      :  secondaryBcOption(0)
-       , type(0)
-   {
-   }
-   D3Q27BoundaryConditionAdapter(const short& secondaryBcOption) 
-      :  secondaryBcOption(secondaryBcOption) 
-       , type(0)
-   {
-   }
-   virtual ~D3Q27BoundaryConditionAdapter() {}
-
-   //methods
-   bool isTimeDependent() { return((this->type & TIMEDEPENDENT) ==  TIMEDEPENDENT); }
-
-   virtual short getSecondaryBcOption() { return this->secondaryBcOption; }
-   virtual void  setSecondaryBcOption(const short& val) { this->secondaryBcOption=val; }
-
-   virtual void init(const D3Q27Interactor* const& interactor, const double& time=0) = 0;
-   virtual void update(const D3Q27Interactor* const& interactor, const double& time=0) = 0;
-
-   virtual void adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) = 0;
-   virtual void adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 ) = 0;
-
-protected:
-   short secondaryBcOption;
-
-   char  type;
-
-   static const char   TIMEDEPENDENT = 1<<0;//'1';
-   static const char   TIMEPERIODIC  = 1<<1;//'2';
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & secondaryBcOption;
-   }
-};
-
-
-#endif //D3Q27BOUNDARYCONDITIONADAPTER_H
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.cpp
deleted file mode 100644
index 13dfa0488183e3156ab0ce295b869e40ba20eac4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "D3Q27DensityBCAdapter.h"
-#include "basics/utilities/UbLogger.h"
-#include "basics/utilities/UbInfinity.h"
-
-using namespace std;
-/*==========================================================*/
-D3Q27DensityBCAdapter::D3Q27DensityBCAdapter(const double& dens, const double& startTime, const double& endTime )
-{
-   this->densBCs.push_back( D3Q27BCFunction(dens,startTime,endTime) );
-   this->init();
-}
-/*==========================================================*/
-D3Q27DensityBCAdapter::D3Q27DensityBCAdapter(const D3Q27BCFunction& densBC )
-{
-   this->densBCs.push_back(densBC);
-   this->init();
-}
-/*==========================================================*/
-D3Q27DensityBCAdapter::D3Q27DensityBCAdapter(const std::vector< D3Q27BCFunction >& densBCs)
-{
-   this->densBCs = densBCs;
-   this->init();
-}
-/*==========================================================*/
-D3Q27DensityBCAdapter::D3Q27DensityBCAdapter(const mu::Parser& function, const double& startTime, const double& endTime )
-{
-   this->densBCs.push_back(D3Q27BCFunction(function,startTime,endTime));
-   this->init();
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::init()
-{
-   this->timeStep = 0.0;
-
-   this->x1 = 0.0;
-   this->x2 = 0.0;
-   this->x3 = 0.0;
-
-   this->tmpDensityFunction = NULL;
-
-   try //initilialization and validation of functions
-   {
-      for(size_t pos=0; pos<densBCs.size(); ++pos)
-      {
-         if( !(    UbMath::equal( D3Q27BCFunction::INFCONST, densBCs[pos].getEndTime() )
-                && UbMath::greaterEqual( this->timeStep,  densBCs[pos].getStartTime()  ) ) )
-         { 
-            this->setTimeDependent();
-         }
-
-         densBCs[pos].getFunction().DefineVar("t" , &this->timeStep);
-         densBCs[pos].getFunction().DefineVar("x1", &this->x1      );
-         densBCs[pos].getFunction().DefineVar("x2", &this->x2      );
-         densBCs[pos].getFunction().DefineVar("x3", &this->x3      );
-
-         densBCs[pos].getFunction().Eval(); //<-- validation
-      }
-   }
-   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
-                                         <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
-   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" );                       }
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::init(const D3Q27Interactor* const& interactor, const double& time)
-{
-   this->timeStep           = time;
-   this->tmpDensityFunction = NULL;
-   double maxEndtime        = -Ub::inf;
-
-   //aktuelle Densityfunction bestimmen
-   for(size_t pos=0; pos<densBCs.size(); ++pos)
-   {
-      if( UbMath::equal(densBCs[pos].getEndTime(),D3Q27BCFunction::INFTIMEDEPENDENT)) maxEndtime=Ub::inf;
-      maxEndtime = UbMath::max(maxEndtime,densBCs[pos].getStartTime(),densBCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
-
-      if( UbMath::greaterEqual(this->timeStep,densBCs[pos].getStartTime()) ) 
-      {
-         if(   UbMath::lessEqual(this->timeStep,densBCs[pos].getEndTime())
-            || UbMath::equal(densBCs[pos].getEndTime(),(double)D3Q27BCFunction::INFCONST)
-            || UbMath::equal(densBCs[pos].getEndTime(),(double)D3Q27BCFunction::INFTIMEDEPENDENT) )
-         {
-            tmpDensityFunction = &densBCs[pos].getFunction();
-            break;
-         }
-      }
-   }
-
-   //wenn funktionen zweitlich konstant sind und bis t=unendlich gelten
-   //kann man zeitabhaengigkeit deaktivieren
-   if( UbMath::greaterEqual(time,maxEndtime) ) this->unsetTimeDependent();
-
-   UBLOG(logDEBUG4,"D3Q27DensityBCAdapter::init(time="<<time<<") "
-                    <<", rho= \""<<(tmpDensityFunction ? tmpDensityFunction->GetExpr() : "-")
-                    <<"\", timedependant="<<(this->isTimeDependent() ? "true" : "false") );
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::update( const D3Q27Interactor* const& interactor, const double& time ) 
-{
-   this->init(interactor,time);
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time )
-{
-   bc->setDensityBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
-   bc->setQ((float)q,fdirection);
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time )
-{
-   this->setNodeDensity(interactor,bc,worldX1,worldX2,worldX3,time);
-}
-/*==========================================================*/
-void D3Q27DensityBCAdapter::setNodeDensity( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
-{
-   //Geschwindigkeiten setzen
-   try
-   {
-      //PunktKoordinaten bestimmen
-      this->x1 = worldX1;
-      this->x2 = worldX2;
-      this->x3 = worldX3;
-      this->timeStep = timestep;
-
-      if(tmpDensityFunction) bc->setBoundaryDensity((float)tmpDensityFunction->Eval());  
-   }
-   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
-                                          <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
-   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" ); }
-}
-/*==========================================================*/
-double D3Q27DensityBCAdapter::getDensity(const double& x1, const double& x2, const double& x3, const double& timeStep)
-{
-   this->x1 = x1;
-   this->x2 = x2;
-   this->x3 = x3;
-   this->timeStep = timeStep;
-
-   if(!tmpDensityFunction) return 0.0;
-
-   return tmpDensityFunction->Eval();  
-}
-/*==========================================================*/
-string D3Q27DensityBCAdapter::toString()
-{
-   stringstream info;
-   info<<"D3Q27DensityBCAdapter:\n";
-   info<<" #dens-functions = "<<(int)densBCs.size()<<endl;
-   info<<" protected variables: x1, x2, x3, t"<<endl;
-
-   for(size_t i=0; i<densBCs.size(); ++i)
-   {
-      info<<"\n   dens-function nr."<<i<<":"<<endl;
-      info<<densBCs[i].toString()<<endl;
-   }
-   return info.str();
-}
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.h
deleted file mode 100644
index f93088ecd7194e3d9bb7cb41125d22b2fa1ed931..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27DensityBCAdapter.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef D3Q27DensityBCAdapter_H
-#define D3Q27DensityBCAdapter_H
-        
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <vector>
-
-#include "basics/utilities/UbMath.h"
-#include "basics/utilities/UbTuple.h"
-
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "D3Q27BCFunction.h"
-
-//*  D3Q27DensityBCAdapter                                                            */
-//*                                                                         */
-//**
-//<BR><BR>
-//@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//@version 1.0 - 06.09.06
-//*/ 
-//
-//*
-//usage: ...
-//*/
-
-
-class D3Q27DensityBCAdapter : public D3Q27BoundaryConditionAdapter
-{
-public:
-   //constructors
-   D3Q27DensityBCAdapter() { this->init(); }
-   D3Q27DensityBCAdapter(const double& dens, const double& startTime=0.0, const double& endTime = D3Q27BCFunction::INFCONST );
-   D3Q27DensityBCAdapter(const D3Q27BCFunction& densBC );
-   D3Q27DensityBCAdapter(const std::vector< D3Q27BCFunction >& densBCs);
-   D3Q27DensityBCAdapter(const mu::Parser& function, const double& startTime=0.0, const double& endTime = D3Q27BCFunction::INFCONST  );
-
-   //------------- implements D3Q27BoundaryConditionAdapter ----- start
-   std::string toString();
-   ObObjectCreator* getCreator();
-
-   void init(const D3Q27Interactor* const& interactor, const double& time=0);
-   void update(const D3Q27Interactor* const& interactor, const double& time=0);
-
-   void adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 );
-   void adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 );
-
-   double getDensity(const double& x1, const double& x2, const double& x3, const double& timeStep);
-
-   //------------- implements D3Q27BoundaryConditionAdapter ----- end
-
-
-protected:
-   void init();
-   
-   //time dependency wird automatisch ueber D3Q27BCFunction Intervalle ermittelt!
-   void setTimeDependent()   { (this->type |=   TIMEDEPENDENT);}
-   void unsetTimeDependent() { (this->type &=  ~TIMEDEPENDENT);}
-   
-   void clear() { densBCs.clear(); }
-   void setNodeDensity(const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep);
-
-private:
-   mu::value_type x1, x2, x3; //brauch man nicht serialisieren!
-   mu::value_type timeStep;   //brauch man nicht serialisieren!
-
-   mu::Parser* tmpDensityFunction; //brauch man nicht serialisieren!
-   
-   std::vector<D3Q27BCFunction> densBCs;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<D3Q27BoundaryConditionAdapter>(*this);
-      ar & densBCs;
-   }
-};
-
-#endif 
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.cpp
deleted file mode 100644
index 4b33a7114c153bc21ac762f28dd0b08a81b24292..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-
-D3Q27ETBCProcessor::D3Q27ETBCProcessor()
-{
-   
-}
-//////////////////////////////////////////////////////////////////////////
-D3Q27ETBCProcessor::D3Q27ETBCProcessor(LBMKernel3DPtr kernel)
-{
-   DistributionArray3DPtr distributions = boost::dynamic_pointer_cast<EsoTwist3D>(kernel->getDataSet()->getFdistributions());
-   bcArray.resize( distributions->getNX1(), distributions->getNX2(), distributions->getNX3(), BCArray3D<D3Q27BoundaryCondition>::FLUID);
-}
-//////////////////////////////////////////////////////////////////////////
-D3Q27ETBCProcessor::~D3Q27ETBCProcessor()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BCProcessorPtr D3Q27ETBCProcessor::clone(LBMKernel3DPtr kernel)
-{
-   BCProcessorPtr bcProcessor(new D3Q27ETBCProcessor(kernel));
-   BoundaryConditionPtr velocity = this->getBC(BoundaryCondition::Velocity);
-   BoundaryConditionPtr density  = this->getBC(BoundaryCondition::Density);
-   BoundaryConditionPtr noSlip   = this->getBC(BoundaryCondition::NoSlip);
-   BoundaryConditionPtr slip     = this->getBC(BoundaryCondition::Slip);
-   if (velocity)bcProcessor->addBC(velocity->clone());
-   if (density) bcProcessor->addBC(density->clone());
-   if (noSlip)  bcProcessor->addBC(noSlip->clone());
-   if (slip)    bcProcessor->addBC(slip->clone());
-   return bcProcessor;
-}
-//////////////////////////////////////////////////////////////////////////
-BCArray3D<D3Q27BoundaryCondition>& D3Q27ETBCProcessor::getBCArray()
-{ 
-   return this->bcArray; 
-}
-//////////////////////////////////////////////////////////////////////////
-void D3Q27ETBCProcessor::addBC(BoundaryConditionPtr bc)
-{
-   BoundaryCondition::Type type = bc->getType();
-   if (bc->isPreCollision())
-   {
-      preBC.push_back(bc);
-   }
-   else
-   {
-      postBC.push_back(bc);
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr D3Q27ETBCProcessor::getBC(BoundaryCondition::Type type)
-{
-   BOOST_FOREACH(BoundaryConditionPtr bc, preBC)
-   {
-      if (bc->getType() == type)
-      {
-         return bc;
-      }
-   }
-
-   BOOST_FOREACH(BoundaryConditionPtr bc, postBC)
-   {
-      if (bc->getType() == type)
-      {
-         return bc;
-      }
-   }
-
-   return BoundaryConditionPtr();
-}
-//////////////////////////////////////////////////////////////////////////
-void D3Q27ETBCProcessor::applyPreCollisionBC()
-{
-   BOOST_FOREACH(BoundaryConditionPtr bc, preBC)
-   {
-      bc->apply();
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void D3Q27ETBCProcessor::applyPostCollisionBC()
-{
-   BOOST_FOREACH(BoundaryConditionPtr bc, postBC)
-   {
-      bc->apply();
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-//void D3Q27ETBCProcessor::resizeBcArray(int nx1, int nx2, int nx3)
-//{
-//   bcArray.resize( nx1, nx2, nx3, BCArray3D<D3Q27BoundaryCondition>::FLUID);
-//}
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.h
deleted file mode 100644
index 927637d34775e0358562d168f8b017d765d273e8..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETBCProcessor.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef D3Q27ETBCPROCESSSOR_H
-#define D3Q27ETBCPROCESSSOR_H
-
-#include "BCProcessor.h"
-#include "D3Q27BoundaryCondition.h"
-#include "EsoTwist3D.h"
-#include "BCArray3D.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-//#include "BoundaryCondition.h"
-#include <vector>
-
-#include <boost/serialization/base_object.hpp>
-
-class D3Q27ETBCProcessor;
-typedef boost::shared_ptr<D3Q27ETBCProcessor> D3Q27ETBCProcessorPtr;
-
-class D3Q27ETBCProcessor : public BCProcessor
-{
-public:
-   D3Q27ETBCProcessor();
-   D3Q27ETBCProcessor(LBMKernel3DPtr kernel);
-   virtual ~D3Q27ETBCProcessor();
-   //virtual void applyBC();
-   virtual BCArray3D<D3Q27BoundaryCondition>& getBCArray();
-   virtual BCProcessorPtr clone(LBMKernel3DPtr kernel);
-
-   void addBC(BoundaryConditionPtr bc);
-   BoundaryConditionPtr getBC(BoundaryCondition::Type type);
-   void applyPreCollisionBC();
-   void applyPostCollisionBC();
-   //void resizeBcArray(int nx1, int nx2, int nx3);
-   //void init();
-protected:
-   std::vector<BoundaryConditionPtr> preBC;
-   std::vector<BoundaryConditionPtr> postBC;
-   BCArray3D<D3Q27BoundaryCondition> bcArray;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BCProcessor>(*this);
-      ar & bcArray;
-      ar & preBC;
-      ar & postBC;
-   }
-};
-
-#endif
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.cpp
deleted file mode 100644
index e5639532f62f5d8074156ea6a0210430c6c6b893..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "D3Q27ETForThinWallBCProcessor.h"
-
-#include "ThinWallNoSlipBoundaryCondition.h"
-
-D3Q27ETForThinWallBCProcessor::D3Q27ETForThinWallBCProcessor()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-D3Q27ETForThinWallBCProcessor::D3Q27ETForThinWallBCProcessor(LBMKernel3DPtr kernel) : D3Q27ETBCProcessor(kernel)
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-D3Q27ETForThinWallBCProcessor::~D3Q27ETForThinWallBCProcessor()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BCProcessorPtr D3Q27ETForThinWallBCProcessor::clone(LBMKernel3DPtr kernel)
-{
-   BCProcessorPtr bcProcessor(new D3Q27ETForThinWallBCProcessor(kernel));
-   BoundaryConditionPtr velocity = this->getBC(BoundaryCondition::Velocity);
-   BoundaryConditionPtr density = this->getBC(BoundaryCondition::Density);
-   BoundaryConditionPtr noSlip = this->getBC(BoundaryCondition::NoSlip);
-   BoundaryConditionPtr slip = this->getBC(BoundaryCondition::Slip);
-   if (velocity)bcProcessor->addBC(velocity->clone());
-   if (density) bcProcessor->addBC(density->clone());
-   if (noSlip)  bcProcessor->addBC(noSlip->clone());
-   if (slip)    bcProcessor->addBC(slip->clone());
-   return bcProcessor;
-}
-//////////////////////////////////////////////////////////////////////////
-void D3Q27ETForThinWallBCProcessor::applyPostCollisionBC()
-{
-   D3Q27ETBCProcessor::applyPostCollisionBC();
-
-   BOOST_FOREACH(BoundaryConditionPtr bc, postBC)
-   {
-      if (bc->getType() == BoundaryCondition::NoSlip)
-      {
-         boost::dynamic_pointer_cast<ThinWallNoSlipBoundaryCondition>(bc)->setPass(2); 
-         bc->apply();
-         boost::dynamic_pointer_cast<ThinWallNoSlipBoundaryCondition>(bc)->setPass(1);
-      }
-   }
-}
-
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.h
deleted file mode 100644
index 6815c2079ac14c6282b96d7cf824f38128325c78..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27ETForThinWallBCProcessor.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef D3Q27ETFORTHINWALLBCPROCESSSOR_H
-#define D3Q27ETFORTHINWALLBCPROCESSSOR_H
-
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27BoundaryCondition.h"
-#include "EsoTwist3D.h"
-#include "BCArray3D.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-
-#include <boost/serialization/base_object.hpp>
-
-class D3Q27ETForThinWallBCProcessor;
-typedef boost::shared_ptr<D3Q27ETForThinWallBCProcessor> D3Q27ETForThinWallBCProcessorPtr;
-
-class D3Q27ETForThinWallBCProcessor : public D3Q27ETBCProcessor
-{
-public:
-   D3Q27ETForThinWallBCProcessor();
-   D3Q27ETForThinWallBCProcessor(LBMKernel3DPtr kernel);
-   virtual ~D3Q27ETForThinWallBCProcessor();
-   virtual BCProcessorPtr clone(LBMKernel3DPtr kernel);
-   void applyPostCollisionBC();
-protected:
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<D3Q27ETBCProcessor>(*this);
-   }
-};
-
-#endif
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.cpp
deleted file mode 100644
index b6433969d456386f4334d50dbe0e084fde915425..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "D3Q27NoSlipBCAdapter.h"
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.h
deleted file mode 100644
index 927ae9ee89d2b450995b5082611e7da24182b786..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27NoSlipBCAdapter.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef D3Q27NOSLIPBCADAPTER_H
-#define D3Q27NOSLIPBCADAPTER_H
-
-#include "D3Q27BoundaryConditionAdapter.h"
-
-/*=========================================================================*/
-/*  D3Q27NoSlipBCAdapter                                                   */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 06.09.06
-*/ 
-
-/*
-usage: ...
-*/
-
-class D3Q27NoSlipBCAdapter : public D3Q27BoundaryConditionAdapter
-{
-public:
-   D3Q27NoSlipBCAdapter()
-    : D3Q27BoundaryConditionAdapter()
-   {
-   }
-   D3Q27NoSlipBCAdapter(const short& secondaryBcOption)
-      : D3Q27BoundaryConditionAdapter(secondaryBcOption)
-   {
-   }
-
-   void init(const D3Q27Interactor* const& interactor, const double& time=0) {}
-   void update(const D3Q27Interactor* const& interactor, const double& time=0) {}
-
-   void adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 )
-   {
-      bc->setNoSlipBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
-      bc->setQ((float)q,fdirection);
-   }
-   void adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) 
-   {
-
-   }
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<D3Q27BoundaryConditionAdapter>(*this);
-   }
-};
-#endif //D3Q27NOSLIPBCADAPTER_H
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.cpp
deleted file mode 100644
index 349e24bf41d20cbbd583ee5cfa09ac1638ee5657..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "D3Q27SlipBCAdapter.h"
-#include "D3Q27System.h"
-#include "D3Q27Interactor.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include <boost/pointer_cast.hpp>
-
-//*==========================================================*/
-//ObObject* D3Q27SlipBCAdapterCreator::createObObject()
-//{
-//   return new D3Q27SlipBCAdapter; 
-//}
-//*==========================================================*/
-//ObObjectCreator* D3Q27SlipBCAdapter::getCreator()
-//{
-//   return D3Q27SlipBCAdapterCreator::getInstance();
-//}
-//*==========================================================*/
-void D3Q27SlipBCAdapter::adaptBC(const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time)
-{
-   //////////////////////////////////////////////////////////////////////////
-   //>>> nur workaround! -> Hendrick nach normalen berechnung aus qs fragen
-   
-   GbCuboid3DPtr geo = boost::dynamic_pointer_cast<GbCuboid3D>(interactor.getGbObject3D());
-   if(!geo) throw UbException(UB_EXARGS,"derzeit nur fuer Cubes valide");
-
-   if     ( bc->hasSlipBoundaryFlag(D3Q27System::E) ) bc->setNormalVector( 1.0, 0.0, 0.0);  
-   else if( bc->hasSlipBoundaryFlag(D3Q27System::W) ) bc->setNormalVector(-1.0, 0.0, 0.0);  
-   else if( bc->hasSlipBoundaryFlag(D3Q27System::N) ) bc->setNormalVector( 0.0, 1.0, 0.0);  
-   else if( bc->hasSlipBoundaryFlag(D3Q27System::S) ) bc->setNormalVector( 0.0,-1.0, 0.0);  
-   else if( bc->hasSlipBoundaryFlag(D3Q27System::T) ) bc->setNormalVector( 0.0, 0.0, 1.0);  
-   else if( bc->hasSlipBoundaryFlag(D3Q27System::B) ) bc->setNormalVector( 0.0, 0.0,-1.0);  
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.h
deleted file mode 100644
index 8a2ff7ee5b4ecb8f2c0436af15d4f30de914683a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27SlipBCAdapter.h
+++ /dev/null
@@ -1,94 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef D3Q27SLIPBCADAPTER_H
-#define D3Q27SLIPBCADAPTER_H
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-#include "D3Q27BoundaryConditionAdapter.h"
-
-
-/*=======================================================*/
-//D3Q27SlipBCAdapterCreator
-//class D3Q27SlipBCAdapterCreator : public ObObjectCreator
-//{
-//public: 
-//   static D3Q27SlipBCAdapterCreator* getInstance()
-//   {
-//      static D3Q27SlipBCAdapterCreator instance;
-//      return &instance;
-//   }
-//   
-//   ObObject* createObObject();  
-//
-//   std::string getTypeID() { return "D3Q27SlipBCAdapter";}        
-//   std::string toString()  { return "D3Q27SlipBCAdapterCreator"; }
-//
-//private:
-//   D3Q27SlipBCAdapterCreator( const D3Q27SlipBCAdapterCreator& );                  //no copy allowed 
-//   const D3Q27SlipBCAdapterCreator& operator=( const D3Q27SlipBCAdapterCreator& ); //no copy allowed
-//   D3Q27SlipBCAdapterCreator() : ObObjectCreator() {}
-//};
-//
-//#ifndef SWIG
-//UB_AUTO_RUN_NAMED( D3Q27BCAdapterFactory::getInstance()->addObObjectCreator(D3Q27SlipBCAdapterCreator::getInstance()), CAB_D3Q27SlipBCAdapterCreator);
-//#endif
-
-/*=========================================================================*/
-/*  D3Q27SlipBCAdapter                                                     */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 06.09.06
-*/ 
-
-/*
-usage: ...
-*/
-
-class D3Q27SlipBCAdapter : public D3Q27BoundaryConditionAdapter
-{
-public:
-   D3Q27SlipBCAdapter() 
-      : D3Q27BoundaryConditionAdapter()
-   {
-   }
-   D3Q27SlipBCAdapter(const short& secondaryBcOption)
-      : D3Q27BoundaryConditionAdapter(secondaryBcOption)
-   {
-   }
-
-   //------------- implements D3Q27BoundaryConditionAdapter ----- start
-   ObObjectCreator* getCreator();
-
-   void init(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
-   void update(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
-
-   void adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 )
-   {
-      bc->setSlipBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
-      bc->setQ((float)q,fdirection);
-   }
-   void adaptBC(const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0);
-   
-   //------------- implements D3Q27BoundaryConditionAdapter ----- end
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<D3Q27BoundaryConditionAdapter>(*this);
-}
-
-};
-
-#endif
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.cpp b/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.cpp
deleted file mode 100644
index e63e080d62f2688bfaadc175402b347fe9771280..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.cpp
+++ /dev/null
@@ -1,305 +0,0 @@
-#include "D3Q27VelocityBCAdapter.h"
-#include "basics/utilities/UbLogger.h"
-#include "basics/utilities/UbMath.h"
-#include "basics/utilities/UbTuple.h"
-
-using namespace std;
-
-
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const D3Q27BCFunction& velVxBC)
-{
-   if(vx1) this->vx1BCs.push_back(velVxBC);
-   if(vx2) this->vx2BCs.push_back(velVxBC);
-   if(vx3) this->vx3BCs.push_back(velVxBC);
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function, const double& startTime, const double& endTime )
-{
-   if(vx1) this->vx1BCs.push_back(D3Q27BCFunction(function,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(D3Q27BCFunction(function,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(D3Q27BCFunction(function,startTime,endTime));
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function1, const mu::Parser& function2, const mu::Parser& function3, const double& startTime, const double& endTime )
-{
-   if(vx1) this->vx1BCs.push_back(D3Q27BCFunction(function1,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(D3Q27BCFunction(function2,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(D3Q27BCFunction(function3,startTime,endTime));
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const string& functionstring, const double& startTime, const double& endTime )
-{
-   if(vx1) this->vx1BCs.push_back(D3Q27BCFunction(functionstring,startTime,endTime));
-   if(vx2) this->vx2BCs.push_back(D3Q27BCFunction(functionstring,startTime,endTime));
-   if(vx3) this->vx3BCs.push_back(D3Q27BCFunction(functionstring,startTime,endTime));
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const D3Q27BCFunction& velBC, bool x1Dir, bool x2Dir, bool x3Dir)
-{
-   if(x1Dir) this->vx1BCs.push_back(velBC);
-   if(x2Dir) this->vx2BCs.push_back(velBC);
-   if(x3Dir) this->vx3BCs.push_back(velBC);
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const D3Q27BCFunction& velVx1BC, const D3Q27BCFunction& velVx2BC, const D3Q27BCFunction& velVx3BC)
-{
-   if( velVx1BC.getEndTime()!=-Ub::inf ) this->vx1BCs.push_back(velVx1BC);
-   if( velVx2BC.getEndTime()!=-Ub::inf ) this->vx2BCs.push_back(velVx2BC);
-   if( velVx3BC.getEndTime()!=-Ub::inf ) this->vx3BCs.push_back(velVx3BC);
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const vector< D3Q27BCFunction >& velVx1BCs, const vector< D3Q27BCFunction >& velVx2BCs, const vector< D3Q27BCFunction >& velVx3BCs)
-{
-   this->vx1BCs = velVx1BCs;
-   this->vx2BCs = velVx2BCs;
-   this->vx3BCs = velVx3BCs;
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
-                                               const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
-                                               const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
-{
-   this->vx1BCs.push_back(D3Q27BCFunction(vx1,vx1StartTime,vx1EndTime));
-   this->vx2BCs.push_back(D3Q27BCFunction(vx2,vx2StartTime,vx2EndTime));
-   this->vx3BCs.push_back(D3Q27BCFunction(vx3,vx3StartTime,vx3EndTime));
-   this->init();
-}
-/*==========================================================*/
-D3Q27VelocityBCAdapter::D3Q27VelocityBCAdapter(const string& vx1Function, const double& vx1StartTime, const double& vx1EndTime,
-                                               const string& vx2Function, const double& vx2StartTime, const double& vx2EndTime,
-                                               const string& vx3Function, const double& vx3StartTime, const double& vx3EndTime ) 
-{
-   if(vx1Function.size()) this->vx1BCs.push_back(D3Q27BCFunction(vx1Function,vx1StartTime,vx1EndTime));
-   if(vx2Function.size()) this->vx2BCs.push_back(D3Q27BCFunction(vx2Function,vx2StartTime,vx2EndTime));
-   if(vx3Function.size()) this->vx3BCs.push_back(D3Q27BCFunction(vx3Function,vx3StartTime,vx3EndTime));
-   this->init();
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::setNewVelocities(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
-                                              const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
-                                              const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
-{
-   this->clear();
-   this->vx1BCs.push_back(D3Q27BCFunction(vx1,vx1StartTime,vx1EndTime));
-   this->vx2BCs.push_back(D3Q27BCFunction(vx2,vx2StartTime,vx2EndTime));
-   this->vx3BCs.push_back(D3Q27BCFunction(vx3,vx3StartTime,vx3EndTime));
-   this->init();
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::init()
-{
-   this->unsetTimeDependent();
-   
-   this->timeStep = 0.0;
-
-   this->x1 = 0.0;
-   this->x2 = 0.0;
-   this->x3 = 0.0;
-
-   this->tmpVx1Function = NULL;
-   this->tmpVx2Function = NULL;
-   this->tmpVx3Function = NULL;
-
-   try //initilialization and validation of functions
-   {
-      this->init(vx1BCs);
-      this->init(vx2BCs);
-      this->init(vx3BCs);
-   }
-   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
-                                          <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
-   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" ); }
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::init(std::vector<D3Q27BCFunction>& vxBCs)
-{
-   for(size_t pos=0; pos<vxBCs.size(); ++pos)
-   {
-      if( !(    UbMath::equal( D3Q27BCFunction::INFCONST, vxBCs[pos].getEndTime() )
-             && UbMath::greaterEqual( this->timeStep,  vxBCs[pos].getStartTime()  ) ) )
-      {
-         this->setTimeDependent();
-      }
-
-      vxBCs[pos].getFunction().DefineVar("t" , &this->timeStep);
-      vxBCs[pos].getFunction().DefineVar("x1", &this->x1      );
-      vxBCs[pos].getFunction().DefineVar("x2", &this->x2      );
-      vxBCs[pos].getFunction().DefineVar("x3", &this->x3      );
-
-      vxBCs[pos].getFunction().Eval(); //<-- validation
-   }
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::init(const D3Q27Interactor* const& interactor, const double& time)
-{
-   this->timeStep       = time;
-   this->tmpVx1Function = this->tmpVx2Function = this->tmpVx3Function = NULL;
-
-   //aktuelle velocityfunction bestimmen
-   double maxEndtime = -Ub::inf;
-   
-   for(size_t pos=0; pos<vx1BCs.size(); ++pos)
-   {
-      if( UbMath::equal(vx1BCs[pos].getEndTime(),D3Q27BCFunction::INFTIMEDEPENDENT) ) maxEndtime=Ub::inf;
-      maxEndtime = UbMath::max(maxEndtime,vx1BCs[pos].getStartTime(),vx1BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
-      
-      if( UbMath::greaterEqual(this->timeStep,vx1BCs[pos].getStartTime()) ) 
-      {
-          if(   UbMath::lessEqual( this->timeStep     , vx1BCs[pos].getEndTime()     )
-             || UbMath::equal(     vx1BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFCONST        )
-             || UbMath::equal(     vx1BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFTIMEDEPENDENT)  )
-         {
-            tmpVx1Function = &vx1BCs[pos].getFunction();
-            break;
-         }
-      }
-   }
-   for(size_t pos=0; pos<vx2BCs.size(); ++pos)
-   {
-      if( UbMath::equal(vx2BCs[pos].getEndTime(),D3Q27BCFunction::INFTIMEDEPENDENT)) maxEndtime=Ub::inf;
-      maxEndtime = UbMath::max(maxEndtime,vx2BCs[pos].getStartTime(),vx2BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
-
-      if( UbMath::greaterEqual(this->timeStep,vx2BCs[pos].getStartTime()) ) 
-      {
-         if(   UbMath::lessEqual( this->timeStep     , vx2BCs[pos].getEndTime()      )
-            || UbMath::equal(     vx2BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFCONST         )
-            || UbMath::equal(     vx2BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFTIMEDEPENDENT )  )
-         {
-            tmpVx2Function = &vx2BCs[pos].getFunction();
-            break;
-         }
-      }
-   }
-   for(size_t pos=0; pos<vx3BCs.size(); ++pos)
-   {
-      if( UbMath::equal(vx3BCs[pos].getEndTime(),D3Q27BCFunction::INFTIMEDEPENDENT)) maxEndtime=Ub::inf;
-      maxEndtime = UbMath::max(maxEndtime,vx3BCs[pos].getStartTime(),vx3BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
-
-      if( UbMath::greaterEqual(this->timeStep,vx3BCs[pos].getStartTime()) ) 
-      {
-         if(   UbMath::lessEqual( this->timeStep     , vx3BCs[pos].getEndTime()      )
-            || UbMath::equal(     vx3BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFCONST         )
-            || UbMath::equal(     vx3BCs[pos].getEndTime(), (double)D3Q27BCFunction::INFTIMEDEPENDENT )  )
-         {
-            tmpVx3Function = &vx3BCs[pos].getFunction();
-            break;
-         }
-      }
-   }
-
-   if( UbMath::greaterEqual(time,maxEndtime) ) 
-   {
-      if( !this->isTimePeriodic() ) this->unsetTimeDependent();
-      else //bei peridoic die interavalle neu setzen:
-      {
-         if( UbMath::equal(maxEndtime,D3Q27BCFunction::INFCONST) )
-            for(size_t pos=0; pos<vx1BCs.size(); ++pos)
-            {
-               vx1BCs[pos].setStartTime( vx1BCs[pos].getStartTime() + timeStep );
-               vx1BCs[pos].setEndTime( vx1BCs[pos].getEndTime() + timeStep );
-            }
-            if( UbMath::equal(maxEndtime,D3Q27BCFunction::INFCONST) )
-            for(size_t pos=0; pos<vx2BCs.size(); ++pos)
-            {
-               vx2BCs[pos].setStartTime( vx2BCs[pos].getStartTime() + timeStep );
-               vx2BCs[pos].setEndTime( vx2BCs[pos].getEndTime() + timeStep );
-            }
-         if( UbMath::equal(maxEndtime,D3Q27BCFunction::INFCONST) )
-            for(size_t pos=0; pos<vx3BCs.size(); ++pos)
-            {
-               vx3BCs[pos].setStartTime( vx3BCs[pos].getStartTime() + timeStep );
-               vx3BCs[pos].setEndTime( vx3BCs[pos].getEndTime() + timeStep );
-            }
-        this->init(interactor,time);
-      }
-   }
-
-   UBLOG(logDEBUG4,"D3Q27VelocityBCAdapter::init(time="<<time<<") "
-                   <<", vx1= \""<<(tmpVx1Function ? tmpVx1Function->GetExpr() : "-")<<"\""
-                   <<", vx2= \""<<(tmpVx2Function ? tmpVx2Function->GetExpr() : "-")<<"\""
-                   <<", vx3= \""<<(tmpVx3Function ? tmpVx3Function->GetExpr() : "-")<<"\""
-                   <<", timedependent="<<boolalpha<<this->isTimeDependent()   );
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::update( const D3Q27Interactor* const& interactor, const double& time ) 
-{
-   this->init(interactor,time);
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time )
-{
-   bc->setVelocityBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
-   bc->setQ((float)q,fdirection);
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time ) 
-{
-   this->setNodeVelocity(interactor,bc,worldX1,worldX2,worldX3,time);
-}
-/*==========================================================*/
-void D3Q27VelocityBCAdapter::setNodeVelocity( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
-{
-   //Geschwindigkeiten setzen
-   try
-   {
-      //PunktKoordinaten bestimmen
-      this->x1 = worldX1;
-      this->x2 = worldX2;
-      this->x3 = worldX3;
-      this->timeStep = timestep;
-
-      if(tmpVx1Function) bc->setBoundaryVelocityX1((float)tmpVx1Function->Eval());  
-      if(tmpVx2Function) bc->setBoundaryVelocityX2((float)tmpVx2Function->Eval());
-      if(tmpVx3Function) bc->setBoundaryVelocityX3((float)tmpVx3Function->Eval());
-   }
-   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
-                                         <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
-   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" ); }
-}
-/*==========================================================*/
-UbTupleDouble3 D3Q27VelocityBCAdapter::getVelocity(const double& x1, const double& x2, const double& x3, const double& timeStep) const
-{
-	double vx1 = 0.0;
-	double vx2 = 0.0;
-	double vx3 = 0.0;
-   this->x1 = x1;
-   this->x2 = x2;
-   this->x3 = x3;
-   this->timeStep = timeStep;
-	
-	if(tmpVx1Function) vx1 = tmpVx1Function->Eval();  
-   if(tmpVx2Function) vx2 = tmpVx2Function->Eval();
-   if(tmpVx3Function) vx3 = tmpVx3Function->Eval();
-    
-   return UbTupleDouble3(vx1,vx2,vx3);
-}
-/*==========================================================*/
-string D3Q27VelocityBCAdapter::toString()
-{
-   stringstream info;
-   info<<"D3Q27VelocityBCAdapter:\n";
-   info<<" #vx1-functions = "<<(int)vx1BCs.size()<<endl;
-   info<<" #vx2-functions = "<<(int)vx2BCs.size()<<endl;
-   info<<" #vx3-functions = "<<(int)vx3BCs.size()<<endl;
-   info<<" protected variables: x1, x2, x3, t"<<endl;
-   
-   const vector<D3Q27BCFunction>* bcvecs[3] = { &vx1BCs, &vx2BCs, &vx3BCs };
-   for(int i=0; i<3; i++)
-   {
-      for(size_t pos=0; pos<bcvecs[i]->size(); ++pos)
-      {
-         info<<"\n   vx"<<(i+1)<<"-function nr."<<pos<<":"<<endl;
-         info<<(*bcvecs[i])[pos]<<endl;
-      }
-   }
-   return info.str();
-}
-
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.h b/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.h
deleted file mode 100644
index 679cd455e9b7f0194cee847f24dcb279fabb346b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/D3Q27VelocityBCAdapter.h
+++ /dev/null
@@ -1,156 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef D3Q27VELOCITYADAPTER_H
-#define D3Q27VELOCITYADAPTER_H
-
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <vector>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-#include <basics/utilities/UbInfinity.h>
-#include <basics/utilities/UbFileOutput.h>
-#include <basics/utilities/UbFileInput.h>
-
-class UbFileOutput;
-class UbFileInput;
-
-#include <D3Q27BoundaryConditionAdapter.h>
-#include <D3Q27BCFunction.h>
-
-//example:
-//        vector<D3Q27BCFunction> vx1BCs,vx2BCs,vx3BCs;
-//        vx1BCs.push_back(D3Q27BCFunction(0.01 , 0  , 100) );   //t=[0  ..100[ -> vx1 = 0.01
-//        vx1BCs.push_back(D3Q27BCFunction(0.004, 100, 200) );   //t=[100..200[ -> vx1 = 0.004
-//        vx1BCs.push_back(D3Q27BCFunction(0.03 , 200, 400) );   //t=[200..400] -> vx1 = 0.03
-// 
-//        vx2BCs.push_back(D3Q27BCFunction(0.02 , 0  , 200) );   //t=[0  ..200[ -> vx2 = 0.02
-//        vx2BCs.push_back(D3Q27BCFunction(0.002, 200, 300) );   //t=[200..300[ -> vx2 = 0.002
-//        vx2BCs.push_back(D3Q27BCFunction(0.043, 300, 600) );   //t=[300..600] -> vx2 = 0.043
-//        
-//        D3Q27VelocityBCAdapter bcAdapter(vx1BCs,vx2BCs,vx3BCs);
-//        bcAdapter.setTimePeriodic(); //->  t=[0  ..100[ -> vx1 = 0.01
-//                                     //    t=[100..200[ -> vx1 = 0.004
-//                                     //    t=[200..400[ -> vx1 = 0.03
-//                                     //    t=[400..500[ -> vx1 = 0.01
-//                                     //    t=[500..600[ -> vx1 = 0.004
-//                                     //    t=[600..800[ -> vx1 = 0.03  ...
-//                                     //    t=[0  ..200[ -> vx2 = 0.02
-//                                     //    t=[200..300[ -> vx2 = 0.002
-//                                     //    t=[300..600] -> vx2 = 0.043
-//                                     //    t=[600..800[ -> vx2 = 0.02
-//                                     //    t=[800..900[ -> vx2 = 0.002
-//                                     //    t=[900..1200]-> vx2 = 0.043  ...
-//
-// example parabolic inflow:
-//    mu::Parser fct;
-//    fct.SetExpr("max(vmax*(1.0-4.0*((x2-x2_vmax)^2+(x3-x3_vmax)^2)/H^2),0.0)"); //paraboloid (mit vmax bei (0/x2_vmax/x3_vmax) 
-//    fct.DefineConst("x2Vmax", 0.0            ); //x2-Pos für vmax
-//    fct.DefineConst("x3Vmax", 0.0            ); //x3-Pos für vmax
-//    fct.DefineConst("H"     , rohrDurchmesser);
-//    fct.DefineConst("vmax"  , vmax           );
-//    D3Q27VelocityBCAdapter velBC(true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST);
-
-/*=========================================================================*/
-/*  D3Q27VelocityBCAdapter                                                 */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 06.09.06
-*/ 
-
-class D3Q27VelocityBCAdapter : public D3Q27BoundaryConditionAdapter
-{
-public:
-   //constructors
-   D3Q27VelocityBCAdapter() { this->init(); }
-   
-   D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const D3Q27BCFunction& velVxBC );
-
-   D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function, const double& startTime, const double& endTime  );
-
-   D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function1, const mu::Parser& function2, const mu::Parser& function3, const double& startTime, const double& endTime );
-   
-   D3Q27VelocityBCAdapter(const bool& vx1, const bool& vx2, const bool& vx3, const std::string& functionstring, const double& startTime, const double& endTime );
-
-   D3Q27VelocityBCAdapter(const D3Q27BCFunction& velBC, bool x1Dir, bool x2Dir, bool x3Dir);
-
-   D3Q27VelocityBCAdapter(const D3Q27BCFunction& velVx1BC, const D3Q27BCFunction& velVx2BC, const D3Q27BCFunction& velVx3BC);
-
-   D3Q27VelocityBCAdapter(const std::vector< D3Q27BCFunction >& velVx1BCs, const std::vector< D3Q27BCFunction >& velVx2BCs, const std::vector< D3Q27BCFunction >& velVx3BCs);
-
-   D3Q27VelocityBCAdapter(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
-                          const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
-                          const double& vx3, const double& vx3StartTime, const double& vx3EndTime);
-
-   D3Q27VelocityBCAdapter(const std::string& vx1Function, const double& vx1StartTime, const double& vx1EndTime,
-                          const std::string& vx2Function, const double& vx2StartTime, const double& vx2EndTime,
-                          const std::string& vx3Function, const double& vx3StartTime, const double& vx3EndTime ); 
-
-   //methods
-   void setTimePeriodic()    { (this->type |=   TIMEPERIODIC); }
-   void unsetTimePeriodic()  { (this->type &=  ~TIMEPERIODIC); }
-   bool isTimePeriodic()     { return ((this->type & TIMEPERIODIC) ==  TIMEPERIODIC); }
-
-   //folgendes ist fuer moving objects gedadacht... 
-   void setNewVelocities(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
-                         const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
-                         const double& vx3, const double& vx3StartTime, const double& vx3EndTime);
-
-      
-   //------------- implements D3Q27BoundaryConditionAdapter ----- start
-   std::string toString();
-   
-   void init(const D3Q27Interactor* const& interactor, const double& time=0);
-   void update(const D3Q27Interactor* const& interactor, const double& time=0);
-
-   void adaptBCForDirection( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 );
-   void adaptBC( const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 );
-
-   //------------- implements D3Q27BoundaryConditionAdapter ----- end
-
-   UbTupleDouble3 getVelocity(const double& x1, const double& x2, const double& x3, const double& timeStep) const;
-
-
-protected:
-   void init();
-   void init(std::vector<D3Q27BCFunction>& vxBCs);
-
-   //time dependency wird automatisch ueber D3Q27BCFunction Intervalle ermittelt!
-   void setTimeDependent()   { (this->type |=   TIMEDEPENDENT); }
-   void unsetTimeDependent() { (this->type &=  ~TIMEDEPENDENT); }
-
-   void clear() { vx1BCs.clear(); vx2BCs.clear();  vx3BCs.clear(); this->init(); }
-   void setNodeVelocity(const D3Q27Interactor& interactor, D3Q27BoundaryConditionPtr bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep);
-
-private:
-   mutable mu::value_type x1, x2, x3;
-   mutable mu::value_type timeStep;
-
-   mu::Parser* tmpVx1Function;
-   mu::Parser* tmpVx2Function;
-   mu::Parser* tmpVx3Function;
-
-   std::vector<D3Q27BCFunction> vx1BCs;
-   std::vector<D3Q27BCFunction> vx2BCs;
-   std::vector<D3Q27BCFunction> vx3BCs;
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<D3Q27BoundaryConditionAdapter>(*this);
-   }
-};
-
-#endif
diff --git a/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.cpp
deleted file mode 100644
index f39120d5d348ed6abe01d446021db7a02a7db574..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "EqDensityBoundaryCondition.h"
-#include <boost/pointer_cast.hpp>
-
-EqDensityBoundaryCondition::EqDensityBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Density;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-EqDensityBoundaryCondition::~EqDensityBoundaryCondition()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr EqDensityBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new EqDensityBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void EqDensityBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void EqDensityBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-
-   distributions->getDistributionInv(f, x1, x2, x3);
-   int nx1 = x1;
-   int nx2 = x2;
-   int nx3 = x3;
-   int direction = -1;
-
-   //flag points in direction of fluid
-   if      (bcPtr->hasDensityBoundaryFlag(D3Q27System::E)) { nx1 -= 1; direction = D3Q27System::E; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::W)) { nx1 += 1; direction = D3Q27System::W; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::N)) { nx2 -= 1; direction = D3Q27System::N; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::S)) { nx2 += 1; direction = D3Q27System::S; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::T)) { nx3 -= 1; direction = D3Q27System::T; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::B)) { nx3 += 1; direction = D3Q27System::B; }
-   else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   LBMReal rhoBC = bcPtr->getBoundaryDensity();
-   for (int fdir = D3Q27System::STARTF; fdir<=D3Q27System::ENDF; fdir++)
-   {
-      if (bcPtr->hasDensityBoundaryFlag(fdir))
-      {
-         //Ehsan: 15.2.2013:
-         LBMReal ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3);
-         distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir);
-      }
-   }
-
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.h
deleted file mode 100644
index ab1f7428f024b9fb7664b6a78af465aa2e8afe06..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/EqDensityBoundaryCondition.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SimpleDensityBoundaryCondition_h__
-#define SimpleDensityBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class EqDensityBoundaryCondition;
-typedef boost::shared_ptr<EqDensityBoundaryCondition> SimpleDensityBoundaryConditionPtr;
-
-class EqDensityBoundaryCondition : public BoundaryCondition
-{
-public:
-   EqDensityBoundaryCondition();
-   ~EqDensityBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // SimpleDensityBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.cpp
deleted file mode 100644
index 481ac4fc687a3ad94f665f306f1b9853d2788c4f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "HighViscosityNoSlipBoundaryCondition.h"
-
-HighViscosityNoSlipBoundaryCondition::HighViscosityNoSlipBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::NoSlip;
-   BoundaryCondition::preCollision = true;
-}
-//////////////////////////////////////////////////////////////////////////
-HighViscosityNoSlipBoundaryCondition::~HighViscosityNoSlipBoundaryCondition()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr HighViscosityNoSlipBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new HighViscosityNoSlipBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void HighViscosityNoSlipBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void HighViscosityNoSlipBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal feq[D3Q27System::ENDF+1];
-   distributions->getDistribution(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   for (int fDir = D3Q27System::FSTARTDIR; fDir<=D3Q27System::FENDDIR; fDir++)
-   {
-      if (bcPtr->hasNoSlipBoundaryFlag(fDir))
-      {
-         //quadratic bounce back
-         const int invDir = D3Q27System::INVDIR[fDir];
-         LBMReal q = bcPtr->getQ(invDir);
-         LBMReal fReturn = (f[invDir]+q*f[fDir]+q*collFactor*(feq[invDir]-f[invDir]+feq[fDir]-f[fDir]))/(1.0+q);
-         distributions->setDistributionInvForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], invDir);
-      }
-   }
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.h
deleted file mode 100644
index 8cc765b4c61be35c100ead21dc25b14350dd4cf2..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/HighViscosityNoSlipBoundaryCondition.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef HighViscosityNoSlipBoundaryCondition_h__
-#define HighViscosityNoSlipBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class NoSlipBoundaryCondition;
-typedef boost::shared_ptr<NoSlipBoundaryCondition> NoSlipBoundaryConditionPtr;
-
-class HighViscosityNoSlipBoundaryCondition : public BoundaryCondition
-{
-public:
-   HighViscosityNoSlipBoundaryCondition();
-   ~HighViscosityNoSlipBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // HighViscosityNoSlipBoundaryCondition_h__
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.cpp
deleted file mode 100644
index 04235077b1ff11ae829d2ad28d00c1046e54bd37..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "NoSlipBoundaryCondition.h"
-
-NoSlipBoundaryCondition::NoSlipBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::NoSlip;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-NoSlipBoundaryCondition::~NoSlipBoundaryCondition()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr NoSlipBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new NoSlipBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NoSlipBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NoSlipBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal feq[D3Q27System::ENDF+1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasNoSlipBoundaryFlag(fdir))
-      {
-         //quadratic bounce back
-         const int invDir = D3Q27System::INVDIR[fdir];
-         LBMReal q = bcPtr->getQ(invDir);
-         LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q/(1.0+q))*(f[invDir]+f[fdir]));
-         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
-      }
-   }
-}
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.h
deleted file mode 100644
index 46e7fe0f8715e4d222507d4b9ad02f87e5e256de..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NoSlipBoundaryCondition.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef NoSlipBoundaryCondition_h__
-#define NoSlipBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class NoSlipBoundaryCondition;
-typedef boost::shared_ptr<NoSlipBoundaryCondition> NoSlipBoundaryConditionPtr;
-
-class NoSlipBoundaryCondition : public BoundaryCondition
-{
-public:
-   NoSlipBoundaryCondition();
-   virtual ~NoSlipBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // NoSlipBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.cpp
deleted file mode 100644
index 55dfed9d7ef570810384aa2f4eede46ce6609fcd..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "NonEqDensityBoundaryCondition.h"
-#include <boost/pointer_cast.hpp>
-
-NonEqDensityBoundaryCondition::NonEqDensityBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Density;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-NonEqDensityBoundaryCondition::~NonEqDensityBoundaryCondition()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr NonEqDensityBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new NonEqDensityBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonEqDensityBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonEqDensityBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   int nx1 = x1;
-   int nx2 = x2;
-   int nx3 = x3;
-   int direction = -1;
-
-   //flag points in direction of fluid
-   if      (bcPtr->hasDensityBoundaryFlag(D3Q27System::E)) { nx1 -= 1; direction = D3Q27System::E; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::W)) { nx1 += 1; direction = D3Q27System::W; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::N)) { nx2 -= 1; direction = D3Q27System::N; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::S)) { nx2 += 1; direction = D3Q27System::S; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::T)) { nx3 -= 1; direction = D3Q27System::T; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::B)) { nx3 += 1; direction = D3Q27System::B; }
-   else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   LBMReal rhoBC = bcPtr->getBoundaryDensity();
-   for (int fdir = D3Q27System::STARTF; fdir<=D3Q27System::ENDF; fdir++)
-   {
-      if (bcPtr->hasDensityBoundaryFlag(fdir))
-      {
-         // Martins NEQ ADDON
-         ////original: 15.2.2013:
-         LBMReal ftemp = calcFeqsForDirFct(fdir, rho, vx1, vx2, vx3);
-         ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3)+f[fdir]-ftemp;
-         distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir);
-      }
-   }
-
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.h
deleted file mode 100644
index 2a8b8ec7e7f664de52980c6f3c9094de3ef6eb42..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonEqDensityBoundaryCondition.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef DensityNEQBoundaryCondition_h__
-#define DensityNEQBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class NonEqDensityBoundaryCondition;
-typedef boost::shared_ptr<NonEqDensityBoundaryCondition> NonEqDensityBoundaryConditionPtr;
-
-class NonEqDensityBoundaryCondition : public BoundaryCondition
-{
-public:
-   NonEqDensityBoundaryCondition();
-   ~NonEqDensityBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // DensityNEQBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.cpp
deleted file mode 100644
index c341ec312093a915ca12f3b1178fc13300aef146..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-#include "NonReflectingDensityBoundaryCondition.h"
-#include <boost/pointer_cast.hpp>
-#include "D3Q27System.h"
-
-NonReflectingDensityBoundaryCondition::NonReflectingDensityBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Density;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-NonReflectingDensityBoundaryCondition::~NonReflectingDensityBoundaryCondition()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr NonReflectingDensityBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new NonReflectingDensityBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingDensityBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingDensityBoundaryCondition::applyBC()
-{
-   distributions->swap();
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal ftemp[D3Q27System::ENDF+1];
-   distributions->getDistribution(f, x1, x2, x3);
-   int nx1 = x1;
-   int nx2 = x2;
-   int nx3 = x3;
-   int direction = -1;
-
-   //flag points in direction of fluid
-   if      (bcPtr->hasDensityBoundaryFlag(D3Q27System::E)) { nx1 += 1; direction = D3Q27System::E; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::W)) { nx1 -= 1; direction = D3Q27System::W; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::N)) { nx2 += 1; direction = D3Q27System::N; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::S)) { nx2 -= 1; direction = D3Q27System::S; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::T)) { nx3 += 1; direction = D3Q27System::T; }
-   else if (bcPtr->hasDensityBoundaryFlag(D3Q27System::B)) { nx3 -= 1; direction = D3Q27System::B; }
-   else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
-
-   //#ifdef _DEBUG
-   //   if (nx1<0 || nx1>maxX1) UB_THROW(UbException(UB_EXARGS, "nx1<0 || nx1>=lengthX1"));
-   //   if (nx2<0 || nx2>maxX2) UB_THROW(UbException(UB_EXARGS, "nx2<0 || nx2>=lengthX2"));
-   //   if (nx3<0 || nx3>maxX3) UB_THROW(UbException(UB_EXARGS, "nx3<0 || nx3>=lengthX3"));
-   //#endif
-
-   distributions->getDistribution(ftemp, nx1, nx2, nx3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-
-   distributions->swap();
-
-   double dim = 0.01;
-
-   switch (direction)
-   {
-   case D3Q27System::E:
-      f[D3Q27System::E] = ftemp[D3Q27System::E] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::E] - rho*dim*D3Q27System::WEIGTH[D3Q27System::E];
-      f[D3Q27System::NE] = ftemp[D3Q27System::NE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::NE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::NE];
-      f[D3Q27System::SE] = ftemp[D3Q27System::SE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::SE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::SE];
-      f[D3Q27System::TE] = ftemp[D3Q27System::TE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TE];
-      f[D3Q27System::BE] = ftemp[D3Q27System::BE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BE];
-      f[D3Q27System::TNE] = ftemp[D3Q27System::TNE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNE];
-      f[D3Q27System::TSE] = ftemp[D3Q27System::TSE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSE];
-      f[D3Q27System::BNE] = ftemp[D3Q27System::BNE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNE];
-      f[D3Q27System::BSE] = ftemp[D3Q27System::BSE] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSE];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::E], x1+1, x2, x3, D3Q27System::E);
-      distributions->setDistributionInvForDirection(f[D3Q27System::NE], x1+1, x2+1, x3, D3Q27System::NE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::SE], x1+1, x2-1, x3, D3Q27System::SE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TE], x1+1, x2, x3+1, D3Q27System::TE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BE], x1+1, x2, x3-1, D3Q27System::BE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNE], x1+1, x2+1, x3+1, D3Q27System::TNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSE], x1+1, x2-1, x3+1, D3Q27System::TSE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNE], x1+1, x2+1, x3-1, D3Q27System::BNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSE], x1+1, x2-1, x3+1, D3Q27System::BSE);
-      break;
-   case D3Q27System::W:
-      f[D3Q27System::W] = ftemp[D3Q27System::W] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::W] - rho*dim*D3Q27System::WEIGTH[D3Q27System::W];
-      f[D3Q27System::NW] = ftemp[D3Q27System::NW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::NW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::NW];
-      f[D3Q27System::SW] = ftemp[D3Q27System::SW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::SW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::SW];
-      f[D3Q27System::TW] = ftemp[D3Q27System::TW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TW];
-      f[D3Q27System::BW] = ftemp[D3Q27System::BW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BW];
-      f[D3Q27System::TNW] = ftemp[D3Q27System::TNW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNW];
-      f[D3Q27System::TSW] = ftemp[D3Q27System::TSW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::TSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSW];
-      f[D3Q27System::BNW] = ftemp[D3Q27System::BNW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNW];
-      f[D3Q27System::BSW] = ftemp[D3Q27System::BSW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[D3Q27System::BSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSW];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::W], x1, x2, x3, D3Q27System::W);
-      distributions->setDistributionInvForDirection(f[D3Q27System::NW], x1, x2, x3, D3Q27System::NW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::SW], x1, x2, x3, D3Q27System::SW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TW], x1, x2, x3, D3Q27System::TW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BW], x1, x2, x3, D3Q27System::BW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNW], x1, x2, x3, D3Q27System::TNW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSW], x1, x2, x3, D3Q27System::TSW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNW], x1, x2, x3, D3Q27System::BNW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSW], x1, x2, x3, D3Q27System::BSW);
-      break;
-   case D3Q27System::N:
-      f[D3Q27System::N] = ftemp[D3Q27System::N] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::N] - rho*dim*D3Q27System::WEIGTH[D3Q27System::N];
-      f[D3Q27System::NE] = ftemp[D3Q27System::NE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::NE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::NE];
-      f[D3Q27System::NW] = ftemp[D3Q27System::NW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::NW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::NW];
-      f[D3Q27System::TN] = ftemp[D3Q27System::TN] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TN] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TN];
-      f[D3Q27System::BN] = ftemp[D3Q27System::BN] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BN] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BN];
-      f[D3Q27System::TNE] = ftemp[D3Q27System::TNE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNE];
-      f[D3Q27System::TNW] = ftemp[D3Q27System::TNW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNW];
-      f[D3Q27System::BNE] = ftemp[D3Q27System::BNE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNE];
-      f[D3Q27System::BNW] = ftemp[D3Q27System::BNW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNW];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::N], x1, x2, x3, D3Q27System::N);
-      distributions->setDistributionInvForDirection(f[D3Q27System::NE], x1, x2, x3, D3Q27System::NE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::NW], x1, x2, x3, D3Q27System::NW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TN], x1, x2, x3, D3Q27System::TN);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BN], x1, x2, x3, D3Q27System::BN);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNE], x1, x2, x3, D3Q27System::TNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNW], x1, x2, x3, D3Q27System::TNW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNE], x1, x2, x3, D3Q27System::BNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNW], x1, x2, x3, D3Q27System::BNW);
-      break;
-   case D3Q27System::S:
-      f[D3Q27System::S] = ftemp[D3Q27System::S] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::S] - rho*dim*D3Q27System::WEIGTH[D3Q27System::S];
-      f[D3Q27System::SE] = ftemp[D3Q27System::SE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::SE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::SE];
-      f[D3Q27System::SW] = ftemp[D3Q27System::SW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::SW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::SW];
-      f[D3Q27System::TS] = ftemp[D3Q27System::TS] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TS] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TS];
-      f[D3Q27System::BS] = ftemp[D3Q27System::BS] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BS] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BS];
-      f[D3Q27System::TSE] = ftemp[D3Q27System::TSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSE];
-      f[D3Q27System::TSW] = ftemp[D3Q27System::TSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::TSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSW];
-      f[D3Q27System::BSE] = ftemp[D3Q27System::BSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSE];
-      f[D3Q27System::BSW] = ftemp[D3Q27System::BSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[D3Q27System::BSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSW];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::S], x1, x2, x3, D3Q27System::S);
-      distributions->setDistributionInvForDirection(f[D3Q27System::SE], x1, x2, x3, D3Q27System::SE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::SW], x1, x2, x3, D3Q27System::SW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TS], x1, x2, x3, D3Q27System::TS);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BS], x1, x2, x3, D3Q27System::BS);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSE], x1, x2, x3, D3Q27System::TSE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSW], x1, x2, x3, D3Q27System::TSW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSE], x1, x2, x3, D3Q27System::BSE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSW], x1, x2, x3, D3Q27System::BSW);
-      break;
-   case D3Q27System::T:
-      f[D3Q27System::T] = ftemp[D3Q27System::T] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::T] - rho*dim*D3Q27System::WEIGTH[D3Q27System::T];
-      f[D3Q27System::TE] = ftemp[D3Q27System::TE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TE];
-      f[D3Q27System::TW] = ftemp[D3Q27System::TW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TW];
-      f[D3Q27System::TN] = ftemp[D3Q27System::TN] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TN] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TN];
-      f[D3Q27System::TS] = ftemp[D3Q27System::TS] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TS] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TS];
-      f[D3Q27System::TNE] = ftemp[D3Q27System::TNE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNE];
-      f[D3Q27System::TNW] = ftemp[D3Q27System::TNW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TNW];
-      f[D3Q27System::TSE] = ftemp[D3Q27System::TSE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSE];
-      f[D3Q27System::TSW] = ftemp[D3Q27System::TSW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::TSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::TSW];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::T], x1, x2, x3, D3Q27System::T);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TE], x1, x2, x3, D3Q27System::TE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TW], x1, x2, x3, D3Q27System::TW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TN], x1, x2, x3, D3Q27System::TN);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TS], x1, x2, x3, D3Q27System::TS);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNE], x1, x2, x3, D3Q27System::TNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TNW], x1, x2, x3, D3Q27System::TNW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSE], x1, x2, x3, D3Q27System::TSE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::TSW], x1, x2, x3, D3Q27System::TSW);
-      break;
-   case D3Q27System::B:
-      f[D3Q27System::B] = ftemp[D3Q27System::B] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::B] - rho*dim*D3Q27System::WEIGTH[D3Q27System::B];
-      f[D3Q27System::BE] = ftemp[D3Q27System::BE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BE];
-      f[D3Q27System::BW] = ftemp[D3Q27System::BW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BW];
-      f[D3Q27System::BN] = ftemp[D3Q27System::BN] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BN] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BN];
-      f[D3Q27System::BS] = ftemp[D3Q27System::BS] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BS] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BS];
-      f[D3Q27System::BNE] = ftemp[D3Q27System::BNE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BNE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNE];
-      f[D3Q27System::BNW] = ftemp[D3Q27System::BNW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BNW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BNW];
-      f[D3Q27System::BSE] = ftemp[D3Q27System::BSE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BSE] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSE];
-      f[D3Q27System::BSW] = ftemp[D3Q27System::BSW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[D3Q27System::BSW] - rho*dim*D3Q27System::WEIGTH[D3Q27System::BSW];
-
-      distributions->setDistributionInvForDirection(f[D3Q27System::B], x1, x2, x3, D3Q27System::B);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BE], x1, x2, x3, D3Q27System::BE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BW], x1, x2, x3, D3Q27System::BW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BN], x1, x2, x3, D3Q27System::BN);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BS], x1, x2, x3, D3Q27System::BS);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNE], x1, x2, x3, D3Q27System::BNE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BNW], x1, x2, x3, D3Q27System::BNW);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSE], x1, x2, x3, D3Q27System::BSE);
-      distributions->setDistributionInvForDirection(f[D3Q27System::BSW], x1, x2, x3, D3Q27System::BSW);
-      break;
-   default:
-      UB_THROW(UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!"));
-   }
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.h
deleted file mode 100644
index c4f0fd14eefc4fe30bd1bf7ca023c3e7c7d033b8..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingDensityBoundaryCondition.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef NonReflectingDensityBoundaryCondition_h__
-#define NonReflectingDensityBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class NonReflectingDensityBoundaryCondition;
-typedef boost::shared_ptr<NonReflectingDensityBoundaryCondition> NonReflectingDensityBoundaryConditionPtr;
-
-class NonReflectingDensityBoundaryCondition : public BoundaryCondition
-{
-public:
-   NonReflectingDensityBoundaryCondition();
-   ~NonReflectingDensityBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // NonReflectingDensityBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.cpp
deleted file mode 100644
index 2986bdea245223e49981c95acab6cc1ccf2a74a2..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "NonReflectingVelocityBoundaryCondition.h"
-
-NonReflectingVelocityBoundaryCondition::NonReflectingVelocityBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Velocity;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-NonReflectingVelocityBoundaryCondition::~NonReflectingVelocityBoundaryCondition()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr NonReflectingVelocityBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new NonReflectingVelocityBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingVelocityBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void NonReflectingVelocityBoundaryCondition::applyBC()
-{
-   //velocity bc for non reflecting pressure bc
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal feq[D3Q27System::ENDF+1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasVelocityBoundaryFlag(fdir))
-      {
-         const int invDir = D3Q27System::INVDIR[fdir];
-         LBMReal q = 1.0;//bcPtr->getQ(invDir);// m+m q=0 stabiler
-         LBMReal velocity = bcPtr->getBoundaryVelocity(invDir);
-         //LBMReal fReturn = ((1.0-q)/(1.0+q))*((ftemp[invDir]-feq[invDir]*collFactor)/(1.0-collFactor))+((q*(ftemp[invDir]+ftemp[fdir])-velocity)/(1.0+q));
-         LBMReal fReturn = ((1.0 - q) / (1.0 + q))*((f[invDir] - feq[invDir]) / (1.0 - collFactor) + feq[invDir]) + ((q*(f[invDir] + f[fdir]) - velocity) / (1.0 + q))-rho*D3Q27System::WEIGTH[invDir];
-         distributions->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir);
-      }
-   }
-}
diff --git a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.h
deleted file mode 100644
index cbbd66108c5a831ea874e96c9aad9f2ed671663a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/NonReflectingVelocityBoundaryCondition.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//!  \file NonReflectingVelocityBoundaryCondition.h
-//!  \brief Class implements velocity bc for non reflecting pressure bc.
-//!  \author Konstantin Kutscher
-
-#ifndef NonReflectingVelocityBoundaryCondition_h__
-#define NonReflectingVelocityBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class NonReflectingVelocityBoundaryCondition;
-typedef boost::shared_ptr<NonReflectingVelocityBoundaryCondition> NonReflectingVelocityBoundaryConditionPtr;
-
-//!  \brief Class implements velocity boundary condition for non reflecting pressure boundary condition
-
-class NonReflectingVelocityBoundaryCondition : public BoundaryCondition
-{
-public:
-   NonReflectingVelocityBoundaryCondition();
-   ~NonReflectingVelocityBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // NonReflectingVelocityBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.cpp
deleted file mode 100644
index 3aed2a494d254fd0a2b30d5dd4c7ae1baf3bc8e1..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-#include "SlipBoundaryCondition.h"
-
-SlipBoundaryCondition::SlipBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Slip;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-SlipBoundaryCondition::~SlipBoundaryCondition()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr SlipBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new SlipBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void SlipBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void SlipBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal feq[D3Q27System::ENDF+1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   UbTupleFloat3 normale = bcPtr->getNormalVector();
-   LBMReal 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!
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasSlipBoundaryFlag(fdir))
-      {
-         //quadratic bounce back
-         const int invDir = D3Q27System::INVDIR[fdir];
-         LBMReal q = 1.0;//bcPtr->getQ(invDir);// m+m q=0 stabiler
-         //vx3=0;
-         LBMReal velocity = 0.0;
-         switch (invDir)
-         {
-         case D3Q27System::E: velocity = (UbMath::c4o9*(+vx1)); break;      //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3)
-         case D3Q27System::W: velocity = (UbMath::c4o9*(-vx1)); break;      //z.B. aus paper manfred MRT LB models in three dimensions (2002)   
-         case D3Q27System::N: velocity = (UbMath::c4o9*(+vx2)); break;
-         case D3Q27System::S: velocity = (UbMath::c4o9*(-vx2)); break;
-         case D3Q27System::T: velocity = (UbMath::c4o9*(+vx3)); break;
-         case D3Q27System::B: velocity = (UbMath::c4o9*(-vx3)); break;
-         case D3Q27System::NE: velocity = (UbMath::c1o9*(+vx1+vx2)); break;
-         case D3Q27System::SW: velocity = (UbMath::c1o9*(-vx1-vx2)); break;
-         case D3Q27System::SE: velocity = (UbMath::c1o9*(+vx1-vx2)); break;
-         case D3Q27System::NW: velocity = (UbMath::c1o9*(-vx1+vx2)); break;
-         case D3Q27System::TE: velocity = (UbMath::c1o9*(+vx1             +vx3)); break;
-         case D3Q27System::BW: velocity = (UbMath::c1o9*(-vx1             -vx3)); break;
-         case D3Q27System::BE: velocity = (UbMath::c1o9*(+vx1             -vx3)); break;
-         case D3Q27System::TW: velocity = (UbMath::c1o9*(-vx1             +vx3)); break;
-         case D3Q27System::TN: velocity = (UbMath::c1o9*(+vx2+vx3)); break;
-         case D3Q27System::BS: velocity = (UbMath::c1o9*(-vx2-vx3)); break;
-         case D3Q27System::BN: velocity = (UbMath::c1o9*(+vx2-vx3)); break;
-         case D3Q27System::TS: velocity = (UbMath::c1o9*(-vx2+vx3)); break;
-         case D3Q27System::TNE: velocity = (UbMath::c1o36*(+vx1+vx2+vx3)); break;
-         case D3Q27System::BSW: velocity = (UbMath::c1o36*(-vx1-vx2-vx3)); break;
-         case D3Q27System::BNE: velocity = (UbMath::c1o36*(+vx1+vx2-vx3)); break;
-         case D3Q27System::TSW: velocity = (UbMath::c1o36*(-vx1-vx2+vx3)); break;
-         case D3Q27System::TSE: velocity = (UbMath::c1o36*(+vx1-vx2+vx3)); break;
-         case D3Q27System::BNW: velocity = (UbMath::c1o36*(-vx1+vx2-vx3)); break;
-         case D3Q27System::BSE: velocity = (UbMath::c1o36*(+vx1-vx2-vx3)); break;
-         case D3Q27System::TNW: velocity = (UbMath::c1o36*(-vx1+vx2+vx3)); break;
-         default: throw UbException(UB_EXARGS, "unknown error");
-         }
-         LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity)/(1.0+q));
-         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
-      }
-   }
-}
\ No newline at end of file
diff --git a/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.h
deleted file mode 100644
index 17f6524a94e57d91e5877c750e1a9394b8ec1a5f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/SlipBoundaryCondition.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SlipBoundaryCondition_h__
-#define SlipBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class SlipBoundaryCondition;
-typedef boost::shared_ptr<SlipBoundaryCondition> SlipBoundaryConditionPtr;
-
-class SlipBoundaryCondition : public BoundaryCondition
-{
-public:
-   SlipBoundaryCondition();
-   virtual ~SlipBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-#endif // SlipBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.cpp
deleted file mode 100644
index d1de85397a34fd043ee3d980297b2fb6c0a58e3b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "ThinWallNoSlipBoundaryCondition.h"
-
-#include "D3Q27EsoTwist3DSplittedVector.h"
-
-
-ThinWallNoSlipBoundaryCondition::ThinWallNoSlipBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::NoSlip;
-   BoundaryCondition::preCollision = false;
-   pass = 1;
-}
-//////////////////////////////////////////////////////////////////////////
-ThinWallNoSlipBoundaryCondition::~ThinWallNoSlipBoundaryCondition()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr ThinWallNoSlipBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new ThinWallNoSlipBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void ThinWallNoSlipBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF + 1];
-   LBMReal feq[D3Q27System::ENDF + 1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   LBMReal fReturn;
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasNoSlipBoundaryFlag(fdir))
-      {
-         const int invDir = D3Q27System::INVDIR[fdir];
-         if (pass == 1)
-         {
-            LBMReal q = bcPtr->getQ(invDir);
-            LBMReal fReturn = ((1.0 - q) / (1.0 + q))*0.5*(f[invDir] - f[fdir] + (f[invDir] + f[fdir] - collFactor*(feq[fdir] + feq[invDir])) / (1.0 - collFactor));
-            distributionsTemp->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir);
-         }
-         else
-         {
-            //quadratic bounce back with for thin walls
-            fReturn = distributionsTemp->getDistributionInvForDirection(x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir);
-            distributions->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir);
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void ThinWallNoSlipBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-   distributionsTemp = EsoTwist3DPtr(new D3Q27EsoTwist3DSplittedVector(distributions->getNX1(), distributions->getNX2(), distributions->getNX3(), -999.0));
-}
-//////////////////////////////////////////////////////////////////////////
-void ThinWallNoSlipBoundaryCondition::setPass(int pass)
-{
-   this->pass = pass;
-}
diff --git a/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.h
deleted file mode 100644
index 567634cd8654ac66f1fb503641ab12dcfadcd8af..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/ThinWallNoSlipBoundaryCondition.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef ThinWallNoSlipBoundaryCondition_h__
-#define ThinWallNoSlipBoundaryCondition_h__
-
-#include "NoSlipBoundaryCondition.h"
-
-class ThinWallNoSlipBoundaryCondition;
-typedef boost::shared_ptr<ThinWallNoSlipBoundaryCondition> ThinWallNoSlipBoundaryConditionPtr;
-
-class ThinWallNoSlipBoundaryCondition : public BoundaryCondition
-{
-public:
-   ThinWallNoSlipBoundaryCondition();
-   virtual ~ThinWallNoSlipBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-   void setPass(int pass);
-protected:
-   void applyBC();
-   DistributionArray3DPtr distributionsTemp;
-private:
-   int pass;
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-      ar & distributionsTemp;
-   }
-};
-#endif // ThinWallNoSlipBoundaryCondition_h__
diff --git a/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.cpp b/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.cpp
deleted file mode 100644
index e74498925eafd836e5c592b855e2840c98b62a0f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "VelocityBoundaryCondition.h"
-#include <boost/pointer_cast.hpp>
-
-VelocityBoundaryCondition::VelocityBoundaryCondition()
-{
-   BoundaryCondition::type = BoundaryCondition::Velocity;
-   BoundaryCondition::preCollision = false;
-}
-//////////////////////////////////////////////////////////////////////////
-VelocityBoundaryCondition::~VelocityBoundaryCondition()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-BoundaryConditionPtr VelocityBoundaryCondition::clone()
-{
-   BoundaryConditionPtr bc(new VelocityBoundaryCondition());
-   return bc;
-}
-//////////////////////////////////////////////////////////////////////////
-void VelocityBoundaryCondition::addDistributions(DistributionArray3DPtr distributions)
-{
-   this->distributions = distributions;
-}
-//////////////////////////////////////////////////////////////////////////
-void VelocityBoundaryCondition::applyBC()
-{
-   LBMReal f[D3Q27System::ENDF+1];
-   LBMReal feq[D3Q27System::ENDF+1];
-   distributions->getDistributionInv(f, x1, x2, x3);
-   LBMReal rho, vx1, vx2, vx3;
-   calcMacrosFct(f, rho, vx1, vx2, vx3);
-   calcFeqFct(feq, rho, vx1, vx2, vx3);
-
-   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
-   {
-      if (bcPtr->hasVelocityBoundaryFlag(fdir))
-      {
-         const int invDir = D3Q27System::INVDIR[fdir];
-         LBMReal q = bcPtr->getQ(invDir);// m+m q=0 stabiler
-         LBMReal velocity = bcPtr->getBoundaryVelocity(invDir);
-         LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity)/(1.0+q));
-         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
-      }
-   }
-
-}
-
diff --git a/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.h b/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.h
deleted file mode 100644
index c56c4b9427e43106985508d2ede87a072d3ebfe5..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/BoundaryCondition/VelocityBoundaryCondition.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef VelocityBoundaryCondition_h__
-#define VelocityBoundaryCondition_h__
-
-#include "BoundaryCondition.h"
-
-class VelocityBoundaryCondition;
-typedef boost::shared_ptr<VelocityBoundaryCondition> VelocityBoundaryConditionPtr;
-
-class VelocityBoundaryCondition : public BoundaryCondition
-{
-public:
-   VelocityBoundaryCondition();
-   ~VelocityBoundaryCondition();
-   BoundaryConditionPtr clone();
-   void addDistributions(DistributionArray3DPtr distributions);
-protected:
-   void applyBC();
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<BoundaryCondition>(*this);
-   }
-};
-
-#endif // VelocityBoundaryCondition_h__
-