diff --git a/source/Applications/pChannel/pChannel.cpp b/source/Applications/pChannel/pChannel.cpp
index ce84a2344e90bafc6d4c348a70a54eb064649394..63890426b2cffb2d46b304a62f160b1c047e7f4a 100644
--- a/source/Applications/pChannel/pChannel.cpp
+++ b/source/Applications/pChannel/pChannel.cpp
@@ -473,7 +473,7 @@ void run(string configname)
 
       UbSchedulerPtr stepSch(new UbScheduler(outTime));
 
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
+      MacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
 
       double startStep = grid->getTimeStep();
 
@@ -485,7 +485,7 @@ void run(string configname)
       //resSchMeans->addSchedule(40000, startStep, 40000000);
       //UbSchedulerPtr stepAvSch(new UbScheduler());
       //stepAvSch->addSchedule(100, 0, 10000000);
-      //AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(),
+      //AverageValuesCoProcessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(),
       //   stepSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/, restart);
 
 
@@ -505,7 +505,7 @@ void run(string configname)
       //decrViscFunc.DefineConst("c0", 0.1);
       //UbSchedulerPtr DecrViscSch(new UbScheduler());
       //DecrViscSch->addSchedule(10, 0, 1000);
-      //DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch, &decrViscFunc, comm);
+      //DecreaseViscosityCoProcessor decrViscPPPtr(grid, DecrViscSch, &decrViscFunc, comm);
 
 	  //if (changeQs)
 	  //{
diff --git a/source/VirtualFluidsCore/Basics/container/CMakePackage.txt b/source/VirtualFluidsCore/Basics/container/CMakePackage.txt
deleted file mode 100644
index f7766736561db92faa97bdef5d1c1a6a40533148..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CMakePackage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-GET_FILENAME_COMPONENT( CURRENT_DIR  ${CMAKE_CURRENT_LIST_FILE} PATH) 
-COLLECT_PACKAGE_DATA_WITH_OPTION(${CURRENT_DIR} ALL_SOURCES)
-
-
diff --git a/source/VirtualFluidsCore/Basics/container/CbArray2D.h b/source/VirtualFluidsCore/Basics/container/CbArray2D.h
deleted file mode 100644
index 2dc54329b868a760d1803d4c03ba7099c52b4b44..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CbArray2D.h
+++ /dev/null
@@ -1,414 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef CBARRAY2D_H
-#define CBARRAY2D_H
-
-//////////////////////////////////////////////////////////////////////////
-// 4D Array
-// die Daten werden in einem Vector gehalten
-//
-// Ver 1.2
-// Nov. 2003 muffmolch@gmx.de
-// Ver 1.3
-// Aug. 2006 - Kosmetik
-// Ver 1.4
-// Sep. 2006 - indexer eingefuehrt
-// Ver 1.5
-// Jul. 2006 - size_t + range check bei getIndex
-// Ver 1.6
-// Mrz. 2008 - typedefs, new index checks, NO_CB_RANGECHECK, no base class
-//             assigmetcomparison between Matrices with different value_type and/or index-class
-// Oct. 2008 - +isEmpty()
-//
-// Rangecheck aktiv, wenn:
-// -debug  : not defined "NO_CB_RANGECHECK"
-// -release: not defined "NO_CB_RANGECHECK" && defined "CB_RANGECHECK"
-//////////////////////////////////////////////////////////////////////////
-
-#include <iomanip>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbEqual.h>
-#include <algorithm>
-#include <typeinfo>
-
-#ifdef CAB_RCF
-  #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// IndexClasses
-
-//IndexerX2X1:
-//        4 5 6
-// Array  1 2 3  -->  vector 1 2 3 4 5 6
-//optimaler schleifendurchlauf
-//for(alle X2)
-//  for(alle X1)
-class IndexerX2X1
-{
-public:
-   typedef int size_type;
-public:
-   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
-   {
-      return nx1* x2 + x1;
-   }
-   inline std::size_t getStartIndexOfSortedArray(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
-   {
-      return  nx1* x2;
-   }
-};
-
-//IndexerX1X2:
-//        4 5 6
-// Array  1 2 3  -->  vector 1 4 2 5 3 6
-//optimaler schleifendurchlauf
-//for(alle X1)
-//  for(alle X2)
-class IndexerX1X2
-{
-public:
-   typedef int size_type;
-public:
-   inline std::size_t getIndex(const size_type& x1, const size_type& x2, const size_type& nx1,const size_type& nx2) const
-   {
-      return nx2* x1+ x2;
-   }
-   inline std::size_t getStartIndexOfSortedArray(const size_type& x1, const size_type& x2, const size_type& nx1, const size_type& nx2) const
-   {
-      return  nx2* x1;
-   }
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// CbArray2D
-
-template<typename T, typename IndexClass = IndexerX2X1>
-class CbArray2D
-{
-public:
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
-
-private:
-   template< typename value_type2, typename IndexClass2 > friend class CbArray2D;
-
-public:
-   /*=======================================================================*/
-   CbArray2D()
-   {
-      this->resize(0,0);
-   }
-   /*=======================================================================*/
-   CbArray2D(const size_type& nx2, const size_type& nx1)
-   {
-      this->resize(nx2,nx1);
-   }
-   /*=======================================================================*/
-   CbArray2D(const size_type& nx2, const size_type& nx1, const value_type& val)
-   {
-      this->resize(nx2,nx1,val);
-   }
-   /*=======================================================================*/
-   CbArray2D(const size_type& uniformDimensionSize /*nx1==nx2*/)
-   {
-      this->resize(uniformDimensionSize,uniformDimensionSize);
-   }
-   /*=======================================================================*/
-   //übernimmt vector als daten vector! (erstellt KEINE kopie!!!, vec ist anschließend leer, da swap verwendet wird)
-   CbArray2D(std::vector<value_type>& vec, const size_type& nx1,const size_type& nx2)
-   {
-      assert( (nx1*nx2)==vec.size() );
-      this->data.swap(vec);
-      this->resize(nx1,nx2);
-   }
-   /*=======================================================================*/
-   CbArray2D(const CbArray2D& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-       , data(src.data)
-   {
-   }
-   /*=======================================================================*/
-   template< typename value_type2 >
-   CbArray2D(const CbArray2D< value_type2 >& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-   {
-      //Sourcedaten kopieren
-      this->data.resize( src.data.size() );
-      for(std::size_t i=0; i<data.size(); ++i)
-         this->data[i] = src.data[i];
-   }
-   /*=======================================================================*/
-   virtual ~CbArray2D()
-   {
-      //vector wird automatisch zerstoert
-   }
-   /*=======================================================================*/
-   CbArray2D& operator= (const CbArray2D& rhs)
-   {
-      if(this == &rhs) return *this;
-
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-
-      //Sourcedaten kopieren
-      this->data  = rhs.data;
-
-      return *this;
-   }
-   /*=======================================================================*/
-   //durch value_type2 kann man z.B. ein float array einem double array zuweisen!
-   template< typename value_type2, typename IndexClass2 >
-   CbArray2D& operator= (const CbArray2D< value_type2, IndexClass2 >& rhs)
-   {
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-
-      //Sourcedaten kopieren (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      //ACHTUNG: für diese Konvertierung muss bei Klassen der demenstrechende operator
-      //         implementiert sein, e.g.: class value_type2 {public: inline operator value_type2() const { return value_type2(); }
-      for(int x1=0; x1<this->nx1; x1++)
-         for(int x2=0; x2<this->nx2; x2++)
-               this->operator()(x1,x2) = static_cast< value_type >( rhs.operator()(x1,x2) );
-
-      return *this;
-   }
-   /*=======================================================================*/
-   bool operator== (const CbArray2D& rhs) const
-   {
-      if( this == &rhs ) return true;
-
-      if(   this->nx1!=rhs.nx1
-         || this->nx2!=rhs.nx2
-         || this->data.size() != rhs.data.size() )
-      {
-         return false;
-      }
-
-      return std::equal( this->data.begin(), this->data.end(), rhs.data.begin(), UbEqual<value_type, value_type >() );
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator== (const CbArray2D< value_type2, IndexClass2 >& rhs) const
-   {
-      if( this->data.size() != rhs.data.size() ) return false;
-
-      //Sourcedaten einzeln checken (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      for(int x1=0; x1<this->nx1; x1++)
-         for(int x2=0; x2<this->nx2; x2++)
-            if( !isUbEqual(this->operator()(x1,x2), rhs.operator()(x1,x2)) )
-               return false;
-
-      return true;
-   }
-   /*=======================================================================*/
-   bool operator!= (const CbArray2D& rhs) const
-   {
-      return !(*this==rhs);
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator!= (const CbArray2D< value_type2, IndexClass2 >& rhs) const
-   {
-      return !(*this==rhs);
-   }
-   /*=======================================================================*/
-   reference operator() (const size_type& x1,const size_type& x2)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-
-      return this->data[indexer.getIndex(x1,x2,nx1,nx2)];
-   }
-   /*=======================================================================*/
-   const_reference operator() (const size_type& x1,const size_type& x2)	const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-
-      return this->data[indexer.getIndex(x1,x2,nx1,nx2)];
-   }
-   /*=======================================================================*/
-   pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,nx1,nx2)];
-   }
-   /*=======================================================================*/
-   const_pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,nx1,nx2)];
-   }
-   /*=======================================================================*/
-   void setObject(const size_type& x1,const size_type& x2,const value_type& value)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-      this->data[indexer.getIndex(x1,x2,nx1,nx2)] = value;
-   }
-   /*=======================================================================*/
-   reference getObject(const size_type& x1, const size_type& x2)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-      return this->data[indexer.getIndex(x1,x2,nx1,nx2)] ;
-   }
-   /*=======================================================================*/
-   typename std::vector<value_type>::const_reference getObject(const size_type& x1, const size_type& x2) const
-   {
-      return this->operator()(x1,x2);
-   }
-   /*=======================================================================*/
-   bool      isEmpty() const { return data.empty(); }
-   size_type getNX1()  const { return this->nx1;    }
-   size_type getNX2()  const { return this->nx2;    }
-   /*=======================================================================*/
-   void reset(const T& val)
-   {
-      std::fill( this->data.begin(), this->data.end(), val );
-   }
-   /*=======================================================================*/
-   std::string toString() const
-   {
-      std::stringstream text;
-      for(size_type x2=0; x2<this->nx2; x2++)
-      {
-         for(size_type x1=0; x1<this->nx1; x1++)
-         {
-            //hier kommts zum Konflikt ab  und an ...
-            text<<this->getObject(x1,x2)<<", ";
-         }
-         text<<"\n";
-      }
-
-      return text.str();
-   }
-   /*=======================================================================*/
-   std::string getInfo() const
-   {
-      std::stringstream text;
-      text<<"CbArray2D< storageType="<<typeid(T).name()<<", indexer="<<typeid(IndexClass).name()<<" >";
-      text<<"( nx1="<<this->nx1<<", nx2="<<this->nx2<<")";
-      return text.str();
-   }
-   /*=======================================================================*/
-   void resize(const size_type& uniformDimensionSize)
-   {
-      this->resize(uniformDimensionSize,uniformDimensionSize);
-   }
-   /*=======================================================================*/
-   void resize(const size_type& nx1,const size_type& nx2)
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->data.resize(nx1*nx2);
-   }
-   /*=======================================================================*/
-   void resize(const size_type& nx1, const size_type& nx2, const value_type& initVal )
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->data.resize(nx1*nx2,initVal);
-   }
-   /*=======================================================================*/
-   void clear()
-   {
-      this->nx1 = 0;
-      this->nx2 = 0;
-      this->data.clear();
-   }
-   /*=======================================================================*/
-   std::vector< value_type >& getDataVector() { return this->data; }
-   /*=======================================================================*/
-   const std::vector< value_type >& getDataVector() const { return this->data; }
-   /*=======================================================================*/
-   inline size_type getDataVectorIndex(const size_type& x1, const size_type& x2) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2)) );
-      #endif
-
-      return indexer.getIndex(x1,x2,nx1,nx2);
-   }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nx1;
-      ar & nx2;
-      ar & data;
-   }
-#endif //CAB_RCF
-
-protected:
-   /*=======================================================================*/
-   //success -> true
-   //else    -> false
-   inline bool indicesInRange(const size_type& x1, const size_type& x2) const
-   {
-      if(   x1 < 0 || x1 >= this->nx1
-         || x2 < 0 || x2 >= this->nx2 )
-      {
-         return false;
-      }
-      return true;
-   }
-   /*=======================================================================*/
-   std::string getExceptionErrorString(const size_type& x1, const size_type& x2) const
-   {
-      std::stringstream out("index out of range - ");
-      out<<"("<<x1<<","<<x2<<") not in ("<<nx1<<","<<nx2<<")";
-      return out.str();
-   }
-   /*=======================================================================*/
-
-protected:
-   size_type    nx1;
-   size_type    nx2;
-   indexer_type indexer;
-   std::vector< value_type > data;
-};
-
-#endif //CBARRAY2D_H
diff --git a/source/VirtualFluidsCore/Basics/container/CbArray3D.h b/source/VirtualFluidsCore/Basics/container/CbArray3D.h
deleted file mode 100644
index e3a172a379ccaa01a26ba06e16b9e6d18a235b67..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CbArray3D.h
+++ /dev/null
@@ -1,479 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef CBARRAY3D_H
-#define CBARRAY3D_H
-
-//////////////////////////////////////////////////////////////////////////
-// 3D Array
-// die Daten werden in einem Vector gehalten
-//
-// Ver 1.2
-// Nov. 2003 muffmolch@gmx.de
-// Ver 1.3
-// Aug. 2006 - Kosmetik
-// Ver 1.4
-// Sep. 2006 - indexer eingefuehrt
-// Ver 1.5
-// Jul. 2006 - size_t + range check bei getIndex
-// Ver 1.2
-// Mrz. 2008 - typedefs, new index checks, NO_CB_RANGECHECK, no base class
-//             assigmetcomparison between Matrices with different value_type and/or index-class
-// Oct. 2008 - +isEmpty()
-//
-// Rangecheck aktiv, wenn:
-// -debug  : not defined "NO_CB_RANGECHECK"
-// -release: not defined "NO_CB_RANGECHECK" && defined "CB_RANGECHECK"
-//////////////////////////////////////////////////////////////////////////
-
-#include <iomanip>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbEqual.h>
-#include <algorithm>
-#include <typeinfo>
-#include <boost/serialization/serialization.hpp>
-#include <boost/smart_ptr/shared_ptr.hpp>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// IndexClasses
-
-//IndexerX3X2X1:
-//                4 5 6          10 11 12
-// Array  ebene A 1 2 3  ebene B  7  8  9 -->  vector 1 2 3 4 5 6 7 8 9 10 11 12
-//x1-reihen "liegen am stueck" im speicher
-//optimaler schleifendurchlauf
-//for(alle X3)
-//  for(alle X2)
-//    for(alle X1)
-class IndexerX3X2X1// FunctorX1SortedForX1X2Plane
-{
-public:
-   typedef size_t size_type;
-public:
-   inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx1 * ( nx2 * x3 + x2) + x1 ;
-   }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx1 * ( nx2 * x3 + x2);
-   }
-};
-
-//IndexerX1X2X3:
-//                4 5 6          10 11 12
-// Array  ebene A 1 2 3  ebene B  7  8  9 -->
-//optimaler schleifendurchlauf
-//for(alle X1)
-//  for(alle X2)
-//    for(alle X3)
-class IndexerX1X2X3 //FunctorX3SortedForX3X2Plane
-{
-public:
-   typedef size_t size_type;
-public:
-   inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx3 * ( nx2 * x1 + x2) + x3 ;
-   }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx3 * ( nx2 * x1 + x2);
-   }
-};
-
-//IndexerX2X1X3:
-//                4 5 6          10 11 12
-// Array  ebene A 1 2 3  ebene B  7  8  9 -->  vector 1 7 2 8 3 9 4 10 5 11 6 12
-//optimaler schleifendurchlauf
-//for(alle X2)
-//  for(alle X1)
-//    for(alle X3)
-class IndexerX2X1X3
-{
-public:
-   typedef size_t size_type;
-public:
-   inline std::size_t getIndex(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                               , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx3* ( nx1 * x2 + x1) + x3 ;
-   }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3
-                                                 , const size_type& nx1, const size_type& nx2, const size_type& nx3 ) const
-   {
-      return  nx3* ( nx1 * x2 + x1);
-   }
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// CbArray3D
-template<typename T, typename IndexClass = IndexerX3X2X1>
-class CbArray3D
-{
-public:
-   typedef boost::shared_ptr< CbArray3D <T,IndexClass> > CbArray3DPtr;
-
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
-
-private:
-   template< typename value_type2, typename IndexClass2 > friend class CbArray3D;
-
-public:
-   /*=======================================================================*/
-   CbArray3D()
-   {
-      this->resize(0,0,0);
-   }
-   /*=======================================================================*/
-   CbArray3D(const size_type& nx1,const size_type& nx2, const size_type& nx3, const value_type& val)
-   {
-      this->resize(nx1,nx2,nx3,val);
-   }
-   /*=======================================================================*/
-    CbArray3D(const size_type& nx1,const size_type& nx2, const size_type& nx3)
-    {
-       this->resize(nx1,nx2,nx3);
-    }
-   /*=======================================================================*/
-   CbArray3D(const size_type& uniformDimensionSize /*nx1==nx2==nx3*/)
-   {
-      this->resize(uniformDimensionSize,uniformDimensionSize,uniformDimensionSize);
-   }
-   /*=======================================================================*/
-   //übernimmt vector als daten vector! (erstellt KEINE kopie!!!, vec ist anschließend leer, da swap verwendet wird)
-   CbArray3D(std::vector<value_type>& vec, const size_type& nx1,const size_type& nx2, const size_type& nx3)
-   {
-      assert( (nx1*nx2*nx3)==vec.size() );
-      this->data.swap(vec);
-      this->resize(nx1,nx2,nx3);
-   }
-   /*=======================================================================*/
-   CbArray3D(const CbArray3D& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-       , nx3(src.nx3)
-       , data(src.data)
-   {
-   }
-   /*=======================================================================*/
-   template< typename value_type2 >
-   CbArray3D(const CbArray3D< value_type2 >& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-       , nx3(src.nx3)
-   {
-      //Sourcedaten kopieren
-      this->data.resize( src.data.size() );
-      for(std::size_t i=0; i<data.size(); ++i)
-         this->data[i] = src.data[i];
-   }
-   /*=======================================================================*/
-   virtual ~CbArray3D()
-   {
-      //vector wird automatisch zerstoert
-   }
-   /*=======================================================================*/
-   CbArray3D& operator= (const CbArray3D& rhs)
-   {
-      if(this == &rhs) return *this;
-
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-      this->nx3 = rhs.nx3;
-
-      //gespeicherte Datenelemente loeschen
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-
-      //Sourcedaten kopieren
-      this->data = rhs.data;
-
-      return *this;
-   }
-   /*=======================================================================*/
-   //durch value_type2 kann man z.B. ein float array einer double array zuweisen!
-   template< typename value_type2, typename IndexClass2 >
-   CbArray3D& operator= (const CbArray3D< value_type2, IndexClass2 >& rhs)
-   {
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-      this->nx3 = rhs.nx3;
-
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-
-      //Sourcedaten kopieren (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      for(int x3=0; x3<this->nx3; x3++)
-         for(int x2=0; x2<this->nx2; x2++)
-            for(int x1=0; x1<this->nx1; x1++)
-               this->operator()(x1,x2,x3) = static_cast< value_type >( rhs.operator()(x1,x2,x3) );
-
-      return *this;
-   }
-   /*=======================================================================*/
-   bool operator== (const CbArray3D& rhs) const
-   {
-      if(this == &rhs) return true;
-
-      if(   this->nx1!=rhs.nx1
-         || this->nx2!=rhs.nx2
-         || this->nx3!=rhs.nx3
-         || this->data.size() != rhs.data.size() )
-      {
-         return false;
-      }
-
-      return std::equal( this->data.begin(), this->data.end(), rhs.data.begin(), UbEqual<value_type, value_type >() );
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator== (const CbArray3D< value_type2, IndexClass2 >& rhs) const
-   {
-      if( this->data.size() != rhs.data.size() ) return false;
-
-      //Sourcedaten einzeln checken (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      for(int x3=0; x3<this->nx3; x3++)
-         for(int x2=0; x2<this->nx2; x2++)
-            for(int x1=0; x1<this->nx1; x1++)
-               if( !isUbEqual(this->operator()(x1,x2,x3), rhs.operator()(x1,x2,x3)) )
-               return false;
-
-      return true;
-   }
-   /*=======================================================================*/
-   bool operator!= (const CbArray3D& src) const
-   {
-      return !(*this==src);
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator!= (const CbArray3D< value_type2, IndexClass2 >& rhs) const
-   {
-      return !(*this==rhs);
-   }
-   /*=======================================================================*/
-   reference operator() (const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return this->data[ indexer.getIndex(x1,x2,x3,nx1,nx2,nx3) ];
-   }
-   /*=======================================================================*/
-   const_reference operator() (const size_type& x1, const size_type& x2, const size_type& x3)	const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return this->data[ indexer.getIndex(x1,x2,x3,nx1,nx2,nx3) ];
-   }
-   /*=======================================================================*/
-   pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,x3,nx1,nx2,nx3)];
-   }
-   /*=======================================================================*/
-   const_pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2, const size_type& x3)  const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,x3,nx1,nx2,nx3)];
-   }
-   /*=======================================================================*/
-   void setObject(const size_type& x1, const size_type& x2, const size_type& x3, const value_type& value)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      this->data[ indexer.getIndex(x1,x2,x3,nx1,nx2,nx3) ] = value;
-   }
-   /*=======================================================================*/
-   reference getObject(const size_type& x1, const size_type& x2, const size_type& x3)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return this->data[ indexer.getIndex(x1,x2,x3,nx1,nx2,nx3) ] ;
-   }
-   /*=======================================================================*/
-   const_reference getObject(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      return (*this)(x1,x2,x3);
-   }
-   /*=======================================================================*/
-   bool      isEmpty() const { return data.empty(); }
-   size_type getNX1()  const { return this->nx1;    }
-   size_type getNX2()  const { return this->nx2;    }
-   size_type getNX3()  const { return this->nx3;    }
-   /*=======================================================================*/
-   void reset(const value_type& val)
-   {
-      std::fill( this->data.begin(), this->data.end(), val );
-   }
-   /*=======================================================================*/
-   std::string toString() const
-   {
-      std::stringstream text;
-      for(size_type x1=0; x1<this->nx1; x1++)
-      {
-      	for(size_type x2=0; x2<this->nx2; x2++)
-      	{
-         	for(size_type x3=0; x3<this->nx3; x3++)
-         	{
-            	text<<(*this)(x1,x2,x3)<<", ";
-         	}
-         	text<<std::endl;
-      	}
-      	text<<std::endl<<std::endl;
-      }
-
-      return text.str();
-   }
-   /*=======================================================================*/
-   std::string getInfo() const
-   {
-      std::stringstream text;
-      text<<"CbArray3D< storageType="<<typeid(T).name()<<", indexer="<<typeid(IndexClass).name()<<" >";
-      text<<"( nx1="<<this->nx1<<", nx2="<<this->nx2<<", nx3="<<this->nx3<<")";
-      return text.str();
-   }
-   /*=======================================================================*/
-   void resize(const int& uniformDimensionSize)
-   {
-      this->resize(uniformDimensionSize,uniformDimensionSize,uniformDimensionSize);
-   }
-   /*=======================================================================*/
-   void resize(const size_type& nx1,const size_type& nx2, const size_type& nx3)
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->nx3 = nx3;
-      this->data.resize(nx1*nx2*nx3);
-   }
-   /*=======================================================================*/
-   void resize(const size_type& nx1,const size_type& nx2, const size_type& nx3,const value_type& val)
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->nx3 = nx3;
-      this->data.resize(nx1*nx2*nx3,val);
-   }
-   /*=======================================================================*/
-   void clear()
-   {
-      this->nx1 = 0;
-      this->nx2 = 0;
-      this->nx3 = 0;
-      this->data.clear();
-   }
-   /*=======================================================================*/
-   std::vector< value_type >& getDataVector() { return this->data; }
-   /*=======================================================================*/
-   const std::vector< value_type >& getDataVector() const { return this->data; }
-   /*=======================================================================*/
-   inline std::size_t getDataVectorIndex(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3)) );
-      #endif
-
-      return indexer.getIndex(x1,x2,x3,nx1,nx2,nx3);
-   }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nx1;
-      ar & nx2;
-      ar & nx3;
-      ar & data;
-   }
-#endif //CAB_RCF
-
-
-   /*=======================================================================*/
-   //success -> true
-   //else    -> false
-   inline bool indicesInRange(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      if(   x1 < 0 || x1 >= this->nx1
-         || x2 < 0 || x2 >= this->nx2
-         || x3 < 0 || x3 >= this->nx3 )
-      {
-         return false;
-      }
-      return true;
-   }
-protected:
-   /*=======================================================================*/
-   std::string getExceptionErrorString(const size_type& x1, const size_type& x2, const size_type& x3) const
-   {
-      std::stringstream out("index out of range - ");
-      out<<"("<<x1<<","<<x2<<","<<x3<<") not in ("<<nx1<<","<<nx2<<","<<nx3<<")";
-      return out.str();
-   }
-   /*=======================================================================*/
-
-protected:
-   size_type    nx1;
-   size_type    nx2;
-   size_type    nx3;
-   indexer_type indexer;
-   std::vector< value_type > data;
-
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nx1;
-      ar & nx2;
-      ar & nx3;
-      ar & data;
-   }
-};
-
-#endif //CBARRAY3D_H
diff --git a/source/VirtualFluidsCore/Basics/container/CbArray4D.h b/source/VirtualFluidsCore/Basics/container/CbArray4D.h
deleted file mode 100644
index ed2e6aa778efa366d182c5180c20e4e11186cbab..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CbArray4D.h
+++ /dev/null
@@ -1,463 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef CBARRAY4D_H
-#define CBARRAY4D_H
-
-//////////////////////////////////////////////////////////////////////////
-// 4D Array
-// die Daten werden in einem Vector gehalten
-//
-// Ver 1.0
-// Sept. 2006 muffmolch@gmx.de
-// Ver 1.1
-// Jul. 2006 - size_t + range check bei getIndex
-// Ver 1.2
-// Mrz. 2008 - typedefs, new index checks, NO_CB_RANGECHECK, no base class
-//             assigmetcomparison between Matrices with different value_type and/or index-class
-// Oct. 2008 - +isEmpty()
-//
-// Rangecheck aktiv, wenn:
-// -debug  : not defined "NO_CB_RANGECHECK"
-// -release: not defined "NO_CB_RANGECHECK" && defined "CB_RANGECHECK"
-//////////////////////////////////////////////////////////////////////////
-
-#include <iomanip>
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbEqual.h>
-#include <algorithm>
-#include <typeinfo>
-#include <boost/serialization/serialization.hpp>
-
-#include <boost/smart_ptr/shared_ptr.hpp>
-
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// IndexClasses
-
-//IndexerX1X2X3X4:
-//x4-reihen "liegen am stueck" im speicher
-//optimaler schleifendurchlauf
-//for(alle X1)
-//  for(alle X2)
-//    for(alle X3)
-//      for(alle X4)
-class IndexerX1X2X3X4
-{
-public:
-   typedef int size_type;
-public:
-   inline std::size_t getIndex( const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-                            , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
-   {
-      return nx4*(nx3*(nx2*x1+ x2)+x3)+x4 ;
-   }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-                                               , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
-   {
-      return  nx4*(nx3*(nx2*x1+ x2)+x3);
-   }
-};
-//////////////////////////////////////////////////////////////////////////
-// IndexClasses
-
-//IndexerX4X3X2X1:
-//x1-reihen "liegen am stueck" im speicher
-//optimaler schleifendurchlauf
-//for(alle X4)
-//  for(alle X3)
-//    for(alle X2)
-//      for(alle X1)
-class IndexerX4X3X2X1
-{
-public:
-   typedef size_t size_type;
-public:
-   inline std::size_t getIndex( const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
-   {
-      return nx1*(nx2*(nx3*x4+ x3)+x2)+x1;
-   }
-   inline std::size_t getStartIndexOfSortedArray(  const size_type& x1 , const size_type& x2 , const size_type& x3 , const size_type& x4
-      , const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4 )  const
-   {
-      return  nx1*(nx2*(nx3*x4+ x3)+x2);
-   }
-};
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-// CbArray4D
-template<typename T, typename IndexClass = IndexerX4X3X2X1>
-class CbArray4D
-{
-public:
-   typedef boost::shared_ptr< CbArray4D <T,IndexClass> > CbArray4DPtr;
-
-   typedef T                                                   value_type;
-   typedef IndexClass                                          indexer_type;
-   typedef typename IndexClass::size_type                      size_type;
-   typedef typename std::vector< value_type >::reference       reference;
-   typedef typename std::vector< value_type >::const_reference const_reference;
-   typedef typename std::vector< value_type >::pointer         pointer;
-   typedef typename std::vector< value_type >::const_pointer   const_pointer;
-
-private:
-   template< typename value_type2, typename IndexClass2 > friend class CbArray4D;
-
-public:
-   /*=======================================================================*/
-   CbArray4D()
-   {
-      this->resize(0,0,0,0);
-   }
-   /*=======================================================================*/
-   CbArray4D(const size_type& nx1,const size_type& nx2, const size_type& nx3, const size_type& nx4)
-   {
-      this->resize(nx1,nx2,nx3,nx4);
-   }
-   /*=======================================================================*/
-   CbArray4D(const size_type& nx1,const size_type& nx2, const size_type& nx3, const size_type& nx4, const value_type& val)
-   {
-      this->resize(nx1,nx2,nx3,nx4,val);
-   }
-   /*=======================================================================*/
-   CbArray4D(const size_type& uniformDimensionSize /*nx1=nx2=nx3=nx4*/)
-   {
-      this->resize(uniformDimensionSize,uniformDimensionSize,uniformDimensionSize,uniformDimensionSize);
-   }
-   /*=======================================================================*/
-   //ubernimmt vector als daten vector! (erstellt KEINE kopie!!!, vec ist anschließend leer, da swap verwendet wird)
-   CbArray4D(std::vector<value_type>& vec, const size_type& nx1,const size_type& nx2, const size_type& nx3, const size_type& nx4)
-   {
-      assert( (nx1*nx2*nx3*nx4)==vec.size() );
-      this->data.swap(vec);
-      this->resize(nx1,nx2,nx3,nx4);
-   }
-   /*=======================================================================*/
-   CbArray4D(const CbArray4D& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-       , nx3(src.nx3)
-       , nx4(src.nx4)
-       , data(src.data)
-   {
-   }
-   /*=======================================================================*/
-   template< typename value_type2 >
-   CbArray4D(const CbArray4D< value_type2 >& src)
-      :  nx1(src.nx1)
-       , nx2(src.nx2)
-       , nx3(src.nx3)
-       , nx4(src.nx4)
-   {
-      //Sourcedaten kopieren
-      this->data.resize( src.data.size() );
-      for(std::size_t i=0; i<data.size(); ++i)
-         this->data[i] = src.data[i];
-   }
-   /*=======================================================================*/
-   virtual ~CbArray4D()
-   {
-      //vector wird automatisch zerstoert
-   }
-   /*=======================================================================*/
-   CbArray4D& operator= (const CbArray4D& rhs)
-   {
-      if(this == &rhs) return *this;
-
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-      this->nx3 = rhs.nx3;
-      this->nx4 = rhs.nx4;
-
-      //gespeicherte Datenelemente loeschen
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-
-      //Sourcedaten kopieren
-      this->data = rhs.data;
-
-      return *this;
-   }
-   /*=======================================================================*/
-   //durch value_type2 kann man z.B. ein float Array einem double Array zuweisen!
-   template< typename value_type2, typename IndexClass2 >
-   CbArray4D& operator= (const CbArray4D< value_type2, IndexClass2 >& rhs)
-   {
-      this->nx1 = rhs.nx1;
-      this->nx2 = rhs.nx2;
-      this->nx3 = rhs.nx3;
-      this->nx4 = rhs.nx4;
-
-      //gespeicherte Datenelemente loeschen
-      this->data.clear();
-      //Laenge anpassen
-      this->data.resize(rhs.data.size());
-
-      //Sourcedaten kopieren (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      for(int x1=0; x1<this->nx1; x1++)
-         for(int x2=0; x2<this->nx2; x2++)
-            for(int x3=0; x3<this->nx3; x3++)
-               for(int x4=0; x4<this->nx4; x4++)
-                  this->operator()(x1,x2,x3,x4) = static_cast< value_type >( rhs.operator()(x1,x2,x3,x4));
-
-      return *this;
-   }
-   /*=======================================================================*/
-   bool operator== (const CbArray4D& rhs) const
-   {
-      if( this == &rhs ) return true;
-
-      if(   this->nx1!=rhs.nx1
-         || this->nx2!=rhs.nx2
-         || this->nx3!=rhs.nx3
-         || this->nx4!=rhs.nx4
-         || this->data.size() != rhs.data.size() )
-      {
-         return false;
-      }
-
-      return std::equal( this->data.begin(), this->data.end(), rhs.data.begin(), UbEqual<value_type, value_type >() );
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator== (const CbArray4D< value_type2, IndexClass2 >& rhs) const
-   {
-      if( this->data.size() != rhs.data.size() ) return false;
-
-      //Sourcedaten einzeln checken (!! koennte anderen Indexer besitzen!!! -> operator() benutzen)
-      for(int x4=0; x4<this->nx4; x4++)
-         for(int x3=0; x3<this->nx3; x3++)
-            for(int x2=0; x2<this->nx2; x2++)
-             for(int x1=0; x1<this->nx1; x1++)
-               if( !isUbEqual(this->operator()(x1,x2,x3,x4), rhs.operator()(x1,x2,x3,x4)) )
-                  return false;
-
-      return true;
-   }
-   /*=======================================================================*/
-   bool operator!= (const CbArray4D& rhs) const
-   {
-      return !(*this==rhs);
-   }
-   /*=======================================================================*/
-   template< typename value_type2, typename IndexClass2 >
-   bool operator!= (const CbArray4D< value_type2, IndexClass2 >& rhs) const
-   {
-      return !(*this==rhs);
-   }
-   /*=======================================================================*/
-   reference operator() (const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return this->data[indexer.getIndex(x1,x2,x3,x4,nx1,nx2,nx3,nx4)];
-   }
-   /*=======================================================================*/
-   const_reference operator() (const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4)	const
-   {
-      #ifdef CbArray4D_RANGECHECKING
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return this->data[indexer.getIndex(x1,x2,x3,x4,nx1,nx2,nx3,nx4)];
-   }
-   /*=======================================================================*/
-   pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,x3,x4,nx1,nx2,nx3,nx4)];
-   }
-   /*=======================================================================*/
-   const_pointer getStartAdressOfSortedArray(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4)  const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return &this->data[indexer.getStartIndexOfSortedArray(x1,x2,x3,x4,nx1,nx2,nx3,nx4)];
-   }
-   /*=======================================================================*/
-   void setObject(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4, const value_type& value)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      this->data[indexer.getIndex(x1,x2,x3,x4,nx1,nx2,nx3,nx4)] = value;
-   }
-   /*=======================================================================*/
-   reference getObject(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return this->data[indexer.getIndex(x1,x2,x3,x4,nx1,nx2,nx3,nx4)];
-   }
-   /*=======================================================================*/
-   const_reference getObject(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-      return (*this)(x1,x2,x3,x4,nx1,nx2,nx3,nx4);
-   }
-   /*=======================================================================*/
-   bool      isEmpty() const { return data.empty(); }
-   size_type getNX1()  const { return this->nx1;    }
-   size_type getNX2()  const { return this->nx2;    }
-   size_type getNX3()  const { return this->nx3;    }
-   size_type getNX4()  const { return this->nx4;    }
-   /*=======================================================================*/
-   void reset(const value_type& val)
-   {
-      std::fill( this->data.begin(), this->data.end(), val );
-   }
-   /*=======================================================================*/
-   std::string toString() const
-   {
-      std::stringstream text;
-      text<<std::setprecision(19);
-      for(size_type x1=0; x1<this->nx1; x1++)
-      {
-      	for(size_type x2=0; x2<this->nx2; x2++)
-      	{
-         	for(size_type x3=0; x3<this->nx3; x3++)
-         	{
-               for(size_type x4=0; x4<this->nx4; x4++)
-               {
-                 	text<<(*this)(x1,x2,x3,x4)<<", ";
-               }
-               text<<std::endl;
-         	}
-         	text<<std::endl;
-      	}
-      	text<<std::endl<<std::endl;
-      }
-
-      return text.str();
-   }
-   /*=======================================================================*/
-   std::string getInfo() const
-   {
-      std::stringstream text;
-      text<<"CbArray4D< storageType="<<typeid(T).name()<<", indexer="<<typeid(IndexClass).name()<<" >";
-      text<<"( nx1="<<this->nx1<<", nx2="<<this->nx2<<", nx3="<<this->nx3<<", nx4="<<this->nx4<<")";
-      return text.str();
-   }
-   /*=======================================================================*/
-   void resize(const size_type& uniformDimensionSize) { this->resize(uniformDimensionSize,uniformDimensionSize,uniformDimensionSize); }
-   /*=======================================================================*/
-   void resize(const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4)
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->nx3 = nx3;
-      this->nx4 = nx4;
-      this->data.resize(nx1*nx2*nx3*nx4);
-   }
-   /*=======================================================================*/
-   void resize(const size_type& nx1, const size_type& nx2, const size_type& nx3, const size_type& nx4, const value_type& val)
-   {
-      this->nx1 = nx1;
-      this->nx2 = nx2;
-      this->nx3 = nx3;
-      this->nx4 = nx4;
-      this->data.resize(nx1*nx2*nx3*nx4,val);
-   }
-   /*=======================================================================*/
-   std::vector< value_type >& getDataVector() { return this->data; }
-   /*=======================================================================*/
-   const std::vector< value_type >& getDataVector() const { return this->data; }
-   /*=======================================================================*/
-   inline std::size_t getDataVectorIndex(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if( !this->indicesInRange(x1,x2,x3,x4) )
-            UB_THROW( UbException(UB_EXARGS,getExceptionErrorString(x1,x2,x3,x4)) );
-      #endif
-
-      return indexer.getIndex(x1,x2,x3,x4,nx1,nx2,nx3,nx4);
-   }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nx1;
-      ar & nx2;
-      ar & nx3;
-      ar & nx4;
-      ar & data;
-   }
-#endif //CAB_RCF
-
-protected:
-   /*=======================================================================*/
-   //success -> true
-   //else    -> false
-   inline bool indicesInRange(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4) const
-   {
-      if(   x1 < 0 || x1 >= this->nx1
-         || x2 < 0 || x2 >= this->nx2
-         || x3 < 0 || x3 >= this->nx3
-         || x4 < 0 || x4 >= this->nx4 )
-      {
-         return false;
-      }
-      return true;
-   }
-   /*=======================================================================*/
-   std::string getExceptionErrorString(const size_type& x1, const size_type& x2, const size_type& x3, const size_type& x4) const
-   {
-      std::stringstream out("index out of range - ");
-      out<<"("<<x1<<","<<x2<<","<<x3<<","<<x4<<") not in ("<<nx1<<","<<nx2<<","<<nx3<<","<<nx4<<")";
-      return out.str();
-   }
-   /*=======================================================================*/
-
-protected:
-   size_type    nx1;
-   size_type    nx2;
-   size_type    nx3;
-   size_type    nx4;
-   indexer_type indexer;
-   std::vector< value_type > data;
-
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & nx1;
-      ar & nx2;
-      ar & nx3;
-      ar & nx4;
-      ar & data;
-   }
-};
-
-#endif //CBARRAY4D_H
diff --git a/source/VirtualFluidsCore/Basics/container/CbVector.h b/source/VirtualFluidsCore/Basics/container/CbVector.h
deleted file mode 100644
index 8b16e077308c2773a71530845ed5f98c6243144a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CbVector.h
+++ /dev/null
@@ -1,365 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef CBVECTOR_H
-#define CBVECTOR_H
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-   #include <RCF/ByteBuffer.hpp>
-#endif
-
-#include <vector>
-#include <algorithm> //for std::swap
-#include <typeinfo>  //for typeid
-#include <memory>    //for memcopy
-
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbEqual.h>
-
-/*=========================================================================*/
-/*  CbVector                                                               */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-@version 1.1 - 09.02.08
-@version 1.2 - 23.04.08 - swap added
-@version 1.3 - 08.05.08 - boosting up serialization performance!
-*/
-
-/*
-usage: ...
-Da es Voraussetzun bei doeser Klasse war, dass lediglich der Typ als
-template-parameter miteingeht, muss der allcocator eine abstrakte klasse sein
-ansonsten hätte sich hier der allokator als zweites argument
-wie beim STL vector angeboten, womit man auch keinen pointer speichern muesste.
-Im letzteren Fall würde aber jeweils ein bestimmeter Klassentyp in Abhaengigkeit
-des allokators zur compilezeit erzeugt. Problem wir wollen ein und denselben
-typ benutzen und nur der allokator innerhalb der klasse soll sich unterscheiden
-//
-// Rangecheck aktiv, wenn:
-// -debug  : not defined "NO_CB_RANGECHECK"
-// -release: not defined "NO_CB_RANGECHECK" && defined "CB_RANGECHECK"
-*/
-
-template< typename T > class CbVectorAllocator;
-template< typename T > class CbVectorAllocatorStd;
-
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-class CbVector
-{
-public:
-   typedef T           value_type;
-   typedef value_type* pointer;
-   typedef std::size_t size_type;
-
-   friend class CbVectorAllocator<value_type>; //um auf ptrData und dataSize zugreifen zu koennen!
-
-public:
-   /*==========================================================*/
-   CbVector( CbVectorAllocator<value_type>* const& allocator = new CbVectorAllocatorStd<value_type> )
-      :  ptrData(NULL)
-       , dataSize(0)
-       , allocator(allocator)
-   {
-      this->allocator->alloc(*this,0,value_type());
-   }
-   /*==========================================================*/
-   CbVector( const size_type size, CbVectorAllocator<value_type>* const& allocator = new CbVectorAllocatorStd<value_type>, const value_type& value=value_type() )
-      :  ptrData(NULL)
-       , dataSize(0)
-       , allocator(allocator)
-   {
-      this->allocator->alloc(*this,size,value);
-   }
-   /*==========================================================*/
-   virtual ~CbVector()
-   {
-      if(allocator)
-      {
-         this->allocator->dealloc(*this);
-         delete allocator;
-         allocator=NULL;
-      }
-   }
-   /*=======================================================================*/
-   CbVector& operator= (const CbVector& src)
-   {
-      if(this == &src) return *this;
-
-      //gespeicherte Datenelemente loeschen
-      //Laenge anpassen
-      this->allocator->resize(*this, src.size());
-
-      //gespeicherte Datenelemente kopieren
-      if( !src.empty() ) 
-      {
-         memcpy( (char*)ptrData, (char*)&src[0], src.size()*sizeof(value_type) ); 
-         //for(size_type i=0; i<src.size(); i++)
-         //   (*this)[i] = src[i];
-      }
-
-      return *this;
-   }
-   /*=======================================================================*/
-   CbVector& operator= (const std::vector< value_type >& src)
-   {
-      //gespeicherte Datenelemente loeschen
-      //Laenge anpassen
-      this->allocator->resize(*this, src.size());
-
-      //gespeicherte Datenelemente kopieren
-      if( !src.empty() ) 
-      {
-         memcpy( (char*)ptrData, (char*)&src[0], src.size()*sizeof(value_type) ); 
-         //for(size_type i=0; i<src.size(); i++)
-         //   (*this)[i] = src[i];
-      }
-      
-      return *this;
-   }
-   /*=======================================================================*/
-   bool operator== (const CbVector& rhs) const
-   {
-      if( this           == &rhs         ) return true;
-      if( this->dataSize != rhs.dataSize ) return false;
-
-      for(size_type i=0; i<rhs.size(); i++)
-         if( !isUbEqual( this->operator[](i), rhs.operator[](i) ) )
-            return false;
-
-      return true;
-   }
-   /*==========================================================*/
-   void setAllocator( CbVectorAllocator<value_type>* const& allocator )
-   {
-      if(this->allocator)
-      {
-         if(this->allocator==allocator) return;
-         this->allocator->dealloc(*this);
-         delete this->allocator;
-      }
-      this->allocator = allocator;
-      this->allocator->alloc(*this,0);
-   }
-   /*==========================================================*/
-   size_type size() const { return dataSize; }
-   /*==========================================================*/
-   bool empty() const { return dataSize==0; }
-   /*==========================================================*/
-   bool resize(const size_type& dataSize)
-   {
-      return allocator->resize(*this, dataSize);
-   }
-   /*==========================================================*/
-   bool resize(const size_type& dataSize, const value_type& value)
-   {
-      return allocator->resize(*this, dataSize, value);
-   }
-   /*==========================================================*/
-   void swap(CbVector& rhs)
-   {
-      if( this == &rhs ) return;
-
-      std::swap( this->ptrData  , rhs.ptrData   );
-      std::swap( this->dataSize , rhs.dataSize  );
-      std::swap( this->allocator, rhs.allocator );
-   }
-   /*==========================================================*/
-   value_type& operator[](const size_type& i)
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if(i>=dataSize) 
-            UB_THROW( UbException(UB_EXARGS,"T="+(std::string)typeid(*this).name()+UbSystem::toString(i)+" out of range (size="+UbSystem::toString(dataSize)+")") );
-      #endif // _DEBUG
-
-      return ptrData[i];
-   }
-   /*==========================================================*/
-   const value_type& operator[](const size_type& i) const
-   {
-      #if !defined(NO_CB_RANGECHECK) && ( defined(_DEBUG) || defined(CB_RANGECHECK) )
-         if(i>=dataSize) 
-            UB_THROW( UbException(UB_EXARGS,"T="+(std::string)typeid(*this).name()+UbSystem::toString(i)+" out of range (size="+UbSystem::toString(dataSize)+")") );
-      #endif // _DEBUG
-
-      return ptrData[i];
-   }
-   /*==========================================================*/
-   CbVectorAllocator<value_type>* getAllocator() const { return allocator; }
-   /*==========================================================*/
-   #ifdef CAB_RCF
-      template<typename Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         if( ArchiveTools::isWriting(ar) )
-         {
-            ar & allocator;
-            ar & dataSize; //!!!erst hier
-
-            //old:
-            //for(size_type i=0; i<dataSize; i++)
-            // ar & ptrData[i];
-
-            //new and boosting to the sky:
-            RCF::ByteBuffer byteBuffer( (char*) &ptrData[0], dataSize*sizeof(value_type) );
-            ar & byteBuffer;
-         }
-         else
-         {
-            CbVectorAllocator<value_type>* tmpCbVectorAllocator(NULL);
-            size_type tmpInteger;
-            ar & tmpCbVectorAllocator;
-            ar & tmpInteger;
-            this->setAllocator(tmpCbVectorAllocator);
-            allocator->resize(*this,tmpInteger);
-
-            //old:
-            //for(size_type i=0; i<dataSize; i++)
-            // ar & ptrData[i];
-
-            //new and boosting to the sky:
-            RCF::ByteBuffer byteBuffer;
-            ar & byteBuffer;
-            memcpy( (char*)ptrData, byteBuffer.getPtr(), byteBuffer.getLength() ); 
-         }
-      }
-   #endif //CAB_RCF
-
-private:
-   value_type* ptrData;
-   size_type   dataSize;
-   CbVectorAllocator<value_type>* allocator;
-   CbVector<value_type>(const CbVector<value_type>& src);
-   //CbVector<value_type>& operator=(const CbVector<value_type>& src);
-};
-
-//////////////////////////////////////////////////////////////////////////
-// CbVectorAllocator-Interface
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-class CbVectorAllocator
-{
-public:
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
-
-public:
-   CbVectorAllocator() {}
-   virtual ~CbVectorAllocator() {}
-
-   virtual bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) = 0;
-   virtual bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) = 0;
-   virtual bool dealloc(CbVector< value_type >& vec) = 0;
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-   }
-#endif //CAB_RCF
-
-protected:
-   //folgende Methoden ersparen eine friend Deklaierung aller moeglichen Allocatoren
-   //denn durch diese beiden Methoden haben sie exklusive Zugriffsrechte!
-   //**********************************************************************************//
-   inline value_type*& ptrDataOf( CbVector< value_type >& vec )
-   {
-      if( vec.getAllocator()!=this ) UB_THROW( UbException(UB_EXARGS,"allocator is not member of vec!") );
-      return vec.ptrData;
-   }
-   //**********************************************************************************//
-   inline size_type& dataSizeOf( CbVector< value_type >& vec )
-   {
-      if( vec.getAllocator()!=this ) UB_THROW( UbException(UB_EXARGS,"allocator is not member of vec!") );
-      return vec.dataSize;
-   }
-};
-
-#ifdef RCF_USE_SF_SERIALIZATION
-SF_NO_CTOR(CbVectorAllocator<double>);
-SF_NO_CTOR(CbVectorAllocator<float>);
-#endif //RCF_USE_SF_SERIALIZATION
-
-
-//////////////////////////////////////////////////////////////////////////
-// CbVectorAllocatorStd
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-class CbVectorAllocatorStd : public CbVectorAllocator<T>
-{
-public:
-   //typedefs wiederholen, da Basisklasse = template -> "Dependent-Base"-Problem
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
-
-public:
-   CbVectorAllocatorStd() : CbVectorAllocator<value_type>()
-   {
-
-   }
-   /*==========================================================*/
-   bool alloc(CbVector< value_type >& src, const size_type& dataSize, const value_type& value=value_type())
-   {
-      return this->resize(src,dataSize,value);
-   }
-   /*==========================================================*/
-   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
-   {
-      if( CbVectorAllocatorStd< value_type >::dataSizeOf(vec) == dataSize) return false;
-
-      //new array
-      value_type* new_data = new value_type[dataSize];
-      //copy existing data to array
-      if( this->ptrDataOf(vec) )
-      {
-         for(size_type i=0; (i<vec.size() && i<dataSize); ++i) new_data[i] = CbVectorAllocatorStd< value_type >::ptrDataOf(vec)[i];
-         delete[] this->ptrDataOf(vec);
-      }
-      this->ptrDataOf(vec) = new_data;
-      //new value for new items
-      for(size_type i=this->dataSizeOf(vec); i<dataSize; ++i) this->ptrDataOf(vec)[i] = value;
-      //assign new dataSize
-      this->dataSizeOf(vec) = dataSize;
-
-      return true;
-   }
-   /*==========================================================*/
-   bool dealloc(CbVector< value_type >& vec)
-   {
-      if( this->ptrDataOf(vec) )
-      {
-         delete[] this->ptrDataOf(vec);
-         this->ptrDataOf(vec) = NULL;
-      }
-      this->dataSizeOf(vec) = 0;
-      return true;
-   }
-   /*==========================================================*/
-   #ifdef CAB_RCF
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         serializeParent< CbVectorAllocator<value_type> >(ar, *this);
-      }
-   #endif //CAB_RCF
-
-private:
-};
-
-
-#ifdef RCF_USE_SF_SERIALIZATION
-   UB_AUTO_RUN_NAMED(   SF::registerType< CbVectorAllocatorStd<double> >(" CbVectorAllocatorStd<double> ")       , SF_CbVectorAllocatorStd_double );
-   UB_AUTO_RUN_NAMED( ( SF::registerBaseAndDerived< CbVectorAllocator<double>, CbVectorAllocatorStd<double> >() ), SF_CbVectorAllocatorStd_double_BD1 );
-
-   UB_AUTO_RUN_NAMED(   SF::registerType< CbVectorAllocatorStd<float> >(" CbVectorAllocatorStd<float> "  )       , SF_CbVectorAllocatorStd_float  );
-   UB_AUTO_RUN_NAMED( ( SF::registerBaseAndDerived< CbVectorAllocator<float> , CbVectorAllocatorStd<float> >()  ), SF_CbVectorAllocatorStd_float_BD2 );
-#endif //RCF_USE_SF_SERIALIZATION
-
-#endif //CBVECTOR_H
diff --git a/source/VirtualFluidsCore/Basics/container/CbVectorPool.h b/source/VirtualFluidsCore/Basics/container/CbVectorPool.h
deleted file mode 100644
index 000fe51593997759bee3446501750eb2eb87db8c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/CbVectorPool.h
+++ /dev/null
@@ -1,465 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef CBVECTORPOOL_H
-#define CBVECTORPOOL_H
-
-#include <iostream>
-#include <sstream>
-#include <vector>
-#include <map>
-#include <limits>
-#include <typeinfo>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbTuple.h>
-#include <basics/utilities/UbLogger.h>
-#include <basics/container/CbVector.h>
-
-//#include "MPICommunicator.h"
-//
-//#include <execinfo.h>
-//#include <stdio.h>
-//#include <stdlib.h>
-//#include <unistd.h>
-
-/*=========================================================================*/
-/*  CbVectorPool                                                               */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-@version 1.1 - 09.02.08
-*/
-
-/*
-Durch Verwendung eines CbVectors in Verbindung mit einem CbVectorAllocatorPool
-wird der Datenvector nicht direkt im CbVector gehalten, sondern ist ein Teil
-des Datenvectors des Übergabe-CbVectorPools.
-Die Methoden der von CbVectors funktionieren fehlerfrei
-Es mss einem jedoch bewußt sein, dass die "resize"-Methoden länger benötigen, da
-u.U. viele Elemente im Speicher verschoeben werden muessen.
-Der Poolvector enthaelt KEINE gaps, so dass er z.B. gut zur Übertragung via MPI
-geeignet ist...
-
-Verhaltensweise bei Zerstören des Pools:
-wird der Pool zerstört bevor man die CbVectoren zerstört, so wird beim nächsten
-Datenzugriffsversuch eine entsprechende Exception geworfen, denn alle DatenElemente
-des CbVEctors werden restet und der Pool dort zu NULL gesetzt.
-
-Verhaltensweise bei Zerstören eines CbVectors:
-hier ganz normal der Datenspeicher wieder freigegen und der Poolvektor verkürzt
-*/
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-
-template<typename T> class CbVectorAllocatorPool;
-
-/*==================================================================*/
-template<typename T>
-class CbVectorPool
-{
-public:
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef unsigned int CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-public:
-   //////////////////////////////////////////////////////////////////////////
-   CbVectorPool( const size_type& startPoolSize = 20000) //startPoolSize*sizeof(T)/1024/1024 [MB]
-      :  poolStartAdress(NULL)
-       , nextCbVectorStartIndexInPool(0)
-       , nextCbVectorKey(0)
-   {
-      pool.reserve(startPoolSize);
-   }
-   /*==================================================================*/
-   virtual ~CbVectorPool()
-   {
-      //hier werden lediglich ihre datenvektoren "resetet"
-      for(CbVectorMapIter it=cbVectorMap.begin(); it!=cbVectorMap.end(); ++it)
-      {
-         CbVector< value_type >& vec = *it->second;
-         CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-         if(allocator.ptrVectorPool != this) UB_THROW( UbException(UB_EXARGS,"CbVectorAllocator is part of different Pool") );
-
-         //allocator daten reseten
-         allocator.ptrVectorPool    = NULL;
-         allocator.key              = 0;
-         allocator.startIndexInPool = 0;
-
-         //Datenzeiger/-groessen reseten
-         allocator.ptrDataOf(vec)  = NULL;
-         allocator.dataSizeOf(vec) = 0;
-      }
-   }
-   /*==========================================================*/
-   CbVectorKey getNextCbVectorKey() const
-   {
-      return this->nextCbVectorKey;
-   }
-   /*==================================================================*/
-   bool allocVectorData(CbVector<value_type>& vec, const size_type& dataSize, const value_type& value=value_type() )
-   {
-      //pool-allocator holen
-      CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-      if(allocator.ptrVectorPool != this) UB_THROW( UbException(UB_EXARGS,"CbVectorAllocator is part of different Pool") );
-
-      //alloc nur wenn cbVector noch kein Element von Pool!
-      if( cbVectorMap.find(allocator.key)==cbVectorMap.end()   )
-      {
-         return this->allocData(allocator, vec, dataSize, value );
-      }
-
-      UB_THROW( UbException(UB_EXARGS,"vector-key="+UbSystem::toString(allocator.key)+" bereits vergeben!") );
-   }
-   /*==================================================================*/
-   bool resizeVectorData(CbVector<value_type>& vec, const size_type& dataSize, const value_type& value=value_type() )
-   {
-      CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-      if(allocator.ptrVectorPool != this) UB_THROW( UbException(UB_EXARGS,"CbVectorAllocator is part of different Pool") );
-
-      //cbVector noch nicht in map?
-      CbVectorMapIter pos = cbVectorMap.find(allocator.key);
-
-      if( pos!=cbVectorMap.end()  ) //cbVector vorhanden
-      {
-         //wenn bei alloc keine Laenge zugewiesen wurde, so erfolgt das nun
-         if( allocator.startIndexInPool==0 && allocator.ptrDataOf(vec)==NULL )
-            return this->allocData(allocator, vec, dataSize, value ) ;
-         else
-            return this->resizeData(allocator, vec, dataSize, value );
-      }
-
-      UB_THROW( UbException(UB_EXARGS,"vector gehoert laut allocator zum pool aber den key gibt s nicht... wie kann das sein?") );
-   }
-   /*==================================================================*/
-   bool deallocVectorData(CbVector<value_type>& vec)
-   {
-      CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-      if(allocator.ptrVectorPool != this) UB_THROW( UbException(UB_EXARGS,"CbVectorAllocator is part of different Pool") );
-
-      //nur wenn vector auch teil des
-      if( cbVectorMap.erase(allocator.key) > 0 )
-      {
-         if( this->resizeData(allocator,vec,0,0) )
-         {
-            allocator.ptrVectorPool    = NULL;
-            allocator.key              = 0;
-            allocator.startIndexInPool = 0;
-
-            //das Datenzeiger/-groessen reseten wird bereits in resize durchgefuehrt
-            return true;
-         }
-         else UB_THROW( UbException(UB_EXARGS,"unknown error") );
-      }
-
-      
-      //CommunicatorPtr comm = MPICommunicator::getInstance();
-      //int myid = comm->getProcessID();
-
-//      // Get the name of the processor
-//      char machinename[MPI_MAX_PROCESSOR_NAME];
-//      int name_len;
-//      MPI_Get_processor_name(machinename, &name_len);
-//      UBLOG(logINFO, "PID = " << myid << " host name: " << machinename);
-//
-//      int j, nptrs;
-//#define SIZE 100
-//      void *buffer[100];
-//      char **strings;
-//
-//      nptrs = backtrace(buffer, SIZE);
-//      printf("backtrace() returned %d addresses\n", nptrs);
-//
-//      /* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)
-//      would produce similar output to the following: */
-//
-//      strings = backtrace_symbols(buffer, nptrs);
-//      if (strings == NULL)
-//      {
-//         perror("backtrace_symbols");
-//         exit(EXIT_FAILURE);
-//      }
-//
-//      for (j = 0; j < nptrs; j++)
-//         printf("%s\n", strings[j]);
-//
-//      free(strings);
-
-      UB_THROW(UbException(UB_EXARGS, "vector gehoert laut allocator zum pool aber den key gibt s nicht... wie kann das sein?"));
-   }
-   /*==================================================================*/
-   friend std::ostream& operator<<(std::ostream& os, const CbVectorPool& cbPool)
-   {
-      os<<"map"<<std::endl;
-      for(CbVectorMapIter pos=cbPool.cbVectorMap.begin(); pos!=cbPool.cbVectorMap.end(); ++pos)
-      {
-         CbVectorAllocatorPool< value_type >& tmpAllocator = dynamic_cast< CbVectorAllocatorPool<value_type>& >(*pos->second->getAllocator());
-         os<<"vector-size="<<pos->second->size()<<"vector-Adress="<<tmpAllocator->ptrDataOf(*pos->second)<<", allocator(key="<<tmpAllocator.key<<", startIndex="<<tmpAllocator.startIndexInPool<<")"<<std::endl;
-         for(size_type i=0; i<pos->second->size(); i++) os<<(*pos->second)[i]<<","; 
-         os<<std::endl;
-      }
-      os<<"pool"<<std::endl;
-      for(size_type i=0; i<cbPool.pool.size(); i++)
-            os<<cbPool.pool[i]<<","; os<<std::endl;
-
-      return os;
-   }
-   /*==================================================================*/
-   typename CbVectorMap::size_type getNofStoredVectors() const
-   {
-      return this->cbVectorMap.size();
-   }
-   /*==================================================================*/
-   typename Pool::size_type getPoolSize() const
-   {
-      return this->pool.size();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   bool consistencyCheck()
-   {
-      std::vector<int> pool2(pool.size(),0);
-      for(CbVectorMapIter it=cbVectorMap.begin(); it!=cbVectorMap.end(); ++it)
-      {
-         CbVector< value_type >& tmpVec = *it->second;
-         CbVectorAllocatorPool< value_type >& tmpAllocator = dynamic_cast< CbVectorAllocatorPool<value_type>& >(*tmpVec.getAllocator());
-         for(size_type i=tmpAllocator.startIndexInPool; i<tmpAllocator.startIndexInPool+tmpVec.size(); ++i)
-         {
-            pool2.at(i)++;
-         }
-      }
-      for( size_type i=0; i<pool2.size(); ++i )
-      {
-         if(pool2.at(i) > 1 ) { UBLOG(logERROR,UB_FUNCTION<<" - test failed typo 1"); return false; }
-         if(pool2.at(i) < 1 ) { UBLOG(logERROR,UB_FUNCTION<<" - test failed typo 2"); return false; }
-      }
-      return true;
-   }
-protected:
-   /*==================================================================*/
-   inline bool allocData(CbVectorAllocatorPool< value_type >& allocator, CbVector< value_type >& vec, const size_type& dataSize, const value_type& value )
-   {
-      //safety checks
-      if(    allocator.startIndexInPool!=0
-          || allocator.ptrDataOf(vec)!=NULL
-          || allocator.dataSizeOf(vec)!=0   )
-      {
-         UB_THROW( UbException(UB_EXARGS,"zu allokierender vector ist nicht ganz sauber!!") );
-      }
-
-      //poolVector vergroessern
-      if( dataSize>0 )
-      {
-         pool.resize( pool.size() + dataSize, value );
-
-         //Zeiger der vorhandenen CbVectoren neu setzen, wenn Pool im Speicher verschoben wurde
-         if( poolStartAdress != &pool.front() )
-         {
-            poolStartAdress = &pool.front();
-            for(CbVectorMapIter it=cbVectorMap.begin(); it!=cbVectorMap.end(); ++it)
-            {
-               CbVector< value_type >& tmpVec = *it->second;
-               CbVectorAllocatorPool< value_type >& tmpAllocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*tmpVec.getAllocator());
-
-               if( !tmpAllocator.ptrDataOf(tmpVec) ) continue; //Fall: CbVector hat noch keinen Datenbereich (data zeigt auf NULL)
-               tmpAllocator.ptrDataOf(tmpVec) = &pool[ tmpAllocator.startIndexInPool];
-            }
-            //std::cout<<"CbVectorPoolMpi::allocVectorData vector wurde im speicher verschoben - adressen angepasst!!!"<<std::endl;
-         }
-
-         //aktuellem element adresse zuweisen (wurde evtl schon inder schleife zuvor gemacht)
-         allocator.ptrDataOf(vec) = &pool.at(nextCbVectorStartIndexInPool);
-         allocator.startIndexInPool = nextCbVectorStartIndexInPool;
-
-         //neuen StartIndex fuer naechstes Element berechnen
-         nextCbVectorStartIndexInPool += dataSize;
-         if(nextCbVectorStartIndexInPool!=pool.size())
-            UB_THROW( UbException(UB_EXARGS,"index Problem... Annahme falsch?") );
-      }
-
-      //vector zu map hinzufügen (speicher wird dann anschliessend zugwiesen)
-      cbVectorMap.insert( std::make_pair( allocator.key, &vec ) ); // ist angeblich performanter als  cbVectorMap[ allocator.key ] = cbVector; //aus Effective STL von Scott Meyer
-      allocator.dataSizeOf(vec) = dataSize;
-
-      //dummDoof nextKey-Generung...
-      if( allocator.key >= this->nextCbVectorKey ) this->nextCbVectorKey = allocator.key + 1;
-
-      return true;
-   }
-   /*==========================================================*/
-   bool resizeData(CbVectorAllocatorPool< value_type >& allocator, CbVector<value_type>& vec, const size_type& dataSize, const value_type& value )
-   {
-      //datenvector verlaengern/-kuerzen
-      typename Pool::iterator startPos = pool.begin()+allocator.startIndexInPool; //startPosition der cbVector-Daten im Pool
-      if( vec.size() > dataSize ) pool.erase( startPos+dataSize, startPos+vec.size());
-      else                        pool.insert( startPos+vec.size(), dataSize-vec.size(), value );
-
-      //////////////////////////////////////////////////////////////////////////
-      //adressen und laengen der einzelnen vectoren anpassen
-      if( !pool.empty() )
-      {
-         bool poolMoved   = ( poolStartAdress != &pool.front() );
-         poolStartAdress  = &pool.front();
-
-         for(CbVectorMapIter it=cbVectorMap.begin(); it!=cbVectorMap.end(); ++it)
-         {
-            CbVector< value_type >& tmpVec = *it->second;
-
-            if( tmpVec.size()>0 )
-            {
-               CbVectorAllocatorPool< value_type >& tmpAllocator = dynamic_cast< CbVectorAllocatorPool<value_type>& >(*tmpVec.getAllocator());
-               //liegt CbVector VOR verändertem CbVector?
-               if( tmpAllocator.startIndexInPool <= allocator.startIndexInPool ) //ja: anpassung NUR wenn pool verschoben wurde!
-               {
-                  if(poolMoved && tmpVec.size()>0 ) tmpAllocator.ptrDataOf(tmpVec) = &pool[ tmpAllocator.startIndexInPool];
-               }
-               else //nein: -> Adresse + Index MUSS immer angepasst werden
-               {
-                  tmpAllocator.startIndexInPool += dataSize-vec.size();
-                  tmpAllocator.ptrDataOf(tmpVec) = &pool[ tmpAllocator.startIndexInPool ];
-               }
-            }
-         }
-      }
-      else //Sonderfall: alle Elemente haben Laenge 0 -> kein pool -> alle Feld-Adressen auf NULL setzen!
-      {
-         poolStartAdress = NULL;
-         for(CbVectorMapIter it=cbVectorMap.begin(); it!=cbVectorMap.end(); ++it)
-         {
-            CbVector< value_type >& tmpVec = *it->second;
-            CbVectorAllocatorPool< value_type >& tmpAllocator = dynamic_cast< CbVectorAllocatorPool<value_type>& >(*tmpVec.getAllocator());
-            tmpAllocator.startIndexInPool = 0;
-         }
-
-      }
-
-      //restliche Daten von cbVector + allocator aktualisieren
-      allocator.dataSizeOf(vec) = dataSize;
-      if(dataSize==0)
-      {
-         allocator.ptrDataOf(vec)   = NULL;
-         allocator.startIndexInPool = 0;
-      }
-
-      nextCbVectorStartIndexInPool = pool.size();
-
-      return true;
-   }
-
-protected:
-   /*==================================================================*/
-   void getCbVectorData(const CbVector< value_type >& vec, CbVectorKey& vectorKey, size_type& startIndexInPool, size_type& dataSize )
-   {
-      CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-
-      startIndexInPool  = allocator.startIndexInPool;
-      vectorKey         = allocator.key;
-      dataSize          = vec.size();
-   }
-   /*==================================================================*/
-   void setCbVectorData(CbVector< value_type >& vec, const CbVectorKey& vectorKey, const size_type& startIndexInPool, const size_type& dataSize )
-   {
-      CbVectorAllocatorPool< value_type >& allocator = dynamic_cast< CbVectorAllocatorPool< value_type >& >(*vec.getAllocator() );
-
-      allocator.startIndexInPool = startIndexInPool;
-      allocator.key              = vectorKey;
-      allocator.dataSizeOf(vec)  = dataSize;
-      allocator.ptrDataOf(vec)   = &this->pool[ startIndexInPool ];
-   }
-   /*==================================================================*/
-
-   CbVectorMap                cbVectorMap;                      //informationsmap fuer MPIData und zugewiesener vector
-
-   Pool                       pool;                             //globaler Datenvector
-   typename Pool::pointer     poolStartAdress;                  //StartAdresse des aktuellen Datenvektors
-   typename Pool::size_type   nextCbVectorStartIndexInPool;     //StartIndex fuer den naechsten CbVector
-
-   //key - erstmal dummdoof
-   CbVectorKey nextCbVectorKey;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-//  CbVectorAllocatorPool
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-class CbVectorAllocatorPool : public CbVectorAllocator<T>
-{
-public:
-   //typedefs wiederholen, da Basisklasse = template -> "Dependent-Base"-Problem
-   typedef typename CbVector<T>::value_type          value_type;
-   typedef typename CbVector<value_type>::size_type  size_type;
-
-   friend class CbVectorPool< value_type >;
-
-public:
-   /*==========================================================*/
-   CbVectorAllocatorPool(const typename CbVectorPool< value_type >::CbVectorKey& key, CbVectorPool<value_type>* const& ptrVectorPool)
-      :  CbVectorAllocator<value_type>()
-       , key(key)
-       , startIndexInPool(0)
-       , ptrVectorPool(ptrVectorPool)
-   {
-      if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"ptrVectorPool==NULL") );
-   }
-   /*==========================================================*/
-   //hier wird der key automatisch erzeugt!
-   CbVectorAllocatorPool(CbVectorPool<value_type>* const& ptrVectorPool)
-      :  CbVectorAllocator<value_type>()
-       , startIndexInPool(0)
-       , ptrVectorPool(ptrVectorPool)
-   {
-      if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"ptrVectorPool==NULL") );
-      key = ptrVectorPool->getNextCbVectorKey();
-   }
-   /*==========================================================*/
-   bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
-   {
-      if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"vectorPool seems to be destroyed, ptrVectorPool==NULL") );
-      return ptrVectorPool->allocVectorData(vec, dataSize, value);
-   }
-   /*==========================================================*/
-   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
-   {
-      if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"vectorPool seems to be destroyed, ptrVectorPool==NULL") );
-      return ptrVectorPool->resizeVectorData(vec, dataSize, value);
-   }
-   /*==========================================================*/
-   bool dealloc(CbVector< value_type >& vec)
-   {
-      if(ptrVectorPool) return this->ptrVectorPool->deallocVectorData(vec);
-      //wenn kein ptrVectorPool -> wurde bereits deallokiert
-      return true;
-   }
-   /*==========================================================*/
-   const CbVectorPool< value_type >& getCbVectorPool()
-   {
-      if(!ptrVectorPool) UB_THROW( UbException(UB_EXARGS,"vectorPool seems to be destroyed, ptrVectorPool==NULL") );
-      return *ptrVectorPool;
-   }
-   /*==========================================================*/
-
-private:
-   typename CbVectorPool< value_type >::CbVectorKey     key;
-   typename CbVectorPool< value_type >::Pool::size_type startIndexInPool;
-
-   CbVectorPool< value_type >* ptrVectorPool;
-
-   CbVectorAllocatorPool( const CbVectorAllocatorPool& );                 //no copy allowed
-   const CbVectorAllocatorPool& operator=( const CbVectorAllocatorPool& );//no copy allowed
-};
-
-
-#endif //CBVECTORPOOL_H
diff --git a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/CMakeLists.txt b/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/CMakeLists.txt
deleted file mode 100644
index 6cf6d2526048573fa4bbf1426f28279b0dc46bb4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/CMakeLists.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-
-PROJECT(CbVectorPoolTests)
-
-#################################################################
-# MACHINE_SPECIFIC CMAKE_CONFIG_FILE
-#################################################################
-INCLUDE("../../../../../../../CMake/CMakeCABMacros.txt")
-
-#################################################################
-###   PACKAGES                                               ###
-#################################################################
-INCLUDE(${SOURCE_ROOT}/basics/container/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/basics/utilities/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/basics/memory/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/basics/objects/CMakePackage.txt)
-
-#################################################################
-###   OWN DEFINES 						###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${SOURCE_ROOT}/basics/container/examples/CbVectorPool/*.h
-                         ${SOURCE_ROOT}/basics/container/examples/CbVectorPool/*.cpp ) 
-
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(z_specific FILES ${SPECIFIC_FILES})
-
-#################################################################
-###  PROJECT ERSTELLEN                                        ###
-#################################################################
-CREATE_CAB_PROJECT()
diff --git a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/functions.h b/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/functions.h
deleted file mode 100644
index b9e376731e5581c75efbfa093122afc42f2405ad..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/functions.h
+++ /dev/null
@@ -1,190 +0,0 @@
-#include <iostream>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string>
-#include <fstream>
-
-#include <basics/utilities/UbTuple.h>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbFileOutputASCII.h>
-#include <basics/utilities/UbTiming.h>
-
-#include <basics/memory/MbSmartPtr.h>
-
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::vector;
-
-typedef long double value_type;
-typedef MbSmartPtr<CbVector< value_type > > CbVectorPtr;
-typedef MbSmartPtr<vector< value_type > >   StlVectorPtr;
-
-/*==========================================================*/
-template<typename T>
-inline void setValues(vector<T>& stlvec, CbVector<T>& cbvec, CbVector<T>& cbpoolvec)
-{
-   if(stlvec.size() != cbvec.size() || stlvec.size() != cbpoolvec.size() )
-   {
-      cerr<<"sizes:"<<endl;
-      cerr<<"stlvec... = "<<(int)stlvec.size()<<endl;
-      cerr<<"cbvec.... = "<<(int)cbvec.size()<<endl;
-      cerr<<"cbpoolvec = "<<(int)cbpoolvec.size()<<endl;
-      throw UB_THROW( UbException("setValues - sizeCheck failed") );
-   }
-   static value_type stlVal    = 1;
-   static value_type cbVal     = 1;
-   static value_type cbPoolVal = 1;
-
-   for(size_t i=0; i<cbvec.size(); i++) stlvec[i]    = stlVal   ++;
-   for(size_t i=0; i<cbvec.size(); i++) cbvec[i]     = cbVal    ++;
-   for(size_t i=0; i<cbvec.size(); i++) cbpoolvec[i] = cbPoolVal++;
-}
-/*==========================================================*/
-template<typename T>
-inline void setValues(vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs)
-{
-   if(stlvecs.size() != cbvecs.size() || stlvecs.size() != cbpoolvecs.size() )
-   {
-      cerr<<"sizes:"<<endl;
-      cerr<<"stlvec... = "<<(int)stlvecs.size()<<endl;
-      cerr<<"cbvec.... = "<<(int)cbvecs.size()<<endl;
-      cerr<<"cbpoolvec = "<<(int)cbpoolvecs.size()<<endl;
-      throw UB_THROW( UbException("setValues glob - sizeCheck failed") );
-   }
-
-   for(size_t i=0; i<cbvecs.size(); i++)
-      setValues(*stlvecs[i],*cbvecs[i],*cbpoolvecs[i]);
-}
-/*==========================================================*/
-template<typename T>
-inline void resize(vector<T>& stlvec, CbVector<T>& cbvec, CbVector<T>& cbpoolvec, std::size_t size, const T& val)
-{
-   stlvec.resize(size,val);
-   cbvec.resize(size,val);
-   cbpoolvec.resize(size,val);
-}
-/*==========================================================*/
-template<typename T>
-inline void resize(vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs, std::size_t size, const value_type& val, bool timed=false)
-{
-   if(stlvecs.size() != cbvecs.size() || stlvecs.size() != cbpoolvecs.size() )
-   {
-      cerr<<"sizes:"<<endl;
-      cerr<<"stlvec... = "<<(int)stlvecs.size()<<endl;
-      cerr<<"cbvec.... = "<<(int)cbvecs.size()<<endl;
-      cerr<<"cbpoolvec = "<<(int)cbpoolvecs.size()<<endl;
-      throw UB_THROW( UbException("resize glob - sizeCheck failed") );
-   }
-
-   if(timed)
-   {
-      UbTimer timer;
-      timer.start(); for(size_t i=0; i<cbvecs.size(); i++) stlvecs[i]->resize(size,val);    if(timed) cout<<"stl-resize    in "<<timer.stop()<<"s"<<endl;
-      timer.start(); for(size_t i=0; i<cbvecs.size(); i++) cbvecs[i]->resize(size,val);     if(timed) cout<<"cbStd-resize  in "<<timer.stop()<<"s"<<endl;
-      timer.start(); for(size_t i=0; i<cbvecs.size(); i++) cbpoolvecs[i]->resize(size,val); if(timed) cout<<"cbPool-resize in "<<timer.stop()<<"s"<<endl;
-   }
-   else
-   {
-      for(size_t i=0; i<cbvecs.size(); i++)
-         resize(*stlvecs[i],*cbvecs[i],*cbpoolvecs[i],size,val);
-   }
-}
-/*==========================================================*/
-inline void createVecs(size_t number, int size,vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs, CbVectorPool<value_type>*& pool, bool timed=false)
-{
-   UbTimer timer;
-   timer.start(); for(size_t i=0; i<number; i++) stlvecs.push_back(StlVectorPtr(new vector<value_type>(size)));                                                  if(timed) cout<<"stl-createVecs    in "<<timer.stop()<<"s"<<endl;
-   timer.start(); for(size_t i=0; i<number; i++) cbvecs.push_back(CbVectorPtr(new CbVector<value_type>(size)));                                                  if(timed) cout<<"cbStd-createVecs  in "<<timer.stop()<<"s"<<endl;
-   timer.start(); for(size_t i=0; i<number; i++) cbpoolvecs.push_back(CbVectorPtr(new CbVector<value_type>(size,new CbVectorAllocatorPool<value_type>(pool))));  if(timed) cout<<"cbPool-createVecs in "<<timer.stop()<<"s"<<endl;
-
-   for(size_t i=0; i<cbvecs.size(); i++) setValues(*stlvecs.back(),*cbvecs.back(),*cbpoolvecs.back());
-}
-/*==========================================================*/
-inline void createVecs(size_t number, size_t size, const value_type& val,vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs, CbVectorPool<value_type>*& pool, bool timed=false)
-{
-   UbTimer timer;
-   timer.start(); for(size_t i=0; i<number; i++) stlvecs.push_back(StlVectorPtr(new vector<value_type>(size,val)));                                                  if(timed) cout<<"stl-createVecs    in "<<timer.stop()<<"s"<<endl;
-   timer.start(); for(size_t i=0; i<number; i++) cbvecs.push_back(CbVectorPtr(new CbVector<value_type>(size,new CbVectorAllocatorStd<value_type>(),val)));           if(timed) cout<<"cbStd-createVecs  in "<<timer.stop()<<"s"<<endl;
-   timer.start(); for(size_t i=0; i<number; i++) cbpoolvecs.push_back(CbVectorPtr(new CbVector<value_type>(size,new CbVectorAllocatorPool<value_type>(pool),val)));  if(timed) cout<<"cbPool-createVecs in "<<timer.stop()<<"s"<<endl;
-}
-/*==========================================================*/
-template<typename T>
-inline void equalCheck(vector<T>& stlvec, CbVector<T>& cbvec, CbVector<T>& cbpoolvec)
-{
-   if(stlvec.size() != cbvec.size() || stlvec.size() != cbpoolvec.size() )
-   {
-      cerr<<"sizes:"<<endl;
-      cerr<<"stlvec... = "<<(int)stlvec.size()<<endl;
-      cerr<<"cbvec.... = "<<(int)cbvec.size()<<endl;
-      cerr<<"cbpoolvec = "<<(int)cbpoolvec.size()<<endl;
-      throw UB_THROW( UbException("equalCheck - sizeCheck failed") );
-   }
-
-   bool check=true;
-   for(size_t i=0; i<cbvec.size(); i++)
-      if(stlvec[i] != cbvec[i] || stlvec[i] != cbpoolvec[i]  )
-         check=false;
-
-   if(!check)
-   {
-      cerr<<"\nstl - "; for(size_t i=0; i<cbvec.size(); i++) cout<<stlvec[i]<<" ";    cout<<endl;
-      cerr<<  "cbv - "; for(size_t i=0; i<cbvec.size(); i++) cout<<cbvec[i]<<" ";     cout<<endl;
-      cerr<<  "cbp - "; for(size_t i=0; i<cbvec.size(); i++) cout<<cbpoolvec[i]<<" "; cout<<endl;
-      throw UB_THROW( UbException("equalCheck - equalCheck failed") );
-   }
-}
-/*==========================================================*/
-template<typename T>
-void equalCheck(vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs)
-{
-   if(stlvecs.size() != cbvecs.size() || stlvecs.size() != cbpoolvecs.size() )
-   {
-      cerr<<"sizes:"<<endl;
-      cerr<<"stlvec... = "<<(int)stlvecs.size()<<endl;
-      cerr<<"cbvec.... = "<<(int)cbvecs.size()<<endl;
-      cerr<<"cbpoolvec = "<<(int)cbpoolvecs.size()<<endl;
-      throw UB_THROW( UbException("equalCheck - sizeCheck failed") );
-   }
-
-   for(size_t i=0; i<cbvecs.size(); i++)
-   {
-      //cout<<"equalCheck i="<<i<<"/"<<cbvecs.size()-1;
-      equalCheck(*stlvecs[i],*cbvecs[i],*cbpoolvecs[i]);
-      //cout<<" passed"<<endl;
-   }
-}
-/*==========================================================*/
-void accessCheck(int times,vector< StlVectorPtr >& stlvecs, vector< CbVectorPtr >& cbvecs, vector< CbVectorPtr >& cbpoolvecs)
-{
-   UbTimer timer;
-   timer.start();
-   for(size_t i=0; i<stlvecs.size(); i++)
-   {
-      vector<value_type>& vec = *stlvecs[i];
-      for(int m=0; m<times; m++)
-         for(vector<value_type>::size_type k=0; k<vec.size(); k++) vec[k] = k;
-   }
-   cout<<"stl-accessCheck       in "<<timer.stop()<<"s"<<endl;
-   timer.start();
-   for(size_t i=0; i<cbvecs.size(); i++)
-   {
-      CbVector<value_type>& vec = *cbvecs[i];
-      for(int m=0; m<times; m++)
-         for(vector<value_type>::size_type k=0; k<vec.size(); k++) vec[k] = k;
-   }
-   cout<<"cbStd-accessCheck     in "<<timer.stop()<<"s"<<endl;
-   timer.start();
-   for(size_t i=0; i<cbpoolvecs.size(); i++)
-   {
-      CbVector<value_type>& vec = *cbpoolvecs[i];
-      for(int m=0; m<times; m++)
-         for(vector<value_type>::size_type k=0; k<vec.size(); k++) vec[k] = k;
-   }
-   cout<<"cbPool-accessCheck    in "<<timer.stop()<<"s"<<endl;
-}
diff --git a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/main.cpp b/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/main.cpp
deleted file mode 100644
index b3fe50b252cacff1c0484a54a77ee4427316d748..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/container/examples/CbVectorPool/main.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-#include "./functions.h"
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char** argv)
-{
-   try
-   {
-       {
-         CbVectorPool<float>* floatPool = new CbVectorPool<float>(0);
-         CbVector<float> v1,v2,v3;
-         CbVector<float> v0(new CbVectorAllocatorPool<float>(104,floatPool) );
-         v0.resize(20);
-         v0[3] = 60000;
-         v0.resize(40);
-         v0[3] = 90000;
-         v1.setAllocator( new CbVectorAllocatorPool<float>(100,floatPool) );
-         v2.setAllocator( new CbVectorAllocatorPool<float>(101,floatPool) );
-         v3.setAllocator( new CbVectorAllocatorPool<float>(102,floatPool) );
-         v1.resize(20, 0.0);
-         v1.resize(30, 0.0);
-         v2.resize(0);
-         v2.resize(40, 0.0);
-         v3.resize(30, 0.0);
-         v3.resize(50, 0.0);
-
-         for(CbVector<float>::size_type i=v1.size()-1; i>=15; i--)
-            v1[i] = (CbVector<float>::value_type)i;
-         for(CbVector<float>::size_type i=v2.size()-1; i>=35; i--)
-            v2[i] = (CbVector<float>::value_type)i;
-         for(CbVector<float>::size_type i=v3.size()-1; i>=10; i--)
-            v3[i] = (CbVector<float>::value_type)i;
-         v1.size(); 
-         v2.size();
-         v3.size();
-         for(CbVector<float>::size_type i=0; i<v1.size(); i++)  v1[i];
-         v1.size();
-         v2.size();
-         v3.size();
-         for(CbVector<float>::size_type i=0; i<v2.size(); i++) v2[i];
-         v1.size();
-         v2.size();
-         v3.size();
-         for(CbVector<float>::size_type i=0; i<v3.size(); i++) v3[i];
-      }
-      
-     CbVectorPool<value_type>* vectorPool = new CbVectorPool<value_type>(0);
-
-     vector< StlVectorPtr > stlVecs;
-     vector< CbVectorPtr >  cbVecs;
-     vector< CbVectorPtr >  cbPoolVecs;
-
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(10,12,0,stlVecs,cbVecs,cbPoolVecs,vectorPool);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,0,2);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,3,3);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(8,5,stlVecs,cbVecs,cbPoolVecs,vectorPool);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,20,7);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,20,3);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,0,7);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,20,3);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(4,3,stlVecs,cbVecs,cbPoolVecs,vectorPool);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,20,3);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,0,7);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,20,3);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     //dealloc check
-     stlVecs.resize(5);
-     cbVecs.resize(5);
-     cbPoolVecs.resize(5);
-
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(4,3,stlVecs,cbVecs,cbPoolVecs,vectorPool);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(4,3,stlVecs,cbVecs,cbPoolVecs,vectorPool);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-
-     //operator= check
-     CbVector<value_type> testPool1(10, new CbVectorAllocatorPool<value_type>(vectorPool));
-     CbVector<value_type> testPool2(1 , new CbVectorAllocatorPool<value_type>(vectorPool));
-     CbVector<value_type> testPool3(8 , new CbVectorAllocatorPool<value_type>(vectorPool));
-     CbVector<value_type> testPool4(8 , new CbVectorAllocatorPool<value_type>(vectorPool));
-     CbVector<value_type> testStd1(10);
-
-     for(CbVector<value_type>::size_type i=0; i<testStd1.size(); i++ )
-        testStd1[i] = (value_type)i*10;
-
-     testPool1 = testStd1;
-     testPool4 = testStd1;
-     testPool3 = testPool4;
-     testPool2 = testPool3;
-
-     for(CbVector<value_type>::size_type i=0; i<testStd1.size(); i++ )
-        cout<<testStd1[i]<<" "; cout<<endl;
-     for(CbVector<value_type>::size_type i=0; i<testPool1.size(); i++ )
-        cout<<testPool1[i]<<" "; cout<<endl;
-     for(CbVector<value_type>::size_type i=0; i<testPool2.size(); i++ )
-        cout<<testPool2[i]<<" "; cout<<endl;
-     for(CbVector<value_type>::size_type i=0; i<testPool3.size(); i++ )
-        cout<<testPool3[i]<<" "; cout<<endl;
-     for(CbVector<value_type>::size_type i=0; i<testPool4.size(); i++ )
-        cout<<testPool4[i]<<" "; cout<<endl;
-    ///end
-
-
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     cout<<"// access test - start"<<endl;
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     cout<<"check"<<__LINE__<<endl;
-     createVecs(1000,1000,stlVecs,cbVecs,cbPoolVecs,vectorPool,true);
-
-     CbVectorPool<value_type>* pool2 = new CbVectorPool<value_type>(1);
-     vector< StlVectorPtr > stlVecs2;
-     vector< CbVectorPtr >  cbVecs2;
-     vector< CbVectorPtr >  cbPoolVecs2;
-     createVecs(1000,1000,stlVecs2,cbVecs2,cbPoolVecs2,pool2,true);
-
-     cout<<"access check\n";
-     //accessCheck(1000,stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     setValues(stlVecs,cbVecs,cbPoolVecs);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"check"<<__LINE__<<endl;
-     resize(stlVecs,cbVecs,cbPoolVecs,120,3,true);
-     equalCheck(stlVecs,cbVecs,cbPoolVecs);
-
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     cout<<"// access test - end"<<endl;
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     cout<<"// EXCEPTION TEST - start"<<endl;
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     delete vectorPool;
-     vectorPool = NULL;
-     try
-     {
-        resize(stlVecs,cbVecs,cbPoolVecs,20,3);
-     }
-     catch(UbException& e)
-     {
-        cout<<"if exception tells something about \"vectorPool==NULL\" -> test successfully passed:"<<endl;
-        cout<<e<<endl;
-     }
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-     cout<<"// EXCEPTION TEST - end"<<endl;
-     cout<<"//////////////////////////////////////////////////////////////////////////"<<endl;
-
-     cout<<"\n\n\nALL TESTS PASSED\n";
-   }
-   catch(UbException& e)
-   {
-      std::cerr<<e<<std::endl;
-   }
-   catch(const std::exception &e)
-   {
-      std::cerr << "Caught exception:\n";
-      std::cerr << "Type: " << typeid(e).name() << "\n";
-      std::cerr << "What: " << e.what() << "\n";
-   }
-   catch(...)
-   {
-      std::cerr<<" **            Verdammte Scheisse - mal wieder Mist gebaut!                **"<<endl;
-   }
-    return 0;
-}
-
-// #include <functional>
-// #include <iostream>
-// #include <vector>
-// #include <algorithm>
-// #include <typeinfo>
-//
-// struct bar
-// {
-//    bar()
-//       : data(0)
-//    {}
-//
-//    void foo(const std::size_t value) { std::cout << "data = " << value << " (old: " << data << ");" << std::endl; data = value; }
-//
-// private:
-//    std::size_t data;
-// };
-//
-// int main()
-// {
-//    std::vector<bar> data(10);
-//
-//    /* operator[] => Indexoperator */
-//    for (std::size_t i(0); i < data.size(); ++i)
-//       data[i].foo(2);
-//
-//    /* begin(), end() => Iterator */
-//    const std::vector<bar>::iterator it_end(data.end());
-//    for (std::vector<bar>::iterator it(data.begin()); it != it_end; ++it)
-//       it->foo(3);
-//
-//    /* for_each => Algorithm | Iterator */
-//    std::for_each(data.begin(), data.end(), std::bind2nd(std::mem_fun_ref(&bar::foo), 2));
-// }
diff --git a/source/VirtualFluidsCore/Basics/memory/CMakePackage.txt b/source/VirtualFluidsCore/Basics/memory/CMakePackage.txt
deleted file mode 100644
index 9354d3d0084922c7abd6f1b22823c5c47e0befb4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/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)
diff --git a/source/VirtualFluidsCore/Basics/memory/MbChessMemPool2D.h b/source/VirtualFluidsCore/Basics/memory/MbChessMemPool2D.h
deleted file mode 100644
index c665f7798f096fd9bc95d70e6d45e7b4f2716b30..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbChessMemPool2D.h
+++ /dev/null
@@ -1,519 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef MBCHESSMEMPOOL2D_H
-#define MBCHESSMEMPOOL2D_H
-
-#include <map>
-#include <vector>
-#include <iostream>
-#include <iomanip>
-#include <string>
-#include <sstream>
-#include <fstream>
-#include <cmath>
-#include <typeinfo>
-
-#include <basics/utilities/UbException.h>
-
-
-template <class TData, std::size_t cachSize>
-class MbChessMemPool2D;
-
-//////////////////////////////////////////////////////////////////////////
-//class MbChessMap2DKey
-//key zum Auffinden der ChessMem2DBlocks
-class MbChessMap2DKey
-{
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //Konstruktoren
-   MbChessMap2DKey(): mVectorPos(0),mFirstCriteria(0),mSecondCriteria(0)
-   {
-
-   }
-   /*==========================================================*/
-   MbChessMap2DKey(std::size_t vectorPos, std::size_t firstCriteria, std::size_t secondCriteria)
-      : mVectorPos(vectorPos), mFirstCriteria(firstCriteria), mSecondCriteria(secondCriteria)
-   {
-   }
-   /*==========================================================*/
-   MbChessMap2DKey& operator=(const MbChessMap2DKey& srcKey)
-   {
-      if(this == &srcKey ) return *this;
-
-      mVectorPos      = srcKey.mVectorPos;
-      mFirstCriteria  = srcKey.mFirstCriteria;
-      mSecondCriteria = srcKey.mSecondCriteria;
-
-      return *this;
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   //global ueberladene Operatoren
-   friend inline bool operator<(const MbChessMap2DKey& lhsKey,const MbChessMap2DKey& rhsKey)
-   {
-      if(lhsKey.mFirstCriteria  < rhsKey.mFirstCriteria ) return true;
-      if(lhsKey.mFirstCriteria  > rhsKey.mFirstCriteria ) return false;
-      if(lhsKey.mSecondCriteria < rhsKey.mSecondCriteria) return true;
-
-      return false;
-   }
-   /*==========================================================*/
-   friend inline bool operator==(const MbChessMap2DKey& lhsKey,const MbChessMap2DKey& rhsKey)
-   {
-      if(lhsKey.mVectorPos      != rhsKey.mVectorPos      ) return false;
-      if(lhsKey.mFirstCriteria  != rhsKey.mFirstCriteria  ) return false;
-      if(lhsKey.mSecondCriteria != rhsKey.mSecondCriteria ) return false;
-
-      return true;
-   }
-   //ueberladene Operatoren
-   friend inline bool operator!=(const MbChessMap2DKey& lhsKey,const MbChessMap2DKey& rhsKey)
-   {
-      return !(lhsKey==rhsKey);
-   }
-   //ueberladene Operatoren
-   /*==========================================================*/
-   friend inline std::ostream& operator << (std::ostream& os, const MbChessMap2DKey& key)
-   {
-      os<<"VectorPos,first-,second-,third Criteria) (";
-      os<<key.mVectorPos<<","<<key.mFirstCriteria<<","<<key.mSecondCriteria<<")";
-      return os;
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   //public Methoden
-   std::size_t getVectorPos() {return mVectorPos;}
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private Member
-   std::size_t mVectorPos;
-   std::size_t mFirstCriteria;
-   std::size_t mSecondCriteria;
-};
-
-
-
-template<class T,std::size_t cachSize>
-class MbChessMem2DBlock
-{
-   friend class MbChessMemPool2D<T,cachSize>;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //Konstruktoren
-   MbChessMem2DBlock()
-   {
-      mUsedElements = 0;
-      std::size_t arrayLength = mBlockWidth*mBlockWidth;
-      //mDataElements = new T[arrayLength];
-      mDataElements = operator new(arrayLength*sizeof(T));
-      mFlagVector   = new bool[arrayLength];
-      for(std::size_t i=0;i<arrayLength;i++) mFlagVector[i] = false;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //Destruktor
-   ~MbChessMem2DBlock()
-   {
-      //if(mDataElements) delete[] mDataElements;
-      if(mDataElements) operator delete(mDataElements);
-      if(mFlagVector)   delete[] mFlagVector;
-   }
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private Methoden
-   void* getReference(std::size_t chessX1, std::size_t chessX2)
-   {
-      std::size_t arrayIndex = chessX2*mBlockWidth + chessX1;
-      #ifdef _DEBUG
-         if(arrayIndex>=mBlockWidth*mBlockWidth) UB_THROW( UbException(UB_EXARGS,"index out of range") );
-      #endif
-
-      if(mFlagVector[arrayIndex]==true) UB_THROW( UbException(UB_EXARGS,"memory already allocated!") );
-
-      mUsedElements++;
-      mFlagVector[arrayIndex]=true;
-
-      return (void*)((T*)(mDataElements)+arrayIndex);//&(mDataElements[arrayIndex]);
-   }
-   /*==========================================================*/
-   std::size_t freeReference(void* p)
-   {
-      //std::size_t arrayIndex = static_cast<std::size_t>(static_cast<T*>(p) - mDataElements); //mDataElements = &mDataElements[0]
-      std::size_t arrayIndex = static_cast<std::size_t>(static_cast<T*>(p) - static_cast<T*>(mDataElements));
-
-      #ifdef _DEBUG
-         if(arrayIndex>=mBlockWidth*mBlockWidth) UB_THROW( UbException(UB_EXARGS,"index out of range") );
-      #endif
-
-      if(mFlagVector[arrayIndex]==false) UB_THROW( UbException(UB_EXARGS,"memory not allocated!") );
-
-      mFlagVector[arrayIndex]=false;
-
-      return --mUsedElements;
-   }
-   /*==========================================================*/
-   std::size_t getNofUsedElements()   { return mUsedElements; }
-   /*==========================================================*/
-   void addPointerToTElementsToVector(std::vector<T*>& tdataVector)
-   {
-      std::size_t arrayLength = mBlockWidth*mBlockWidth;
-      for(std::size_t arrayIndex=0;arrayIndex<arrayLength;arrayIndex++)
-      {
-         //if(mFlagVector[arrayIndex]) tdataVector.push_back(&mDataElements[arrayIndex]);
-         if(mFlagVector[arrayIndex]) tdataVector.push_back(static_cast<T*>(mDataElements)+arrayIndex);
-      }
-   }
-   /*==========================================================*/
-   template<typename Pred>
-   void addPointerToTElementsToVector(std::vector<T*>& tdataVector, Pred& pred)
-   {
-      std::size_t arrayLength = mBlockWidth*mBlockWidth;
-      T* tmp;
-      for(std::size_t arrayIndex=0;arrayIndex<arrayLength;arrayIndex++)
-      {
-         if(mFlagVector[arrayIndex])
-         {
-            //tmp = &mDataElements[arrayIndex];
-            tmp = (static_cast<T*>(mDataElements))+arrayIndex;
-            if( pred(*tmp) ) tdataVector.push_back(tmp);
-         }
-      }
-   }
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //static Member
-   static const std::size_t   mBlockWidth;
-
-   //////////////////////////////////////////////////////////////////////////
-   //private Member
-   std::size_t   mUsedElements;
-   //T*    mDataElements;
-   void* mDataElements;
-   bool* mFlagVector;
-
-};
-
-//////////////////////////////////////////////////////////////////////////
-//class MbChessMemPool2D
-//zum Verwalten von TData Elementen in einer Schabrett-artigen Struktur
-//die ChessMemBloecke haben hier eine Groesse von ~cachSize
-template <class TData, std::size_t cachSize>
-class MbChessMemPool2D
-{
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //protected static const Member
-   const static std::size_t mCacheSize;
-
-   //////////////////////////////////////////////////////////////////////////
-   //protected Member
-   static std::vector< std::map< MbChessMap2DKey , MbChessMem2DBlock< TData,cachSize >* > > mMapVector;
-   static std::map< void*, MbChessMap2DKey > mPointerKeyMap;
-
-   //////////////////////////////////////////////////////////////////////////
-   //protected Konstrukoren
-   MbChessMemPool2D() //protected, um max einmal vererbt werden zu koennen!!!
-   {              //zudem kann man so keine elmente von TreeBasedMemPool erstellen
-
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //Destruktor
-    ~MbChessMemPool2D()
-   {
-   }
-
-public:
-
-   //////////////////////////////////////////////////////////////////////////
-   //static public Methoden
-   static void* getReference(std::size_t level, std::size_t ix1, std::size_t ix2)
-   {
-      if(!MbChessMem2DBlock< TData,cachSize >::mBlockWidth)
-      {
-         std::stringstream ss;
-         ss<<"TreeBasedMemPool() - InitialisationError\n";
-         ss<<"\t size of StorageData ("<<typeid(TData).name()<<", "<<sizeof(TData)<<" byte)\n";
-         ss<<"\t exceeds user-specifyed cache-zize ("<<mCacheSize<<" byte)\n";
-         ss<<"\t cache-size has to be larger than data-size";
-         UB_THROW( UbException(ss.str()) );
-      }
-
-      if( mMapVector.size()<=level ) mMapVector.resize(level+1);
-
-      std::size_t chessX1 = ix1/(MbChessMem2DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t chessX2 = ix2/(MbChessMem2DBlock<TData,cachSize>::mBlockWidth);
-
-      MbChessMap2DKey mapKey(level,chessX1,chessX2);
-
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos = mMapVector[level].find(mapKey);
-
-      MbChessMem2DBlock<TData,cachSize>* memBlock = NULL;
-
-      if(pos==mMapVector[level].end())
-      {
-         memBlock = new MbChessMem2DBlock<TData,cachSize>;
-         (mMapVector[level])[mapKey] = memBlock;
-      }
-      else memBlock = pos->second;
-
-      std::size_t internalChessX1 = ix1%(MbChessMem2DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t internalChessX2 = ix2%(MbChessMem2DBlock<TData,cachSize>::mBlockWidth);
-
-      void* p = memBlock->getReference(internalChessX1,internalChessX2);
-
-      mPointerKeyMap[p]=mapKey;
-
-      return p;
-   }
-   /*==========================================================*/
-   static void freeReference(void *p)
-   {
-      typename std::map<void*,MbChessMap2DKey>::iterator posPointerKeyMap = mPointerKeyMap.find(p);
-
-      if(posPointerKeyMap==mPointerKeyMap.end()) UB_THROW( UbException(UB_EXARGS,"pointer not in map") );
-
-      MbChessMap2DKey mapKey = posPointerKeyMap->second;
-      mPointerKeyMap.erase(posPointerKeyMap);
-
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator posMemBlockMap;
-      posMemBlockMap = mMapVector[mapKey.getVectorPos()].find(mapKey);
-
-      if(posMemBlockMap == mMapVector[mapKey.getVectorPos()].end())
-         UB_THROW( UbException(UB_EXARGS,"mapKey not in ChessMem2DBlockMap") );
-
-      std::size_t leftElements = posMemBlockMap->second->freeReference(p);
-      if(!leftElements)
-      {
-         MbChessMem2DBlock<TData,cachSize>* tmp = posMemBlockMap->second;
-         mMapVector[mapKey.getVectorPos()].erase(posMemBlockMap);
-         delete tmp;
-      }
-   }
-   /*==========================================================*/
-   static void fillVectorWithPointerToTDataElements(std::size_t level,std::vector<TData*>& tdataVector)
-   {
-      tdataVector.clear();
-
-      if(level>=mMapVector.size()) return;
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos;
-      for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-      {
-         pos->second->addPointerToTElementsToVector(tdataVector);
-      }
-   }
-   /*==========================================================*/
-   static void fillVectorWithPointerToTDataElements(std::vector<TData*>& tdataVector)
-   {
-      tdataVector.clear();
-
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t vecIndex=0; vecIndex<mMapVector.size(); vecIndex++ )
-      {
-         for(pos=mMapVector[vecIndex].begin();pos!=mMapVector[vecIndex].end();++pos)
-         {
-            pos->second->addPointerToTElementsToVector(tdataVector);
-         }
-      }
-   }
-   /*==========================================================*/
-   template<typename Pred>
-   static void fillVectorWithPointerToTDataElements(std::size_t level,std::vector<TData*>& tdataVector, Pred pred)
-   {
-      tdataVector.clear();
-
-      if(level>=mMapVector.size()) return;
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos;
-      for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-      {
-         pos->second->addPointerToTElementsToVector(tdataVector,pred);
-      }
-   }
-   /*==========================================================*/
-   template<typename Pred>
-   static void fillVectorWithPointerToTDataElements(std::vector<TData*>& tdataVector, Pred pred)
-   {
-      tdataVector.clear();
-
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t vecIndex=0; vecIndex<mMapVector.size(); vecIndex++ )
-      {
-         for(pos=mMapVector[vecIndex].begin();pos!=mMapVector[vecIndex].end();++pos)
-         {
-            pos->second->addPointerToTElementsToVector(tdataVector,pred);
-         }
-      }
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfChessMemoryBlocks()
-   {
-      std::size_t nofElements = 0;
-      for(std::size_t i=0; i<mMapVector.size(); i++)
-      {
-         nofElements+=mMapVector[i].size();
-      }
-      return nofElements;
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfChessMemoryBlocks(std::size_t level)
-   {
-      if(level<mMapVector.size() )return mMapVector[level].size();
-      return 0;
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfStoredDataElements()
-   {
-      return mPointerKeyMap.size();
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfStoredDataElements(std::size_t level)
-   {
-      if(level<mMapVector.size() )
-      {
-         std::size_t nofElements = 0;
-         typename std::map< MbChessMap2DKey , MbChessMem2DBlock< TData,cachSize >* >::iterator pos;
-
-         for(pos=mMapVector[level].begin(); pos!=mMapVector[level].end(); ++pos)
-         {
-            nofElements += pos->second->getNofUsedElements();
-         }
-         return nofElements;
-      }
-      return 0;
-
-   }
-   /*==========================================================*/
-   static std::string toString()
-   {
-      long double capaticityPerBlock   = (std::size_t)pow((double)MbChessMem2DBlock<TData,cachSize>::mBlockWidth,2.0);
-      std::size_t storedElements       = MbChessMemPool2D<TData,cachSize>::getNumberOfStoredDataElements();
-      std::size_t initialisedMemBlocks = MbChessMemPool2D<TData,cachSize>::getNumberOfChessMemoryBlocks();
-
-      std::stringstream ss;
-      ss<<std::endl;
-      ss<<"****************** MbChessMemPool2D-Info (BEGIN) ******************"<<std::endl;
-      ss<<"type of Storage-Data.................. : "<<typeid(TData).name()<<std::endl;
-      ss<<"size of Storage-Data........... [bytes]: "<<sizeof(TData)<<std::endl;
-      ss<<"specified cache-size........... [bytes]: "<<mCacheSize<<std::endl;
-      ss<<"#elements per MbChessMem2DBlock [bytes]: "<<capaticityPerBlock<<std::endl;
-      ss<<"mem per MbChessMem2DBlock...... [bytes]: "<<capaticityPerBlock*sizeof(TData)<<std::endl;
-      ss<<"used cache-size[%]............. [bytes]: "<<capaticityPerBlock*sizeof(TData)/(double)mCacheSize*100<<std::endl;
-      ss<<"\n";
-      ss<<"#stored Elements  = "<<storedElements<<std::endl;
-      ss<<"#ChessMem2DBlocks = "<<initialisedMemBlocks<<std::endl;
-      ss<<std::endl;
-      ss<<"level | #ChessMem2DBlocks | #stored Elements | used capaticity [%] \n";
-      ss<<"----------------------------------------------------------------\n";
-      for(std::size_t level=0;level<mMapVector.size();level++)
-      {
-         std::size_t nofStoredElements = MbChessMemPool2D<TData,cachSize>::getNumberOfStoredDataElements(level);
-         std::size_t nofChessMem2DBlocks = MbChessMemPool2D<TData,cachSize>::getNumberOfChessMemoryBlocks(level);
-
-         ss<<std::left<<" "<<std::setw(5)<<level<<"| "
-            <<std::setw(16)<<nofChessMem2DBlocks<<"| "
-            <<std::setw(17)<<nofStoredElements<<"| ";
-         if(nofStoredElements)
-            ss<<setw(15)<<nofStoredElements/(double)(capaticityPerBlock*nofChessMem2DBlocks)*100<<std::endl;
-         else ss<<"-"<<std::endl;
-      }
-      ss<<std::endl;
-      ss<<"called memory..... [bytes]: "<<storedElements*sizeof(TData)<<std::endl;
-      ss<<"initialised memory [bytes]: "<<initialisedMemBlocks*capaticityPerBlock*sizeof(TData)<<std::endl;
-      double denominator = (double)(initialisedMemBlocks*capaticityPerBlock*sizeof(TData));
-      if(fabs(denominator)>1.E-13) ss<<"used.............. [%]    : "<<100.*storedElements*sizeof(TData)/denominator<<std::endl;
-      else                         ss<<"used.............. [%]    : 0.0"<<std::endl;
-      ss<<"****************** MbChessMemPool2D-Info (END)  *******************"<<std::endl;
-      return ss.str();
-   }
-   /*==========================================================*/
-   static void writeStatisticFiles(const std::string& filename)
-   {
-      //liefert Statistik ueber aufuellung der einzelnen bloecke (gesamt und pro level)
-      //x-Achse: 0... max moegliche Anzahl von moeglichen Elementen pro MemBlock
-      //y-Achse: Anzahl an Bloecken, die die Anzahl an Elementen beinhalten
-      std::ofstream spreadingFile(((std::string)(filename+"_spreading.txt")).c_str());
-      if(!spreadingFile) UB_THROW( UbException(UB_EXARGS,"couldn't open file") );
-
-      std::size_t initialisedMemBlocks       =   MbChessMemPool2D<TData,cachSize>::getNumberOfChessMemoryBlocks();
-      std::size_t maxNofDataElementsPerBlock =   MbChessMem2DBlock<TData,cachSize>::mBlockWidth
-                                               * MbChessMem2DBlock<TData,cachSize>::mBlockWidth
-                                               * MbChessMem2DBlock<TData,cachSize>::mBlockWidth;
-      std::vector<std::size_t> spreading;
-      spreading.resize(maxNofDataElementsPerBlock+1,0);
-      std::vector< std::vector<std::size_t> > spreadingPerLevel;
-      spreadingPerLevel.resize(mMapVector.size());
-
-      typename std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t level=0; level<mMapVector.size(); level++ )
-      {
-         spreadingPerLevel[level].resize(maxNofDataElementsPerBlock+1,0);
-         for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-         {
-            std::size_t number = pos->second->getNofUsedElements();
-            spreading[number]++;
-            spreadingPerLevel[level][number]++;
-         }
-      }
-      spreadingFile<<"#BlockUsage nofBlocks(all Level) ";
-      for(std::size_t level=0; level<mMapVector.size(); level++ )
-         spreadingFile<<"nofBlockLevel"<<level<<" ";
-      spreadingFile<<std::endl;
-
-      for(std::size_t i=0; i<spreading.size(); i++)
-      {
-         spreadingFile<<i<<" "<<spreading[i];
-         for(std::size_t level=0; level<mMapVector.size(); level++ )
-            spreadingFile<<" "<<spreadingPerLevel[level][i];
-         spreadingFile<<std::endl;
-      }
-      spreadingFile.flush();
-      spreadingFile.close();
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //ueberladene operatoren
-   void* operator new(size_t size, std::size_t level, std::size_t ix1, std::size_t ix2)
-   {
-      if(level<0) UB_THROW( UbException(UB_EXARGS,"level ist negativ!") );
-      void *p = getReference(level,ix1,ix2);
-      return p;
-   }
-   /*==========================================================*/
-   void operator delete(void* p, std::size_t level, std::size_t ix1, std::size_t ix2)
-   {
-      //ACHTUNG: wenn man hier ne Exception schmeisst, dann gibts einen BoeSEN compilerFehler!!!
-      //UB_THROW( UbException(UB_EXARGS,"Scheisse noch nicht gerafft, wie das geht!") );
-      std::cerr<<"MbChessMemPool2D::delete(void* p, std::size_t level, std::size_t ix1, std::size_t ix2) - Scheisse noch nicht gerafft, wie das geht!\n";
-   }
-
-   /*==========================================================*/
-   void operator delete(void* p)
-   {
-      freeReference(p);
-   }
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private statische Methoden
-};
-
-//statische Variablen initialisieren
-template <class TData, std::size_t cachSize>
-std::vector< std::map<MbChessMap2DKey,MbChessMem2DBlock<TData,cachSize>* > > MbChessMemPool2D<TData,cachSize>::mMapVector;
-
-template <class TData, std::size_t cachSize>
-std::map<void*,MbChessMap2DKey >  MbChessMemPool2D< TData, cachSize>::mPointerKeyMap;
-
-template <class TData, std::size_t cachSize>
-const std::size_t  MbChessMemPool2D<TData,cachSize>::mCacheSize=cachSize;
-
-template <class TData,std::size_t cachSize>
-const std::size_t  MbChessMem2DBlock<TData,cachSize>::mBlockWidth=static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(cachSize/sizeof(TData))),1./3.));
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/memory/MbChessMemPool3D.h b/source/VirtualFluidsCore/Basics/memory/MbChessMemPool3D.h
deleted file mode 100644
index 99fef93f6c79612e298e08dc3f504df7b0cd695d..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbChessMemPool3D.h
+++ /dev/null
@@ -1,537 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef MBCHESSMEMPOOL3D_H
-#define MBCHESSMEMPOOL3D_H
-
-#include <map>
-#include <vector>
-#include <iostream>
-#include <iomanip>
-#include <string>
-#include <sstream>
-#include <fstream>
-#include <cmath>
-
-#include <basics/utilities/UbException.h>
-
-template <class TData, std::size_t cachSize>
-class MbChessMemPool3D;
-
-//////////////////////////////////////////////////////////////////////////
-//class MbChessMap3DKey
-//key zum Auffinden der ChessMem3DBlocks
-class MbChessMap3DKey
-{
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //Konstruktoren
-   MbChessMap3DKey(): mVectorPos(0),mFirstCriteria(0),mSecondCriteria(0),mThirdCriteria(0)
-   {
-   }
-   /*==========================================================*/
-   MbChessMap3DKey(std::size_t vectorPos,std::size_t firstCriteria,std::size_t secondCriteria,std::size_t thirdCriteria)
-      : mVectorPos(vectorPos), mFirstCriteria(firstCriteria), mSecondCriteria(secondCriteria), mThirdCriteria(thirdCriteria)
-   {
-   }
-   /*==========================================================*/
-   MbChessMap3DKey& operator=(const MbChessMap3DKey& srcKey)
-   {
-      if(this == &srcKey ) return *this;
-
-      mVectorPos      = srcKey.mVectorPos;
-      mFirstCriteria  = srcKey.mFirstCriteria;
-      mSecondCriteria = srcKey.mSecondCriteria;
-      mThirdCriteria  = srcKey.mThirdCriteria;
-
-      return *this;
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   //global ueberladene Operatoren
-   friend inline bool operator<(const MbChessMap3DKey& lhsKey,const MbChessMap3DKey& rhsKey)
-   {
-      if(lhsKey.mFirstCriteria  < rhsKey.mFirstCriteria ) return true;
-      if(lhsKey.mFirstCriteria  > rhsKey.mFirstCriteria ) return false;
-      if(lhsKey.mSecondCriteria < rhsKey.mSecondCriteria) return true;
-      if(lhsKey.mSecondCriteria > rhsKey.mSecondCriteria) return false;
-      if(lhsKey.mThirdCriteria  < rhsKey.mThirdCriteria ) return true;
-
-      return false;
-   }
-   /*==========================================================*/
-   friend inline bool operator==(const MbChessMap3DKey& lhsKey,const MbChessMap3DKey& rhsKey)
-   {
-      if(lhsKey.mVectorPos      != rhsKey.mVectorPos      ) return false;
-      if(lhsKey.mFirstCriteria  != rhsKey.mFirstCriteria  ) return false;
-      if(lhsKey.mSecondCriteria != rhsKey.mSecondCriteria ) return false;
-      if(lhsKey.mThirdCriteria  != rhsKey.mThirdCriteria  ) return false;
-
-      return true;
-   }
-   //ueberladene Operatoren
-   friend inline bool operator!=(const MbChessMap3DKey& lhsKey,const MbChessMap3DKey& rhsKey)
-   {
-      return !(lhsKey==rhsKey);
-   }
-   //ueberladene Operatoren
-   /*==========================================================*/
-   friend inline std::ostream& operator << (std::ostream& os, const MbChessMap3DKey& key)
-   {
-      os<<"VectorPos,first-,second-,third Criteria) (";
-      os<<key.mVectorPos<<","<<key.mFirstCriteria<<","<<key.mSecondCriteria<<","<<key.mThirdCriteria<<")";
-      return os;
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   //public Methoden
-   std::size_t getVectorPos() {return mVectorPos;}
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private Member
-   std::size_t mVectorPos;
-   std::size_t mFirstCriteria;
-   std::size_t mSecondCriteria;
-   std::size_t mThirdCriteria;
-};
-
-
-
-template<class T,std::size_t cachSize>
-class MbChessMem3DBlock
-{
-   friend class MbChessMemPool3D<T,cachSize>;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //Konstruktoren
-   MbChessMem3DBlock()
-   {
-      mUsedElements = 0;
-      std::size_t arrayLength = mBlockWidth*mBlockWidth*mBlockWidth;
-      //mDataElements = new T[arrayLength];
-      mDataElements = operator new(arrayLength*sizeof(T));
-      if(!mDataElements) UB_THROW( UbException(UB_EXARGS,"out of memeory!") );
-      mFlagVector   = new bool[arrayLength];
-      if(!mFlagVector) UB_THROW( UbException(UB_EXARGS,"out of memeory!") );
-      for(std::size_t i=0;i<arrayLength;i++) mFlagVector[i] = false;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //Destruktor
-   ~MbChessMem3DBlock()
-   {
-      //if(mDataElements) delete[] mDataElements;
-      if(mDataElements) operator delete(mDataElements);
-      if(mFlagVector)   delete[] mFlagVector;
-   }
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private Methoden
-   void* getReference(std::size_t chessX1, std::size_t chessX2, std::size_t chessX3)
-   {
-      //std::size_t arrayIndex = (chessX1*mBlockWidth+chessX2)*mBlockWidth + chessX3;
-      std::size_t arrayIndex = (chessX3*mBlockWidth+chessX2)*mBlockWidth + chessX1;
-      #ifdef _DEBUG
-         if(arrayIndex>=mBlockWidth*mBlockWidth*mBlockWidth) UB_THROW( UbException(UB_EXARGS,"index out of range") );
-      #endif
-
-      if(mFlagVector[arrayIndex]==true) UB_THROW( UbException(UB_EXARGS,"memory already allocated!") );
-
-      mUsedElements++;
-      mFlagVector[arrayIndex]=true;
-
-      return (void*)((T*)(mDataElements)+arrayIndex);//&(mDataElements[arrayIndex]);
-   }
-   /*==========================================================*/
-   std::size_t freeReference(void* p)
-   {
-      //std::size_t arrayIndex = static_cast<std::size_t>(static_cast<T*>(p) - mDataElements); //mDataElements = &mDataElements[0]
-      std::size_t arrayIndex = static_cast<std::size_t>(static_cast<T*>(p) - static_cast<T*>(mDataElements));
-
-      #ifdef _DEBUG
-        if(arrayIndex>=mBlockWidth*mBlockWidth*mBlockWidth) UB_THROW( UbException(UB_EXARGS,"index out of range") );
-      #endif
-
-      if(mFlagVector[arrayIndex]==false) UB_THROW( UbException(UB_EXARGS,"memory not allocated!") );
-
-      mFlagVector[arrayIndex]=false;
-
-      return --mUsedElements;
-   }
-   /*==========================================================*/
-   std::size_t  getNofUsedElements()   { return mUsedElements; }
-   /*==========================================================*/
-   void addPointerToTElementsToVector(std::vector<T*>& tdataVector)
-   {
-      std::size_t arrayLength = mBlockWidth*mBlockWidth*mBlockWidth;
-      for(std::size_t arrayIndex=0; arrayIndex<arrayLength; arrayIndex++)
-      {
-         //if(mFlagVector[arrayIndex]) tdataVector.push_back(&mDataElements[arrayIndex]);
-         if(mFlagVector[arrayIndex]) tdataVector.push_back(static_cast<T*>(mDataElements)+arrayIndex);
-      }
-   }
-   /*==========================================================*/
-   template<typename Pred>
-   void addPointerToTElementsToVector(std::vector<T*>& tdataVector,Pred& pred )
-   {
-      std::size_t arrayLength = mBlockWidth*mBlockWidth*mBlockWidth;
-      T* tmp;
-      for(std::size_t arrayIndex=0;arrayIndex<arrayLength;arrayIndex++)
-      {
-         if(mFlagVector[arrayIndex])
-         {
-            //tmp = &mDataElements[arrayIndex];
-            tmp = static_cast<T*>(mDataElements)+arrayIndex;
-            if( pred(*tmp) ) tdataVector.push_back(tmp);
-         }
-      }
-   }
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //static Member
-   static const std::size_t  mBlockWidth;
-
-   //////////////////////////////////////////////////////////////////////////
-   //private Member
-   std::size_t mUsedElements;
-   //T*    mDataElements;
-   void* mDataElements;
-   bool* mFlagVector;
-
-};
-
-//////////////////////////////////////////////////////////////////////////
-//class MbChessMemPool3D
-//zum Verwalten von TData Elementen in einer Schabrett-artigen Struktur
-//die ChessMemBloecke haben hier eine Groesse von ~cachSize
-template <class TData, std::size_t cachSize>
-class MbChessMemPool3D
-{
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //protected static const Member
-   const static std::size_t mCacheSize;
-
-   //////////////////////////////////////////////////////////////////////////
-   //protected Member
-   static std::vector< std::map< MbChessMap3DKey , MbChessMem3DBlock< TData,cachSize >* > > mMapVector;
-   static std::map< void*, MbChessMap3DKey > mPointerKeyMap;
-
-   //////////////////////////////////////////////////////////////////////////
-   //protected Konstrukoren
-   MbChessMemPool3D() //private, da NUR static erlaubt!!!
-   {
-
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //Destruktor
-   ~MbChessMemPool3D()
-   {
-   }
-
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //static public Methoden
-   static void* getReference(std::size_t level, std::size_t ix1, std::size_t ix2, std::size_t ix3)
-   {
-      if(!MbChessMem3DBlock< TData,cachSize >::mBlockWidth)
-      {
-         std::stringstream ss;
-         ss<<"TreeBasedMemPool() - InitialisationError\n";
-         ss<<"\t size of StorageData ("<<typeid(TData).name()<<", "<<sizeof(TData)<<" byte)\n";
-         ss<<"\t exceeds user-specifyed cache-zize ("<<mCacheSize<<" byte)\n";
-         ss<<"\t cache-size has to be larger than data-size";
-         UB_THROW( UbException(UB_EXARGS,ss.str()) );
-      }
-
-      if( mMapVector.size()<=level ) mMapVector.resize(level+1);
-
-      std::size_t chessX1 = ix1/(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t chessX2 = ix2/(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t chessX3 = ix3/(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-
-      MbChessMap3DKey mapKey(level,chessX1,chessX2,chessX3);
-
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos = mMapVector[level].find(mapKey);
-
-      MbChessMem3DBlock<TData,cachSize>* memBlock = NULL;
-
-      if(pos==mMapVector[level].end())
-      {
-         memBlock = new MbChessMem3DBlock<TData,cachSize>;
-         (mMapVector[level])[mapKey] = memBlock;
-      }
-      else memBlock = pos->second;
-
-      std::size_t internalChessX1 = ix1%(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t internalChessX2 = ix2%(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-      std::size_t internalChessX3 = ix3%(MbChessMem3DBlock<TData,cachSize>::mBlockWidth);
-
-      void* p = memBlock->getReference(internalChessX1,internalChessX2,internalChessX3);
-
-      mPointerKeyMap[p]=mapKey;
-
-      return p;
-   }
-   static void freeReference(void *p)
-   {
-      typename std::map<void*,MbChessMap3DKey>::iterator posPointerKeyMap = mPointerKeyMap.find(p);
-
-      if(posPointerKeyMap==mPointerKeyMap.end()) UB_THROW( UbException(UB_EXARGS,"pointer not in map") );
-
-      MbChessMap3DKey mapKey = posPointerKeyMap->second;
-      mPointerKeyMap.erase(posPointerKeyMap);
-
-
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator posMemBlockMap;
-      posMemBlockMap = mMapVector[mapKey.getVectorPos()].find(mapKey);
-
-
-      if(posMemBlockMap == mMapVector[mapKey.getVectorPos()].end())
-         UB_THROW( UbException(UB_EXARGS,"mapKey not in ChessMem3DBlockMap") );
-
-      std::size_t leftElements = posMemBlockMap->second->freeReference(p);
-      if(!leftElements)
-      {
-         MbChessMem3DBlock<TData,cachSize>* tmp = posMemBlockMap->second;
-         mMapVector[mapKey.getVectorPos()].erase(posMemBlockMap);
-         try{ delete tmp; }
-         catch(...){UB_THROW( UbException(UB_EXARGS,"could not delete MbChessMem3DBlock") );}
-      }
-   }
-   /*==========================================================*/
-   static void fillVectorWithPointerToTDataElements(std::size_t level,std::vector<TData*>& tdataVector)
-   {
-      tdataVector.clear();
-
-      if(level>=mMapVector.size()) return;
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos;
-      for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-      {
-         pos->second->addPointerToTElementsToVector(tdataVector);
-      }
-   }
-   /*==========================================================*/
-   static void fillVectorWithPointerToTDataElements(std::vector<TData*>& tdataVector)
-   {
-      tdataVector.clear();
-
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t vecIndex=0; vecIndex<mMapVector.size(); vecIndex++ )
-      {
-         for(pos=mMapVector[vecIndex].begin();pos!=mMapVector[vecIndex].end();++pos)
-         {
-            pos->second->addPointerToTElementsToVector(tdataVector);
-         }
-      }
-   }
-   /*==========================================================*/
-   template<class Pred>
-   static void fillVectorWithPointerToTDataElements(std::size_t level,std::vector<TData*>& tdataVector, Pred pred)
-   {
-      tdataVector.clear();
-
-      if(level>=mMapVector.size()) return;
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos;
-      for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-      {
-         pos->second->addPointerToTElementsToVector(tdataVector,pred);
-      }
-   }
-   /*==========================================================*/
-   template<typename Pred>
-   static void fillVectorWithPointerToTDataElements(std::vector<TData*>& tdataVector, Pred pred)
-   {
-      tdataVector.clear();
-
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t vecIndex=0; vecIndex<mMapVector.size(); vecIndex++ )
-      {
-         for(pos=mMapVector[vecIndex].begin();pos!=mMapVector[vecIndex].end();++pos)
-         {
-            pos->second->addPointerToTElementsToVector(tdataVector,pred);
-         }
-      }
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfChessMemoryBlocks()
-   {
-      std::size_t nofElements = 0;
-      for(std::size_t i=0;i<mMapVector.size();i++)
-      {
-         nofElements+=mMapVector[i].size();
-      }
-      return nofElements;
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfChessMemoryBlocks(std::size_t level)
-   {
-      if(level<mMapVector.size() ) return mMapVector[level].size();
-      return 0;
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfStoredDataElements()
-   {
-      return mPointerKeyMap.size();
-   }
-   /*==========================================================*/
-   static std::size_t getNumberOfStoredDataElements(std::size_t level)
-   {
-      if(level<mMapVector.size() )
-      {
-         std::size_t nofElements = 0;
-         typename std::map< MbChessMap3DKey , MbChessMem3DBlock< TData,cachSize >* >::iterator pos;
-
-         for(pos=mMapVector[level].begin(); pos!=mMapVector[level].end(); ++pos)
-         {
-            nofElements+= pos->second->getNofUsedElements();
-         }
-         return nofElements;
-      }
-      return 0;
-   }
-   /*==========================================================*/
-   static std::string toString()
-   {
-      long double capaticityPerBlock   = pow((double)MbChessMem3DBlock<TData,cachSize>::mBlockWidth,3.0);
-      std::size_t storedElements       = MbChessMemPool3D<TData,cachSize>::getNumberOfStoredDataElements();
-      std::size_t initialisedMemBlocks = MbChessMemPool3D<TData,cachSize>::getNumberOfChessMemoryBlocks();
-
-      std::stringstream ss;
-      ss<<std::endl;
-      ss<<"****************** MbChessMemPool3D-Info (BEGIN) ******************"<<std::endl;
-      ss<<"type of Storage-Data.................. : "<<typeid(TData).name()<<std::endl;
-      ss<<"size of Storage-Data........... [bytes]: "<<sizeof(TData)<<std::endl;
-      ss<<"specified cache-size........... [bytes]: "<<mCacheSize<<std::endl;
-      ss<<"#elements per MbChessMem3DBlock [bytes]: "<<capaticityPerBlock<<std::endl;
-      ss<<"mem per MbChessMem3DBlock...... [bytes]: "<<capaticityPerBlock*sizeof(TData)<<std::endl;
-      ss<<"used cache-size[%]............. [bytes]: "<<capaticityPerBlock*sizeof(TData)/(double)mCacheSize*100<<std::endl;
-      ss<<"\n";
-      ss<<"#stored Elements   = "<<storedElements<<std::endl;
-      ss<<"#ChessMem3DBlocks  = "<<initialisedMemBlocks<<std::endl;
-      ss<<std::endl;
-      ss<<"level | #ChessMem3DBlocks | #stored Elements | used capaticity [%] \n";
-      ss<<"----------------------------------------------------------------\n";
-      for(std::size_t level=0;level<mMapVector.size();level++)
-      {
-         std::size_t nofStoredElements   = MbChessMemPool3D<TData,cachSize>::getNumberOfStoredDataElements(level);
-         std::size_t nofChessMem3DBlocks = MbChessMemPool3D<TData,cachSize>::getNumberOfChessMemoryBlocks(level);
-
-         ss<<std::left<<" "<<std::setw(5)<<level<<"| "
-            <<std::setw(16)<<nofChessMem3DBlocks<<"| "
-            <<std::setw(17)<<nofStoredElements<<"| ";
-         if(nofStoredElements)
-            ss<<std::setw(15)<<nofStoredElements/(double)(capaticityPerBlock*nofChessMem3DBlocks)*100<<std::endl;
-         else ss<<"-"<<std::endl;
-      }
-      ss<<std::endl;
-      ss<<"called memory..... [bytes]: "<<storedElements*sizeof(TData)<<std::endl;
-      ss<<"initialised memory [bytes]: "<<initialisedMemBlocks*capaticityPerBlock*sizeof(TData)<<std::endl;
-      double denominator = (double)(initialisedMemBlocks*capaticityPerBlock*sizeof(TData));
-      if(fabs(denominator)>1.E-13) ss<<"used.............. [%]    : "<<100.*storedElements*sizeof(TData)/denominator<<std::endl;
-      else                         ss<<"used.............. [%]    : 0.0"<<std::endl;
-      ss<<"****************** MbChessMemPool3D-Info (END)  *******************"<<std::endl;
-      return ss.str();
-   }
-   /*==========================================================*/
-   static void writeStatisticFiles(const std::string& filename)
-   {
-      //liefert Statistik ueber aufuellung der einzelnen bloecke (gesamt und pro level)
-      //x-Achse: 0... max moegliche Anzahl von moeglichen Elementen pro MemBlock
-      //y-Achse: Anzahl an Bloecken, die die Anzahl an Elementen beinhalten
-      std::ofstream spreadingFile(((std::string)(filename+"_spreading.txt")).c_str());
-      if(!spreadingFile) UB_THROW( UbException(UB_EXARGS,"couldn't open file") );
-
-      //std::size_t initialisedMemBlocks       =  MbChessMemPool3D<TData,cachSize>::getNumberOfChessMemoryBlocks();
-      std::size_t maxNofDataElementsPerBlock =  MbChessMem3DBlock<TData,cachSize>::mBlockWidth
-                                               *MbChessMem3DBlock<TData,cachSize>::mBlockWidth
-                                               *MbChessMem3DBlock<TData,cachSize>::mBlockWidth;
-      std::vector<std::size_t> spreading;
-      spreading.resize(maxNofDataElementsPerBlock+1,0);
-      std::vector< std::vector<std::size_t> > spreadingPerLevel;
-      spreadingPerLevel.resize(mMapVector.size());
-
-      typename std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* >::iterator pos;
-
-      for(std::size_t level=0; level<mMapVector.size(); level++ )
-      {
-         spreadingPerLevel[level].resize(maxNofDataElementsPerBlock+1,0);
-         for(pos=mMapVector[level].begin();pos!=mMapVector[level].end();++pos)
-         {
-            std::size_t number = pos->second->getNofUsedElements();
-            spreading[number]++;
-            spreadingPerLevel[level][number]++;
-         }
-      }
-      spreadingFile<<"#BlockUsage nofBlocks(all Level) ";
-      for(std::size_t level=0; level<mMapVector.size(); level++ )
-         spreadingFile<<"nofBlockLevel"<<level<<" ";
-      spreadingFile<<std::endl;
-
-      for(std::size_t i=0;i<spreading.size();i++)
-      {
-         spreadingFile<<i<<" "<<spreading[i];
-         for(std::size_t level=0; level<mMapVector.size(); level++ )
-            spreadingFile<<" "<<spreadingPerLevel[level][i];
-         spreadingFile<<std::endl;
-      }
-      spreadingFile.flush();
-      spreadingFile.close();
-   }
-
-   ////////////////////////////////////////////////////////////////////////////
-   ////ueberladene operatoren
-   //void* operator new(size_t size, std::size_t level, std::size_t ix1, std::size_t ix2, std::size_t ix3)
-   //{
-   //   if(level<0) UB_THROW( UbException(UB_EXARGS,"level ist negativ!") );
-   //   void *p = getReference(level,ix1,ix2,ix3);
-   //   return p;
-   //}
-   ///*==========================================================*/
-   //void operator delete(void* p, std::size_t level, std::size_t ix1, std::size_t ix2, std::size_t ix3)
-   //{
-   //   //ACHTUNG: wenn man hier ne Exception schmeisst, dann gibts einen BoeSEN compilerFehler!!!
-   //   //UB_THROW( UbException(__FILE__, __LINE__, "MbChessMemPool3D::delete - Scheisse noch nicht gerafft, wie das geht!") );
-   //   cout<<"MbChessMemPool3D::delete(void* p, std::size_t level, std::size_t ix1, std::size_t ix2, std::size_t ix3) - Scheisse noch nicht gerafft, wie das geht!\n";
-   //}
-
-   ///*==========================================================*/
-   //void operator delete(void* p)
-   //{
-   //   freeReference(p);
-   //}
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   //private statische Methoden
-};
-
-
-//statische Variablen initialisieren
-template <class TData, std::size_t cachSize>
-std::vector< std::map<MbChessMap3DKey,MbChessMem3DBlock<TData,cachSize>* > > MbChessMemPool3D<TData,cachSize>::mMapVector;
-
-template <class TData, std::size_t cachSize>
-std::map<void*,MbChessMap3DKey >  MbChessMemPool3D< TData, cachSize>::mPointerKeyMap;
-
-template <class TData, std::size_t cachSize>
-const std::size_t  MbChessMemPool3D<TData,cachSize>::mCacheSize=cachSize;
-
-//template <class TData, std::size_t cachSize>
-//const std::size_t  MbChessMemPool3D<TData,cachSize>::mNofElementsWidthMemBlock=static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(cachSize/sizeof(TData))),1./3.));
-
-//template <class TData, std::size_t cachSize>
-//const std::size_t  MbChessMemPool3D<TData,cachSize>::mNofElementsInMemBlock=static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(cachSize/sizeof(TData))),1./3.))),3.0));
-
-template <class TData,std::size_t cachSize>
-const std::size_t  MbChessMem3DBlock<TData,cachSize>::mBlockWidth=static_cast<std::size_t>(std::pow(static_cast<double>(static_cast<std::size_t>(cachSize/sizeof(TData))),1./3.));
-
-//template <class TData,std::size_t cachSize>
-//const std::size_t  MbChessMem3DBlock<TData,cachSize>::mMaxElements=static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(pow(static_cast<double>(static_cast<std::size_t>(cachSize/sizeof(TData))),1.0/3.0))),3.0))),3.0));
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/memory/MbMemPool.h b/source/VirtualFluidsCore/Basics/memory/MbMemPool.h
deleted file mode 100644
index 3a835596a9c717e4e31bf3f6570b7615759a754b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbMemPool.h
+++ /dev/null
@@ -1,87 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef MBMEMPOOL_H
-#define MBMEMPOOL_H
-
-#include <queue>
-#include <list>
-
-
-template <typename TData, int asize>
-class MbMemPool
-{
-
-protected:
-   MbMemPool(){}
-   // Alle 3 Attribute sind Singleton-Objekte !
-   // Allokiere Blocke der Groesse m_asize
-   static int m_asize;       
-   // Halte alle freien Pointer (jedes einzelne Element)  in eine FIFO Liste
-   static std::queue<void*> m_queue;
-   // Pointer auf Bloecke zum Loeschen !
-   static std::list<TData*> m_list;
-
-public:
-
-   
-   ~MbMemPool(){}
-
-   // Daten-Bloecke Loeschen, damit wird der gesamte Speicher freigegeben,
-   // erst aufrufen, wenn die objekte nicht mehr gebraucht werden!
-   static void	deallocatePool();
-
-   void* operator new(std::size_t size)
-   {
-      void*  pNew;
-      TData* feld;	
-      int i;
-
-      //i=m_queue.size();
-      //pNew = m_queue.front();
-      if(m_queue.size()==0) 
-      {
-         //Wenn kein freier Speicher mehr vorhanden, Block anlegen
-         feld = new TData[m_asize];
-         m_list.push_back(feld);
-         for(i=0 ; i<m_asize ; i++)
-         {
-            pNew = (void*) &(feld[i]);
-            m_queue.push( pNew );
-         }
-      }
-      pNew = m_queue.front();
-      m_queue.pop();
-      return pNew;
-
-   }
-
-   void  operator delete(void* p)
-   {
-      m_queue.push(p);
-   }
-};
-
-
-template <typename TData, int asize> 
-std::queue<void*>  MbMemPool<TData,asize>::m_queue;
-
-template <typename TData, int asize> 
-std::list<TData*>  MbMemPool<TData,asize>::m_list;
-
-template <typename TData, int asize> 
-int  MbMemPool<TData,asize>::m_asize=asize;
-
-template <typename TData, int asize> 
-void MbMemPool<TData,asize>::deallocatePool()
-{	
-   for(typename std::list<TData*>::iterator pos=m_list.begin() ; pos!=m_list.end(); ++pos)
-   {
-      delete[] pos;
-   }
-}
-
-#endif //MBMEMPOOL_H
diff --git a/source/VirtualFluidsCore/Basics/memory/MbSharedPointerDefines.h b/source/VirtualFluidsCore/Basics/memory/MbSharedPointerDefines.h
deleted file mode 100644
index 25c9311e7e5ec10585c96c3cd70792cb7b330ef3..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbSharedPointerDefines.h
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef MBSHAREDPOINTERDEFINES_H
-#define MBSHAREDPOINTERDEFINES_H
-
-
-// Boost includes
-#include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#define VFSharedFromThis boost::enable_shared_from_this
-#define VFSharedPtr boost::shared_ptr
-#define VFWeakPtr   boost::weak_ptr
-#define VFDynamicPtrCast boost::dynamic_pointer_cast
-
-template<typename T>
-class VFPtrDeleter
-{
-public:
-   void operator()(T* p) { delete p; }
-};
-
-
-
-// std includes
-#include <vector>
-
-//#ifdef WIN32
-//#  include <memory>
-//#else
-//#  include<tr1/memory>
-//#endif
-
-//#  define DCSharedFromThis std::tr1::enable_shared_from_this
-//#  define DCSharedPtr std::tr1::shared_ptr
-//#  define DCWeakPtr   std::tr1::weak_ptr
-//#  define DCDynamicPtrCast std::tr1::dynamic_pointer_cast
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/memory/MbSmartPtr.h b/source/VirtualFluidsCore/Basics/memory/MbSmartPtr.h
deleted file mode 100644
index 6f2bf7631745b9940817d41014205f0a5b6e1077..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbSmartPtr.h
+++ /dev/null
@@ -1,147 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef MBSMARTPTR_H
-#define MBSMARTPTR_H
-
-#include <basics/memory/MbSmartPtrBase.h>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-//=====================================================
-// Globale Funktion, um das Loeschen des referenzierten
-// Objektes flexibler zu gestalten.
-//
-template<class ObjType>
-void deleteRefPtr(ObjType* ptr)
-{
-   delete ptr;
-}
-
-//======================================================
-// Die Reference-Pointer Klasse:
-//
-// Beim Referenzieren eines Objektes ueber einen SmartPointer wird ein Zaehler fuer die referezierte Objekt-
-// adresse inkrementiert. Wird der Pointer wieder einem anderen Objekt zugewiesen, so wird der Zaehler fuer das
-// urspruenglich referenzierte Objekt wieder dekremtiert, ebenfalls beim Destruktor des Reference-Pointers.
-// Tatsaechlich geloescht wird das referenzierte Objekt erst, wenn der zugehoerige Zaehler auf 0 ist. Dies geschieht
-// ueber die globale Template-Funktion deleteRefPtr(), die bei Bedarf ueberschrieben werden kann.
-// Der Reference-Pointer verfuegt also sozusagen ueber eine automatische Garbage Collection
-
-template<class ObjType>
-class MbSmartPtr  : public MbSmartPtrBase
-{
-public:
-   // Konstruktoren //bei explicit geht der implizite cast nicht mehr, aber um keinen stress zu verursachen
-   /*explicit*/ MbSmartPtr<ObjType>(const ObjType* pPtr=NULL)
-      : MbSmartPtrBase(), mpPtr(NULL)
-	{
-		init(pPtr);
-	}
-	template<class ParamType>
-	MbSmartPtr<ObjType>(const MbSmartPtr<ParamType>& ptr)
-      : MbSmartPtrBase(), mpPtr(NULL)
-	{
-		init(ptr.get());
-	}
-	// Destruktor
-   ~MbSmartPtr<ObjType>()
-	{
-      init(NULL);
-	}
-   //---------------------------------------------------
-   // Kopierkonstruktor
-   MbSmartPtr<ObjType>(const MbSmartPtr<ObjType>& ptr)
-     : MbSmartPtrBase(), mpPtr(NULL)
-	{
-		init(ptr.get());
-	}
-   //---------------------------------------------------
-   // Zuweisungsoperatoren
-	template<class ParamType>
-	const MbSmartPtr<ObjType>& operator =(const MbSmartPtr<ParamType>& ptr)
-	{
-   	init(ptr.get());
-		return *this;
-	}
-	const MbSmartPtr<ObjType>& operator =(const MbSmartPtr<ObjType>& ptr)
-	{
-		init(ptr.get());
-		return *this;
-	}
-
-	const MbSmartPtr<ObjType>& operator =(const ObjType *pPtr)
-	{
-		init(pPtr);
-		return *this;
-	}
-   //---------------------------------------------------
-   // Dereferenzierung-Operatoren
-	ObjType& operator *() const  { return *mpPtr; }
-   ObjType* operator ->() const { return mpPtr;  }
-   bool operator !() const      { return !mpPtr; }
-   operator ObjType *() const   { return mpPtr;  }
-   //---------------------------------------------------
-	// Methoden
-	ObjType* get() const
-   {
-      return mpPtr;
-   }
-   //---------------------------------------------------
-   int ref_count() const
-   {
-      return MbSmartPtrBase::ref_count(mpPtr);
-   }
-   //---------------------------------------------------
-   bool release() const
-   {
-      return MbSmartPtrBase::removeFromGC(mpPtr);
-   }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      if(ArchiveTools::isWriting(ar))
-      {
-         ar & mpPtr;
-      }
-      else
-      {
-         ObjType* ptr;
-         ar & ptr;
-
-         mpPtr=NULL;
-         init(ptr);
-      }
-   }
-#endif //CAB_RCF
-
-private:
-   void init(const ObjType* pPtr)
-	{
-      // Nur was tun, wenn wirklich noetig
-		if(pPtr==mpPtr) return;
-
-      // Aktuell referenziertes Objekt freigeben, dabei ueberpruefen, ob letztes Release
-		if(mpPtr && releaseRef(mpPtr))
-		{
-         // referenziertes Objekt loeschen
-			deleteRefPtr(mpPtr);
-		}
-
-      // Wenn pPtr ein neues Objekt ist, Zugriffszaehler auf neues Objekt erhoehen
-		mpPtr=const_cast<ObjType*>(pPtr);
-	   if(mpPtr) addRef(mpPtr);
-	}
-
-private:
-   ObjType* mpPtr;
-};
-
-#endif //MBSMARTPTR_H
diff --git a/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.cpp b/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.cpp
deleted file mode 100644
index d0e07fa9503fe01f94128543d84927804505b97a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <basics/memory/MbSmartPtrBase.h>
-
-using namespace std;
-
-bool MbSmartPtrBase::addRef(void* ptr)
-{
-   MbSmartPtrBaseMap::getInstance()->getMap()[ptr]++;
-	return true;
-}
-//-------------------------------------------------
-bool MbSmartPtrBase::releaseRef(void* ptr)
-{
-   map<void*,int>& ptrMap = MbSmartPtrBaseMap::getInstance()->getMap();
-   map<void*,int>::iterator pos=ptrMap.find(ptr);
-	
-   if( pos!=ptrMap.end() )
-	{
-		pos->second--;
-		
-      if(pos->second==0)
-		{
-			ptrMap.erase(pos);
-			return true;
-		}
-	}
-	return false;
-}
-//-------------------------------------------------
-bool MbSmartPtrBase::removeFromGC(void* ptr) const 
-{
-   if( MbSmartPtrBaseMap::getInstance()->getMap().erase(ptr) ) return true;
-   return false;
-}
-//-------------------------------------------------
-int MbSmartPtrBase::ref_count(void* ptr) const 
-{
-   map<void*,int>& ptrMap = MbSmartPtrBaseMap::getInstance()->getMap();
-   map<void*,int>::iterator pos=ptrMap.find(ptr);
-
-   if( pos!=ptrMap.end() ) return pos->second;
-   else                    return 0;
-}
-
-
diff --git a/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.h b/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.h
deleted file mode 100644
index d1bf281ce1f7fe8b41c19cd0d6deac9dd43f9574..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/memory/MbSmartPtrBase.h
+++ /dev/null
@@ -1,50 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef MBSMARTPTRBASE_H
-#define MBSMARTPTRBASE_H
-
-#include <iostream>
-#include <map>
-
-//============================================================
-// Klasse MbSmartPtrBase
-//
-// Basisklasse, speziell fuer MbSmartPtr, die das eigentliche
-// Reference-Counting uebernimmt.
-//
-class MbSmartPtrBase
-{
-   //Ursprung:
-   // mpCntrMap ist ein Pointer, weil sichergestellt sein muss, dass die
-   // Map existiert, wenn das erste mal darauf zugegriffen wird.
-   // Ein Zugriff zwischen zwei statischen Objekten kann zum Fehler fuehren, da
-   // die Reihenfolge der Konstruktorenaufrufe dann vom Linker bestimmt wird.
-
-   //Anpassung a la UbWriter mit SingletonMap
-   class MbSmartPtrBaseMap
-   {
-   private:
-      MbSmartPtrBaseMap() { }
-      MbSmartPtrBaseMap( const MbSmartPtrBaseMap& );                  //no copy allowed
-      const MbSmartPtrBaseMap& operator=( const MbSmartPtrBaseMap& ); //no copy allowed
-
-      std::map<void*,int> mpCntrMap;
-   public:
-      static MbSmartPtrBaseMap* getInstance() { static MbSmartPtrBaseMap instance; return &instance; }
-      std::map<void*,int>& getMap()           { return mpCntrMap;                                    }
-   };
-
-protected:
-   MbSmartPtrBase() {}
-   virtual ~MbSmartPtrBase() {}
-   bool addRef(void* p);
-	bool releaseRef(void* p);
-   bool removeFromGC(void* ptr) const;
-   int  ref_count(void* ptr) const;
-};
-
-#endif //MBSMARTPTRBASE_H
diff --git a/source/VirtualFluidsCore/Basics/objects/CMakePackage.txt b/source/VirtualFluidsCore/Basics/objects/CMakePackage.txt
deleted file mode 100644
index 9354d3d0084922c7abd6f1b22823c5c47e0befb4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/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)
diff --git a/source/VirtualFluidsCore/Basics/objects/ObCreator.h b/source/VirtualFluidsCore/Basics/objects/ObCreator.h
deleted file mode 100644
index 253fc616e2f1d9c2b279423ce93462095e698774..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObCreator.h
+++ /dev/null
@@ -1,112 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBCREATOR_H
-#define OBCREATOR_H
-
-#include <string>
-
-/*=========================================================================*/
-/*  ObCreator / ObCreatorImpl                                              */
-/*                                                                         */
-/**
-generic factory
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 14.06.07
-@version 1.1 - 12.04.08
-*/ 
-
-/*
-usage: see bottom of file "./ObFactory.h"
-*/
-
-//////////////////////////////////////////////////////////////////////////
-// ObCreator
-// Um in der Factory verschiedene Typen von Creaors in einer 
-// std::map<std::string,ObCreator<BaseT>*> halten zu koennen
-// muss eine gemeinsame Basisklasse existieren
-//////////////////////////////////////////////////////////////////////////
-template< class BaseT >
-class ObCreator
-{
-public:
-   virtual std::string  getObjectTypeID()=0;
-   virtual BaseT*       createObject() = 0;
-
-   virtual ~ObCreator() {  }
-
-protected:
-   ObCreator() {}
-private:
-   ObCreator( const ObCreator< BaseT >& );         //no copy allowed 
-   const ObCreator& operator=( const ObCreator& ); //no copy allowed
-};
-
-//////////////////////////////////////////////////////////////////////////
-// ObCreatorImpl
-// Implementierung des speziellen Creators 
-//////////////////////////////////////////////////////////////////////////
-template< class T, class BaseT=T >
-class ObCreatorImpl : public ObCreator< BaseT >
-{
-public:
-   static ObCreator<BaseT >* getInstance()
-   {
-      static ObCreatorImpl< T, BaseT > instance;
-      return &instance;
-   }
-
-public:
-   ~ObCreatorImpl() {}
-
-   //aus portabilitaetsgruenden kann man nicht typeinfo nehmen, da diese compilerabhaengig ist
-   std::string getObjectTypeID()  { return T::getStaticClassObjectTypeID();  } 
-   
-   virtual T*  createObject() { return new T(); }
-
-protected:
-	ObCreatorImpl() {}
-private:
-	ObCreatorImpl( const ObCreatorImpl< T, BaseT >& );      //no copy allowed 
-   const ObCreatorImpl& operator=( const ObCreatorImpl& ); //no copy allowed
-};
-
-//////////////////////////////////////////////////////////////////////////
-// ObCreatorImpl
-// Implementierung des speziellen Creators fuer Singletons
-//////////////////////////////////////////////////////////////////////////
-template< class T, class BaseT=T >
-class ObSingletonCreatorImpl : public ObCreator< BaseT >
-{
-public:
-   static ObCreator<BaseT >* getInstance()
-   {
-      static ObSingletonCreatorImpl< T, BaseT > instance;
-      return &instance;
-   }
-public:
-   ~ObSingletonCreatorImpl() {}
-
-   //aus portabilitaetsgruenden kann man nicht typeinfo nehmen, da diese compilerabhaengig ist
-   std::string getObjectTypeID()  { return T::getStaticClassObjectTypeID();  } 
-
-   virtual T* createObject() { return T::getInstance(); }
-
-protected:
-   ObSingletonCreatorImpl() {}
-private:
-   ObSingletonCreatorImpl( const ObSingletonCreatorImpl< T, BaseT >& );      //no copy allowed 
-   const ObSingletonCreatorImpl& operator=( const ObSingletonCreatorImpl& ); //no copy allowed
-};
-
-//workaround for the not perfect C++ world. typeinfo::name is not usable for this purpose!
-//see Andrei Alexandrescu, "Modern C++ Design: Generic Programming and Design Patterns Applied", Chapter 8.5
-#define OBCREATOR_EXT( ClassObject ) \
-   static  std::string  getStaticClassObjectTypeID() { return #ClassObject;                 } \
-   virtual std::string  getClassObjectTypeID()       { return getStaticClassObjectTypeID(); } 
-
-#endif //OBCREATOR_H
diff --git a/source/VirtualFluidsCore/Basics/objects/ObFactory.h b/source/VirtualFluidsCore/Basics/objects/ObFactory.h
deleted file mode 100644
index 6b51787819b0548efc89960be450d129753aa0b3..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObFactory.h
+++ /dev/null
@@ -1,174 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBFACTORY_H
-#define OBFACTORY_H
-
-
-#include <string>
-#include <map>
-#include <sstream>
-#include <iomanip>
-#include <typeinfo>
-
-#include <basics/objects/ObCreator.h>
-
-/*=========================================================================*/
-/*  ObFactory                                                            */
-/*                                                                         */
-/**
-generic factory
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 14.06.07
-@version 1.1 - 12.04.08
-*/ 
-
-/*
-usage:  T       = zu erzeugende Klasse
-        Creator = Erzeugerklasse
-//////////////////////////////////////////////////////////////////////////
-//example
-//////////////////////////////////////////////////////////////////////////
-//  class Base{ 
-//  public:
-//        OBCREATOR_EXT(Base)
-//  };
-//  //automatisches registrieren:
-//  UB_AUTO_RUN_NAMED(ObFactory<Base>::getInstance()->addObCreator(ObCreatorImpl<Base,Base>::getInstance()), CAB_Base);
-//  class Derived : public Base 
-//  {
-//   public:
-//        OBCREATOR_EXT(Derived)
-//};
-//  //automatisches registrieren:
-//  UB_AUTO_RUN_NAMED(ObFactory<Base>::getInstance()->addObCreator(ObCreatorImpl<Base,Derived>::getInstance()), CAB_Derived);
-////////////////////////////////////////////////////////////////////////////
-//  int main()
-//  {
-//       //Alternativ zu UB_AUTO_RUN_NAMED: haendisches registrieren
-//       ObFactory<Base>::getInstance()->addObCreator(ObCreatorImpl<Base>::getInstance());
-//       ObFactory<Base>::getInstance()->addObCreator(ObCreatorImpl<Derived,Base>::getInstance());
-// 
-//       //create objects - method1
-//       Base* test1 = ObFactory<Base>::getInstance()->createObject<Base>();
-//       Base* test2 = ObFactory<Base>::getInstance()->createObject<Derived>();
-// 
-//       //create objects - method2
-//       Base* test1 = ObFactory<Base>::getInstance()->createObject(Base::getStaticClassObjectTypeID()    );
-//       Base* test2 = ObFactory<Base>::getInstance()->createObject(Derived::getStaticClassObjectTypeID() );
-//   //...
-// }
-*/
-
-
-template<class  T, typename Creator = ObCreator< T > >
-class ObFactory
-{
-   typedef std::map<  std::string, Creator* > CreatorMap;
-   typedef typename CreatorMap::iterator      CreatorMapIt;
-   typedef std::pair< std::string, Creator* > CreatorMapElement;
-
-protected:
-   ObFactory() {}  //so ist vererbung gewahrleistet
-
-private:
-   ObFactory( const ObFactory< T, Creator >& );    //no copy allowed 
-   const ObFactory& operator=( const ObFactory& ); //no copy allowed
-
-
-public:
-   virtual ~ObFactory() {}
-
-   static ObFactory< T, Creator >* getInstance() 
-   {
-      static ObFactory< T, Creator > instance;
-      return &instance;
-   }
-
-   bool addObCreator(Creator* creator);
-   bool removeObCreator(Creator* creator);
-
-   T* createObject(const std::string& objectTypeID);
-   
-   template< typename T2 > 
-   T* createObject() { return this->createObject( T2::getStaticClassObjectTypeID() ); }
-   
-   Creator* getCreator(const std::string& objectTypeID);
-
-   virtual std::string toString();
-  
-private:
-   CreatorMap creatorMap;
-};
-
-//////////////////////////////////////////////////////////////////////////
-//Implementation
-template<class  T, typename Creator >
-bool ObFactory< T, Creator >::addObCreator(Creator* creator)
-{
-	if(creatorMap.insert( CreatorMapElement(creator->getObjectTypeID(), creator) ).second )
-   {
-      //insert succeeded
-      return true;
-   }
-   //insert fails
-   return false;
-}
-/*======================================================================*/
-template<class  T, typename Creator >
-bool ObFactory< T, Creator >::removeObCreator(Creator* creator)
-{
-   if(creator && creatorMap->erase( creator->getClassObjectTypeID() ) ) 
-      return true;
-
-   return false;
-}
-/*======================================================================*/
-template<class  T, typename Creator >
-Creator* ObFactory< T, Creator >::getCreator(const std::string& obtypeID)
-{
-   CreatorMapIt it = creatorMap.find(obtypeID);
-   if(it == creatorMap.end()) return NULL;
-
-   Creator* creator = it->second;
-   if(!creator) return NULL;
-
-   return creator;
-}
-/*======================================================================*/
- template<class  T, typename Creator >
- T* ObFactory< T, Creator >::createObject(const std::string& objectTypeID)
- {
-    Creator* creator = this->getCreator(objectTypeID);
-    
-    if(!creator) 
-    {
-       UB_THROW( UbException(UB_EXARGS,"no creator avaivlable for ID="+objectTypeID ) );
-    }
- 
-    return creator->createObject();
- }
-/*======================================================================*/
-template<class  T, typename Creator >
-std::string ObFactory< T, Creator >::toString() 
-{
-   std::size_t maxL = 6;
-   for(CreatorMapIt it=creatorMap.begin(); it!=creatorMap.end(); ++it)
-      if( it->first.size() > maxL ) 
-         maxL = it->first.size();
-   
-   std::stringstream os;
-   os<<(std::string)typeid(*this).name()<<" - info:"<<std::endl;
-   os<<"   "<<std::left<<std::setw(maxL)<<"object"<<" <-> "<<"creator "<<std::endl;
-   for(CreatorMapIt it=creatorMap.begin(); it!=creatorMap.end(); ++it)
-      os<< " - " << std::setw(maxL) << it->first << " <-> " << (std::string)typeid(*it->second).name() << std::endl;
-
-   return os.str();
-}
-/*======================================================================*/
-
-#endif //OBFACTORY_H
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObject.cpp b/source/VirtualFluidsCore/Basics/objects/ObObject.cpp
deleted file mode 100644
index 452791ad8f43507c069ea9e90e59193fd39334f6..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObject.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-//#include <basics/objects/ObObject.h>
-
-// ObObject::ObObject()
-// { 
-// }
-// /*=======================================*/
-// std::string ObObject::getName()
-// {
-//    return name;
-// }
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObject.h b/source/VirtualFluidsCore/Basics/objects/ObObject.h
deleted file mode 100644
index aeb3ed9c48bb7bbe0b58fc534c6c2313d17ce35b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObject.h
+++ /dev/null
@@ -1,60 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBOBJECT_H
-#define OBOBJECT_H
-
-#include <string>
-
-#include <basics/objects/ObObjectCreator.h>
-#include <basics/utilities/UbObservable.h>
-
-#ifdef CAB_RCF
-#include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-
-class ObObjectCreator;
-
-class ObObject : public UbObservable
-{
-public:
-   ObObject() : name("") { }
-   ObObject(const std::string& name) : name(name) { }
-
-   virtual ~ObObject() { }
-
-   virtual ObObject*   clone()=0;
-   virtual std::string getTypeID()=0;
-
-   virtual std::string getName()  { return name; }
-   void setName(std::string name) { this->name=name; }
-
-   virtual std::string toString()=0;
-
-   virtual ObObjectCreator* getCreator()=0;
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void SF_SERIALIZE(Archive & ar) 
-   {
-      //SF::SF_SERIALIZE_PARENT<UbObservable>(ar, *this);
-      SF_SERIALIZE_PARENT<UbObservable>(ar, *this);
-      ar & name;
-   }
-#endif //CAB_RCF
-
-private:
-   std::string name;
-};
-
-#if defined(RCF_USE_SF_SERIALIZATION) && !defined(SWIG)
-SF_NO_CTOR(ObObject);
-UB_AUTO_RUN_NAMED( ( SF::registerType<ObObject>("ObObject") ),                SF_ObObject     );
-UB_AUTO_RUN_NAMED( ( SF::registerBaseAndDerived<UbObservable, ObObject >() ), SF_ObObject_BD1 );
-#endif //RCF_USE_SF_SERIALIZATION
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObjectCreator.h b/source/VirtualFluidsCore/Basics/objects/ObObjectCreator.h
deleted file mode 100644
index 540f422d5ddc6ef9320743bfbee4432a85225796..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObjectCreator.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBOBJECTCREATOR_H
-#define OBOBJECTCREATOR_H
-
-#include <string>
-
-class ObObject;
-class ObObjectManager;
-
-class Presentator;
-class QViewer;
-
-#ifdef CAB_QT 
-class QObObjectSpecificInstrument;
-class QWidget;
-class QActionGroup;
-#endif
-
-class ObObjectCreator
-{
-public:
-   virtual ~ObObjectCreator() {}
-
-	virtual ObObject* createObObject()=0;
-
-	virtual std::string getTypeID()	{ return "ObObject"; }
-	virtual std::string toString()	{ return "ObObjectCreator"; }
-   
-#ifdef CAB_QT 
-   //virtual Presentator* createObjectPresentator(ObObject *object)=0;
-   virtual Presentator* createObjectPresentator(ObObject *object) { return NULL; }
-   virtual QActionGroup* getSpecificPresentatorGroup(ObObject* object, QViewer *viewer, QWidget* parent) { return NULL; }
-   virtual QActionGroup* getSpecificActionGroup(ObObjectManager* manager, ObObject* object, QWidget* parent) 
-   { 
-      return NULL; 
-   }
-
-   virtual ObObject* createObObjectWithQt() { return NULL; }
-   virtual void showSpecificInstrument(ObObject* object, QWidget* parent=0) {}
-   virtual QObObjectSpecificInstrument* getSpecificInstrument() { return NULL; }
-   
-   //virtual QActionGroup *getSpecificContextMenuActionGroup() { return NULL; }
-#endif
-
-protected:
-	ObObjectCreator() {}
-
-private:
-   ObObjectCreator( const ObObjectCreator& );                  //no copy allowed 
-   const ObObjectCreator& operator=( const ObObjectCreator& ); //no copy allowed
-
-};
-#endif
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.cpp b/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.cpp
deleted file mode 100644
index 5cc03a78f2b2d550406e14a95cdbcffe22157e9c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include <basics/objects/ObObjectFactory.h>
-
-/**** Eigene ****/
-#include <basics/objects/ObObjectCreator.h>
-#include <basics/utilities/UbException.h>
-
-using namespace std;
-
-//ObObjectFactory::ObObjectFactory()
-//{
-//}
-//
-//ObObjectFactory::~ObObjectFactory()
-//{
-//}
-/*======================================================================*/  
-//ObObjectFactory* ObObjectFactory::getInstance()
-//{
-//	static ObObjectFactory instance;
-//	return &instance;
-//}
-/*======================================================================*/
-void ObObjectFactory::addObObjectCreator(ObObjectCreator *creator)
-{
-	//cout<<"Meth:"<<creator->toString()<<" Meth-ID:"<<creator->getTypeID()<<endl;
-	creatorSet.insert(std::pair<string, ObObjectCreator*>(creator->getTypeID(), creator));
-}
-/*======================================================================*/
-void ObObjectFactory::removeObObjectCreator(ObObjectCreator *creator)
-{
-	UB_THROW( UbException(UB_EXARGS,"not implemented") );
-}
-/*======================================================================*/
-ObObjectCreator* ObObjectFactory::getCreator(string objectType) 
-{
-	std::map<string, ObObjectCreator*>::iterator creatorIterator = creatorSet.find(objectType);
-	if(creatorIterator == creatorSet.end()) UB_THROW( UbException(UB_EXARGS,"factory has no creator for "+objectType) );
-	ObObjectCreator *creator = creatorIterator->second;
-	if(!creator) UB_THROW( UbException(UB_EXARGS,"no time series creator for type available") );
-	return creator;
-}
-/*======================================================================*/
-string ObObjectFactory::toString() 
-{
-   stringstream text;
-
-   std::map<string, ObObjectCreator*>::iterator creatorIterator;
-   std::map<string, ObObjectCreator*>* creatorSet = this->getCreatorSet();
-
-   for(creatorIterator = creatorSet->begin(); creatorIterator!=creatorSet->end(); ++creatorIterator)
-      text<<"   - "<<(creatorIterator->second)->toString()<<" for "<<(creatorIterator->first)<<endl;
-
-   return text.str();
-}
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.h b/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.h
deleted file mode 100644
index da8ef389c6ef433d96be6663eefaf34c9c99bd1c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObjectFactory.h
+++ /dev/null
@@ -1,42 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBOBJECTFACTORY_H
-#define OBOBJECTFACTORY_H
-
-#include <string>
-#include <map>
-
-class ObObjectCreator; 
-
-class ObObjectFactory
-{
-public:
-   ObObjectFactory() {}
-   virtual ~ObObjectFactory() {}
-
-   //static geht nicht, da abgeleitete Factories existieren ...
-   //static ObObjectFactory* getInstance();
-   //virtual ObObjectFactory* getInstance()=0;
-
-   ObObjectCreator* getCreator(std::string objectType);
-
-	void addObObjectCreator(ObObjectCreator* creator);
-	void removeObObjectCreator(ObObjectCreator* creator);
-
-   std::map<std::string, ObObjectCreator*>* getCreatorSet() { return &creatorSet;  }
-
-   virtual std::string toString();
-	
-private:
-   ObObjectFactory( const ObObjectFactory& );                  //no copy allowed 
-   const ObObjectFactory& operator=( const ObObjectFactory& ); //no copy allowed
-
-   std::map<std::string, ObObjectCreator*> creatorSet;
-};
-
-
-#endif //OBOBJECTFACTORY_H
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObjectManager.cpp b/source/VirtualFluidsCore/Basics/objects/ObObjectManager.cpp
deleted file mode 100644
index 44bba546bf9e157bc21baff5d6e24aa8f3700786..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObjectManager.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#include <basics/objects/ObObjectManager.h>
-#include <basics/objects/ObObject.h>
-#include <basics/objects/ObObjectCreator.h>
-#include <basics/utilities/UbTableModel.h>
-#include <basics/utilities/UbException.h>
-
-using namespace std;
-
-ObObjectEntry::ObObjectEntry(ObObjectManager *parent, ObObject *object)
-{
-   this->parent = parent;
-   this->object = object;
-}
-/*======================================================*/
-ObObjectManager::ObObjectManager()
-{
-	this->selectedObject = NULL;
-	this->tableModel = NULL;
-}
-
-/*======================================================*/
-ObObjectManager::~ObObjectManager()
-{
-	//cerr<<"NEIN, notifyObserversObjectWillBeDeleted wird AUSSCHLIESSLICH von BasisKlasse aufgerufen!!!"<<endl;
- //  cerr<<"das muss so sein, denn ansonsten duerfte diese funktion nur in der speziellen klasse stehen, da\n";
- //  cerr<<"virtuelle destruktoren sich rekursiv vom speziellen ins allg. aufrufen --> notify.. wuerde\n";
- //  cerr<<"oefters aufgerufen werden...\n";
-
-	this->objectList.clear();
-	if(this->tableModel) delete this->tableModel;
-}
-/*======================================================*/
-UbTableModel* ObObjectManager::getTableModel()
-{ 
-	return tableModel; 
-}
-/*======================================================*/
-//bool ObObjectManager::addObObject(ObObject *object)
-//{
-//   cout<<"ObObjectManager::addObObject "<<object->toString()<<endl;
-//	for(int pos=0; pos<(int)this->objectList.size(); pos++)
-//		if(this->objectList[pos]->object==object) 
-//			return false;
-//
-//	this->objectList.push_back(new ObObjectEntry(this,object));
-//	//object->addObserver(this);
-//	this->selectObObject(object);
-//	return true;
-//}
-/*======================================================*/
-bool ObObjectManager::addObObjectEntry(ObObjectEntry* objectEntry)
-{
-   for(int pos=0; pos<(int)this->objectList.size(); pos++)
-      if(this->objectList[pos]->object==objectEntry->object) 
-         return false;
-
-   this->objectList.push_back(objectEntry);
-//   objectEntry->getObject()->addObserver(this);
-   this->selectObObject(objectEntry->object);
-   return true;
-}
-/*======================================================*/
-bool ObObjectManager::removeObObject(ObObject* object)
-{
-	if (this->selectedObject == object) this->selectedObject=NULL;
-	for(int pos=0; pos<(int)this->objectList.size(); pos++)
-	{
-
-		if(this->objectList[pos]->object==object) 
-		{
-         return this->removeObObject(pos);
-//			this->objectList.erase(objectList.begin()+pos);
-//			//this->removeObserver(this);
-//			return true;
-		}
-	}
-	return false;
-}
-/*======================================================*/
-bool ObObjectManager::removeObObject(int index)
-{
-	try
-	{
-		if ( objectList[index]->object == this->selectedObject ) this->selectedObject=NULL;
-      //den entry loeschen ... das object im Entry ??? erstmal ausserhalb ...
-      delete objectList[index]; 
-		objectList.erase(objectList.begin()+index);
-   	this->notifyObserversObjectChanged();
-   	return true;
-	}
-	catch(const std::exception& e)  {  cerr<<e.what()<<endl;    }
-   catch(...)                      {  cerr<<"Fehler in ObObjectManager::removeObObject"<<endl; }
-   return false;
-}
-/*======================================================*/
-void ObObjectManager::removeAllObObjects() 
-{  
-	//TODO: implementieren!!
-	//foreach grid:
-	//grid->removeObserver(this);
-	//vector<ObObject*>::iterator it;
-	//for(it=objectList.begin();  it!=objectList.end(); it++)
-	//{
-	//	it->removeObserver(this);
-	//}
-// 	for(int i=0; i<(int)objectList.size(); i++)
-// 	{
-// 		delete objectList[i]->object->removeObserver(this);
-// 	} 
-	this->objectList.clear();
-	this->selectedObject = NULL;
-	this->notifyObserversObjectChanged();
-}
-/*======================================================*/
-int ObObjectManager::getNumberOfObObjects()
-{ 
-	return (int)this->objectList.size();
-}
-/*======================================================*/
-vector<ObObject*>* ObObjectManager::getAllObObjects()  
-{ 
-   UB_THROW( UbException(UB_EXARGS,"hier muss noch was getan werden") );
-//	return this->objectList;  
-}
-vector<ObObjectEntry*>* ObObjectManager::getAllObObjectEntries()
-{
-   return &this->objectList;  
-}
-/*======================================================*/
-ObObject* ObObjectManager::getObObject(int index)
-{
-	if(index <  0)                            return NULL;
-	if(index >= (int)this->objectList.size()) return NULL;
-
-	return(this->objectList[index]->object);
-}
-/*======================================================*/
-ObObjectEntry* ObObjectManager::getObObjectEntry(int index)
-{
-   if(index <  0)                            return NULL;
-   if(index >= (int)this->objectList.size()) return NULL;
-
-   return(this->objectList[index]);
-}
-/*====================================================*/
-string ObObjectManager::toString()
-{
-	stringstream ss; ss<<endl;
-
-	for(int pos=0; pos<(int)this->objectList.size(); pos++)          
-	{
-		ObObject* object = this->objectList[pos]->object;
-		ss<<(pos+1)<<". "<<object->toString()<<endl;
-	}
-	return ss.str();
-}
-/*======================================================*/
-void ObObjectManager::objectChanged(UbObservable* observable)
-{
-   //cout<<"ObObjectManager::objectChanged ??";
-	this->notifyObserversObjectChanged();
-}
-/*======================================================*/
-void ObObjectManager::objectWillBeDeleted(UbObservable* observable)
-{
-   cout<<"ObObjectManager::objectWillBeDeleted ??";
-	//observable->removeObserver(this);
-}
-/*======================================================*/
-bool ObObjectManager::selectObObject(int index)
-{
-   if((int)this->objectList.size()==0) 
-   {
-      this->selectedObject = NULL; return false; 
-   }
-	if (index > (int)this->objectList.size()-1 || index < 0) return false; 
-	if ( this->selectedObject == this->getObObject(index) ) return true;
-   
-	this->selectedObject = this->getObObject(index);
-   //cout<<this->getObserverList()->size()<<endl;
-
-	this->notifyObserversObjectChanged();
-	return true;
-}
-/*======================================================*/
-bool ObObjectManager::selectObObject(ObObject* object)
-{
-   if((int)this->objectList.size()==0) { this->selectedObject = NULL; return false; }
-	for(int pos=0; pos<(int)this->objectList.size(); pos++)
-	{
-		if(this->objectList[pos]->object==object) 
-		{
-			return this->selectObObject(pos);
-		}
-	}
-	return false;
-}
-/*======================================================*/
-ObObject* ObObjectManager::getSelectedObObject()
-{
-	return this->selectedObject;
-}
-/*======================================================*/
-int ObObjectManager::getSelectedIndex()
-{
-	for(int pos=0; pos<(int)this->objectList.size(); pos++)
-	{
-		if(this->objectList[pos]->object==this->selectedObject) 
-		{
-			return pos;
-		}
-	}
-	return -1;
-}
-/*======================================================*/
-
diff --git a/source/VirtualFluidsCore/Basics/objects/ObObjectManager.h b/source/VirtualFluidsCore/Basics/objects/ObObjectManager.h
deleted file mode 100644
index 632e124bf72f3a259f638f12116eeac2b661e61f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/objects/ObObjectManager.h
+++ /dev/null
@@ -1,79 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef OBOBJECTMANAGER_H
-#define OBOBJECTMANAGER_H
-
-#include <string>
-#include <sstream>
-#include <vector>
-
-#include <basics/utilities/UbObservable.h>
-#include <basics/utilities/UbObserver.h>
-
-class UbException;
-class UbTableModel;
-class ObObjectManager;
-class ObObjectFactory;
-class ObObject;
-
-
-class ObObjectEntry
-{
-   friend class ObObjectManager;
-public:
-   ObObjectManager* getParent() { return parent; }
-   ObObject*        getObject() { return object; }
-   
-   ObObjectEntry(ObObjectManager* parent, ObObject* object);
-   virtual ~ObObjectEntry() {  }
-
-protected:
-   ObObjectManager* parent;
-   ObObject* object;
-};
-
-
-class ObObjectManager : public UbObservable, public UbObserver
-{
-public:
-	ObObjectManager();
-	~ObObjectManager();
-	
-   //virtual bool addObObject(ObObject* object);   
-   virtual bool addObObjectEntry(ObObjectEntry* objectEntry);
-
-   virtual ObObjectEntry* createNewObObjectEntry(ObObject* obj) { return new ObObjectEntry(this, obj); }
-
-	bool removeObObject(ObObject* object);
-	bool removeObObject(int index);
-	void removeAllObObjects();
-	bool selectObObject(int index);
-	bool selectObObject(ObObject* object);
-	ObObject* getSelectedObObject();
-	int getSelectedIndex();
-
-	int getNumberOfObObjects();                 
-   std::vector<ObObject*>* getAllObObjects();
-   std::vector<ObObjectEntry*>* getAllObObjectEntries();
-	ObObject* getObObject(int index);
-   ObObjectEntry* getObObjectEntry(int index);
-
-	std::string toString();
-
-	virtual void objectChanged(UbObservable* observable);
-	virtual void objectWillBeDeleted(UbObservable* observable);
-
-	UbTableModel* getTableModel();
-   virtual ObObjectFactory* getObObjectFactory()=0;
-
-protected:
-	 std::vector<ObObjectEntry*> objectList;
-	 ObObject* selectedObject;
-	 UbTableModel* tableModel;
-};
-
-#endif //OBOBJECTMANAGER_H
diff --git a/source/VirtualFluidsCore/Basics/transmitter/CMakePackage.txt b/source/VirtualFluidsCore/Basics/transmitter/CMakePackage.txt
deleted file mode 100644
index de1dc5a88225180b8e40c6cf46f4a6fbb102778f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/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/Basics/transmitter/TbTransmitter.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitter.h
deleted file mode 100644
index 9560e8a771c5c4892579aa38d119bca67c45a354..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitter.h
+++ /dev/null
@@ -1,69 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTER_H
-#define TBTRANSMITTER_H
-
-#include <string>
-
-/*================================================================================*/
-/*  TbTransmitter                                                                 */
-/*                                                                                */
-/**
-This Class provides the base for sending and receiving of data.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/ 
-
-/*
-usage: ...
-*/
-
-//////////////////////////////////////////////////////////////////////////
-// Transmitter 
-// macht nichts ausser daten senden und empfangen
-template<typename T>
-class TbTransmitter
-{
-public:
-   typedef T value_type;
-
-public:
-   TbTransmitter() {}
-   virtual ~TbTransmitter()  {  /*std::cout<<typeid(*this).name()<<" dtor"<<std::endl;*/  }
-
-   virtual bool isLocalTransmitter()  const = 0;
-   virtual bool isRemoteTransmitter() const = 0;
-
-   //preprocess (e.g. synchronizing send-/receive-buffer)
-   virtual void sendDataSize()   = 0;
-   virtual void receiveDataSize()= 0; 
-   
-   //calculation
-   virtual void        prepareForSend() {}
-   virtual void        sendData()=0;
-   virtual void        prepareForReceive() {}
-   virtual value_type& receiveData()=0;
-   virtual void        saveData() {}
-
-   //data-access
-   inline value_type&       getData()       { return this->data; }
-   inline const value_type& getData() const { return this->data; }
-
-   //info-section (usable for remote transmitter)
-   virtual int  getSendToRank()   const { return  -1; }
-   virtual int  getSendToTag()    const { return  -1; }
-   virtual int  getRecvFromRank() const { return  -1; }
-   virtual int  getRecvFromTag()  const { return  -1; }
-
-   virtual std::string toString() const = 0;
-
-protected:
-   value_type data;
-};
-
-#endif //TBTRANSMITTER_H 
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterLocal.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterLocal.h
deleted file mode 100644
index 981f880c143d4ed614dfc8cc2c20e6684de91f8a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterLocal.h
+++ /dev/null
@@ -1,130 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TOTRANSMITTERLOCAL_H
-#define TOTRANSMITTERLOCAL_H
-
-#include <basics/utilities/UbException.h>
-#include <basics/transmitter/TbTransmitter.h>
-
-#include <boost/shared_ptr.hpp>
-
-/*================================================================================*/
-/*   TbLocalTransmitter, TbVectorSenderLocal, TbVectorReceiverLocal               */
-/*                                                                                */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/ 
-
-/*
-usage: ...
-*/
-
-//////////////////////////////////////////////////////////////////////////
-// LocalTransmitter lokalen Datenaustausch
-// data = send- und zugleich receive-buffer
-template<typename T>
-class TbLocalTransmitter : public TbTransmitter<T>
-{
-public:
-   typedef boost::shared_ptr< TbLocalTransmitter<T> > TbLocalTransmitterPtr;
-
-   typedef T value_type;
-
-public:
-   TbLocalTransmitter() : TbTransmitter<T>() 
-   {
-
-   }
-   
-   bool isLocalTransmitter()  const { return true;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   //send buffer wird autom resized
-   void sendDataSize()    { }
-   //reiceive braucht nichts machen, da send==receive buffer ;-)
-   void receiveDataSize() { } 
-
-   void        sendData()    { }
-   value_type& receiveData() { return this->data; }
-
-   std::string toString()  const { return "TbLocalTransmitter"+(std::string)typeid(T).name(); }
-};
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSender/ReceiverLocal lokalen Datenaustausch ueber ZWEI vektoren
-template<typename T>
-class TbVectorReceiverLocal : public TbTransmitter<T>
-{
-public:
-   typedef T value_type;
-
-public:
-   TbVectorReceiverLocal() : TbTransmitter<value_type>() 
-   {
-
-   }
-   //virtual ~TbVectorReceiverLocal() { std::cout<<typeid(*this).name()<<" tot"<<std::endl;   }
-
-   bool isLocalTransmitter()  const { return true;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   //send buffer wird autom resized
-   void sendDataSize()    { UB_THROW( UbException(UB_EXARGS,"empfaengt nur") ); }
-   //reiceive braucht nichts machen, das macht der sender :-)
-   void receiveDataSize() { } 
-
-   void         sendData()    { UB_THROW( UbException(UB_EXARGS,"empfaengt nur") ); }
-   value_type&  receiveData() { return this->data; }
-
-   std::string toString() const { return "TbVectorReceiverLocal<"+(std::string)typeid(T).name()+">"; }
-};
-
-template<typename T>
-class TbVectorSenderLocal : public TbTransmitter<T>
-{
-public:
-   typedef T value_type;
-
-public:
-   TbVectorSenderLocal(boost::shared_ptr< TbVectorReceiverLocal< value_type > > receiver) 
-      : TbTransmitter< value_type >(), receiver(receiver) 
-   {
-
-   }
-   //virtual ~TbVectorSenderLocal() { std::cout<<typeid(*this).name()<<" tot"<<std::endl;   }
-
-   bool isLocalTransmitter()  const { return true;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   //send buffer wird autom resized
-   void sendDataSize()  
-   { 
-      assert(receiver!=NULL); 
-      receiver->getData().resize( this->data.size() ); 
-   }
-   //reiceive braucht nichts machen, da send==receive buffer ;-)
-   void receiveDataSize()  { UB_THROW( UbException(UB_EXARGS,"sendet nur") ); } 
-   
-   void sendData()    
-   { 
-      assert( this->data.size() == receiver->getData().size() );
-      receiver->getData() = this->data;
-//       for(int i=(int)this->data.size()-1; i>=0; --i)
-//          receiver->getData()[i]= this->data[i];
-   }
-   value_type& receiveData() { UB_THROW( UbException(UB_EXARGS,"sendet nur") ); }
-
-   std::string toString() const { return "TbVectorSenderLocal<"+(std::string)typeid(T).name()+">"; }
-
-protected:
-   boost::shared_ptr< TbVectorReceiverLocal< value_type > > receiver; 
-};
-                                        
-#endif //TOTRANSMITTERLOCAL_H 
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpi.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpi.h
deleted file mode 100644
index 16d5f8c7f986b9b6832f999be80f6ee5dc81aa76..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpi.h
+++ /dev/null
@@ -1,237 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPI_H
-#define TBTRANSMITTERMPI_H
-
-#ifdef VF_MPI
-
-/*=========================================================================*/
-/*  MPI Transmitter                                                        */
-/*                                                                         */
-/**
-This Class provides the base for exception handling.
-Old TbTransmitter was renamed in TbTransmitterCPPB (C++ binding in MPI is deprecated)
-Rewrite from K. Kucher with C binding
-<BR><BR>
-@author <A HREF="mailto:kucher@irmb.tu-bs.de">K. Kucher</A>
-@version 1.0 - 21.11.11
-*/ 
-
-/*
-usage: ...
-*/
-
-#include <iostream>
-#include <mpi.h>
-#include <basics/transmitter/TbTransmitter.h>
-
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSenderMpiUnblocked
-template< typename Vector  >
-class TbVectorSenderMpiUnblocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorSenderMpiUnblocked(const int& sendTbRank, const int& sendTag, MPI_Comm comm) 
-      : comm(comm), request(MPI_REQUEST_NULL), sendTbRank(sendTbRank), sendTag(sendTag), dataSize(0)    
-   { 
-      //temporaeren vector erstellen um den datentyp zu ermittlen
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for type="+(std::string)typeid(typename Vector::value_type).name()) );
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()   
-   {
-      dataSize = (unsigned int)this->getData().size();
-      //MPI_Isend(&dataSize, 1, MPI_UNSIGNED, sendTbRank, sendTag, comm, &request);
-      MPI_Send(&dataSize, 1, MPI_UNSIGNED, sendTbRank, sendTag, comm);
-   }  
-   void receiveDataSize()   { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   void prepareForSend()    { if(request!=MPI_REQUEST_NULL) MPI_Wait(&request, &status); }
-   void sendData()          { MPI_Isend(&this->getData()[0],(int)this->getData().size(), mpiDataType, sendTbRank, sendTag, comm, &request);  }
-
-   void prepareForReceive() { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   Vector& receiveData()    { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  sendTbRank; }
-   int  getSendTbTag()    const { return  sendTag;    }
-   int  getRecvFromRank() const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   int  getRecvFromTag()  const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   std::string toString()  const { return "TbVectorSenderMpiUnblocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(sendTbRank)+"("+UbSystem::toString(sendTag)+")"; }
-
-protected:
-   MPI_Comm comm;
-   MPI_Request   request;
-   MPI_Datatype  mpiDataType;
-   MPI_Status    status;
-   int sendTbRank, sendTag;
-   unsigned dataSize;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSenderMpiBlocked
-template< typename Vector  >
-class TbVectorSenderMpiBlocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorSenderMpiBlocked(const int& sendTbRank, const int& sendTag, MPI_Comm comm) 
-      : comm(comm), request(MPI_REQUEST_NULL), sendTbRank(sendTbRank), sendTag(sendTag), dataSize(0)    
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector"+(std::string)typeid(Vector).name()) );
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()   
-   {
-      dataSize = (unsigned int)this->getData().size();
-      MPI_Isend(&dataSize, 1, MPI_UNSIGNED, sendTbRank, sendTag, comm, &request);
-   }  
-   void receiveDataSize()   { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   void sendData()          { MPI_Wait(&request, &status); MPI_Send(&this->getData()[0],(int)this->getData().size(), mpiDataType, sendTbRank, sendTag, comm); }
-
-   void prepareForReceive()  { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   value_type& receiveData() { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  sendTbRank; }
-   int  getSendTbTag()    const { return  sendTag;    }
-   int  getRecvFromRank() const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   int  getRecvFromTag()  const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   std::string toString() const { return "TbVectorSenderMpiBlocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(sendTbRank)+"("+UbSystem::toString(sendTag)+")"; }
-
-protected:
-   MPI_Comm comm;
-   MPI_Request   request;
-   MPI_Datatype  mpiDataType;
-   MPI_Status    status;
-   int sendTbRank, sendTag;
-   unsigned dataSize;
-};
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorReceiverMpiUnblocked
-template<typename Vector  >
-class TbVectorReceiverMpiUnblocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorReceiverMpiUnblocked(const int& receiveFromRank, const int& receiveTag, MPI_Comm comm) 
-      : comm(comm), request(MPI_REQUEST_NULL), receiveFromRank(receiveFromRank), receiveTag(receiveTag)       
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector"+(std::string)typeid(Vector).name()) );
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()     { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   void receiveDataSize()   
-   {
-      unsigned dataSize;
-      MPI_Recv(&dataSize, 1, MPI_UNSIGNED, receiveFromRank, receiveTag, comm, &status);
-      this->getData().resize(dataSize,0.0);
-   }  
-   void sendData()          { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-
-   void prepareForReceive() { MPI_Irecv(&this->getData()[0],(int)this->getData().size(), mpiDataType, receiveFromRank, receiveTag, comm, &request);  }
-   Vector& receiveData()    { MPI_Wait(&request, &status); return this->getData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getSendTbTag()    const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getRecvFromRank() const { return  receiveFromRank; }
-   int  getRecvFromTag()  const { return  receiveTag;      }
-
-   std::string toString() const { return "TbVectorReceiverMpiUnblocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(receiveFromRank)+"("+UbSystem::toString(receiveTag)+")"; }
-
-protected:
-   MPI_Comm comm;
-   MPI_Request   request;
-   MPI_Datatype  mpiDataType;
-   MPI_Status    status;
-   int receiveFromRank, receiveTag;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-template<typename Vector>
-class TbVectorReceiverMpiBlocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorReceiverMpiBlocked(const int& receiveFromRank, const int& receiveTag, MPI_Comm comm) 
-      : comm(comm), request(MPI_REQUEST_NULL), receiveFromRank(receiveFromRank), receiveTag(receiveTag)
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector+(std::string)typeid(Vector).name()") );
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()     { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   void receiveDataSize()   
-   {
-      unsigned dataSize;
-      MPI_Recv(&dataSize, 1, MPI_UNSIGNED, receiveFromRank, receiveTag, comm, &status);
-      this->getData().resize(dataSize,0.0);
-   }  
-   void sendData()         { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   Vector& receiveData()
-   {
-      MPI_Recv(&this->getData()[0],(int)this->getData().size(), mpiDataType, receiveFromRank, receiveTag, comm, &status);
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getSendTbTag()    const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getRecvFromRank() const { return  receiveFromRank; }
-   int  getRecvFromTag()  const { return  receiveTag;      }
-
-   std::string toString() const { return "TbVectorReceiverMpiBlocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(receiveFromRank)+"("+UbSystem::toString(receiveTag)+")"; }
-
-protected:
-   MPI_Comm comm;
-   MPI_Request   request;
-   MPI_Datatype  mpiDataType;
-   MPI_Status    status;
-   int receiveFromRank, receiveTag;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPI_H
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiCPPB.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiCPPB.h
deleted file mode 100644
index 1a08a867cb24be0dbbace7570756a5283daf953b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiCPPB.h
+++ /dev/null
@@ -1,230 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPICPPB_H
-#define TBTRANSMITTERMPICPPB_H
-
-#ifdef VF_MPI
-
-/*=========================================================================*/
-/*  MPI Transmitter                                                        */
-/*                                                                         */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/ 
-
-/*
-usage: ...
-*/
-
-#include <iostream>
-#include <mpi.h>
-#include <basics/transmitter/TbTransmitter.h>
-
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSenderMpiUnblocked
-template< typename Vector  >
-class TbVectorSenderMpiUnblocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorSenderMpiUnblocked(const int& sendTbRank, const int& sendTag, MPI::Intracomm comm) 
-      : comm(comm), request(MPI::REQUEST_NULL), sendTbRank(sendTbRank), sendTag(sendTag), dataSize(0)    
-   { 
-      //temporaeren vector erstellen um den datentyp zu ermittlen
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI::DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI::FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI::INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for type="+(std::string)typeid(typename Vector::value_type).name()) );
-   }
-   
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()   
-   {
-      dataSize = (unsigned int)this->getData().size();
-      request = comm.Isend(&dataSize, 1, MPI::UNSIGNED, sendTbRank, sendTag);
-   }  
-   void receiveDataSize()   { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   void prepareForSend()    { if(request!=MPI::REQUEST_NULL) request.Wait(); }
-   void sendData()          { request = comm.Isend(&this->getData()[0],(int)this->getData().size(), mpiDataType, sendTbRank, sendTag);  }
-   
-   void prepareForReceive() { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   Vector& receiveData()    { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  sendTbRank; }
-   int  getSendTbTag()    const { return  sendTag;    }
-   int  getRecvFromRank() const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   int  getRecvFromTag()  const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   std::string toString()  const { return "TbVectorSenderMpiUnblocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(sendTbRank)+"("+UbSystem::toString(sendTag)+")"; }
-
-protected:
-   MPI::Intracomm comm;
-   MPI::Request   request;
-   MPI::Datatype  mpiDataType;
-   int sendTbRank, sendTag;
-   unsigned dataSize;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSenderMpiBlocked
-template< typename Vector  >
-class TbVectorSenderMpiBlocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorSenderMpiBlocked(const int& sendTbRank, const int& sendTag, MPI::Intracomm comm) 
-      : comm(comm), request(MPI::REQUEST_NULL), sendTbRank(sendTbRank), sendTag(sendTag), dataSize(0)    
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI::DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI::FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI::INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector"+(std::string)typeid(Vector).name()) );
-   }
-   
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()   
-   {
-      dataSize = (unsigned int)this->getData().size();
-      request = comm.Isend(&dataSize, 1, MPI::UNSIGNED, sendTbRank, sendTag);
-   }  
-   void receiveDataSize()   { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   void sendData()          { request.Wait(); comm.Send(&this->getData()[0],(int)this->getData().size(), mpiDataType, sendTbRank, sendTag); }
-   
-   void prepareForReceive()  { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   value_type& receiveData() { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  sendTbRank; }
-   int  getSendTbTag()    const { return  sendTag;    }
-   int  getRecvFromRank() const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-   int  getRecvFromTag()  const { UB_THROW( UbException(UB_EXARGS,"MPIVectorSender sends only") ); }
-
-   std::string toString() const { return "TbVectorSenderMpiBlocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(sendTbRank)+"("+UbSystem::toString(sendTag)+")"; }
-
-protected:
-   MPI::Intracomm comm;
-   MPI::Request   request;
-   MPI::Datatype  mpiDataType;
-   int sendTbRank, sendTag;
-   unsigned dataSize;
-};
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorReceiverMpiUnblocked
-template<typename Vector  >
-class TbVectorReceiverMpiUnblocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorReceiverMpiUnblocked(const int& receiveFromRank, const int& receiveTag, MPI::Intracomm comm) 
-      : comm(comm), request(MPI::REQUEST_NULL), receiveFromRank(receiveFromRank), receiveTag(receiveTag)       
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI::DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI::FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI::INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector"+(std::string)typeid(Vector).name()) );
-   }
-   
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()     { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   void receiveDataSize()   
-   {
-      unsigned dataSize;
-      comm.Recv(&dataSize, 1, MPI::UNSIGNED, receiveFromRank, receiveTag);
-      this->getData().resize(dataSize,0.0);
-   }  
-   void sendData()          { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   
-   void prepareForReceive() { request = comm.Irecv(&this->getData()[0],(int)this->getData().size(), mpiDataType, receiveFromRank, receiveTag);  }
-   Vector& receiveData()    { request.Wait(); return this->getData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getSendTbTag()    const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getRecvFromRank() const { return  receiveFromRank; }
-   int  getRecvFromTag()  const { return  receiveTag;      }
-
-   std::string toString() const { return "TbVectorReceiverMpiUnblocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(receiveFromRank)+"("+UbSystem::toString(receiveTag)+")"; }
-
-protected:
-   MPI::Intracomm comm;
-   MPI::Request   request;
-   MPI::Datatype  mpiDataType;
-   int receiveFromRank, receiveTag;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-template<typename Vector>
-class TbVectorReceiverMpiBlocked : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;
-
-public:
-   TbVectorReceiverMpiBlocked(const int& receiveFromRank, const int& receiveTag, MPI::Intracomm comm) 
-      : comm(comm), request(MPI::REQUEST_NULL), receiveFromRank(receiveFromRank), receiveTag(receiveTag)
-   { 
-      if     ( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI::DOUBLE;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI::FLOAT;
-      else if( (std::string)typeid(typename Vector::value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI::INT;
-      else UB_THROW( UbException(UB_EXARGS,"no MpiDataType for Vector+(std::string)typeid(Vector).name()") );
-   }
-   
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()     { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   void receiveDataSize()   
-   {
-      unsigned dataSize;
-      comm.Recv(&dataSize, 1, MPI::UNSIGNED, receiveFromRank, receiveTag);
-      this->getData().resize(dataSize,0.0);
-   }  
-   void sendData()         { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   Vector& receiveData()
-   {
-      comm.Recv(&this->getData()[0],(int)this->getData().size(), mpiDataType, receiveFromRank, receiveTag);
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getSendTbTag()    const { UB_THROW( UbException(UB_EXARGS,"MPIVectorReceiver receives only") ); }
-   int  getRecvFromRank() const { return  receiveFromRank; }
-   int  getRecvFromTag()  const { return  receiveTag;      }
-
-   std::string toString() const { return "TbVectorReceiverMpiBlocked<"+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name()+"> > to rank (tag)"+UbSystem::toString(receiveFromRank)+"("+UbSystem::toString(receiveTag)+")"; }
-
-protected:
-   MPI::Intracomm comm;
-   MPI::Request   request;
-   MPI::Datatype  mpiDataType;
-   int receiveFromRank, receiveTag;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPI_H
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool.h
deleted file mode 100644
index dd406ac49c4c49bd5245ea5a483bffb40fbbf75b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool.h
+++ /dev/null
@@ -1,510 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPIPOOL_H
-#define TBTRANSMITTERMPIPOOL_H
-
-#ifdef VF_MPI
-
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <vector>
-#include <map>
-
-#include <mpi.h>
-
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-
-#include <boost/shared_ptr.hpp>
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//TbCbVectorMpiPoolSender/Receiver
-//diese verschicken immer einen VectorPool. Letztlich einen langen vector,
-//der eigentlich aus vielen kleinen besteht
-//jeder MpiPoolVector hat einen pointer auf die startadresse in diesem vector
-//die informationen werden im TbMpiVectorPool verwaltet
-//MpiPoolVector verhaelt sich nach aussen hin mit einschraenkungen wie ein std::vector
-//und kann somit bei den vector connector verwendet werden
-//man kann die klassen theoretisch verallgemeinern.
-
-template<typename T> class TbCbVectorSenderMpiPool;
-template<typename T> class TbCbVectorReceiverMpiPool;
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorMpiPool : public CbVectorPool<T>
-{
-public:
-   typedef boost::shared_ptr< TbCbVectorMpiPool< T > > MpiPoolPtr;
-
-   //////////////////////////////////////////////////////////////////////////
-   typedef std::map<unsigned int, MpiPoolPtr >      MpiPoolPtrMap;
-   typedef typename MpiPoolPtrMap::iterator MpiPoolPtrMapIter;
-
-   //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef unsigned int CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-   //////////////////////////////////////////////////////////////////////////
-   friend class TbCbVectorSenderMpiPool< T >; 
-   friend class TbCbVectorReceiverMpiPool< T >; 
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   static MpiPoolPtrMap poolMap;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //STATIC MEMBERS
-   //////////////////////////////////////////////////////////////////////////
-   //createTbCbVectorMpiPool:
-   // poolKey      : Schluessel fuer eindeutige Indizierung in Map
-   // mpiRemoteRank: mpi-rank des Empfaengers/Senders
-   // mpiTag       : mpi-tag mit dem empfangen/gesendet wird
-   static MpiPoolPtr createTbCbVectorMpiPool(CbVectorKey poolKey, int mpiRemoteRank, int mpiTag, MPI_Comm comm, size_type startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-
-   {
-      if( poolMap.find(poolKey)!=poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!");
-      }
-
-      //pool erstellen
-      MpiPoolPtr mpiPool(new TbCbVectorMpiPool<T>(poolKey, mpiRemoteRank, mpiTag, comm, startPoolSize) ); 
-
-      //pool "speichern"
-      TbCbVectorMpiPool< value_type >::poolMap[poolKey] = mpiPool;
-
-      return mpiPool; 
-   }
-   static void deleteTbCbVectorMpiPool(CbVectorKey poolKey)
-   {
-      MpiPoolPtrMapIter it = TbCbVectorMpiPool< value_type >::poolMap.find(poolKey);
-      if( it==poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"kein Pool mit dem key vorhanden");
-      }
-      TbCbVectorMpiPool< value_type >::poolMap.erase(it);
-   }
-   /*==================================================================*/
-   static MpiPoolPtr getTbCbVectorMpiPool(CbVectorKey poolKey)
-   {
-      MpiPoolPtrMapIter it;
-      if( (it=TbCbVectorMpiPool< T >::poolMap.find(poolKey))!=TbCbVectorMpiPool< T >::poolMap.end() ) 
-      {
-         return it->second;
-      }
-      return MpiPoolPtr();
-   }
-   /*==================================================================*/
-   static std::string getInfoString()
-   {
-      std::stringstream out;  
-      out<<"TbCbVectorMpiPool<"<< typeid( T ).name()  << ") - Info:"<<std::endl;
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-         out<<"pool with key("            <<std::setw(15)<<it->first<<") "
-         <<"stores "                  <<std::setw(12)<<it->second->getNofStoredVectors() <<" vectors " 
-         <<", elements to transfer = "<<std::setw(15)<<it->second->getPoolSize() 
-         <<" ( "<< it->second->getPoolSize()*sizeof( T ) / ( 1024.0 * 1024.0 ) << " MB )" <<std::endl;
-      return out.str();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   static bool consistencyCheck()
-   {
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-      {
-         if( !it->second-> CbVectorPool<T>::consistencyCheck() ) 
-         {
-            return false;         
-         }
-      }
-
-      return true;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   static void eraseMap()
-   {
-      poolMap.clear();
-   }
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   TbCbVectorMpiPool(CbVectorKey poolKey, int mpiRemoteRank, int mpiTag, MPI_Comm comm, size_type startPoolSize )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-      , poolKey(poolKey)                           
-      , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-      , counterPrepareReceiveDataOrder(0)          
-      , counterSendDataOrder(0)                    
-      , counterReceiveDataOrder(0)                 
-      , counterPrepareForReceive(0)                
-      , counterReceive(0)                          
-      , counterPrepareForSend(0)                   
-      , counterSend(0)                             
-      , comm(comm)                                 
-      , receiveRequest(MPI_REQUEST_NULL)
-      , sendRequest(MPI_REQUEST_NULL)
-      , mpiRemoteRank(mpiRemoteRank)               
-      , mpiTag(mpiTag)                              
-   {
-      if     ( (std::string)typeid(value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else throw UbException(UB_EXARGS,"no MpiDataType for T"+(std::string)typeid(T).name());
-   }
-
-public:
-   /*==================================================================*/
-   //returns key of Pool in MpiPoolMap
-   CbVectorKey  getPoolKey()    const { return  this->poolKey;       }
-   /*==================================================================*/
-   //returns rank of process pool data will be send to/received from
-   int  getRemoteRank() const { return  this->mpiRemoteRank; }
-   /*==================================================================*/
-   //returns tag of process pool data will be send to/received from
-   int  getRemoteTag()  const { return  this->mpiTag;        }
-
-protected:
-   /*==================================================================*/
-   void sendDataOrder()
-   {
-      counterSendDataOrder++;
-      if(counterSendDataOrder==this->cbVectorMap.size())
-      {
-         //allg.: bei MPI muss man darauf achten, dass bei unblocked operationen die puffer (aus dem oder in den 
-         //geschrieben wird auch noch vorhanden sind!!! wuerde man hier z.B. einen lokalen vector mit Isend() los-
-         //schicken, dann wurde der scope verlassen werden und der vector evtl geloescht werden, bevor mpi den
-         //vorgang abgeschlossen hat!!! ->  tmpOrderVec ist class-member!!!
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1;
-         tmpSendOrderVec.resize(nofElements);//std::vector< unsigned > vec(nofElements);
-         unsigned index = 0;
-         tmpSendOrderVec[index++] = (unsigned)this->pool.size(); //= laenge des vectors
-         if(this->nextCbVectorStartIndexInPool != this->pool.size())  throw UbException(UB_EXARGS,"an dieser Stelle sollten nextStartIndex und pool.size() identisch sein!!!");
-         for(CbVectorMapIter it = this->cbVectorMap.begin(); it!=this->cbVectorMap.end(); ++it)
-         {
-            CbVectorKey vectorKey=0;
-            size_type   dataSize=0, startIndexInPool=0;
-            this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-            if(it->first != vectorKey) throw UbException(UB_EXARGS,"key mismatch!");
-
-            tmpSendOrderVec[index++] = (unsigned)vectorKey;         //vectorKey == allocator.getAllocatorKey()
-            tmpSendOrderVec[index++] = (unsigned)startIndexInPool;  //startIndex in poolVector
-            tmpSendOrderVec[index++] = (unsigned)dataSize;          //dataSize
-         }
-         MPI_Isend(&tmpSendOrderVec[0],(int)tmpSendOrderVec.size(), MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, &sendRequest);
-
-         counterSendDataOrder=0;
-
-         nofStoredVectors = this->cbVectorMap.size();
-
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-#ifdef _DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void receiveDataOrder()
-   {
-      counterReceiveDataOrder++;
-      if(counterReceiveDataOrder==this->cbVectorMap.size())
-      {
-         //receiveRequest.Wait();
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-         std::vector< unsigned > tmpRecvOrderVec;
-         tmpRecvOrderVec.resize(nofElements);
-
-         //MPI_Status status;
-         MPI_Recv(&tmpRecvOrderVec[0], nofElements, MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, MPI_STATUS_IGNORE);
-
-         if(nofElements!=(unsigned)tmpRecvOrderVec.size())
-            throw UbException(UB_EXARGS,"error... vec size stimmt nicht");
-
-         unsigned index = 0;
-         this->nextCbVectorStartIndexInPool = tmpRecvOrderVec[index++]; //= laenge des vectors
-         this->pool.resize(this->nextCbVectorStartIndexInPool);
-         CbVectorMapIter it = this->cbVectorMap.begin();
-         for(/*index*/; index<nofElements; index+=3, ++it)
-         {
-            CbVectorKey vectorKey        = (CbVectorKey)tmpRecvOrderVec.at(index  );
-            size_type   startIndexInPool = (size_type)tmpRecvOrderVec.at(index+1);
-            size_type   dataSize         = (size_type)tmpRecvOrderVec.at(index+2);
-
-            //if(it==this->cbVectorMap.end() || it->first != vectorKey ) 
-               //throw UbException(UB_EXARGS, "entweder hat map nicht die gleiche reihenfolge oder vectorKey = "+UbSystem::toString(vectorKey)+" nicht vorhanden");
-            if (it==this->cbVectorMap.end())
-               throw UbException(UB_EXARGS,"map ist leer");
-            else if (it->first != vectorKey)
-               throw UbException(UB_EXARGS, "vectorKey = "+UbSystem::toString(vectorKey)+" nicht vorhanden it->first =" + UbSystem::toString(it->first));
-
-            this->setCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-         }
-         if(it!=this->cbVectorMap.end())
-            throw UbException(UB_EXARGS,"error... in der map sind scheinbar noch weiter elemente vorhanden, die es auf der send seite nicht gibt...");
-
-         counterReceiveDataOrder = 0;
-         nofStoredVectors = this->cbVectorMap.size();
-
-#ifdef _DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void prepareForSendData()
-   {
-      //da sendDataOrder einen request verwendet muss man hier immer abfragen
-      if(counterPrepareForSend==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         if(sendRequest != MPI_REQUEST_NULL) MPI_Wait(&sendRequest, MPI_STATUS_IGNORE);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-
-      counterPrepareForSend++;
-
-      if(counterPrepareForSend==nofStoredVectors)
-      {
-         counterPrepareForSend=0;  
-      }
-
-
-      //A - non blocking
-      ////der ERSTE is entscheidend 
-      ////Grund: wenn man 
-      //// for(all trans) { trans->prepare(); trans->fillBuffer(); }
-      //// aufruft, dann wuerde u.U. der Buffer neu beschrieben werden obwohl noch nicht versendet wurde!!!
-      //counterPrepareForSend++;
-      //if(counterPrepareForSend==1)
-      //{
-      //   if(sendRequest != MPI::REQUEST_NULL) sendRequest.Wait();
-      //}
-      //
-      //if(counterPrepareForSend==nofStoredVectors)
-      //   counterPrepareForSend=0;  
-   }
-   /*==================================================================*/
-   void sendData()
-   {
-      //A - non blocking
-      //der LETZTE is entscheidend 
-      //counterSend++;
-      //if(counterSend==nofStoredVectors)
-      //{
-      //   //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-      //   sendRequest = comm.Isend(&pool[0],(int)nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //   counterSend=0;
-      //}
-      //B - blocking
-      //der LETZTE is entscheidend 
-      counterSend++;
-      if(counterSend==nofStoredVectors)
-      {
-         //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-         //synchronous send 
-         //comm.Ssend(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-#ifdef _DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-
-         //standard send
-         MPI_Send(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-////////////////////////////////////////////////////////////////////////////////////////////
-//DEBUG///////////////////////////////////////
-         //int irank;
-         //MPI_Comm_rank(MPI_COMM_WORLD, &irank);
-         //std::cout << "MPI_Send: " << irank <<  " "  << mpiRemoteRank << " "  <<mpiTag<<std::endl;
-///////////////////////////////////////////////////
-         counterSend=0;
-      }                           
-   }
-   /*==================================================================*/
-   void prepareForReceiveData()
-   {
-      //A - non blocking
-      //sobald der Letzte kann man den den request holen.
-      //andernfalls kann nicht gewaehrleistet werden, dass evtl noch mit dem buffer gearbeitet wird!!!
-      counterPrepareForReceive++;
-      if(counterPrepareForReceive==this->nofStoredVectors)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-#ifdef _DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-         MPI_Irecv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &receiveRequest);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         counterPrepareForReceive=0;
-      }
-   }
-   /*==================================================================*/
-   void receiveData()
-   {
-      //A - non blocking
-      //sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      //denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      if(counterReceive==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-      counterReceive++;
-      if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      {
-         counterReceive=0;
-      }
-
-      ////B - blocking
-      ////sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      ////denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      //if(counterReceive==0)
-      //{
-      //   comm.Recv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //}
-      //counterReceive++;
-      //if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      //   counterReceive=0;
-   }
-
-protected:
-   CbVectorKey poolKey; //eindeutiger schluessel fuer pool
-   size_type nofStoredVectors;
-
-   size_type counterPrepareReceiveDataOrder;
-   size_type counterSendDataOrder;
-   size_type counterReceiveDataOrder;
-   size_type counterPrepareForReceive;
-   size_type counterReceive;
-   size_type counterPrepareForSend;
-   size_type counterSend;
-
-   std::vector< unsigned > tmpSendOrderVec; //wird zur temp speicherung der anordnung benoetigt
-
-   MPI_Comm     comm;
-   MPI_Request  receiveRequest;
-   MPI_Request  sendRequest;
-   //MPI_Status   sendStatus;
-   //MPI_Status   receiveStatus;
-   MPI_Datatype mpiDataType;
-
-   int mpiRemoteRank, mpiTag;
-
-#ifdef _DEBUG
-   T* orgPoolVectorStartPointer;
-#endif
-};
-
-template<typename T>
-typename TbCbVectorMpiPool<T>::MpiPoolPtrMap TbCbVectorMpiPool<T>::poolMap;
-
-//////////////////////////////////////////////////////////////////////////
-//  TbSenderMpiPool
-//////////////////////////////////////////////////////////////////////////
-template<typename T>
-class TbCbVectorSenderMpiPool : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;
-
-public:
-   TbCbVectorSenderMpiPool(unsigned int cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
-   }
-   ~TbCbVectorSenderMpiPool()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()          { this->mpiVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
-   CbVector< T >& receiveData() { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
-   void prepareForSend()        { this->mpiVectorPool->prepareForSendData(); }
-   void sendData()              { this->mpiVectorPool->sendData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  this->mpiVectorPool->getRemoteRank(); }
-   int  getSendTbTag()    const { return  this->mpiVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-   int  getRecvFromTag()  const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-
-   std::string toString() const { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool<T>* mpiVectorPool;
-};
-
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorReceiverMpiPool : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorReceiverMpiPool(unsigned int cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
-   }
-   ~TbCbVectorReceiverMpiPool()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
-   void receiveDataSize()   { this->mpiVectorPool->receiveDataOrder(); }  
-   void sendData()          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   void prepareForReceive() { this->mpiVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()
-   { 
-      this->mpiVectorPool->receiveData();
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getSendTbTag()    const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getRecvFromRank() const { return  this->mpiVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->mpiVectorPool->getRemoteTag();  }
-
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool<T>* mpiVectorPool;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPIPOOL_H
- 
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool2.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool2.h
deleted file mode 100644
index e09d9f4c295be8f1e95ed84eea90389f7fe22f98..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool2.h
+++ /dev/null
@@ -1,453 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPIPOOL2_H
-#define TBTRANSMITTERMPIPOOL2_H
-
-#ifdef VF_MPI
-
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <vector>
-#include <map>
-
-#include <mpi.h>
-
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//TbCbVectorMpiPoolSender/Receiver
-//diese verschicken immer einen VectorPool. Letztlich einen langen vector,
-//der eigentlich aus vielen kleinen besteht
-//jeder MpiPoolVector hat einen pointer auf die startadresse in diesem vector
-//die informationen werden im TbMpiVectorPool verwaltet
-//MpiPoolVector verhaelt sich nach aussen hin mit einschraenkungen wie ein std::vector
-//und kann somit bei den vector connector verwendet werden
-//man kann die klassen theoretisch verallgemeinern.
-
-template<typename T> class TbCbVectorSenderMpiPool2;
-template<typename T> class TbCbVectorReceiverMpiPool2;
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorMpiPool2 : public CbVectorPool<T>
-{
-public:
-   typedef boost::shared_ptr< TbCbVectorMpiPool2< T > > MpiPoolPtr;
-
-   //////////////////////////////////////////////////////////////////////////
-   typedef std::map< int, MpiPoolPtr >      MpiPoolPtrMap;
-   typedef typename MpiPoolPtrMap::iterator MpiPoolPtrMapIter;
-
-   //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef unsigned CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-   //////////////////////////////////////////////////////////////////////////
-   friend class TbCbVectorSenderMpiPool2< T >; 
-   friend class TbCbVectorReceiverMpiPool2< T >; 
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   static MpiPoolPtrMap poolMap;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //STATIC MEMBERS
-   //////////////////////////////////////////////////////////////////////////
-   //createTbCbVectorMpiPool:
-   // poolKey      : Schluessel fuer eindeutige Indizierung in Map
-   // mpiRemoteRank: mpi-rank des Empfaengers/Senders
-   // mpiTag       : mpi-tag mit dem empfangen/gesendet wird
-static MpiPoolPtr createTbCbVectorMpiPool(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI_Comm comm, const size_type& startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-   {
-      if( poolMap.find(poolKey)!=poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!");
-      }
-      //pool erstellen
-      MpiPoolPtr mpiPool(new TbCbVectorMpiPool2<T>(poolKey, mpiRemoteRank, mpiTag, comm, startPoolSize) ); 
-
-      //pool "speichern"
-      TbCbVectorMpiPool2< value_type >::poolMap[poolKey] = mpiPool;
-
-      return mpiPool; 
-   }
-   static void deleteTbCbVectorMpiPool(const int& poolKey)
-   {
-      MpiPoolPtrMapIter it = TbCbVectorMpiPool2< value_type >::poolMap.find(poolKey);
-      if( it==poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"kein Pool mit dem key vorhanden");
-      }
-      TbCbVectorMpiPool2< value_type >::poolMap.erase(it);
-   }
-   /*==================================================================*/
-   static MpiPoolPtr getTbCbVectorMpiPool(const int& poolKey)
-   {
-      MpiPoolPtrMapIter it;
-      if( (it=TbCbVectorMpiPool2< T >::poolMap.find(poolKey))!=TbCbVectorMpiPool2< T >::poolMap.end() ) 
-      {
-         return it->second;
-      }
-      return MpiPoolPtr();
-   }
-   /*==================================================================*/
-   static std::string getInfoString()
-   {
-      std::stringstream out;  
-      out<<"TbCbVectorMpiPool<"<< typeid( T ).name()  << ") - Info:"<<std::endl;
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-         out<<"pool with key("            <<std::setw(15)<<it->first<<") "
-         <<"stores "                  <<std::setw(12)<<it->second->getNofStoredVectors() <<" vectors " 
-         <<", elements to transfer = "<<std::setw(15)<<it->second->getPoolSize() 
-         <<" ( "<< it->second->getPoolSize()*sizeof( T ) / ( 1024.0 * 1024.0 ) << " MB )" <<std::endl;
-      return out.str();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   static bool consistencyCheck()
-   {
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-      {
-         if( !it->second-> CbVectorPool<T>::consistencyCheck() ) 
-         {
-            return false;         
-         }
-      }
-
-      return true;
-   }
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-TbCbVectorMpiPool2(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI_Comm comm, const size_type& startPoolSize )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-      , poolKey(poolKey)                           
-      , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-      , counterPrepareReceiveDataOrder(0)          
-      , counterSendDataOrder(0)                    
-      , counterReceiveDataOrder(0)                 
-      , counterPrepareForReceive(0)                
-      , counterReceive(0)                          
-      , counterPrepareForSend(0)                   
-      , counterSend(0)                             
-      , comm(comm)                                 
-      , receiveRequest(MPI_REQUEST_NULL)
-      , sendRequest(MPI_REQUEST_NULL)
-      , mpiRemoteRank(mpiRemoteRank)               
-      , mpiTag(mpiTag)
-   {
-      if     ( (std::string)typeid(value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else throw UbException(UB_EXARGS,"no MpiDataType for T"+(std::string)typeid(T).name());
-   }
-
-public:
-   /*==================================================================*/
-   //returns key of Pool in MpiPoolMap
-   int  getPoolKey()    const { return  this->poolKey;       }
-   /*==================================================================*/
-   //returns rank of process pool data will be send to/received from
-   int  getRemoteRank() const { return  this->mpiRemoteRank; }
-   /*==================================================================*/
-   //returns tag of process pool data will be send to/received from
-   int  getRemoteTag()  const { return  this->mpiTag;        }
-
-protected:
-   /*==================================================================*/
-   void sendDataOrder()
-   {
-      counterSendDataOrder++;
-      if(counterSendDataOrder==this->cbVectorMap.size())
-      {
-         //allg.: bei MPI muss man darauf achten, dass bei unblocked operationen die puffer (aus dem oder in den 
-         //geschrieben wird auch noch vorhanden sind!!! wuerde man hier z.B. einen lokalen vector mit Isend() los-
-         //schicken, dann wurde der scope verlassen werden und der vector evtl geloescht werden, bevor mpi den
-         //vorgang abgeschlossen hat!!! ->  tmpOrderVec ist class-member!!!
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1;
-         tmpSendOrderVec.resize(nofElements);//std::vector< unsigned > vec(nofElements);
-         unsigned index = 0;
-         tmpSendOrderVec[index++] = (unsigned)this->pool.size(); //= laenge des vectors
-         if(this->nextCbVectorStartIndexInPool != this->pool.size())  throw UbException(UB_EXARGS,"an dieser Stelle sollten nextStartIndex und pool.size() identisch sein!!!");
-         for(CbVectorMapIter it = this->cbVectorMap.begin(); it!=this->cbVectorMap.end(); ++it)
-         {
-            CbVectorKey vectorKey=0;
-            size_type   dataSize=0, startIndexInPool=0;
-            this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-            if(it->first != vectorKey) throw UbException(UB_EXARGS,"key mismatch!");
-
-            tmpSendOrderVec[index++] = (unsigned)vectorKey;         //vectorKey == allocator.getAllocatorKey()
-            tmpSendOrderVec[index++] = (unsigned)startIndexInPool;  //startIndex in poolVector
-            tmpSendOrderVec[index++] = (unsigned)dataSize;          //dataSize
-         }
-
-         MPI_Isend(&tmpSendOrderVec[0],(int)tmpSendOrderVec.size(), MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, &sendRequest);
-
-         counterSendDataOrder=0;
-
-         nofStoredVectors = this->cbVectorMap.size();
-
-#ifdef DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void receiveDataOrder()
-   {
-      counterReceiveDataOrder++;
-      if(counterReceiveDataOrder==this->cbVectorMap.size())
-      {
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-
-         std::vector< unsigned > tmpRecvOrderVec;
-         tmpRecvOrderVec.resize(nofElements);
-
-         MPI_Irecv(&tmpRecvOrderVec[0], nofElements, MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, &receiveRequest);
-         //MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-
-         //if(nofElements!=(unsigned)tmpRecvOrderVec.size())
-         //   throw UbException(UB_EXARGS,"error... vec size stimmt nicht");
-
-         //unsigned index = 0;
-         //this->nextCbVectorStartIndexInPool = tmpRecvOrderVec[index++]; //= laenge des vectors
-         //this->pool.resize(this->nextCbVectorStartIndexInPool);
-         //CbVectorMapIter it = this->cbVectorMap.begin();
-         //for(/*index*/; index<nofElements; index+=3, ++it)
-         //{
-         //   CbVectorKey vectorKey        = (CbVectorKey)tmpRecvOrderVec.at(index  );
-         //   size_type   startIndexInPool = (size_type)tmpRecvOrderVec.at(index+1);
-         //   size_type   dataSize         = (size_type)tmpRecvOrderVec.at(index+2);
-
-         //   if(it==this->cbVectorMap.end() || it->first != vectorKey ) 
-         //      throw UbException(UB_EXARGS,"entweder hat map nicht die gleiche reihenfolge oder vectorKey nicht vorhanden");
-
-         //   this->setCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-         //}
-         //if(it!=this->cbVectorMap.end())
-         //   throw UbException(UB_EXARGS,"error... in der map sind scheinbar noch weiter elemente vorhanden, die es auf der send seite nicht gibt...");
-
-         counterReceiveDataOrder = 0;
-         nofStoredVectors = this->cbVectorMap.size();
-
-#ifdef DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   //////////////////////////////////////////////////////////////////////////
-   void saveDataOrder()
-   {
-      if(counterPrepareForSend==0)
-      {
-         if(sendRequest != MPI_REQUEST_NULL) MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-      }
-
-      counterPrepareForSend++;
-
-      if(counterPrepareForSend==nofStoredVectors)
-      {
-         counterPrepareForSend=0;  
-      }
-   }
-   /*==================================================================*/
-   void prepareForSendData()
-   {
-      //da sendDataOrder einen request verwendet muss man hier immer abfragen
-      if(counterPrepareForSend==0)
-      {
-         if(sendRequest != MPI_REQUEST_NULL) MPI_Wait(&sendRequest, MPI_STATUS_IGNORE);
-      }
-
-      counterPrepareForSend++;
-
-      if(counterPrepareForSend==nofStoredVectors)
-      {
-         counterPrepareForSend=0;  
-      }
-
-   }
-   /*==================================================================*/
-   void sendData()
-   {
-      //A - non blocking
-      //der LETZTE is entscheidend 
-      counterSend++;
-      if(counterSend==nofStoredVectors)
-      {
-#ifdef DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-         MPI_Isend(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &sendRequest);
-////////////////////////////////////////////////////////////////////////////////////////////
-         counterSend=0;
-      }                           
-   }
-   /*==================================================================*/
-   void prepareForReceiveData()
-   {
-
-   }
-   /*==================================================================*/
-   void receiveData()
-   {
-      //A - non blocking
-      //sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      //denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      //if(counterReceive==0)
-      //{
-      //   MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-      //}
-      //counterReceive++;
-      //if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      //{
-      //   counterReceive=0;
-      //}
-
-      counterPrepareForReceive++;
-      if(counterPrepareForReceive==this->nofStoredVectors)
-      {
-#ifdef DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-         MPI_Irecv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &receiveRequest);
-         MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-         counterPrepareForReceive=0;
-      }
-   }
-
-protected:
-   int       poolKey; //eindeutiger schluessel fuer pool
-   size_type nofStoredVectors;
-
-   size_type counterPrepareReceiveDataOrder;
-   size_type counterSendDataOrder;
-   size_type counterReceiveDataOrder;
-   size_type counterPrepareForReceive;
-   size_type counterReceive;
-   size_type counterPrepareForSend;
-   size_type counterSend;
-
-   std::vector< unsigned > tmpSendOrderVec; //wird zur temp speicherung der anordnung benoetigt
-
-   MPI_Comm     comm;
-   MPI_Request  receiveRequest;
-   MPI_Request  sendRequest;
-   MPI_Datatype mpiDataType;
-   int mpiRemoteRank, mpiTag;
-
-#ifdef DEBUG
-   T* orgPoolVectorStartPointer;
-#endif
-};
-
-template<typename T>
-typename TbCbVectorMpiPool2<T>::MpiPoolPtrMap TbCbVectorMpiPool2<T>::poolMap;
-
-
-//////////////////////////////////////////////////////////////////////////
-//  TbSenderMpiPool
-//////////////////////////////////////////////////////////////////////////
-template<typename T>
-class TbCbVectorSenderMpiPool2 : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorSenderMpiPool2(const unsigned int& cbVectorKey, TbCbVectorMpiPool2< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
-   }
-   ~TbCbVectorSenderMpiPool2()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool2< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()          { this->mpiVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
-   CbVector< T >& receiveData() { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
-   void prepareForSend()        { this->mpiVectorPool->prepareForSendData(); }
-   void sendData()              { this->mpiVectorPool->sendData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  this->mpiVectorPool->getRemoteRank(); }
-   int  getSendTbTag()    const { return  this->mpiVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-   int  getRecvFromTag()  const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-
-   std::string toString() const { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool2<T>* mpiVectorPool;
-};
-
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorReceiverMpiPool2 : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorReceiverMpiPool2(const unsigned int& cbVectorKey, TbCbVectorMpiPool2< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
-   }
-   ~TbCbVectorReceiverMpiPool2()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool2< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
-   void receiveDataSize()   { this->mpiVectorPool->receiveDataOrder(); }  
-   void sendData()          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   void prepareForReceive() { this->mpiVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()
-   { 
-      this->mpiVectorPool->receiveData();
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getSendTbTag()    const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getRecvFromRank() const { return  this->mpiVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->mpiVectorPool->getRemoteTag();  }
-
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool2<T>* mpiVectorPool;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPIPOOL_H
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool3.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool3.h
deleted file mode 100644
index 1666ecf080a9a4a1dceb22108eed952dddd1e0b0..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPool3.h
+++ /dev/null
@@ -1,530 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPIPOOL_H
-#define TBTRANSMITTERMPIPOOL_H
-
-#ifdef VF_MPI
-
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <vector>
-#include <map>
-
-#include <mpi.h>
-
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-
-#include <boost/shared_ptr.hpp>
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//TbCbVectorMpiPoolSender/Receiver
-//diese verschicken immer einen VectorPool. Letztlich einen langen vector,
-//der eigentlich aus vielen kleinen besteht
-//jeder MpiPoolVector hat einen pointer auf die startadresse in diesem vector
-//die informationen werden im TbMpiVectorPool verwaltet
-//MpiPoolVector verhaelt sich nach aussen hin mit einschraenkungen wie ein std::vector
-//und kann somit bei den vector connector verwendet werden
-//man kann die klassen theoretisch verallgemeinern.
-
-template<typename T> class TbCbVectorSenderMpiPool;
-template<typename T> class TbCbVectorReceiverMpiPool;
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorMpiPool : public CbVectorPool<T>
-{
-public:
-   typedef boost::shared_ptr< TbCbVectorMpiPool< T > > MpiPoolPtr;
-
-   //////////////////////////////////////////////////////////////////////////
-   typedef std::map< std::string, MpiPoolPtr >      MpiPoolPtrMap;
-   typedef typename MpiPoolPtrMap::iterator MpiPoolPtrMapIter;
-
-   //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef std::string CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-   //////////////////////////////////////////////////////////////////////////
-   friend class TbCbVectorSenderMpiPool< T >; 
-   friend class TbCbVectorReceiverMpiPool< T >; 
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   static MpiPoolPtrMap poolMap;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //STATIC MEMBERS
-   //////////////////////////////////////////////////////////////////////////
-   //createTbCbVectorMpiPool:
-   // poolKey      : Schluessel fuer eindeutige Indizierung in Map
-   // mpiRemoteRank: mpi-rank des Empfaengers/Senders
-   // mpiTag       : mpi-tag mit dem empfangen/gesendet wird
-   static MpiPoolPtr createTbCbVectorMpiPool(CbVectorKey poolKey, int mpiRemoteRank, int mpiTag, MPI_Comm comm, size_type startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-
-   {
-      if( poolMap.find(poolKey)!=poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!");
-      }
-
-      //pool erstellen
-      MpiPoolPtr mpiPool(new TbCbVectorMpiPool<T>(poolKey, mpiRemoteRank, mpiTag, comm, startPoolSize) ); 
-
-      //pool "speichern"
-      TbCbVectorMpiPool< value_type >::poolMap[poolKey] = mpiPool;
-
-      return mpiPool; 
-   }
-   static void deleteTbCbVectorMpiPool(CbVectorKey poolKey)
-   {
-      MpiPoolPtrMapIter it = TbCbVectorMpiPool< value_type >::poolMap.find(poolKey);
-      if( it==poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"kein Pool mit dem key vorhanden");
-      }
-      TbCbVectorMpiPool< value_type >::poolMap.erase(it);
-   }
-   /*==================================================================*/
-   static MpiPoolPtr getTbCbVectorMpiPool(CbVectorKey poolKey)
-   {
-      MpiPoolPtrMapIter it;
-      if( (it=TbCbVectorMpiPool< T >::poolMap.find(poolKey))!=TbCbVectorMpiPool< T >::poolMap.end() ) 
-      {
-         return it->second;
-      }
-      return MpiPoolPtr();
-   }
-   /*==================================================================*/
-   static std::string getInfoString()
-   {
-      std::stringstream out;  
-      out<<"TbCbVectorMpiPool<"<< typeid( T ).name()  << ") - Info:"<<std::endl;
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-         out<<"pool with key("            <<std::setw(15)<<it->first<<") "
-         <<"stores "                  <<std::setw(12)<<it->second->getNofStoredVectors() <<" vectors " 
-         <<", elements to transfer = "<<std::setw(15)<<it->second->getPoolSize() 
-         <<" ( "<< it->second->getPoolSize()*sizeof( T ) / ( 1024.0 * 1024.0 ) << " MB )" <<std::endl;
-      return out.str();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   static bool consistencyCheck()
-   {
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-      {
-         if( !it->second-> CbVectorPool<T>::consistencyCheck() ) 
-         {
-            return false;         
-         }
-      }
-
-      return true;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   static void eraseMap()
-   {
-      poolMap.clear();
-   }
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   TbCbVectorMpiPool(CbVectorKey poolKey, int mpiRemoteRank, int mpiTag, MPI_Comm comm, size_type startPoolSize )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-      , poolKey(poolKey)                           
-      , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-      , counterPrepareReceiveDataOrder(0)          
-      , counterSendDataOrder(0)                    
-      , counterReceiveDataOrder(0)                 
-      , counterPrepareForReceive(0)                
-      , counterReceive(0)                          
-      , counterPrepareForSend(0)                   
-      , counterSend(0)                             
-      , comm(comm)                                 
-      , receiveRequest(MPI_REQUEST_NULL)
-      , sendRequest(MPI_REQUEST_NULL)
-      , mpiRemoteRank(mpiRemoteRank)               
-      , mpiTag(mpiTag)                              
-   {
-      if     ( (std::string)typeid(value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else throw UbException(UB_EXARGS,"no MpiDataType for T"+(std::string)typeid(T).name());
-   }
-
-public:
-   /*==================================================================*/
-   //returns key of Pool in MpiPoolMap
-   CbVectorKey  getPoolKey()    const { return  this->poolKey;       }
-   /*==================================================================*/
-   //returns rank of process pool data will be send to/received from
-   int  getRemoteRank() const { return  this->mpiRemoteRank; }
-   /*==================================================================*/
-   //returns tag of process pool data will be send to/received from
-   int  getRemoteTag()  const { return  this->mpiTag;        }
-
-protected:
-   /*==================================================================*/
-   void sendDataOrder()
-   {
-      counterSendDataOrder++;
-      if(counterSendDataOrder==this->cbVectorMap.size())
-      {
-         //allg.: bei MPI muss man darauf achten, dass bei unblocked operationen die puffer (aus dem oder in den 
-         //geschrieben wird auch noch vorhanden sind!!! wuerde man hier z.B. einen lokalen vector mit Isend() los-
-         //schicken, dann wurde der scope verlassen werden und der vector evtl geloescht werden, bevor mpi den
-         //vorgang abgeschlossen hat!!! ->  tmpOrderVec ist class-member!!!
-         //unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1;
-         //tmpSendOrderVec.resize(nofElements);//std::vector< unsigned > vec(nofElements);
-         //unsigned index = 0;
-         //tmpSendOrderVec[index++] = (unsigned)this->pool.size(); //= laenge des vectors
-         tmpSendOrderVec = "";
-         tmpSendOrderVec+= UbSystem::toString(this->pool.size()+"#";
-         if(this->nextCbVectorStartIndexInPool != this->pool.size())  throw UbException(UB_EXARGS,"an dieser Stelle sollten nextStartIndex und pool.size() identisch sein!!!");
-         
-         for(CbVectorMapIter it = this->cbVectorMap.begin(); it!=this->cbVectorMap.end(); ++it)
-         {
-            //CbVectorKey vectorKey=0;
-            //size_type   dataSize=0, startIndexInPool=0;
-            //this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-            //if(it->first != vectorKey) throw UbException(UB_EXARGS,"key mismatch!");
-
-            //tmpSendOrderVec[index++] = (unsigned)vectorKey;         //vectorKey == allocator.getAllocatorKey()
-            //tmpSendOrderVec[index++] = (unsigned)startIndexInPool;  //startIndex in poolVector
-            //tmpSendOrderVec[index++] = (unsigned)dataSize;          //dataSize
-
-            CbVectorKey vectorKey = "";
-            size_type   dataSize = 0, startIndexInPool = 0;
-            this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize);
-            if (it->first != vectorKey) throw UbException(UB_EXARGS, "key mismatch!");
-            str += vectorKey+"#"+UbSystem::toString(startIndexInPool)+"#"+UbSystem::toString(dataSize);
-            
-         }
-
-         int vsize = tmpSendOrderVec.length();
-         MPI_Isend(&vsize, 1, MPI_INT, mpiRemoteRank, mpiTag, comm, &sendRequest[0]);
-
-         MPI_Isend(&tmpSendOrderVec.c_str(), vsize, MPI_CHAR, mpiRemoteRank, mpiTag, comm, &sendRequest[1]);
-
-         counterSendDataOrder=0;
-
-         nofStoredVectors = this->cbVectorMap.size();
-
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-#ifdef _DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void receiveDataOrder()
-   {
-      counterReceiveDataOrder++;
-      if(counterReceiveDataOrder==this->cbVectorMap.size())
-      {
-         //receiveRequest.Wait();
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-         std::vector< unsigned > tmpRecvOrderVec;
-         tmpRecvOrderVec.resize(nofElements);
-
-         //MPI_Status status;
-         //MPI_Recv(&tmpRecvOrderVec[0], nofElements, MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, MPI_STATUS_IGNORE);
-
-         MPI_Irecv(&rbuf.blocksSize, 1, MPI_INT, nProcessID, 0, mpi_comm, &request[rcount]);
-
-         if(nofElements!=(unsigned)tmpRecvOrderVec.size())
-            throw UbException(UB_EXARGS,"error... vec size stimmt nicht");
-
-         unsigned index = 0;
-         this->nextCbVectorStartIndexInPool = tmpRecvOrderVec[index++]; //= laenge des vectors
-         this->pool.resize(this->nextCbVectorStartIndexInPool);
-         CbVectorMapIter it = this->cbVectorMap.begin();
-         for(/*index*/; index<nofElements; index+=3, ++it)
-         {
-            CbVectorKey vectorKey        = (CbVectorKey)tmpRecvOrderVec.at(index  );
-            size_type   startIndexInPool = (size_type)tmpRecvOrderVec.at(index+1);
-            size_type   dataSize         = (size_type)tmpRecvOrderVec.at(index+2);
-
-            //if(it==this->cbVectorMap.end() || it->first != vectorKey ) 
-               //throw UbException(UB_EXARGS, "entweder hat map nicht die gleiche reihenfolge oder vectorKey = "+UbSystem::toString(vectorKey)+" nicht vorhanden");
-            if (it==this->cbVectorMap.end())
-               throw UbException(UB_EXARGS,"map ist leer");
-            else if (it->first != vectorKey)
-               throw UbException(UB_EXARGS, "vectorKey = "+UbSystem::toString(vectorKey)+" nicht vorhanden it->first =" + UbSystem::toString(it->first));
-
-            this->setCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-         }
-         if(it!=this->cbVectorMap.end())
-            throw UbException(UB_EXARGS,"error... in der map sind scheinbar noch weiter elemente vorhanden, die es auf der send seite nicht gibt...");
-
-         counterReceiveDataOrder = 0;
-         nofStoredVectors = this->cbVectorMap.size();
-
-#ifdef _DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void prepareForSendData()
-   {
-      //da sendDataOrder einen request verwendet muss man hier immer abfragen
-      if(counterPrepareForSend==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         if(sendRequest != MPI_REQUEST_NULL) MPI_Wait(&sendRequest, MPI_STATUS_IGNORE);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-
-      counterPrepareForSend++;
-
-      if(counterPrepareForSend==nofStoredVectors)
-      {
-         counterPrepareForSend=0;  
-      }
-
-
-      //A - non blocking
-      ////der ERSTE is entscheidend 
-      ////Grund: wenn man 
-      //// for(all trans) { trans->prepare(); trans->fillBuffer(); }
-      //// aufruft, dann wuerde u.U. der Buffer neu beschrieben werden obwohl noch nicht versendet wurde!!!
-      //counterPrepareForSend++;
-      //if(counterPrepareForSend==1)
-      //{
-      //   if(sendRequest != MPI::REQUEST_NULL) sendRequest.Wait();
-      //}
-      //
-      //if(counterPrepareForSend==nofStoredVectors)
-      //   counterPrepareForSend=0;  
-   }
-   /*==================================================================*/
-   void sendData()
-   {
-      //A - non blocking
-      //der LETZTE is entscheidend 
-      //counterSend++;
-      //if(counterSend==nofStoredVectors)
-      //{
-      //   //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-      //   sendRequest = comm.Isend(&pool[0],(int)nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //   counterSend=0;
-      //}
-      //B - blocking
-      //der LETZTE is entscheidend 
-      counterSend++;
-      if(counterSend==nofStoredVectors)
-      {
-         //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-         //synchronous send 
-         //comm.Ssend(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-#ifdef _DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-
-         //standard send
-         MPI_Send(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-////////////////////////////////////////////////////////////////////////////////////////////
-//DEBUG///////////////////////////////////////
-         //int irank;
-         //MPI_Comm_rank(MPI_COMM_WORLD, &irank);
-         //std::cout << "MPI_Send: " << irank <<  " "  << mpiRemoteRank << " "  <<mpiTag<<std::endl;
-///////////////////////////////////////////////////
-         counterSend=0;
-      }                           
-   }
-   /*==================================================================*/
-   void prepareForReceiveData()
-   {
-      //A - non blocking
-      //sobald der Letzte kann man den den request holen.
-      //andernfalls kann nicht gewaehrleistet werden, dass evtl noch mit dem buffer gearbeitet wird!!!
-      counterPrepareForReceive++;
-      if(counterPrepareForReceive==this->nofStoredVectors)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-#ifdef _DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-         MPI_Irecv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &receiveRequest);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         counterPrepareForReceive=0;
-      }
-   }
-   /*==================================================================*/
-   void receiveData()
-   {
-      //A - non blocking
-      //sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      //denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      if(counterReceive==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-      counterReceive++;
-      if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      {
-         counterReceive=0;
-      }
-
-      ////B - blocking
-      ////sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      ////denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      //if(counterReceive==0)
-      //{
-      //   comm.Recv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //}
-      //counterReceive++;
-      //if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      //   counterReceive=0;
-   }
-
-protected:
-   CbVectorKey poolKey; //eindeutiger schluessel fuer pool
-   size_type nofStoredVectors;
-
-   size_type counterPrepareReceiveDataOrder;
-   size_type counterSendDataOrder;
-   size_type counterReceiveDataOrder;
-   size_type counterPrepareForReceive;
-   size_type counterReceive;
-   size_type counterPrepareForSend;
-   size_type counterSend;
-
-   //std::vector< char > tmpSendOrderVec; //wird zur temp speicherung der anordnung benoetigt
-   std::string tmpSendOrderVec;
-
-   MPI_Comm     comm;
-   MPI_Request  receiveRequest;
-   MPI_Request  sendRequest;
-   //MPI_Status   sendStatus;
-   //MPI_Status   receiveStatus;
-   MPI_Datatype mpiDataType;
-
-   int mpiRemoteRank, mpiTag;
-
-   std::vector<MPI_Request> request;
-   int rcount;
-
-#ifdef _DEBUG
-   T* orgPoolVectorStartPointer;
-#endif
-};
-
-template<typename T>
-typename TbCbVectorMpiPool<T>::MpiPoolPtrMap TbCbVectorMpiPool<T>::poolMap;
-
-//////////////////////////////////////////////////////////////////////////
-//  TbSenderMpiPool
-//////////////////////////////////////////////////////////////////////////
-template<typename T>
-class TbCbVectorSenderMpiPool : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;
-
-public:
-   TbCbVectorSenderMpiPool(std::string cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
-   }
-   ~TbCbVectorSenderMpiPool()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()          { this->mpiVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
-   CbVector< T >& receiveData() { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
-   void prepareForSend()        { this->mpiVectorPool->prepareForSendData(); }
-   void sendData()              { this->mpiVectorPool->sendData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  this->mpiVectorPool->getRemoteRank(); }
-   int  getSendTbTag()    const { return  this->mpiVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-   int  getRecvFromTag()  const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-
-   std::string toString() const { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool<T>* mpiVectorPool;
-};
-
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorReceiverMpiPool : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorReceiverMpiPool(std::string cbVectorKey, TbCbVectorMpiPool< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
-   }
-   ~TbCbVectorReceiverMpiPool()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPool< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
-   void receiveDataSize()   { this->mpiVectorPool->receiveDataOrder(); }  
-   void sendData()          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   void prepareForReceive() { this->mpiVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()
-   { 
-      this->mpiVectorPool->receiveData();
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getSendTbTag()    const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getRecvFromRank() const { return  this->mpiVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->mpiVectorPool->getRemoteTag();  }
-
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
-
-protected:
-   TbCbVectorMpiPool<T>* mpiVectorPool;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPIPOOL_H
- 
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPoolEx.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPoolEx.h
deleted file mode 100644
index dcb52d842363effe7dacca9ddbfb0c81efd50b9a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterMpiPoolEx.h
+++ /dev/null
@@ -1,602 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERMPIPOOLEX_H
-#define TBTRANSMITTERMPIPOOLEX_H
-
-#ifdef VF_MPI
-
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <vector>
-#include <map>
-
-#include <mpi.h>
-
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-
-#include <boost/shared_ptr.hpp>
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//TbCbVectorMpiPoolSender/Receiver
-//diese verschicken immer einen VectorPool. Letztlich einen langen vector,
-//der eigentlich aus vielen kleinen besteht
-//jeder MpiPoolVector hat einen pointer auf die startadresse in diesem vector
-//die informationen werden im TbMpiVectorPool verwaltet
-//MpiPoolVector verhaelt sich nach aussen hin mit einschraenkungen wie ein std::vector
-//und kann somit bei den vector connector verwendet werden
-//man kann die klassen theoretisch verallgemeinern.
-
-template<typename T> class TbCbVectorSenderMpiPoolEx;
-template<typename T> class TbCbVectorReceiverMpiPoolEx;
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorMpiPoolEx : public CbVectorPool<T>
-{
-public:
-   typedef boost::shared_ptr< TbCbVectorMpiPoolEx< T > > MpiPoolPtr;
-
-   //////////////////////////////////////////////////////////////////////////
-   typedef std::map< int, MpiPoolPtr >      MpiPoolPtrMap;
-   typedef typename MpiPoolPtrMap::iterator MpiPoolPtrMapIter;
-
-   //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef unsigned CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-   //////////////////////////////////////////////////////////////////////////
-   friend class TbCbVectorSenderMpiPoolEx< T >; 
-   friend class TbCbVectorReceiverMpiPoolEx< T >; 
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   static MpiPoolPtrMap poolMap;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //STATIC MEMBERS
-   //////////////////////////////////////////////////////////////////////////
-   //createTbCbVectorMpiPool:
-   // poolKey      : Schluessel fuer eindeutige Indizierung in Map
-   // mpiRemoteRank: mpi-rank des Empfaengers/Senders
-   // mpiTag       : mpi-tag mit dem empfangen/gesendet wird
-#ifdef USE_MPI_CXX_SYNTAX 
-   static MpiPoolPtr createTbCbVectorMpiPool(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI::Intracomm comm, const size_type& startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-#else
-   static MpiPoolPtr createTbCbVectorMpiPool(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI_Comm comm, const size_type& startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-#endif 
-   {
-      if( poolMap.find(poolKey)!=poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!");
-      }
-
-      //pool erstellen
-      MpiPoolPtr mpiPool(new TbCbVectorMpiPoolEx<T>(poolKey, mpiRemoteRank, mpiTag, comm, startPoolSize) ); 
-
-      //pool "speichern"
-      TbCbVectorMpiPoolEx< value_type >::poolMap[poolKey] = mpiPool;
-
-      return mpiPool; 
-   }
-   static void deleteTbCbVectorMpiPool(const int& poolKey)
-   {
-      MpiPoolPtrMapIter it = TbCbVectorMpiPoolEx< value_type >::poolMap.find(poolKey);
-      if( it==poolMap.end() )
-      {
-         throw UbException(UB_EXARGS,"kein Pool mit dem key vorhanden");
-      }
-      TbCbVectorMpiPoolEx< value_type >::poolMap.erase(it);
-   }
-   /*==================================================================*/
-   static MpiPoolPtr getTbCbVectorMpiPool(const int& poolKey)
-   {
-      MpiPoolPtrMapIter it;
-      if( (it=TbCbVectorMpiPoolEx< T >::poolMap.find(poolKey))!=TbCbVectorMpiPoolEx< T >::poolMap.end() ) 
-      {
-         return it->second;
-      }
-      return MpiPoolPtr();
-   }
-   /*==================================================================*/
-   static std::string getInfoString()
-   {
-      std::stringstream out;  
-      out<<"TbCbVectorMpiPool<"<< typeid( T ).name()  << ") - Info:"<<std::endl;
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-         out<<"pool with key("            <<std::setw(15)<<it->first<<") "
-         <<"stores "                  <<std::setw(12)<<it->second->getNofStoredVectors() <<" vectors " 
-         <<", elements to transfer = "<<std::setw(15)<<it->second->getPoolSize() 
-         <<" ( "<< it->second->getPoolSize()*sizeof( T ) / ( 1024.0 * 1024.0 ) << " MB )" <<std::endl;
-      return out.str();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   static bool consistencyCheck()
-   {
-      for(MpiPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-      {
-         if( !it->second-> CbVectorPool<T>::consistencyCheck() ) 
-         {
-            return false;         
-         }
-      }
-
-      return true;
-   }
-   //////////////////////////////////////////////////////////////////////////
-   static void eraseMap()
-   {
-      poolMap.clear();
-   }
-protected:
-   //////////////////////////////////////////////////////////////////////////
-#ifdef USE_MPI_CXX_SYNTAX 
-   TbCbVectorMpiPoolEx(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI::Intracomm comm, const size_type& startPoolSize )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-      , poolKey(poolKey)                           
-      , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-      , counterPrepareReceiveDataOrder(0)          
-      , counterSendDataOrder(0)                    
-      , counterReceiveDataOrder(0)                 
-      , counterPrepareForReceive(0)                
-      , counterReceive(0)                          
-      , counterPrepareForSend(0)                   
-      , counterSend(0)                             
-      , comm(comm)                                 
-      , receiveRequest(MPI::REQUEST_NULL)
-      , sendRequest(MPI::REQUEST_NULL)
-      , mpiRemoteRank(mpiRemoteRank)               
-      , mpiTag(mpiTag)                              
-   {
-      if     ( (std::string)typeid(value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI::DOUBLE;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI::FLOAT;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI::INT;
-      else throw UbException(UB_EXARGS,"no MpiDataType for T"+(std::string)typeid(T).name());
-   }
-#else
-   TbCbVectorMpiPoolEx(const int& poolKey, const int& mpiRemoteRank, const int& mpiTag, MPI_Comm comm, const size_type& startPoolSize )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-      , poolKey(poolKey)                           
-      , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-      , counterPrepareReceiveDataOrder(0)          
-      , counterSendDataOrder(0)                    
-      , counterReceiveDataOrder(0)                 
-      , counterPrepareForReceive(0)                
-      , counterReceive(0)                          
-      , counterPrepareForSend(0)                   
-      , counterSend(0)                             
-      , comm(comm)                                 
-      , receiveRequest(MPI_REQUEST_NULL)
-      , sendRequest(MPI_REQUEST_NULL)
-      , mpiRemoteRank(mpiRemoteRank)               
-      , mpiTag(mpiTag)                              
-   {
-      if     ( (std::string)typeid(value_type).name()==(std::string)typeid(double).name() ) mpiDataType = MPI_DOUBLE;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(float).name()  ) mpiDataType = MPI_FLOAT;
-      else if( (std::string)typeid(value_type).name()==(std::string)typeid(int).name()    ) mpiDataType = MPI_INT;
-      else throw UbException(UB_EXARGS,"no MpiDataType for T"+(std::string)typeid(T).name());
-   }
-#endif
-
-
-public:
-   /*==================================================================*/
-   //returns key of Pool in MpiPoolMap
-   int  getPoolKey()    const { return  this->poolKey;       }
-   /*==================================================================*/
-   //returns rank of process pool data will be send to/received from
-   int  getRemoteRank() const { return  this->mpiRemoteRank; }
-   /*==================================================================*/
-   //returns tag of process pool data will be send to/received from
-   int  getRemoteTag()  const { return  this->mpiTag;        }
-
-protected:
-   /*==================================================================*/
-   /*==================================================================*/
-   /*==================================================================*/
-   /*==================================================================*/
-   /*==================================================================*/
-   //void prepareTbReceiveDataOrder() 
-   //{
-   //counterPrepareReceiveDataOrder++;
-   //if(counterPrepareReceiveDataOrder==nofStoredVectors)
-   //{
-   //   unsigned nofElements = relationMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-   //   tmpOrderVec.resize(nofElements);
-   //   std::cout<<RcfSystem::getRank()<<" prepForRecv from rank="<<mpiRemoteRank<<" with tag="<<mpiTag<<"e="<<nofElements<<std::endl;
-   //   receiveRequest = comm.Irecv(&tmpOrderVec[0], nofElements, MPI::UNSIGNED, mpiRemoteRank, mpiTag);
-   //   counterPrepareReceiveDataOrder = 0;
-   //}
-   //}
-   /*==================================================================*/
-   void sendDataOrder()
-   {
-      counterSendDataOrder++;
-      if(counterSendDataOrder==this->cbVectorMap.size())
-      {
-         //allg.: bei MPI muss man darauf achten, dass bei unblocked operationen die puffer (aus dem oder in den 
-         //geschrieben wird auch noch vorhanden sind!!! wuerde man hier z.B. einen lokalen vector mit Isend() los-
-         //schicken, dann wurde der scope verlassen werden und der vector evtl geloescht werden, bevor mpi den
-         //vorgang abgeschlossen hat!!! ->  tmpOrderVec ist class-member!!!
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1;
-         tmpSendOrderVec.resize(nofElements);//std::vector< unsigned > vec(nofElements);
-         unsigned index = 0;
-         tmpSendOrderVec[index++] = (unsigned)this->pool.size(); //= laenge des vectors
-         if(this->nextCbVectorStartIndexInPool != this->pool.size())  throw UbException(UB_EXARGS,"an dieser Stelle sollten nextStartIndex und pool.size() identisch sein!!!");
-         for(CbVectorMapIter it = this->cbVectorMap.begin(); it!=this->cbVectorMap.end(); ++it)
-         {
-            CbVectorKey vectorKey=0;
-            size_type   dataSize=0, startIndexInPool=0;
-            this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-            if(it->first != vectorKey) throw UbException(UB_EXARGS,"key mismatch!");
-
-            tmpSendOrderVec[index++] = (unsigned)vectorKey;         //vectorKey == allocator.getAllocatorKey()
-            tmpSendOrderVec[index++] = (unsigned)startIndexInPool;  //startIndex in poolVector
-            tmpSendOrderVec[index++] = (unsigned)dataSize;          //dataSize
-         }
-         //std::cout<<RcfSystem::getRank()<<" send to rank="<<mpiRemoteRank<<" with tag="<<mpiTag<<" e="<<nofElements<<std::endl;
-         //comm.Send(&tmpOrderVec[0],nofElements, MPI::UNSIGNED, mpiRemoteRank, mpiTag);
-
-         ////////////////////////////
-         //int rank;
-         //MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-         //std::cout<<"rank = " << rank <<" sendDataOrder() nofElements = "<<nofElements<<std::endl;
-         ////////////////////////////
-
-#ifdef USE_MPI_CXX_SYNTAX 
-         sendRequest = comm.Isend(&tmpSendOrderVec[0],(int)tmpSendOrderVec.size(), MPI::UNSIGNED, mpiRemoteRank, mpiTag);
-#else
-         MPI_Isend(&tmpSendOrderVec[0],(int)tmpSendOrderVec.size(), MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, &sendRequest);
-#endif
-         counterSendDataOrder=0;
-
-         nofStoredVectors = this->cbVectorMap.size();
-
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-#ifdef DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void receiveDataOrder()
-   {
-      counterReceiveDataOrder++;
-      if(counterReceiveDataOrder==this->cbVectorMap.size())
-      {
-         //receiveRequest.Wait();
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-
-         //////////////TODO////////////DEBUG
-         //int rank;
-         //MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-         //std::cout<<"rank = " << rank <<" receiveDataOrder() nofElements = "<<nofElements << " from " << mpiRemoteRank <<std::endl;
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveDataOrder()"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         //////////////////////////
-
-         std::vector< unsigned > tmpRecvOrderVec;
-         tmpRecvOrderVec.resize(nofElements);
-
-#ifdef USE_MPI_CXX_SYNTAX 
-         comm.Recv(&tmpRecvOrderVec[0], nofElements, MPI::UNSIGNED, mpiRemoteRank, mpiTag);
-#else
-         //MPI_Status status;
-         MPI_Recv(&tmpRecvOrderVec[0], nofElements, MPI_UNSIGNED, mpiRemoteRank, mpiTag, comm, MPI_STATUS_IGNORE);
-#endif
-
-         if(nofElements!=(unsigned)tmpRecvOrderVec.size())
-            throw UbException(UB_EXARGS,"error... vec size stimmt nicht");
-
-         unsigned index = 0;
-         this->nextCbVectorStartIndexInPool = tmpRecvOrderVec[index++]; //= laenge des vectors
-         this->pool.resize(this->nextCbVectorStartIndexInPool);
-         CbVectorMapIter it = this->cbVectorMap.begin();
-         for(/*index*/; index<nofElements; index+=3, ++it)
-         {
-            CbVectorKey vectorKey        = (CbVectorKey)tmpRecvOrderVec.at(index  );
-            size_type   startIndexInPool = (size_type)tmpRecvOrderVec.at(index+1);
-            size_type   dataSize         = (size_type)tmpRecvOrderVec.at(index+2);
-
-            if(it==this->cbVectorMap.end() || it->first != vectorKey ) 
-               throw UbException(UB_EXARGS,"entweder hat map nicht die gleiche reihenfolge oder vectorKey nicht vorhanden");
-
-            this->setCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-         }
-         if(it!=this->cbVectorMap.end())
-            throw UbException(UB_EXARGS,"error... in der map sind scheinbar noch weiter elemente vorhanden, die es auf der send seite nicht gibt...");
-
-         counterReceiveDataOrder = 0;
-         nofStoredVectors = this->cbVectorMap.size();
-
-#ifdef DEBUG
-         orgPoolVectorStartPointer = &this->pool[0];
-#endif
-      }
-   }
-   /*==================================================================*/
-   void prepareForSendData()
-   {
-      //da sendDataOrder einen request verwendet muss man hier immer abfragen
-      if(counterPrepareForSend==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-#ifdef USE_MPI_CXX_SYNTAX 
-         if(sendRequest != MPI::REQUEST_NULL) sendRequest.Wait();
-#else
-         //if(sendRequest != MPI_REQUEST_NULL) MPI_Wait(&sendRequest, MPI_STATUS_IGNORE);
-#endif
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForSendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-
-      counterPrepareForSend++;
-
-      if(counterPrepareForSend==nofStoredVectors)
-      {
-         counterPrepareForSend=0;  
-      }
-
-
-      //A - non blocking
-      ////der ERSTE is entscheidend 
-      ////Grund: wenn man 
-      //// for(all trans) { trans->prepare(); trans->fillBuffer(); }
-      //// aufruft, dann wuerde u.U. der Buffer neu beschrieben werden obwohl noch nicht versendet wurde!!!
-      //counterPrepareForSend++;
-      //if(counterPrepareForSend==1)
-      //{
-      //   if(sendRequest != MPI::REQUEST_NULL) sendRequest.Wait();
-      //}
-      //
-      //if(counterPrepareForSend==nofStoredVectors)
-      //   counterPrepareForSend=0;  
-   }
-   /*==================================================================*/
-   void sendData()
-   {
-      //A - non blocking
-      //der LETZTE is entscheidend 
-      //counterSend++;
-      //if(counterSend==nofStoredVectors)
-      //{
-      //   //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-      //   sendRequest = comm.Isend(&pool[0],(int)nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //   counterSend=0;
-      //}
-      //B - blocking
-      //der LETZTE is entscheidend 
-      counterSend++;
-      if(counterSend==nofStoredVectors)
-      {
-         //std::cout<<"Isend von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-
-         //synchronous send 
-         //comm.Ssend(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-#ifdef DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-
-         //standard send
-#ifdef USE_MPI_CXX_SYNTAX 
-         comm.Send(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-#else
-         //MPI_Send(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm);
-         MPI_Isend(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &sendRequest);
-#endif
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::sendData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-////////////////////////////////////////////////////////////////////////////////////////////
-//DEBUG///////////////////////////////////////
-         //int irank;
-         //MPI_Comm_rank(MPI_COMM_WORLD, &irank);
-         //std::cout << "MPI_Send: " << irank <<  " "  << mpiRemoteRank << " "  <<mpiTag<<std::endl;
-///////////////////////////////////////////////////
-         counterSend=0;
-      }                           
-   }
-   /*==================================================================*/
-   void prepareForReceiveData()
-   {
-      //A - non blocking
-      //sobald der Letzte kann man den den request holen.
-      //andernfalls kann nicht gewaehrleistet werden, dass evtl noch mit dem buffer gearbeitet wird!!!
-      counterPrepareForReceive++;
-      if(counterPrepareForReceive==this->nofStoredVectors)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-#ifdef DEBUG
-         if(this->orgPoolVectorStartPointer != &this->pool[0] ) throw UbException(UB_EXARGS, "ups, pool array adress changed - unknown behavoir");
-#endif
-         //std::cout<<"Irecv von "<<(int)nextStartIndex<<"elementen von "<<mpiRemoteRank<<" mit tag="<<mpiTag<<std::endl;
-#ifdef USE_MPI_CXX_SYNTAX 
-         receiveRequest = comm.Irecv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-#else
-         //MPI_Irecv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, &receiveRequest);
-#endif
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::prepareForReceiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-         counterPrepareForReceive=0;
-      }
-   }
-   /*==================================================================*/
-   void receiveData()
-   {
-      //A - non blocking
-      //sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      //denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      if(counterReceive==0)
-      {
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():start"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-#ifdef USE_MPI_CXX_SYNTAX 
-         receiveRequest.Wait();
-#else
-         //MPI_Wait(&receiveRequest, MPI_STATUS_IGNORE);
-         MPI_Recv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag, comm, MPI_STATUS_IGNORE);
-#endif
-         UBLOG(logDEBUG5, "TbCbVectorMpiPool::receiveData():end"<<" mpiRemoteRank="<<mpiRemoteRank<<" mpiTag="<<mpiTag);
-      }
-      counterReceive++;
-      if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      {
-         counterReceive=0;
-      }
-
-      ////B - blocking
-      ////sobald der ERSTE reinkommt muss man warten, bis received wurde!!!
-      ////denn erst anschliessend stehen die empfangenen daten zur verfuegung
-      //if(counterReceive==0)
-      //{
-      //   comm.Recv(&this->pool[0],(int)this->nextCbVectorStartIndexInPool, mpiDataType, mpiRemoteRank, mpiTag);
-      //}
-      //counterReceive++;
-      //if(counterReceive==this->nofStoredVectors) //alle receiver waren hier
-      //   counterReceive=0;
-   }
-
-protected:
-   int       poolKey; //eindeutiger schluessel fuer pool
-   size_type nofStoredVectors;
-
-   size_type counterPrepareReceiveDataOrder;
-   size_type counterSendDataOrder;
-   size_type counterReceiveDataOrder;
-   size_type counterPrepareForReceive;
-   size_type counterReceive;
-   size_type counterPrepareForSend;
-   size_type counterSend;
-
-   std::vector< unsigned > tmpSendOrderVec; //wird zur temp speicherung der anordnung benoetigt
-
-#ifdef USE_MPI_CXX_SYNTAX 
-   MPI::Intracomm comm;
-   MPI::Request   receiveRequest;
-   MPI::Request   sendRequest;
-   MPI::Datatype  mpiDataType;
-#else
-   MPI_Comm     comm;
-   MPI_Request  receiveRequest;
-   MPI_Request  sendRequest;
-   //MPI_Status   sendStatus;
-   //MPI_Status   receiveStatus;
-   MPI_Datatype mpiDataType;
-#endif
-
-   int mpiRemoteRank, mpiTag;
-
-#ifdef DEBUG
-   T* orgPoolVectorStartPointer;
-#endif
-};
-
-template<typename T>
-typename TbCbVectorMpiPoolEx<T>::MpiPoolPtrMap TbCbVectorMpiPoolEx<T>::poolMap;
-
-//   static MpiPoolPtrMap poolMap;
-
-
-//////////////////////////////////////////////////////////////////////////
-//  TbSenderMpiPool
-//////////////////////////////////////////////////////////////////////////
-template<typename T>
-class TbCbVectorSenderMpiPoolEx : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorSenderMpiPoolEx(const unsigned int& cbVectorKey, TbCbVectorMpiPoolEx< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
-   }
-   ~TbCbVectorSenderMpiPoolEx()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPoolEx< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()          { this->mpiVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
-   CbVector< T >& receiveData() { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
-   void prepareForSend()        { this->mpiVectorPool->prepareForSendData(); }
-   void sendData()              { this->mpiVectorPool->sendData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { return  this->mpiVectorPool->getRemoteRank(); }
-   int  getSendTbTag()    const { return  this->mpiVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-   int  getRecvFromTag()  const { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
-
-   std::string toString() const { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
-
-protected:
-   TbCbVectorMpiPoolEx<T>* mpiVectorPool;
-};
-
-
-/*==================================================================*/
-template<typename T>
-class TbCbVectorReceiverMpiPoolEx : public TbTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   TbCbVectorReceiverMpiPoolEx(const unsigned int& cbVectorKey, TbCbVectorMpiPoolEx< T >* mpiVectorPool)
-      : mpiVectorPool(mpiVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
-   }
-   ~TbCbVectorReceiverMpiPoolEx()
-   {
-      if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         TbCbVectorMpiPoolEx< T >::deleteTbCbVectorMpiPool(this->mpiVectorPool->getPoolKey());  
-      }
-   }
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
-   void receiveDataSize()   { this->mpiVectorPool->receiveDataOrder(); }  
-   void sendData()          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   void prepareForReceive() { this->mpiVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()
-   { 
-      this->mpiVectorPool->receiveData();
-      return this->getData();
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()   const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getSendTbTag()    const { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
-   int  getRecvFromRank() const { return  this->mpiVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->mpiVectorPool->getRemoteTag();  }
-
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
-
-protected:
-   TbCbVectorMpiPoolEx<T>* mpiVectorPool;
-};
-
-#endif //VF_MPI
-
-#endif //TBTRANSMITTERMPIPOOL_H
- 
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcf.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcf.h
deleted file mode 100644
index 4ec1c25dddabe3aea4c87331df6536f3e2a58fdd..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcf.h
+++ /dev/null
@@ -1,326 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBTRANSMITTERRCF_H
-#define TBTRANSMITTERRCF_H
-
-/*=========================================================================*/
-/*  RCF Transmitter                                                        */
-/*                                                                         */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/ 
-
-/*
-usage: ...
-*/
-
-#include <iostream>
-#include <vector>
-#include <map>
-
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/utilities/UbLogger.h>
-
-#ifdef CAB_RCF
-//////////////////////////////////////////////////////////////////////////
-// RCF STUFF
-//////////////////////////////////////////////////////////////////////////
-
-#include <RCF/Idl.hpp>
-#include <RCF/TcpEndpoint.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include <3rdParty/rcf/RcfSerializationIncludes.h>
-#include <3rdParty/rcf/RcfSystem.h>
-#include <3rdParty/rcf/IRcfIpService.h>
-#include <3rdParty/rcf/RcfConnection.h>
-
-//zum ausstausch mittels RCF transmitter:
-RCF_BEGIN(IRcfTransmitterReceiverService, "IRcfTransmitterReceiverService")
-   RCF_METHOD_V2(void, receiveVectorForTransmitter,int /*tag*/, const std::vector<double>& /*data*/);
-   RCF_METHOD_V2(void, receiveVectorForTransmitter,int /*tag*/, const CbVector<double>& /*data*/);
-   RCF_METHOD_V2(void, receiveVectorForTransmitter,int /*tag*/, const std::vector<float>& /*data*/);
-   RCF_METHOD_V2(void, receiveVectorForTransmitter,int /*tag*/, const CbVector<float>& /*data*/);
-RCF_END(IRcfTransmitterReceiverService);
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorSenderRcf< Vector > 
-//////////////////////////////////////////////////////////////////////////
-template< typename Vector >
-class TbVectorSenderRcf : public TbTransmitter< Vector >
-{
-public:
-   typedef Vector value_type;   
-   
-   //static members
-private:
-   static std::vector< RcfClient<IRcfTransmitterReceiverService> >  recvServices;
-
-   static void setRcfClients(const std::string& recvServiceID);
-
-public:
-   TbVectorSenderRcf(const std::string& recvServiceName,const RcfConnection& receiveProcess, const int& tag) 
-      : TbTransmitter< Vector >()
-   { 
-      if( recvServices.empty() ) setRcfClients(recvServiceName);
-      this->receiveRank	   = receiveProcess.getRank();
-      this->tag            = tag;
-      this->receiveProcess = receiveProcess;
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()    { this->sendData(); }
-   void receiveDataSize() { UB_THROW( UbException(UB_EXARGS,"TbRcfVectorSender sends only") ); } 
-
-   void sendData() 
-   { 
-      //remote prozess=client erhaelt daten
-      recvServices[receiveRank].receiveVectorForTransmitter(tag, TbTransmitter< Vector >::getData());
-   }
-   void prepareForReceive() { UB_THROW( UbException(UB_EXARGS,"TbRcfVectorSender sends only") ); }
-   Vector& receiveData()    { UB_THROW( UbException(UB_EXARGS,"TbRcfVectorSender sends only") ); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()    const { return  this->receiveRank; /*=der rank an den gesendet wird*/}
-   int  getSendTbTag()     const { return  this->tag;                                           }
-   int  getRecvFromRank()  const { UB_THROW( UbException(UB_EXARGS,"TbVectorSenderRcf sends only") ); }
-   int  getRecvFromTag()   const { UB_THROW( UbException(UB_EXARGS,"TbVectorSenderRcf sends only") ); }
-
-   std::string toString() const { return "TbVectorSenderRcf< "+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name() +"> > to rank (tag)"+UbSystem::toString(receiveRank)+"("+UbSystem::toString(tag)+") connection "+receiveProcess.toString(); }
-
-private:
-   RcfConnection receiveProcess;
-   int tag;
-   int receiveRank;
-};
-
-//////////////////////////////////////////////////////////////////////////
-template< typename Vector >
-std::vector< RcfClient<IRcfTransmitterReceiverService> >  TbVectorSenderRcf< Vector >::recvServices;
-
-template< typename Vector >
-void TbVectorSenderRcf< Vector >::setRcfClients(const std::string& recvServiceID)
-{
-   UBLOG(logINFO,"invoked setRcfClients");
-   RcfConnection ipConnection = RcfSystem::getIpServiceConnection();
-   if(!ipConnection) UB_THROW( UbException(UB_EXARGS,"ups, no IpServiceConnection") );
-   RcfClient<IRcfIpService> ipService(RCF::TcpEndpoint(ipConnection.getIp(), ipConnection.getPort()));
-
-   //Mit RecvServices verbinden
-   std::vector<RcfConnection> connections = ipService.getServiceConnections(recvServiceID);
-   if(connections.empty()) 
-      UB_THROW( UbException(UB_EXARGS,"no existing RecvService with ID = "+recvServiceID) );
-   std::sort(connections.begin(),connections.end(),RcfConnection::compareRank());
-
-   for(std::size_t i=0; i<connections.size(); i++)
-   {
-      if( (int)i != connections[i].getRank() )
-         UB_THROW( UbException(UB_EXARGS,"recvServices must have continougs ranks sarting from 0") );
-      recvServices.push_back(RcfClient<IRcfTransmitterReceiverService>(RCF::TcpEndpoint(connections[i].getIp(), connections[i].getPort())) );
-   }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-// TbVectorReceiverRcf
-//////////////////////////////////////////////////////////////////////////
-template< typename Vector >
-class TbVectorReceiverRcf : public TbTransmitter< Vector >
-{
-   typedef std::map<int, TbVectorReceiverRcf< Vector >* >  ReceiverMap;
-   typedef typename ReceiverMap::iterator                  ReceiverMapIt;
-   
-public:
-   typedef Vector value_type;
-
-   //static members
-private:
-   static ReceiverMap  receiverMap;
-   static boost::mutex staticReceiverMapMutex;
-
-public:
-   static void receiveVectorForTransmitter(int tag, const Vector& data)
-   {
-      TbVectorReceiverRcf< Vector >* receiver = NULL;
-      
-      //receiver ermitteln (map nicht thread-safe->lock! aber nur kurz, ansonsten ab einer gewissen anzahl an clients/blöcken->deadlock)
-      //vermutlich brauch man den nicht mal... (denn das registrieren sollte zu diesem zeitpunkt abgeschlossen sein)
-      //allerdings sollte man nicht gleichzeitig Suchoperationen in ner nich thread sicheren map durchführen!!!
-      {
-         boost::mutex::scoped_lock lock(staticReceiverMapMutex); //wenn man das ausserhalb macht, gibt es ab einer bestimmten anzahl an clients/bloecke einen deadlock
-         
-         ReceiverMapIt result = TbVectorReceiverRcf< Vector >::receiverMap.find(tag);
-         if( result == TbVectorReceiverRcf< Vector >::receiverMap.end() )
-            UB_THROW( UbException(UB_EXARGS,"receiver is not registered") );
-         
-         receiver = result->second;
-         if(!receiver) 
-            UB_THROW( UbException(UB_EXARGS,"receiver is NULL") );
-      }
-      
-      boost::mutex::scoped_lock lock(receiver->bufferMutex); 
-
-      // wait until buffer is empty 
-      while(receiver->isBufferFull) 
-         receiver->bufferEmptiedCondition.wait(lock); 
-
-      //////////////////////////////////////////////////////////////////////////
-      // put data in buffer 
-      //old: receiver->buffer = data;
-      
-      //new:
-      if( receiver->buffer.size() != data.size() )
-      {
-         receiver->buffer.resize( data.size() );
-      }
-      memcpy( (char*)&receiver->buffer[0], (char*)&data[0],  data.size()*sizeof(typename Vector::value_type) ); 
-      
-      //////////////////////////////////////////////////////////////////////////
-      //evtl wartende clients benachrichtigen
-      //notify "buffer filled" waiters 
-      receiver->isBufferFull = true; 
-      receiver->bufferFilledCondition.notify_all(); // notify_one muesste eigentlich reichen 
-   }
-
-public:
-   TbVectorReceiverRcf(const int& tag, const int& recvFromRank/*just for info section*/) 
-      : TbTransmitter< Vector >(), tag(tag), recvFromRank(recvFromRank)
-   {
-      {
-         //receiver registrieren
-         boost::mutex::scoped_lock lock( TbVectorReceiverRcf< Vector >::staticReceiverMapMutex ); 
-
-         std::pair< ReceiverMapIt, bool> result = receiverMap.insert(std::make_pair(tag, this));
-         if( !result.second )
-         {
-            ReceiverMapIt existingReceiver = TbVectorReceiverRcf< Vector >::receiverMap.find(tag);
-            TbVectorReceiverRcf< Vector >::receiverMap.erase(existingReceiver);
-            TbVectorReceiverRcf< Vector >::receiverMap.insert(std::pair<int, TbVectorReceiverRcf< Vector >* >(tag, this));
-         }
-      }
-      isBufferFull = false; 
-   }
-
-   ~TbVectorReceiverRcf()
-   {
-      ReceiverMapIt existingReceiver = receiverMap.find(tag);
-      TbVectorReceiverRcf< Vector >::receiverMap.erase(existingReceiver);
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()    { UB_THROW( UbException(UB_EXARGS,"TbRcfVectorReceiver receives only") ); }
-   void receiveDataSize() { this->receiveData(); } 
-
-   void sendData()        { UB_THROW( UbException(UB_EXARGS,"TbRcfVectorReceiver receives only") ); }
-
-   Vector& receiveData()
-   {
-      boost::mutex::scoped_lock lock(bufferMutex); 
-
-      // wait until buffer is full 
-      while(!isBufferFull) 
-         bufferFilledCondition.wait(lock); 
-
-      // get data from buffer 
-      //std::size_t dataSize = this->buffer.size();
-      //if( this->getData().size()!=dataSize ) this->getData().resize(dataSize);
-      //for(std::size_t i=0; i<dataSize; ++i)
-      //   this->getData()[i]=buffer[i]; 
-      
-      //folgende assert schlaegt bei receiveDataSize(), das receiveData() aufgerufen wird fehl...
-      //daher ausdokumentiert
-      //assert( this->getData().size() == this->buffer.size() );
-      
-      this->getData().swap(this->buffer);
-      
-      isBufferFull = false; 
-
-      // notify "buffer emptied" waiters 
-      bufferEmptiedCondition.notify_all(); // notify_one sollte auch hier reichen 
-      return this->getData(); 
-   }
-
-   //info-section (usable for remote transmitter)
-   int  getSendTbRank()    const { UB_THROW( UbException(UB_EXARGS,"getSendTbRank  sends only") ); }
-   int  getSendTbTag()     const { UB_THROW( UbException(UB_EXARGS,"getSendTbTag  sends only") ); }
-   int  getRecvFromRank()  const { return  this->recvFromRank; /*=der rank an den gesendet wird*/ }
-   int  getRecvFromTag()   const { return  this->tag;                                             }
-
-   std::string toString() const { return "TbVectorReceiverRcf< "+(std::string)typeid(Vector).name()+"<"+(std::string)typeid(typename Vector::value_type).name() +"> > to rank (tag)"+UbSystem::toString(recvFromRank)+"("+UbSystem::toString(tag)+")"; }
-
-private:
-   int tag;
-   int recvFromRank; //just for info-section
-
-   boost::mutex     bufferMutex; 
-   boost::condition bufferFilledCondition; 
-   boost::condition bufferEmptiedCondition; 
-   bool isBufferFull; 
-
-   Vector buffer; 
-};
-
-//////////////////////////////////////////////////////////////////////////
-// template< typename Vector >
-// std::map<int, TbVectorReceiverRcf< Vector >* > TbVectorReceiverRcf< Vector >::receiverMap;
-template< typename Vector >
-typename TbVectorReceiverRcf< Vector >::ReceiverMap TbVectorReceiverRcf< Vector >::receiverMap;
-
-template< typename Vector >
-boost::mutex TbVectorReceiverRcf< Vector >::staticReceiverMapMutex;
-
-
-// 
-// 
-// 
-// 
-// //derzeit funzt es nur mit vector<double> dafuer gibt es weiter unten eine spezialisierung
-// //Grund: man muss  fuer jeden datentyp eine RCF methode beim service registrieren
-// //        und derzeit ist eben nur eine fuer vector<double> vorhanden
-// template< typename Vector >
-// class TbVectorSenderRcf : public TbTransmitter< Vector >
-// {
-// public:
-//    TbVectorSenderRcf(const std::string& calcServiceName, const RcfConnection& receiveProcess, const int& tag) 
-//       : TbTransmitter< Vector >()
-//    {  
-//       UB_THROW( UbException("TbVectorSenderRcf::TbVectorSenderRcf() - TbRcfVectorSender not implmeneted for that type ") );    
-//    }
-//    void sendDataSize()      { UB_THROW( UbException("TbVectorSenderRcf::sendDataSize() - not defined for that type") );         }
-//    void receiveDataSize()   { UB_THROW( UbException("TbVectorSenderRcf::receiveDataSize() - not defined for that type") );      } 
-//    void sendData()          { UB_THROW( UbException("TbVectorSenderRcf::sendData() - not defined for that type") );             }
-//    void prepareForReceive() { UB_THROW( UbException("TbVectorSenderRcf::prepareForReceive() - TbRcfVectorSender sends only") ); }
-//    Vector& receiveData()         { UB_THROW( UbException("TbVectorSenderRcf::receiveData() - TbRcfVectorSender sends only") );       } 
-//    std::string toString()   { return "undefined TbVectorSenderRcf"; }
-// };
-// 
-// template< typename Vector  >
-// class TbVectorReceiverRcf : public TbTransmitter< Vector >
-// {
-// public:
-//    TbVectorReceiverRcf(const int& tag, const int& receiveRank) : TbTransmitter< Vector >()
-//    {
-//       UB_THROW( UbException("TbVectorReceiverRcf::TbVectorReceiverRcf() - not defined for that type") );  
-//    }
-//    void sendDataSize()    { UB_THROW( UbException("TbVectorReceiverRcf::sendDataSize() - not defined for that type") );     }    
-//    void receiveDataSize() { UB_THROW( UbException("TbVectorReceiverRcf::receiveDataSize() - not defined for that type") );  } 
-//    void sendData()        { UB_THROW( UbException("TbVectorReceiverRcf::sendData() - TbRcfVectorReceiver receives only") ); }
-//    Vector& receiveData()       { UB_THROW( UbException("TbVectorReceiverRcf::receiveData() - not defined for that type") );      }
-//    std::string toString() { return "undefined TbVectorReceiverRcf"; }
-// };
-// 
-#endif // CAB_RCF
-
-#endif //TBTRANSMITTERRCF_H
diff --git a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcfPool.h b/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcfPool.h
deleted file mode 100644
index 361cd7a4475806aeb98bce5a82899147fffe1c65..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/transmitter/TbTransmitterRcfPool.h
+++ /dev/null
@@ -1,593 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef TBCBVECTORRCFPOOL_H
-#define TBCBVECTORRCFPOOL_H
-
-#ifdef CAB_RCF
-
-/*=========================================================================*/
-/*  ToCbVectorRcfPool                                                      */
-/*                                                                         */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 09.10.08
-*/ 
-
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <vector>
-#include <map>
-#include <cassert>
-
-#include <RCF/Idl.hpp>
-#include <RCF/TcpEndpoint.hpp>
-#include <RCF/ByteBuffer.hpp>
-
-#include <boost/shared_ptr.hpp>
-
-#include <3rdParty/rcf/RcfSerializationIncludes.h>
-#include <3rdParty/rcf/RcfSystem.h>
-#include <3rdParty/rcf/IRcfIpService.h>
-#include <3rdParty/rcf/RcfConnection.h>
-
-#include <basics/transmitter/ToTransmitter.h>
-#include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-#include <basics/utilities/UbLogger.h>
-#include <basics/utilities/UbLogger.h>
-
-
-// zum ausstausch mittels RCF transmitter:
-RCF_BEGIN(IRcfTransmitterReceiverPoolService, "IRcfTransmitterReceiverPoolService")
-RCF_METHOD_V3(void, receiveRcfPoolData     , const float&  /*dummy*/, const int& /*poolKey*/, const RCF::ByteBuffer&         /*databuffer*/ )
-RCF_METHOD_V3(void, receiveRcfPoolDataOrder, const float&  /*dummy*/, const int& /*poolKey*/, const std::vector< unsigned >& /*dataOrder*/  )
-RCF_METHOD_V3(void, receiveRcfPoolData     , const double& /*dummy*/, const int& /*poolKey*/, const RCF::ByteBuffer&         /*databuffer*/ )
-RCF_METHOD_V3(void, receiveRcfPoolDataOrder, const double& /*dummy*/, const int& /*poolKey*/, const std::vector< unsigned >& /*dataOrder*/  )
-RCF_END(IRcfTransmitterReceiverPoolService);
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//ToRcfPoolSender/Receiver
-//diese verschicken immer einen VectorPool. Letztlich einen langen vector,
-//der eigentlich aus vielen kleinen besteht
-//jeder RcfPoolVector hat einen pointer auf die startadresse in diesem vector
-//die informationen werden im ToRcfVectorPool verwaltet
-//RcfPoolVector verhaelt sich nach aussen hin mit einschraenkungen wie ein std::vector
-//und kann somit bei den vector connector verwendet werden
-//man kann die klassen theoretisch verallgemeinern.
-
-template<typename T> class ToCbVectorSenderRcfPool;
-template<typename T> class ToCbVectorReceiverRcfPool;
-
-/*==================================================================*/
-template<typename T>
-class ToCbVectorRcfPool : public CbVectorPool<T>
-{
-public:
-   typedef boost::shared_ptr< ToCbVectorRcfPool< T > > RcfPoolPtr;
-
-   //////////////////////////////////////////////////////////////////////////
-   typedef std::map< int, RcfPoolPtr >      RcfPoolPtrMap;
-   typedef typename RcfPoolPtrMap::iterator RcfPoolPtrMapIter;
-
-   //da BasisKlasse templateKlasse ist MUSS man hier die typedefs nochmal wiederholen!
-   typedef typename CbVector<T>::value_type value_type;
-   typedef typename CbVector<T>::size_type  size_type;
-   typedef std::vector< value_type >        Pool;
-
-   typedef unsigned CbVectorKey;
-   typedef std::map< CbVectorKey, CbVector< value_type >* /*ptrVector*/  > CbVectorMap;
-   typedef typename CbVectorMap::iterator CbVectorMapIter;
-
-   //////////////////////////////////////////////////////////////////////////
-   friend class ToCbVectorSenderRcfPool< T >; 
-   friend class ToCbVectorReceiverRcfPool< T >; 
-
-private:
-   //////////////////////////////////////////////////////////////////////////
-   static RcfPoolPtrMap poolMap;
-
-//    //wenn pool als recevier fungiert
-//    static ReceiverPoolMap  receiverPoolMap;
-   static boost::mutex     staticPoolMapMutex;
-
-   //wenn pool als sender fungiert
-   static std::vector< RcfConnection >  recvConnections;   
-   static std::vector< RcfClient<IRcfTransmitterReceiverPoolService> >  recvServices;
-   static void setRcfSendToClients(const std::string& receiveServiceID, const int& rcfSendToRank);
-
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //STATIC MEMBERS
-   //////////////////////////////////////////////////////////////////////////
-   //createToCbVectorRcfPool:
-   // poolKey      : Schluessel fuer eindeutige Indizierung in Map
-   //              : (dieser schluessel ist eindeutig und muss bei send und recevicePool uebereinstimmen (ersetzt Tag)
-   // rcfRemoteRank: rcf-rank des Empfaengers/Senders
-   // rcfTag       : rcf-tag mit dem empfangen/gesendet wird
-   static RcfPoolPtr createToCbVectorRcfSendPool(const std::string& rcfSendToServiceName, const int& poolKey, const int& rcfSendToRank, const size_type& startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-   {
-      if( poolMap.find(poolKey)!=ToCbVectorRcfPool< value_type >::poolMap.end() )
-      {
-         UB_THROW( UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!") );
-      }
-      //pool erstellen
-      RcfPoolPtr rcfPool(new ToCbVectorRcfPool<T>(rcfSendToServiceName, poolKey, rcfSendToRank, startPoolSize) ); 
-      
-      //pool "speichern"
-      ToCbVectorRcfPool< value_type >::poolMap[poolKey] = rcfPool;
-
-      ToCbVectorRcfPool::setRcfSendToClients(rcfSendToServiceName, rcfSendToRank);
-      
-      return rcfPool; 
-   }
-   /*==================================================================*/
-   static RcfPoolPtr createToCbVectorRcfRecvPool(const int& poolKey, const int& rcfRecvRank, const size_type& startPoolSize = 20000 ) //startPoolSize*sizeof(T)/1024/1024 [MB]
-   {
-      if( poolMap.find(poolKey)!=poolMap.end() )
-      {
-         UB_THROW( UbException(UB_EXARGS,"es ist bereits ein Pool mit dem key vorhanden!!!") );
-      }
-      //pool erstellen
-      RcfPoolPtr rcfPool(new ToCbVectorRcfPool<T>( "", poolKey, rcfRecvRank, startPoolSize ) ); 
-                                                  
-      //pool "speichern"
-      ToCbVectorRcfPool< value_type >::poolMap[poolKey] = rcfPool;
-
-      return rcfPool; 
-   }
-   /*==================================================================*/
-   static void deleteToCbVectorRcfPool(const int& poolKey)
-   {
-      RcfPoolPtrMapIter it = ToCbVectorRcfPool< value_type >::poolMap.find(poolKey);
-      if( it==poolMap.end() )
-      {
-         UB_THROW( UbException(UB_EXARGS,"kein Pool mit dem key vorhanden") );
-      }
-      ToCbVectorRcfPool< value_type >::poolMap.erase(it);
-   }
-   /*==================================================================*/
-   static RcfPoolPtr getToCbVectorRcfPool(const int& poolKey)
-   {
-      RcfPoolPtrMapIter it;
-      if( (it=ToCbVectorRcfPool< T >::poolMap.find(poolKey))!=ToCbVectorRcfPool< T >::poolMap.end() ) 
-      {
-         return it->second;
-      }
-      return NULL;
-   }
-   /*==================================================================*/
-   static std::string getInfoString()
-   {
-      std::stringstream out;  
-      out<<"ToCbVectorRcfPool<"<< typeid( T ).name()  << ") - Info:"<<std::endl;
-      for(RcfPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-         out<<"pool with key("            <<std::setw(15)<<it->first<<") "
-             <<"stores "                  <<std::setw(12)<<it->second->getNofStoredVectors() <<" vectors " 
-             <<", elements to transfer = "<<std::setw(15)<<it->second->getPoolSize() 
-             <<" ( "<< it->second->getPoolSize()*sizeof( T ) / ( 1024.0 * 1024.0 ) << " MB )" <<std::endl;
-      return out.str();
-   }
-   /*==================================================================*/
-   // checks if all vectors have one to one pool-entries
-   static bool consistencyCheck()
-   {
-      for(RcfPoolPtrMapIter it=poolMap.begin(); it!=poolMap.end(); ++it)
-      {
-         if( !it->second-> CbVectorPool<T>::consistencyCheck() ) 
-         {
-            return false;         
-         }
-      }
-      return true;
-   }
-   /*==================================================================*/
-   static void receiveDataOrder(int poolKey, const std::vector< unsigned >& dataOrder)
-   {
-      RcfPoolPtr receiverPool;
-
-      //receiver ermitteln (map nicht thread-safe->lock! aber nur kurz, ansonsten ab einer gewissen anzahl an clients/blöcken->deadlock)
-      //vermutlich brauch man den nicht mal... (denn das registrieren sollte zu diesem zeitpunkt abgeschlossen sein)
-      //allerdings sollte man nicht gleichzeitig Suchoperationen in ner nicht thread sicheren map durchführen!!!
-      {
-         boost::mutex::scoped_lock lock(staticPoolMapMutex); //wenn man das ausserhalb macht, gibt es ab einer bestimmten anzahl an clients/bloecke einen deadlock
-         receiverPool = getToCbVectorRcfPool(poolKey);
-         if(!receiverPool) UB_THROW( UbException(UB_EXARGS,"kein pool mit poolKey="+UbSystem::toString(poolKey)) );
-      }
-
-      boost::mutex::scoped_lock lock(receiverPool->receiveDataOrderMutex); 
-      
-      // wait until buffer is empty 
-      while(receiverPool->receivedDataOrderBufferIsFull) 
-         receiverPool->dataOrderVectorEmptiedCondition.wait(lock); 
-      
-      receiverPool->recvOrderVec = dataOrder;
-                
-      //////////////////////////////////////////////////////////////////////////
-      //evtl wartende clients benachrichtigen
-      //notify "buffer filled" waiters 
-     
-      receiverPool->receivedDataOrderBufferIsFull = true; 
-      receiverPool->dataOrderVectorFilledCondition.notify_all(); 
-   }
-   /*==================================================================*/
-   static void receivePoolData(const int& poolKey, const RCF::ByteBuffer& byteBuffer) //const typename CbVectorPool< T >::Pool& data)
-   {
-      RcfPoolPtr receiverPool;
-
-      //receiver ermitteln (map nicht thread-safe->lock! aber nur kurz, ansonsten ab einer gewissen anzahl an clients/blöcken->deadlock)
-      //vermutlich brauch man den nicht mal... (denn das registrieren sollte zu diesem zeitpunkt abgeschlossen sein)
-      //allerdings sollte man nicht gleichzeitig Suchoperationen in ner nich thread sicheren map durchführen!!!
-      {
-         boost::mutex::scoped_lock lock(staticPoolMapMutex); //wenn man das ausserhalb macht, gibt es ab einer bestimmten anzahl an clients/bloecke einen deadlock
-         receiverPool = getToCbVectorRcfPool(poolKey);
-         if(!receiverPool) UB_THROW( UbException(UB_EXARGS,"kein pool mit poolKey="+UbSystem::toString(poolKey)) );
-
-         //std::cout<<"poolMap.size()="<<poolMap.size()<<std::endl;
-      }
-
-      boost::mutex::scoped_lock lock(receiverPool->receiveMutex); 
-      //UBLOG(logDEBUG5,"receivePoolVector - entered, pool");
-      // wait until buffer is full 
-      while(!receiverPool->performPoolUpdate)
-         receiverPool->performPoolUpdateCond.wait(lock); 
-      //UBLOG(logDEBUG5,"receivePoolVector - es kann losgehen buggercopy");
-
-      //ACHTUNG! nie einen pool.swap(data) machen -> startadressen der "kleinen" vektoren passen sonst nimmer!
-      if( receiverPool->pool.size()*sizeof( T ) != byteBuffer.getLength() )
-      {
-         UB_THROW( UbException(UB_EXARGS,"pool.size()!=byteBuffer.size()") );
-      }
-      memcpy( (char*)&receiverPool->pool[0], byteBuffer.getPtr(),  byteBuffer.getLength() ); 
-//      memcpy( (char*)&receiverPool->pool[0], (char*)&data[0],  data.size()*sizeof( T ) ); 
-      //UBLOG(logDEBUG5,"receivePoolVector - nach memcopy");
-
-      receiverPool->poolWasUpdated    = true;
-      receiverPool->performPoolUpdate = false;
-      receiverPool->waitForPoolUpdateCond.notify_one(); // notify_one sollte auch hier reichen 
-   }
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   ToCbVectorRcfPool(const std::string& rcfReceiveServiceName, const int& poolKey, const int& rcfRank, const size_type& startPoolSize  )
-      :    CbVectorPool< value_type >( startPoolSize ) 
-         , poolKey(poolKey)                           
-         , nofStoredVectors(0) //=Anzahl an Vectoren im Pool, wird bei send/receiveDataOrder gesetzt
-         , counterPrepareReceiveDataOrder(0)          
-         , counterSendDataOrder(0)                    
-         , counterReceiveDataOrder(0)                 
-         , counterPrepareForReceive(0)                
-         , counterReceive(0)                          
-         , counterSend(0)                             
-         , rcfReceiveServiceName(rcfReceiveServiceName)
-         , rcfRank(rcfRank)                                 
-         , receivedDataOrderBufferIsFull(false)
-         , performPoolUpdate(false)
-         , poolWasUpdated(false)
-   {
-   }
-
-public:
-   //returns key of Pool in RcfPoolMap
-   int  getPoolKey()    const { return  this->poolKey;  }
-   /*==================================================================*/
-   //returns rank of process pool data will be send to/received from
-   int  getRemoteRank() const { return  this->rcfRank;  }
-   /*==================================================================*/
-   //returns tag of process pool data will be send to/received from
-   int  getRemoteTag()  const { return  this->rcfRank;  }
-
-protected:
-   /*==================================================================*/
-   void sendDataOrder()
-   {
-      counterSendDataOrder++;
-      if(counterSendDataOrder==this->cbVectorMap.size())
-      {
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1;
-         std::vector< unsigned >localSendOrderVec(nofElements); 
-         unsigned index = 0;
-         localSendOrderVec[index++] = (unsigned)this->pool.size(); //= laenge des vectors
-         if(this->nextCbVectorStartIndexInPool != this->pool.size())  UB_THROW( UbException(UB_EXARGS,"an dieser Stelle sollten nextStartIndex und pool.size() identisch sein!!!") );
-         
-         for(CbVectorMapIter it = this->cbVectorMap.begin(); it!=this->cbVectorMap.end(); ++it)
-         {
-            CbVectorKey vectorKey=0;
-            size_type   dataSize=0, startIndexInPool=0;
-            this->getCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-            if(it->first != vectorKey) UB_THROW( UbException(UB_EXARGS,"key mismatch!") );
-            
-            localSendOrderVec[index++] = (unsigned)vectorKey;         //vectorKey == allocator.getAllocatorKey()
-            localSendOrderVec[index++] = (unsigned)startIndexInPool;  //startIndex in poolVector
-            localSendOrderVec[index++] = (unsigned)dataSize;          //dataSize
-         }
-         
-         //remote prozess=client erhaelt daten
-         recvServices[this->rcfRank].receiveRcfPoolDataOrder(T(), this->poolKey, localSendOrderVec);
-         
-         counterSendDataOrder=0;
-
-         nofStoredVectors = this->cbVectorMap.size();
-      }
-   }
-   /*==================================================================*/
-   void receiveDataOrder()
-   { 
-      counterReceiveDataOrder++;
-      if(counterReceiveDataOrder==this->cbVectorMap.size())
-      {
-         boost::mutex::scoped_lock lock(receiveDataOrderMutex); 
-         
-         // wait until buffer is full 
-         while(!receivedDataOrderBufferIsFull) 
-            dataOrderVectorFilledCondition.wait(lock); //wird in receivePoolVectorForTransmitter freigegeben :)
-         
-         //////////////////////////////////////////////////////////////////////////
-         unsigned nofElements = (unsigned)this->cbVectorMap.size()*3+1; //map MUSS auf beiden seiten gleich gross sein, sonst hat man ein grundsaetzliches problem ;-)
-
-         if(nofElements!=(unsigned)recvOrderVec.size())
-            UB_THROW( UbException(UB_EXARGS,"error... vec size stimmt nicht") );
-
-         unsigned index = 0;
-         this->nextCbVectorStartIndexInPool = recvOrderVec[index++]; //= laenge des vectors
-         this->pool.resize(this->nextCbVectorStartIndexInPool);
-         CbVectorMapIter it = this->cbVectorMap.begin();
-         for(/*index*/; index<nofElements; index+=3, ++it)
-         {
-            CbVectorKey vectorKey        = (CbVectorKey)recvOrderVec.at(index  );
-            size_type   startIndexInPool = (size_type)recvOrderVec.at(index+1);
-            size_type   dataSize         = (size_type)recvOrderVec.at(index+2);
-
-            if(it==this->cbVectorMap.end() || it->first != vectorKey ) 
-               UB_THROW( UbException(UB_EXARGS,"entweder hat map nicht die gleiche reihenfolge oder vectorKey nicht vorhanden") );
-
-            this->setCbVectorData(*it->second/*vec*/, vectorKey, startIndexInPool, dataSize );
-         }
-         if(it!=this->cbVectorMap.end())
-            UB_THROW( UbException(UB_EXARGS,"error... in der map sind scheinbar noch weiter elemente vorhanden, die es auf der send seite nicht gibt...") );
-
-         recvOrderVec.resize(0);
-
-         // notify "buffer emptied" waiters 
-         this->receivedDataOrderBufferIsFull = false; //->somit kann wieder neue reihenfolge empfangen werden
-         dataOrderVectorEmptiedCondition.notify_all(); // notify_one sollte auch hier reichen 
-
-         counterReceiveDataOrder = 0;
-         nofStoredVectors = this->cbVectorMap.size();
-      }
-   }
-   /*==================================================================*/
-   void prepareForSendData() {}
-   /*==================================================================*/
-   void sendData()
-   {
-      counterSend++;
-      if( counterSend == nofStoredVectors )
-      {
-         //remote prozess=client erhaelt daten
-         //T() -> auf der empfangsseite wird automatisch die methode für den entsprechenden ToCbVectorRcfPool< T >
-         //aufgerufen
-         RCF::ByteBuffer byteBuffer( (char*)&this->pool[0], this->pool.size()*sizeof( T ), true );
-         recvServices[this->rcfRank].receiveRcfPoolData( T(), this->poolKey, byteBuffer );
-         counterSend=0;
-      }
-   }                              
-   /*==================================================================*/
-   void prepareForReceiveData() 
-   {
-      counterPrepareForReceive++;
-      if( counterPrepareForReceive == this->nofStoredVectors )
-      {
-         boost::mutex::scoped_lock lock(receiveMutex); 
-         //UBLOG(logDEBUG5,"prepareForReceiveData - entered -> notfifiziere performPoolUpdateCond");
-
-         counterPrepareForReceive = 0;
-         this->performPoolUpdate = true;
-         performPoolUpdateCond.notify_one();
-      }
-   }
-   /*==================================================================*/
-   void receiveData()
-   {
-      if( counterReceive == 0 )
-      {
-         boost::mutex::scoped_lock lock(receiveMutex); 
-         //UBLOG(logDEBUG5,"receiveData - wait for pool update");
-
-         while(!this->poolWasUpdated)
-            waitForPoolUpdateCond.wait(lock);
-         this->poolWasUpdated    = false;
-         //UBLOG(logDEBUG5,"receiveData - pool update seems to be finished");
-      }
-
-      counterReceive++;
-      if( counterReceive == this->nofStoredVectors ) //alle receiver waren hier
-      {
-         counterReceive=0;
-      }
-   }
-
-protected:
-   int       poolKey; //eindeutiger schluessel fuer pool
-   size_type nofStoredVectors;
-
-   size_type counterPrepareReceiveDataOrder;
-   size_type counterSendDataOrder;
-   size_type counterReceiveDataOrder;
-   size_type counterPrepareForReceive;
-   size_type counterReceive;
-   size_type counterSend;
-
-   std::string rcfReceiveServiceName; //nur als SENDER wichtig!!
-   int         rcfRank; 
-
-   bool             receivedDataOrderBufferIsFull; 
-   boost::mutex     receiveDataOrderMutex; 
-   boost::condition dataOrderVectorFilledCondition; 
-   boost::condition dataOrderVectorEmptiedCondition;
-   std::vector< unsigned > recvOrderVec;
-
-   bool             performPoolUpdate;
-   boost::mutex     receiveMutex;
-   bool             poolWasUpdated;
-   boost::condition waitForPoolUpdateCond;
-   boost::condition performPoolUpdateCond;
-};
-
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-std::vector< RcfClient<IRcfTransmitterReceiverPoolService> >  ToCbVectorRcfPool< T >::recvServices;
-
-template< typename T >
-std::vector< RcfConnection >  ToCbVectorRcfPool< T >::recvConnections;
-
-template< typename T >                                              
-void ToCbVectorRcfPool< T >::setRcfSendToClients(const std::string& recvServiceID, const int& rcfSendToRank)
-{
-   UBLOG(logINFO,"ToCbVectorRcfPool< T >::setRcfSendToClients - invoked setRcfClients");
-   RcfConnection ipConnection = RcfSystem::getIpServiceConnection();
-   if(!ipConnection) UB_THROW( UbException(UB_EXARGS,"ups, no IpServiceConnection") );
-   RcfClient<IRcfIpService> ipService(RCF::TcpEndpoint(ipConnection.getIp(), ipConnection.getPort()));
-
-   //////////////////////////////////////////////////////////////////////////
-   //CalcService Verbindungsdaten holen und nach rank sortiere
-   std::vector<RcfConnection> connections = ipService.getServiceConnections(recvServiceID);
-   if(connections.empty()) UB_THROW( UbException(UB_EXARGS,"no existing RecvService with ID = "+recvServiceID) );
-   std::sort(connections.begin(),connections.end(),RcfConnection::compareRank());
-
-   //////////////////////////////////////////////////////////////////////////
-   //CalcServiceClient für rcfSendToRank übernehmen
-   assert( recvConnections.size() == recvServices.size() );
-
-   if( rcfSendToRank >= (int)recvConnections.size() ) 
-   {
-      recvConnections.resize(rcfSendToRank+1);
-      recvServices.resize( rcfSendToRank+1 );
-   }
-   
-   //Anm.: nur, wenn nicht schon vorhanden (hierfür merkt man sich zusätzlich die connection!
-   if( recvConnections[rcfSendToRank] != connections[rcfSendToRank] )
-   {
-      if( connections[rcfSendToRank].getRank() != rcfSendToRank )
-         UB_THROW( UbException(UB_EXARGS,"error - ranks ranks anscheinend nicht kontinierlich von [0..n]") );
-      
-      recvConnections[rcfSendToRank] = connections[rcfSendToRank];
-      recvServices[rcfSendToRank] = RcfClient<IRcfTransmitterReceiverPoolService>(RCF::TcpEndpoint(connections[rcfSendToRank].getIp(), connections[rcfSendToRank].getPort()));
-      UBLOG(logINFO,"ToCbVectorRcfPool< T >::setRcfSendToClients - rank="<<rcfSendToRank<<" : set RcfClient with connection = " << connections[rcfSendToRank] );
-   }
-   else
-   {
-       UBLOG(logINFO,"ToCbVectorRcfPool< T >::setRcfSendToClients - rank="<<rcfSendToRank<<" : RcfClient already exists with connection = " << connections[rcfSendToRank] );
-   }
-   //for(std::size_t i=0; i<connections.size(); i++)
-   //{
-   //   if( (int)i != connections[i].getRank() )
-   //      UB_THROW( UbException(UB_EXARGS,"recvServices must have continous ranks sarting from 0") );
-   //   recvServices[i] = RcfClient<IRcfTransmitterReceiverPoolService>(RCF::TcpEndpoint(connections[i].getIp(), connections[i].getPort()));
-   //   UBLOG(logINFO,"ToCbVectorRcfPool< T >::setRcfSendToClients - pos="<<i<<" : set RcfClient with connection = " << connections[i] );
-   //}
-}
-
-template<typename T>
-typename ToCbVectorRcfPool<T>::RcfPoolPtrMap ToCbVectorRcfPool<T>::poolMap;
-
-template< typename T >
-boost::mutex ToCbVectorRcfPool< T >::staticPoolMapMutex;
-
-
-//////////////////////////////////////////////////////////////////////////
-//  ToSenderRcfPool
-//////////////////////////////////////////////////////////////////////////
-template<typename T>
-class ToCbVectorSenderRcfPool : public ToTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   ToCbVectorSenderRcfPool(const unsigned int& cbVectorKey, ToCbVectorRcfPool< T >* rcfVectorPool)
-      : rcfVectorPool(rcfVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->rcfVectorPool) );
-   }
-   ~ToCbVectorSenderRcfPool()
-   {
-      if( this->rcfVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         ToCbVectorRcfPool< T >::deleteToCbVectorRcfPool(this->rcfVectorPool->getPoolKey());  
-      }
-   }
-
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
-
-   void sendDataSize()          { this->rcfVectorPool->sendDataOrder(); }
-   void receiveDataSize()       { UB_THROW( UbException(UB_EXARGS,"ToRcfPoolSender sends only") );  }   
-   CbVector< T >& receiveData() { UB_THROW( UbException(UB_EXARGS,"ToRcfPoolSender sends only") );  }
-   void prepareForSend()        { this->rcfVectorPool->prepareForSendData(); }
-   void sendData()              { this->rcfVectorPool->sendData(); }
-
-   //info-section (usable for remote transmitter)
-   int  getSendToRank()   const { return  this->rcfVectorPool->getRemoteRank(); }
-   int  getSendToTag()    const { return  this->rcfVectorPool->getRemoteTag();  }
-   int  getRecvFromRank() const { UB_THROW( UbException(UB_EXARGS,"ToCbVectorSenderRcfPool sends only") ); }
-   int  getRecvFromTag()  const { UB_THROW( UbException(UB_EXARGS,"ToCbVectorSenderRcfPool sends only") ); }
-
-   std::string toString() const { return "ToCbVectorSenderRcfPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendToRank())+"("+UbSystem::toString(getSendToTag())+")"; }
-
-protected:
-   ToCbVectorRcfPool<T>* rcfVectorPool;
-};
-
-/*==================================================================*/
-template<typename T>
-class ToCbVectorReceiverRcfPool : public ToTransmitter< CbVector< T >  >
-{
-public:
-   typedef CbVector< T > value_type;   
-
-public:
-   ToCbVectorReceiverRcfPool(const unsigned int& cbVectorKey, ToCbVectorRcfPool< T >* rcfVectorPool)
-      : rcfVectorPool(rcfVectorPool)
-   { 
-      this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->rcfVectorPool) );
-   }
-   ~ToCbVectorReceiverRcfPool()
-   {
-      if( this->rcfVectorPool->getNofStoredVectors()==1 ) //last entry!
-      {
-         UBLOG(logINFO,"ToCbVectorReceiverRcfPool - loesche map - poolKey "<<this->rcfVectorPool->getPoolKey());
-         ToCbVectorRcfPool< T >::deleteToCbVectorRcfPool(this->rcfVectorPool->getPoolKey());  
-      }
-   }
-   bool isLocalTransmitter()  const { return false;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();   }
-
-   void sendDataSize()      { UB_THROW( UbException(UB_EXARGS,"ToCbVectorReceiverRcfPool receives only") ); }   
-   void receiveDataSize()   { this->rcfVectorPool->receiveDataOrder();   }  
-   void sendData()          { UB_THROW( UbException(UB_EXARGS,"ToCbVectorReceiverRcfPool receives only") ); }
-   void prepareForReceive() { this->rcfVectorPool->prepareForReceiveData(); }
-   CbVector< T >& receiveData()   { this->rcfVectorPool->receiveData(); return this->getData();  }
-
-   //info-section (usable for remote transmitter)
-   int  getSendToRank()   const { UB_THROW( UbException(UB_EXARGS,"ToCbVectorReceiverRcfPool receives only") ); }
-   int  getSendToTag()    const { UB_THROW( UbException(UB_EXARGS,"ToCbVectorReceiverRcfPool receives only") ); }
-   int  getRecvFromRank() const { return  this->rcfVectorPool->getRemoteRank();  }
-   int  getRecvFromTag()  const { return  this->rcfVectorPool->getRemoteTag();  }
-
-   std::string toString() const { return "ToCbVectorReceiverRcfPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
-
-protected:
-   ToCbVectorRcfPool<T>* rcfVectorPool;
-};
-
-#endif //CAB_RCF
-
-#endif //TOCBVECTORRCFPOOL_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/CMakePackage.txt b/source/VirtualFluidsCore/Basics/utilities/CMakePackage.txt
deleted file mode 100644
index 2bae505538e07aa6c724c29a4b8d472975ef29e0..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/CMakePackage.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-GET_FILENAME_COMPONENT( CURRENT_DIR  ${CMAKE_CURRENT_LIST_FILE} PATH) 
-COLLECT_PACKAGE_DATA_WITH_OPTION(${CURRENT_DIR} ALL_SOURCES outOption)
-
-IF(${outOption})
-   IF(WIN32)
-      ADD_DEFINITIONS( -DNOMINMAX )
-   ENDIF(WIN32) 
-   
-   IF(BOOST_VERSION)
-    OPTION(USE_THREADSAFE_LOGGER "ON=thread safe, OFF=not thread safe" ON)
-    IF(NOT ${outOption})
-      ADD_DEFINITIONS( -DNO_THREADSAFE_LOGGING)
-    ELSE()
-      SET(NECESSARY_BOOST_LIBS ${NECESSARY_BOOST_LIBS} thread)
-    ENDIF()
-   ELSE()
-    #um die thread safe zu machen benoetigt man boost
-    ADD_DEFINITIONS( -DNO_THREADSAFE_LOGGING)
-   ENDIF()
-  
-ENDIF()
\ No newline at end of file
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbAutoRun.hpp b/source/VirtualFluidsCore/Basics/utilities/UbAutoRun.hpp
deleted file mode 100644
index c9ac45115bb4ff37c45d69e101e9a58d936e5d7e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbAutoRun.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef UB_AUTORUN_HPP
-#define UB_AUTORUN_HPP
-
-#define UB_AUTO_RUN(func)                              UB_AUTO_RUN_(func,  __LINE__)
-#define UB_AUTO_RUN_(func, nID)                        UB_AUTO_RUN__(func, nID)
-#define UB_AUTO_RUN__(func, nID)                       UB_AUTO_RUN___(func, nID)
-#define UB_AUTO_RUN___(func, ID)                                                           \
-    namespace {                                                                         \
-        struct UbAutoRun##ID {                                                            \
-            UbAutoRun##ID() {                                                             \
-                func;                                                                   \
-            }                                                                           \
-        } UbAutoRunInst##ID;                                                              \
-    }
-
-    // More concise to implement UB_AUTO_RUN using the following, but BCB emits an ICE on it.
-    //static bool UB_AutoRun##ID = ( func , false);
-
-
-#define UB_AUTO_RUN_1(func)                            UB_AUTO_RUN_NAMED(func, 1)                   
-#define UB_AUTO_RUN_2(func)                            UB_AUTO_RUN_NAMED(func, 2)                   
-#define UB_AUTO_RUN_3(func)                            UB_AUTO_RUN_NAMED(func, 3)                   
-#define UB_AUTO_RUN_4(func)                            UB_AUTO_RUN_NAMED(func, 4)                   
-#define UB_AUTO_RUN_5(func)                            UB_AUTO_RUN_NAMED(func, 5)                   
-                                                       
-#define UB_AUTO_RUN_NAMED(func, name)                  UB_AUTO_RUN_NAMED_(func, name, __LINE__)
-#define UB_AUTO_RUN_NAMED_(func, name, nID)            UB_AUTO_RUN_NAMED__(func, name, nID)
-#define UB_AUTO_RUN_NAMED__(func, name, nID)           UB_AUTO_RUN___(func, _##name##_##nID)
-                                                       
-#define UB_AUTO_RUN_ONCE(func)                         UB_AUTO_RUN_ONCE_(func,  __LINE__)
-#define UB_AUTO_RUN_ONCE_(func, nID)                   UB_AUTO_RUN_ONCE__(func, nID)
-#define UB_AUTO_RUN_ONCE__(func, nID)                  UB_AUTO_RUN_ONCE___(func, nID)
-#define UB_AUTO_RUN_ONCE___(func, ID)                                                   \
-    struct UbAutoRunOnce##ID {                                                            \
-        UbAutoRunOnce##ID() {                                                             \
-            if (!init()) {                                                              \
-                init() = true;                                                          \
-                func;                                                                   \
-            }                                                                           \
-        }                                                                               \
-        static bool &init() {                                                           \
-            static bool bInit = false;                                                  \
-            return bInit;                                                               \
-        }                                                                               \
-    };                                                                                  \
-    static UbAutoRunOnce##ID AutoRunOnceInst##ID;
-
-#define UB_AUTO_RUN_ONCE_1(func)                           UB_AUTO_RUN_ONCE_NAMED(func, 1)                   
-#define UB_AUTO_RUN_ONCE_2(func)                           UB_AUTO_RUN_ONCE_NAMED(func, 2)                   
-#define UB_AUTO_RUN_ONCE_3(func)                           UB_AUTO_RUN_ONCE_NAMED(func, 3)                   
-#define UB_AUTO_RUN_ONCE_4(func)                           UB_AUTO_RUN_ONCE_NAMED(func, 4)                   
-#define UB_AUTO_RUN_ONCE_5(func)                           UB_AUTO_RUN_ONCE_NAMED(func, 5)                   
-                                                           
-#define UB_AUTO_RUN_ONCE_NAMED(func, name)                 UB_AUTO_RUN_ONCE_NAMED_(func, name, __LINE__)
-#define UB_AUTO_RUN_ONCE_NAMED_(func, name, nID)           UB_AUTO_RUN_ONCE_NAMED__(func, name, nID)
-#define UB_AUTO_RUN_ONCE_NAMED__(func, name, nID)          UB_AUTO_RUN_ONCE___(func, _##name##_##nID)
-
-#endif // ! UB_AUTORUN_HPP
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbComparators.h b/source/VirtualFluidsCore/Basics/utilities/UbComparators.h
deleted file mode 100644
index 2d1448c93b6c0ee2b6361aad87a379140ffa0f49..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbComparators.h
+++ /dev/null
@@ -1,208 +0,0 @@
-#ifndef UBCOMPARATORS_H 
-#define UBCOMPARATORS_H
-
-#include <functional> 
-
-/*=========================================================================*/
-/*  UbComparators                                                             */
-/*                                                                         */
-/**
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 16.08.2007
-*/ 
-
-namespace UbComparators
-{
-   //type_traits 
-   template <typename T> struct MemberInfo; //not defined for correct compiler errors!
-
-   // specialization for MemberFunctionsPtr
-   // C - class with return T method
-   template <typename T, typename C> 
-   struct MemberInfo<T C::*> 
-   { 
-      typedef T type; 
-      typedef C class_type; 
-
-      static       T& apply(       C& c, T C::* ptr ) { return c.*ptr; } 
-      static const T& apply( const C& c, T C::* ptr ) { return c.*ptr; } 
-   }; 
-   //specialization for MemberFunctionsPtr
-   //C - class with return T method
-   template <typename T, typename C> 
-   struct MemberInfo<T (C::*)()> 
-   { 
-      typedef T type; 
-      typedef C class_type; 
-
-      static T apply( C& c, T (C::*ptr)() ) { return (c.*ptr)(); } 
-   }; 
-   //specialization for const MemberFunctionsPtr
-   //C - class with return T method
-   template <typename T, typename C> 
-   struct MemberInfo<T (C::*)() const> 
-   { 
-      typedef T type; 
-      typedef C class_type; 
-
-      static T apply( const C& c, T (C::*ptr)() const ) { return (c.*ptr)(); } 
-   }; 
-
-   //MemberComparative-Class
-   template <typename Ptr, typename Comp = std::less<typename MemberInfo<Ptr>::type> > 
-   class MemComp 
-      : private Comp  // -> usage of Empty Base Class Optimization (EBCO) 
-   { 
-      typedef typename MemberInfo<Ptr>::class_type C; 
-
-   public: 
-      MemComp( Ptr ptr, Comp c = Comp() ) 
-         : Comp(c), mp_(ptr) 
-      {} 
-
-      bool operator()(C& lhs, C& rhs) 
-      { 
-         return Comp::operator()( MemberInfo<Ptr>::apply(lhs, mp_), MemberInfo<Ptr>::apply(rhs, mp_) ); 
-      } 
-      bool operator()(C& lhs, C& rhs) const 
-      { 
-         return Comp::operator()( MemberInfo<Ptr>::apply(lhs, mp_), MemberInfo<Ptr>::apply(rhs, mp_) ); 
-      } 
-      bool operator()(const C& lhs, const C& rhs) 
-      { 
-         return Comp::operator()( MemberInfo<Ptr>::apply(lhs, mp_), MemberInfo<Ptr>::apply(rhs, mp_) ); 
-      } 
-      bool operator()(const C& lhs, const C& rhs) const 
-      { 
-         return Comp::operator()( MemberInfo<Ptr>::apply(lhs, mp_), MemberInfo<Ptr>::apply(rhs, mp_) ); 
-      } 
-
-   private: 
-      Ptr mp_; 
-   }; 
-
-   // Factoryfunktionen 
-   template <typename Ptr> 
-   MemComp<Ptr> membercomp(Ptr p) 
-   { 
-      return MemComp<Ptr>(p); 
-   } 
-
-   template<typename Comp, typename Ptr> 
-   MemComp<Ptr, Comp> membercomp(Ptr p, Comp c = Comp()) 
-   { 
-      return MemComp<Ptr, Comp>(p, c); 
-   } 
-
-   template<template<typename> class Comp, typename Ptr> 
-   MemComp<Ptr, Comp<typename MemberInfo<Ptr>::type> > 
-      membercomp(Ptr p, Comp<typename MemberInfo<Ptr>::type> c = Comp<typename MemberInfo<Ptr>::type>()) 
-   {
-      return MemComp<Ptr, Comp<typename MemberInfo<Ptr>::type> >(p, c); 
-   } 
-
-    
-   //////////////////////////////////////////////////////////////////////////
-   //////////////////////////////////////////////////////////////////////////
-   //////////////////////////////////////////////////////////////////////////
-   //andere Variante (alerdings ist hier keine Deduction moeglich!!!)
-   //////////////////////////////////////////////////////////////////////////
-   //Vergleichs-Templates:
-   //Funktor zum "non-const" Methodenvergleich: liste.sort( compareMethods<Klasse, int, &Klasse::getVal1  );
-   template<typename K/*Klasse*/, typename M /*MethodenRueckgabeTyp*/, M (K::*fct)() /*MethodenPointer*/> // Allgemeiner Fall
-   struct compareMethods
-   {
-      bool operator()(K& r, K& l) const // da fct nicht const ist, kann auch K nicht const sein. das const hinter der deklaration besagt dass compareMethods const sein kann
-      { return (r.*fct)() < (l.*fct)();  }
-   };
-   //////////////////////////////////////////////////////////////////////////
-   //Funktor zum "const" Methodenvergleich: liste.sort( compareMethods<Klasse, int, &Klasse::getVal1  );
-   template<typename K/*Klasse*/, typename M /*MethodenRueckgabeTyp*/, M (K::*fct)() const /*MethodenPointer*/> // <- hier const 
-   struct compareConstMethods
-   {
-      bool operator()(const K& r, const K& l) const //hier koennen die K's auch const sein, muessen sie aber nicht (const hinzufuegen geht ja problemlos)
-      { return (r.*fct)() < (l.*fct)();  }
-   };
-   //////////////////////////////////////////////////////////////////////////
-   //Funktor zum Membervergleich: lise.sort( compareMember<Klasse, int, &Klasse::member>() );
-   template<typename K/*Klasse*/, typename M /*MemberTyp*/, M (K::*Member) /*MemberPointer*/> // <- hier const 
-   struct compareMember
-   { 
-      bool operator()(const K& r,const K& l) const
-      { return r.*Member < l.*Member; } 
-   };
-   //Bsp:
-   //class Klasse{ 
-   //public: 
-   //   Klasse(double val1, double val2 ) : val1(val1),val2(val2) {} 
-   //   double getVal1()       { return val1; } 
-   //   double getVal2() const { return val2; } // <- hier const
-   //   double val1, val2; 
-   //}; 
-   //int main(int argc, char** argv){ 
-   //   std::list<Klasse> l; 
-   //   l.push_back( Klasse(10,10) ); 
-   //   l.push_back( Klasse(1,5)   ); 
-   //   l.sort( compareMember<Klasse, double,  &Klasse::val1 >() ); 
-   //   l.sort( compareMethods<Klasse, double,  &Klasse::getVal1 >() ); 
-   //   l.sort( compareConstMethods<Klasse, double,  &Klasse::getVal1 >() ); 
-   //} 
-
-};
-
-#endif //UBCOMPARATOR_H
-
-//example
-// #include <basics/utilities/UbComparators.h" 
-// #include <list> 
-// using namespace std; 
-// using namespace UbComparators; 
-// 
-// struct S { 
-//    S(int i) :x(i) {} 
-//    int x; 
-//    float f() {return x;}; 
-//    double g() const {return x;} 
-// }; 
-// 
-// struct intComp { 
-//    bool operator()(int l, int r) const 
-//    { return l > r; } 
-// }; 
-// 
-// struct dblComp { 
-//    bool operator()(double l,  double r) const 
-//    { return l > r; } 
-// }; 
-// 
-// template <typename T> 
-// struct genComp { 
-//    bool operator()(const T& l, const T& r) const
-//    { return l > r; } 
-// }; 
-// 
-// 
-// int main() 
-// { 
-//    S a(1); 
-//    S b(2); 
-//    list<S> sList; 
-//    sList.push_back(a); 
-//    sList.push_back(b); 
-//    sList.sort(UbComparators::membercomp(&S::x,intComp()));  //calls overload (1) 
-//    sList.sort(UbComparators::membercomp<intComp>(&S::x));   //same 
-//    sList.sort(UbComparators::membercomp(&S::x));            //calls overload (5) 
-//    sList.sort(UbComparators::membercomp<genComp>(&S::x));   //calls overload(3) 
-//    sList.sort(UbComparators::membercomp(&S::x, genComp<int>())); //calls overload(1) 
-//    //same for nonconst function 
-//    sList.sort(UbComparators::membercomp(&S::f, dblComp())); //overload(2) 
-//    sList.sort(UbComparators::membercomp<dblComp>(&S::f));   //same      
-//    sList.sort(UbComparators::membercomp(&S::f));            //overload(6) 
-//    sList.sort(UbComparators::membercomp<genComp>(&S::f));   //overload(4) 
-//    //same for const function 
-//    sList.sort(UbComparators::membercomp(&S::g, dblComp())); //overload(2) 
-//    sList.sort(UbComparators::membercomp<dblComp>(&S::g));   //same      
-//    sList.sort(UbComparators::membercomp(&S::g));            //overload(6) 
-//    sList.sort(UbComparators::membercomp<genComp>(&S::g));   //overload(4) 
-// } 
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbConverter.cpp b/source/VirtualFluidsCore/Basics/utilities/UbConverter.cpp
deleted file mode 100644
index ad5a99923c0985192555d6ed95efd7502a0efe18..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbConverter.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-#include <basics/utilities/UbConverter.h>
-
-const std::string UbConverter::base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                              "abcdefghijklmnopqrstuvwxyz"
-                                              "0123456789+/";
-
-
-std::string UbConverter::base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) 
-{
-   std::string ret;
-   int i = 0;
-   int j = 0;
-   unsigned char char_array_3[3];
-   unsigned char char_array_4[4];
-
-   while (in_len--)
-   {
-      char_array_3[i++] = *(bytes_to_encode++);
-      if( i==3)
-      {
-         char_array_4[0] = ( char_array_3[0] & 0xfc) >> 2;
-         char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
-         char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
-         char_array_4[3] = char_array_3[2] & 0x3f;
-
-         for( i=0; i<4 ; i++)
-            ret += base64_chars[char_array_4[i]];
-         i=0;
-      }
-   }
-
-   if( i )
-   {
-      for( j=i; j<3; j++)
-         char_array_3[j] = '\0';
-
-      char_array_4[0] = ( char_array_3[0] & 0xfc) >> 2;
-      char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
-      char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
-      char_array_4[3] = char_array_3[2] & 0x3f;
-
-      for ( j=0; j<i+1; j++)
-         ret += base64_chars[char_array_4[j]];
-
-      while( i++<3 )
-         ret += '=';
-   }
-
-   return ret;
-}
-/*=======================================================*/
-std::string UbConverter::base64_decode(std::string const& encoded_string) 
-{
-   int in_len = (int)encoded_string.size();
-   int i = 0;
-   int j = 0;
-   int in_ = 0;
-   unsigned char char_array_4[4], char_array_3[3];
-   std::string ret;
-
-   while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) 
-   {
-      char_array_4[i++] = encoded_string[in_]; in_++;
-      if(i ==4)
-      {
-         for (i = 0; i <4; i++)
-            char_array_4[i] = (unsigned char)base64_chars.find(char_array_4[i]);
-
-         char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
-         char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
-         char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
-
-         for (i = 0; (i < 3); i++)
-            ret += char_array_3[i];
-         i = 0;
-      }
-   }
-
-   if( i )
-   {
-      for(j = i; j <4; j++)
-         char_array_4[j] = 0;
-
-      for(j = 0; j <4; j++)
-         char_array_4[j] = (unsigned char)base64_chars.find(char_array_4[j]);
-
-      char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
-      char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
-      char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
-
-      for(j = 0; (j < i - 1); j++) 
-         ret += char_array_3[j];
-   }
-
-   return ret;
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbConverter.h b/source/VirtualFluidsCore/Basics/utilities/UbConverter.h
deleted file mode 100644
index 51e713cd47e832848d47a9db022078666222b3e6..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbConverter.h
+++ /dev/null
@@ -1,49 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBCONVERTER_H 
-#define UBCONVERTER_H 
-
-#include <cstdlib> 
-#include <ctime> 
-#include <cassert> 
-#include <string>
-
-/*=========================================================================*/
-/*  UBConverter                                                             */
-/*                                                                         */
-//
-// encodes  vals to   e.g. base64
-// dencodes vals from e.g. base64
-// author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-// version 1.0 - 22.10.2007
-
-
-class UbConverter
-{
-public:
-   static std::string base64_encode(unsigned char const* , unsigned int len);
-   static std::string base64_decode(std::string const& s);
-
-   static inline bool is_base64(const unsigned char& c)
-   {
-      return (isalnum(c) || (c == '+') || (c == '/'));
-   }
-
-protected:
-   UbConverter() {}
-   ~UbConverter() {}
-
-private:
-   UbConverter(const UbConverter&);  // not implemented.
-   void operator=(const UbConverter&);  //not implemented.
-
-   static const std::string base64_chars;
-};
-
-
-
-#endif //UBCONVERTER_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbEqual.h b/source/VirtualFluidsCore/Basics/utilities/UbEqual.h
deleted file mode 100644
index e838aca00223d0e0064784dc555ee51d13efe144..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbEqual.h
+++ /dev/null
@@ -1,120 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBEQUAL_H
-#define UBEQUAL_H
-
-#include<cmath>
-
-//////////////////////////////////////////////////////////////////////////
-//isUbEqual<T1,T2>(a,b)
-//vergleicht die gleichtheit der beiden werte a und b
-//
-//std-maessig wird hierfür der operator== verwendet
-//
-//Ausnahme: floating-points
-//hier wird jeweils der "genauere typ zum ungenaueren gecastet und dann verglichen"
-//e.g.: double d=1.2; int i=1; bool check = isUbEqual(d,i); -> true
-//
-//bei klassen muss hier operator== fuer const objecte implementiert sein!!!
-//e.g.: bool operator==(const Test&) const { if(blabla) return true; else return false; }
-//
-//
-//author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//version 1.0 - 25.03.2008
-//////////////////////////////////////////////////////////////////////////
-
-//std-trait, fuer alle nicht spezifischen typen:
-template < typename T1, typename T2 >
-struct UbEqualTrait
-{
-   typedef T1 High;
-   typedef T1 Low;
-};
-
-//std-trait, fuer gleiche T
-template < typename T >
-struct UbEqualTrait< T, T >
-{
-   typedef T High;
-   typedef T Low;
-};
-
-//spezialisierung für diverse Typen-Tuples
-template<> struct UbEqualTrait< short, int >          { typedef int         High; typedef short  Low; };
-template<> struct UbEqualTrait< short, long >         { typedef long        High; typedef short  Low; };
-template<> struct UbEqualTrait< short, float >        { typedef float       High; typedef short  Low; };
-template<> struct UbEqualTrait< short, double >       { typedef double      High; typedef short  Low; };
-template<> struct UbEqualTrait< short, long double >  { typedef long double High; typedef short  Low; };
-
-template<> struct UbEqualTrait< int, short >          { typedef int         High; typedef short  Low; };
-template<> struct UbEqualTrait< int, long >           { typedef long        High; typedef int    Low; };
-template<> struct UbEqualTrait< int, float >          { typedef float       High; typedef int    Low; };
-template<> struct UbEqualTrait< int, double >         { typedef double      High; typedef int    Low; };
-template<> struct UbEqualTrait< int, long double >    { typedef long double High; typedef int    Low; };
-
-template<> struct UbEqualTrait< long, short >         { typedef long        High; typedef short  Low; };
-template<> struct UbEqualTrait< long, int >           { typedef long        High; typedef int    Low; };
-template<> struct UbEqualTrait< long, float >         { typedef float       High; typedef long   Low; };
-template<> struct UbEqualTrait< long, double >        { typedef double      High; typedef long   Low; };
-template<> struct UbEqualTrait< long, long double >   { typedef long double High; typedef long   Low; };
-
-template<> struct UbEqualTrait< float, short >        { typedef float       High; typedef short  Low; };
-template<> struct UbEqualTrait< float, int >          { typedef float       High; typedef int    Low; };
-template<> struct UbEqualTrait< float, long >         { typedef float       High; typedef long   Low; };
-template<> struct UbEqualTrait< float, double >       { typedef double      High; typedef float  Low; };
-template<> struct UbEqualTrait< float, long double >  { typedef long double High; typedef float  Low; };
-
-template<> struct UbEqualTrait< double, short >       { typedef double      High; typedef short  Low; };
-template<> struct UbEqualTrait< double, int >         { typedef double      High; typedef int    Low; };
-template<> struct UbEqualTrait< double, long >        { typedef double      High; typedef long   Low; };
-template<> struct UbEqualTrait< double, float >       { typedef double      High; typedef float  Low; };
-template<> struct UbEqualTrait< double, long double > { typedef long double High; typedef double Low; };
-
-template<> struct UbEqualTrait< long double, short >  { typedef long double High; typedef short  Low; };
-template<> struct UbEqualTrait< long double, int >    { typedef long double High; typedef int    Low; };
-template<> struct UbEqualTrait< long double, long >   { typedef long double High; typedef long   Low; };
-template<> struct UbEqualTrait< long double, float >  { typedef long double High; typedef float  Low; };
-template<> struct UbEqualTrait< long double, double > { typedef long double High; typedef double Low; };
-
-//////////////////////////////////////////////////////////////////////////
-//fuer Allgmeine-Typen ( operator== ):
-template< typename T1, typename T2 >
-inline bool specific_equal(const T1& a, const T2& b) { return a==b; }
-
-//////////////////////////////////////////////////////////////////////////
-//fuer floating point build-in-type
-//float.float
-template< /*float,float*/>
-inline bool specific_equal< float, float >(const float& a, const float& b) {  return std::fabs( a - b ) < 1E-8; }
-
-template</*double,double*/>
-inline bool specific_equal< double, double >(const double& a, const double& b) { return std::fabs( a - b ) < 1E-13; }
-
-template</*long double,long double*/>
-inline bool specific_equal< long double, long double >(const long double& a, const long double& b) { return std::fabs( a - b ) < 1E-16; }
-
-//////////////////////////////////////////////////////////////////////////
-//globale isUbEqual - Funktion
-template< typename T1, typename T2 >
-inline bool isUbEqual(const T1& a, const T2& b)
-{
-   typedef typename UbEqualTrait<T1,T2>::Low Low;
-   return specific_equal< Low, Low >(static_cast< Low >( a ),static_cast< Low >( b ));
-};
-
-//////////////////////////////////////////////////////////////////////////
-//UbEqual-Functor
-template< typename T1, typename T2 >
-struct UbEqual
-{
-   bool operator()(const T1& a, const T2& b)
-   {
-      return isUbEqual(a,b);
-   }
-};
-
-#endif //UBEQUAL_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbException.h b/source/VirtualFluidsCore/Basics/utilities/UbException.h
deleted file mode 100644
index 48d1e1a60065d6f6e057aafa59abded38b800664..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbException.h
+++ /dev/null
@@ -1,163 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBEXCEPTION_H
-#define UBEXCEPTION_H
-
-#include <vector>
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <stdexcept>
-
-#include <boost/exception/all.hpp>
-
-#include "./UbTuple.h"
-
-/*=========================================================================*/
-/*  UbException                                                             */
-/*                                                                         */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0  - 23.11.04
-@version 1.5  - 14.03.08
-@version 1.6  - 31.03.08 derivation from std::run_time_error
-@version 1.6a - helper marco UB_EXARGS
-*/ 
-
-/*
-usage: UB_THROW( UbException("error message") );
-       UB_THROW( UbException(__FILE__, __LINE__,"error message") );
-       UB_THROW( UbException(__FILE__, __LINE__,UB_FUNCTION,"error message") );
-       UB_THROW( UbException(UB_EXARGS,"error") ); //same as above
-*/
-
-//Macro UB_FUNCTION: figures out the method/function name (platform dependant)
-#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
- # define UB_FUNCTION __PRETTY_FUNCTION__
-#elif defined(__DMC__) && (__DMC__ >= 0x810)
- # define UB_FUNCTION __PRETTY_FUNCTION__
-#elif defined(__FUNCSIG__)
- # define UB_FUNCTION __FUNCSIG__
-#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
- # define UB_FUNCTION __FUNCTION__
-#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
- # define UB_FUNCTION __FUNC__
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
- # define UB_FUNCTION __func__
-#else
- # define UB_FUNCTION "(unknown)"
-#endif
-
-//Helper Marco
-#define UB_EXARGS __FILE__,__LINE__,UB_FUNCTION
-
-#ifdef CAB_BOOST
-   #define UB_THROW(e) throw boost::enable_current_exception(e)
-#else
-   #define UB_THROW(e) throw e
-#endif
-
-class UbException : public std::runtime_error, public boost::exception
-{
-public:
-   typedef UbTuple< std::string, int, std::string, std::string > ExceptionData;
-public:
-   //////////////////////////////////////////////////////////////////////////
-   //constructors
-   UbException()
-      : std::runtime_error("")
-   { 
-   }
-   /*==========================================================*/
-   UbException(const std::string& str)
-      : std::runtime_error("")
-   {
-      this->addInfo(str);		
-   }
-   /*==========================================================*/
-   UbException(const std::string& file, const int& line, const std::string& err_str)
-      : std::runtime_error("")
-   {
-      this->addInfo(file,line,"unknown",err_str);		
-   }
-   /*==========================================================*/
-   //UbException(const char* file, const int& line, const char* function, const std::string& err_str)
-   UbException(const std::string& file, const int& line, const std::string& function, const std::string& err_str)
-      : std::runtime_error("")
-   {
-      this->addInfo(file,line,function,err_str);		
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //destructor
-   virtual ~UbException() throw() { }
-   //////////////////////////////////////////////////////////////////////////
-   //virtual public methods
-   //returns  exception-string
-   virtual const char* what() const throw()
-   {
-      exceptionString = this->toString();
-      return exceptionString.c_str();  //ansonsten ist das Verhalten anschließend undefiniert!
-   }
-   /*==========================================================*/
-   virtual void addInfo(const std::string& err_str)	 
-   { 
-      exceptionData.push_back( makeUbTuple( (std::string)"-", 0, (std::string)"unknown", err_str) ); 
-   }
-   /*==========================================================*/
-   //add exception
-   virtual void addInfo(const std::string& file, const int& line, const std::string& function, const std::string& err_str)	 
-   { 
-      exceptionData.push_back( makeUbTuple( file, line, function, err_str ) ); 
-   }
-   /*==========================================================*/
-   //returns exception-string with all calles exceptions
-   virtual const std::vector<std::string> getInfo() const
-   { 
-      std::vector<std::string> tmp;
-      for(std::size_t i=0; i<exceptionData.size(); i++)
-      {
-         std::stringstream str;
-         str << val<1>( exceptionData[i] ) << ", " 
-             << val<2>( exceptionData[i] ) << ", " 
-             << val<3>( exceptionData[i] ) << ", " 
-             << val<4>( exceptionData[i] );
-         tmp.push_back( str.str());
-      }
-      return tmp; 
-   }
-   /*==========================================================*/
-   //returns exception-string with all calles exceptions and detailes informations
-   virtual std::string toString() const
-   { 
-      std::stringstream str("UbExeption");
-      
-      for(std::size_t i=0; i<exceptionData.size(); i++)
-         str<<(std::string)"caller[" << i << "]\n"
-            <<"  - file:     "<< val<1>( exceptionData[i] )<<"\n"
-            <<"  - line:     "<< val<2>( exceptionData[i] )<<"\n"
-            <<"  - function: "<< val<3>( exceptionData[i] )<<"\n"
-            <<"  - what:     "<< val<4>( exceptionData[i] )<< std::endl; 
-
-      return str.str();
-   }
-
-protected:
-   //////////////////////////////////////////////////////////////////////////
-   //protected member
-   std::vector< ExceptionData > exceptionData;
-   mutable std::string exceptionString;
-};
-
-//overlading operator <<
-inline std::ostream& operator<<(std::ostream& os, const UbException& e)
-{
-   return os<<e.toString();
-}
-
-#endif //UBEXCEPTION_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileInput.h b/source/VirtualFluidsCore/Basics/utilities/UbFileInput.h
deleted file mode 100644
index 3b08a7fdb532c3b5b45cc14d3315dd1eee52b379..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileInput.h
+++ /dev/null
@@ -1,97 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEINPUT_H
-#define UBFILEINPUT_H
-
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <cstdlib> //atoi
-#include <cstring> //strstr
-
-#include <basics/utilities/UbException.h>
-
-/*=========================================================================*/
-/*  UbFileInput                                                            */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/
-
-/*
-usage: ...
-*/
-
-class UbFileInput
-{
-public:
-   enum FILETYPE {ASCII, BINARY};      
-
-public:
-   UbFileInput() : filename(""), commentindicator('C') { }
-   virtual ~UbFileInput() { infile.close(); }
-
-   virtual bool        operator!() { return !(infile); }
-   virtual bool        isOpen()    { return !(!(infile)); }
-
-   virtual bool        open(std::string filename)=0;
-   virtual void        close() { infile.close(); }
-   virtual int         eof()   { return infile.eof(); }
-
-   virtual void        skipLine()=0;					// Springt zur naechsten Zeile
-	virtual void        readLine()=0;
-   virtual std::string readStringLine()=0;
-	virtual int		     readInteger()=0;				// Liest einen Int-Wert ein
-   virtual std::size_t readSize_t()=0;
-   virtual double	     readDouble()=0;				   // Liest einen double-Wert ein
-	virtual float	     readFloat()=0;				   // Liest einen float-Wert ein
-	virtual bool  	     readBool()=0;				   // Liest einen bool-Wert ein
-   virtual char  	     readChar()=0;				   // Liest einen char-Wert ein
-   virtual std::string readString()=0;			      // Liest ein Wort ein
-	virtual std::string readLineTill(char stop)=0;	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	virtual std::string parseString()=0;	         // Liest
-
-   virtual void        setCommentIndicator(char commentindicator) {this->commentindicator = commentindicator;}
-
-   virtual bool        containsString( const std::string& var)=0;
-   virtual void        setPosAfterLineWithString( const std::string& var)=0;
-   virtual int		     readIntegerAfterString( const std::string& var)=0;
-   virtual double	     readDoubleAfterString( const std::string& var)=0;
-   virtual bool        readBoolAfterString( const std::string& var)=0;
-   virtual std::string readStringAfterString( const std::string& var)=0;
-
-   virtual std::string getFileName() {return this->filename;}
-
-   //returns file extension:
-   //e.g. "./../test/ich.inp" -> "inp", "./../test/ich" -> ""
-   virtual std::string getFileExtension()
-   {
-      std::size_t pos1 = filename.rfind("/");
-      if(pos1==std::string::npos) pos1 = 0;
-      std::size_t pos2 = filename.rfind(".");
-      if(pos2!=std::string::npos && pos2>pos1)
-         return filename.substr(pos2+1);
-
-      return "";
-   }
-
-   //returns "ASCII", "BINARY"
-   virtual FILETYPE getFileType()=0;
-
-protected:
-   std::ifstream infile;
-   std::string   filename;
-   char          commentindicator;
-};
-
-#endif //UBFILEINPUT_H
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.cpp b/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.cpp
deleted file mode 100644
index d17d69cf9c3555f3ab742ec5922e3872ba93b796..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-#include <basics/utilities/UbFileInputASCII.h>
-#include <cstring>
-
-using namespace std;
-
-UbFileInputASCII::UbFileInputASCII(string filename)
-{
-	this->filename         = filename;
-   this->commentindicator = 'C';
-
-   infile.open(filename.c_str());
-
-   //if(!infile) UB_THROW( UbException((string)("UbFileInputASCII::UbFileInputASCII(string filename, int how) couldn't open file:\n "+filename)) );
-}
-/*==========================================================*/
-bool UbFileInputASCII::open(string filename)
-{
-   infile.close();
-   infile.clear(); //setzt flags zurueck
-
-   this->filename = filename;
-   infile.open(this->filename.c_str());
-
-   return infile.is_open();
-}
-/*==========================================================*/
-int UbFileInputASCII::readInteger()
-{
-	int dummy;
-	infile>>dummy;
-	return dummy;
-}
-/*==========================================================*/
-string UbFileInputASCII::getFileName()
-{
-	return this->filename;
-}
-
-/*==========================================================*/
-void UbFileInputASCII::skipLine()
-{
-	string dummy;
-	getline(infile, dummy);
-}
-/*==========================================================*/
-void UbFileInputASCII::readLine()
-{
-	string dummy;
-	getline(infile, dummy);
-}
-/*==========================================================*/
-string UbFileInputASCII::readStringLine()
-{
-   string dummy;
-   getline(infile, dummy);
-   return dummy;
-}
-/*==========================================================*/
-string UbFileInputASCII::readLineTill(char stop)
-{
-	string dummy;
-	getline(infile, dummy, stop);
-	return dummy;
-}
-/*==========================================================*/
-string UbFileInputASCII::parseString()
-{
-	string dummy;
-	getline(infile, dummy, ' ');
-	return dummy;
-}
-/*==========================================================*/
-double UbFileInputASCII::readDouble()
-{
-   double dummy;
-   infile>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-float UbFileInputASCII::readFloat()
-{
-   float dummy;
-   infile>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-string UbFileInputASCII::readString()
-{
-	string dummy;
-	infile>>dummy;
-	return dummy;
-}
-/*==========================================================*/
-char UbFileInputASCII::readChar()
-{
-   int dummy;
-   infile>>dummy;
-   return (char)dummy;
-}
-/*==========================================================*/
-std::size_t UbFileInputASCII::readSize_t()
-{
-   std::size_t dummy;
-   infile>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-void UbFileInputASCII::setPosAfterLineWithString(const string& var)
-{
-   infile.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-   char line[512];
-   do
-   {
-      infile.getline(line,512);
-      if(infile.eof()) UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> string "+var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt
-}
-/*==========================================================*/
-bool UbFileInputASCII::containsString(const string& var)
-{
-   infile.clear(); // setzt den EOF-Status zurueck (wird durch infile.seekg() NICHT getan!!!)
-
-   infile.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-   char line[512];
-   do
-   {
-      infile.getline(line,512);
-      if(infile.eof()) return false;
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt
-
-   return true;
-}
-/*==========================================================*/
-int UbFileInputASCII::readIntegerAfterString(const string& var)
-// last change [10.3.2004] at [9:46]
-//suchts in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. timesteps 9
-{
-   infile.clear(); // setzt den EOF-Status zurueck (wird durch infile.seekg() NICHT getan!!!)
-   
-   infile.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];
-
-   do
-   {
-      infile.getline(line,512);
-      if(infile.eof()) UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> "+var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt
-
-   strcpy (line, (line+strlen(var.c_str())));	    // zeile um "varname" kuerzen
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   return(atoi(line));						// Umwandlung in int
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46]
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-double UbFileInputASCII::readDoubleAfterString(const string& var)
-{
-   infile.clear(); // setzt den EOF-Status zurueck (wird durch infile.seekg() NICHT getan!!!)
-   
-   infile.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];
-
-   do
-   {
-      infile.getline(line,512);
-      if(infile.eof()) UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> "+var+" wasn't found in "+this->filename) );
-   }while (/*!strncmp(varname,line,sizeof(varname))==0*/strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt
-
-
-   strcpy (line, (line+strlen(var.c_str())));	    // zeile um "varname" kuerzen
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   return (atof(line));			// Umwandlung in double
-}
-/*==========================================================*/
-//  [9.9.2002]
-// liefert string-Wert der hinter dem uebergebenen char feld in der datei infile steht
-// zudem wird der wert in die uebergebene variable value uebertragen (falls man das ergebniss als char benoetig)
-string UbFileInputASCII::readStringAfterString(const string& var)//,char *value)
-{
-   infile.clear(); // setzt den EOF-Status zurueck (wird durch infile.seekg() NICHT getan!!!)
-   
-   infile.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];
-   //string line_copy[512];
-
-   do{
-      infile.getline(line,512);
-      if(infile.eof()) UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> "+var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt
-
-   strcpy (line, (line+strlen(var.c_str())));										// zeile um "varname" kuerzen
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   char *p;
-   p=strtok(line," "); //schneidet alles "ab und inklusive space " nach namen ab
-   p=strtok(line,"\t");//schneidet alles "ab und inklusive tab   " nach namen ab
-
-   return static_cast<string>(p);			// Umwandlung in string
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46]
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-bool UbFileInputASCII::readBoolAfterString(const string& var)
-{
-   if(this->readStringAfterString(var)      == "true" ) return true;
-   else if(this->readStringAfterString(var) == "false") return false;
-   else UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> expression after "+var+" is not equal to 'true' or 'false' in "+this->filename) );
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46]
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-bool UbFileInputASCII::readBool()
-{
-   string tmp = this->readString();
-   if(     tmp == "true" ) return true;
-   else if(tmp == "false") return false;
-   else UB_THROW( UbException(UB_EXARGS,"error at reading in file \""+filename+"\" -> expression=\""+tmp+"\" is not equal to 'true' or 'false' in "+this->filename) );
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.h b/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.h
deleted file mode 100644
index 77c07137bbaf9c9b542ac1b1e939729af15dd85f..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileInputASCII.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEINPUTASCII_H
-#define UBFILEINPUTASCII_H
-
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileInput.h>
-
-/*=========================================================================*/
-/*  UbFileInputASCII                                                       */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/ 
-
-/*
-usage: ...
-*/
-
-class UbFileInputASCII : public UbFileInput
-{                               
-public:
-   UbFileInputASCII() : UbFileInput() { }
-   UbFileInputASCII(std::string filename);
-	
-   bool open(std::string filename);
-
-   std::string getFileName();				
-	void	      skipLine();					   // Springt zur naechsten Zeile
-
-   void        readLine();		 
-   std::string readStringLine();				
-	int		   readInteger();				   // Liest einen Int-Wert ein
-   std::size_t readSize_t();
-   double	   readDouble();				   // Liest einen double-Wert ein
-	float 	   readFloat();				   // Liest einen float-Wert ein
-	bool  	   readBool();				      // Liest einen bool-Wert ein
-   char        readChar();                // Liest einen char-Wert ein
-   std::string	readString();				   // Liest ein Wort ein
-	std::string	readLineTill(char stop);	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	std::string	parseString();	
-
-   bool        containsString(const std::string& var);
-   void        setPosAfterLineWithString(const std::string& var);
-   int		   readIntegerAfterString(const std::string& var);
-   double	   readDoubleAfterString(const std::string& var);
-   bool        readBoolAfterString(const std::string& var);
-   std::string readStringAfterString(const std::string& var);
-
-   FILETYPE getFileType() { return ASCII; }
-
-   template< typename T >
-   friend inline UbFileInputASCII& operator>>(UbFileInputASCII& file, T& data) 
-   {
-      file.infile>>data;
-      return file;
-   }
-};
-
-#endif //UBFILEINPUTASCII_H
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.cpp b/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.cpp
deleted file mode 100644
index 0bcf60ce0ca665403e95d6f0f5366e03c18382fb..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-#include <basics/utilities/UbFileInputBinary.h>
-#include <cstring>
-
-using namespace std;
-
-/*==========================================================*/
-UbFileInputBinary::UbFileInputBinary(string filename)
-{
-	this->filename = filename;
-   infile.open(filename.c_str(), ios::in | ios::binary);
-}
-/*==========================================================*/
-bool UbFileInputBinary::open(string filename)
-{
-   infile.close();
-   infile.clear(); //setzt flags zurueck
-   
-   this->filename = filename;
-   infile.open(this->filename.c_str(), ios::in | ios::binary);
-
-   return infile.is_open();
-}
-/*==========================================================*/
-int UbFileInputBinary::readInteger()				
-{
-   int dummy;
-   infile.read((char*)&dummy,sizeof(int));
-   return dummy; 
-}
-/*==========================================================*/
-std::size_t UbFileInputBinary::readSize_t()				
-{
-   std::size_t dummy;
-   infile.read((char*)&dummy,sizeof(std::size_t));
-   return dummy;
-}
-/*==========================================================*/
-double UbFileInputBinary::readDouble()	
-{
-   double dummy;
-   infile.read((char*)&dummy,sizeof(double));
-   return dummy; 
-}
-/*==========================================================*/
-float UbFileInputBinary::readFloat()	
-{
-	float dummy;
-	infile.read((char*)&dummy,sizeof(float));
-	return dummy; 
-}
-/*==========================================================*/
-char UbFileInputBinary::readChar()	
-{
-   char dummy;
-   infile.read((char*)&dummy,sizeof(char));
-   return dummy; 
-}
-/*==========================================================*/
-string UbFileInputBinary::readString()	
-{
-   char c;
-   infile.read(&c,sizeof(char));
-   while(c==' ' || c=='\t') infile.read(&c,sizeof(char));  
-   
-   string dummy;
-   dummy+=c;
-
-   infile.read(&c,sizeof(char));
-   while(c!='\0' && c!=' ' && c!='\t' && c!='\n')
-   {
-      dummy+=c;
-      infile.read(&c,sizeof(char));
-   }
-   return dummy;
-}
-/*==========================================================*/
-bool UbFileInputBinary::readBool()	
-{
-   bool dummy;
-   infile.read((char*)&dummy,sizeof(bool));
-   return dummy; 
-}
-/*==========================================================*/
-void UbFileInputBinary::skipLine()				
-{
-   char c;
-   do{
-      infile.read(&c,sizeof(char));
-   }while(c!='\n');
-}
-/*==========================================================*/
-void UbFileInputBinary::readLine()				
-{
-   char c;
-   infile.read(&c,sizeof(char));
-   while(c!='\n') infile.read(&c,sizeof(char));
-}
-/*==========================================================*/
-string UbFileInputBinary::readStringLine()				
-{
-   char c;
-   string dummy;
-   infile.read(&c,sizeof(char));
-   while(c!='\n')
-   {
-      dummy+=c;
-      infile.read(&c,sizeof(char));
-   }
-   return dummy;
-}
-/*==========================================================*/
-string UbFileInputBinary::readLineTill(char stop)				
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-string UbFileInputBinary::parseString()				
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-bool UbFileInputBinary::containsString(const string& var)
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-void UbFileInputBinary::setPosAfterLineWithString(const string& var)
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-int UbFileInputBinary::readIntegerAfterString(const string& var)
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-double UbFileInputBinary::readDoubleAfterString(const string& var)	
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-string UbFileInputBinary::readStringAfterString(const string& var)	
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
-/*==========================================================*/
-bool UbFileInputBinary::readBoolAfterString(const string& var)	
-{
-   UB_THROW( UbException(UB_EXARGS,"method makes no sense for binary streams") );
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.h b/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.h
deleted file mode 100644
index 1e994ba792ccf82941cd6cf2aba87e5edeb9f51e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileInputBinary.h
+++ /dev/null
@@ -1,71 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEINPUTBINARY_H
-#define UBFILEINPUTBINARY_H
-
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileInput.h>
-
-/*=========================================================================*/
-/*  UbFileInputBinary                                                      */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/ 
-
-/*
-usage: ...
-*/
-
-class UbFileInputBinary : public UbFileInput
-{                               
-public:
-   UbFileInputBinary() : UbFileInput() {  }
-   UbFileInputBinary(std::string filename);
-	
-	bool        open(std::string filename);
-
-   void	      skipLine();					   // Springt zur naechsten Zeile
-	void        readLine();		 
-   std::string readStringLine();				
-   std::size_t readSize_t();				
-   int		   readInteger();				   // Liest einen Int-Wert ein
-	double	   readDouble();				   // Liest einen double-Wert ein
-	float 	   readFloat();				   // Liest einen float-Wert ein
-	bool  	   readBool();				      // Liest einen bool-Wert ein
-   char        readChar();                // Liest einen char-Wert ein
-   std::string	readString();				   // Liest ein Wort ein
-	std::string	readLineTill(char stop);	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	std::string	parseString();	// Liest 
-
-   bool        containsString(const std::string& var);
-   void        setPosAfterLineWithString(const std::string& var);
-   int		   readIntegerAfterString(const std::string& var);
-   double	   readDoubleAfterString(const std::string& var);
-   bool        readBoolAfterString(const std::string& var);
-   std::string readStringAfterString(const std::string& var);
-
-   FILETYPE getFileType() { return BINARY; }
-
-   template< typename T >
-   friend inline UbFileInputBinary& operator>>(UbFileInputBinary& file, T& data) 
-   {
-      file.infile.read((char*)&data,sizeof(T));
-      return file;
-   }
-};
-
-#endif
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileOutput.h b/source/VirtualFluidsCore/Basics/utilities/UbFileOutput.h
deleted file mode 100644
index c55dd82fcf5074e66f709fb662dd680732dacbc3..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileOutput.h
+++ /dev/null
@@ -1,93 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEOUTPUT_H
-#define UBFILEOUTPUT_H            
-
-#include <iomanip>
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <basics/utilities/UbException.h>
-
-/*=========================================================================*/
-/*  UbFileOutput                                                             */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/ 
-
-/*
-usage: ...
-*/
-
-class UbFileOutput
-{
-public:
-   enum CREATEOPTION {OUTFILE=0, INANDOUTFILE=1, APPENDFILE=2};      
-   enum FILETYPE {ASCII, BINARY};      
-
-public:
-   UbFileOutput() : filename(""), commentindicator('C') {  }
-   UbFileOutput(const std::string& filename)  : filename(filename), commentindicator('C') { }             
-   virtual ~UbFileOutput() { outfile.flush();outfile.close(); }
-
-   virtual bool open(const std::string& filename, CREATEOPTION opt=OUTFILE) = 0;
-
-   virtual bool operator!() { return !(outfile); }
-   virtual bool isOpen()    { return !(!(outfile)); }
-   
-   virtual void flush() { outfile.flush(); }
-   virtual void close() { outfile.close(); }
-   
-   virtual void writeInteger(const int& value, const int& width=0)=0;
-	virtual void writeDouble(const double& value, const int& width=0)=0;
-	virtual void writeFloat(const float& value, const int& width=0)=0;
-   virtual void writeBool(const bool& value, const int& width=0)=0;
-   virtual void writeSize_t(const std::size_t& value, const int& width=0)=0;
-   virtual void writeChar(const char& value, const int& width=0)=0;
-   virtual void writeString(const std::string& value, const int& width=0)=0;
-   virtual void writeStringOnly(const std::string& value)=0;
-	virtual void writeLine(const std::string& value, const int& width=0)=0;
-	virtual void writeLine()=0;
-
-	virtual void writeCommentLine(const std::string& line)=0;
-	virtual void writeCommentLine(char indicator, const std::string& line)=0;
-   virtual void writeCopyOfFile(const std::string& filename)=0;
-	
-   virtual void setCommentIndicator(char commentindicator) {this->commentindicator = commentindicator;} 
-   
-   virtual void setPrecision(const int& precision)=0;
-   virtual int  getPrecision()=0;
-
-   //returns "ASCII", "BINARY"
-   virtual FILETYPE getFileType()=0;
-
-   //returns file extension:
-   //e.g. "./../test/ich.inp" -> "inp", "./../test/ich" -> ""
-   virtual std::string getFileExtension()  
-   {
-	   std::size_t pos1 = filename.rfind("/");
-      if(pos1==std::string::npos) pos1 = 0;
-      std::size_t pos2 = filename.rfind(".");
-      if(pos2!=std::string::npos && pos2>pos1)
-         return filename.substr(pos2+1);
-
-      return "";
-   }				
-
-   virtual std::string  getFileName() {return this->filename;}
-protected:
-   std::ofstream outfile;
-   std::string   filename; 
-   char          commentindicator; 
-};
-
-#endif //UBFILEOUTPUT_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.cpp b/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.cpp
deleted file mode 100644
index d68a766be8622f1138f6a0e22863b0962141f0bc..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-#include <basics/utilities/UbFileOutputASCII.h>
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbInfinity.h>
-#include <basics/utilities/UbMath.h>
-#include <cstring>
-
-using namespace std;
-
-UbFileOutputASCII::UbFileOutputASCII(const string& filename, const bool& createPath, const int& precision)
-   : UbFileOutput(filename)
-{
-	this->commentindicator = 'C'; 
-	this->setPrecision(20);
-
-   outfile.open(filename.c_str(),ios::out);
-   
-   if(!outfile && createPath) 
-   {
-      outfile.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0) 
-      {
-         UbSystem::makeDirectory(path);
-         outfile.open(filename.c_str(),ios::out);
-      }
-   }
-
-      if(!outfile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-}
-/*==========================================================*/
-UbFileOutputASCII::UbFileOutputASCII(const std::string& filename, CREATEOPTION opt, const bool& createPath, const int& precision)
-   : UbFileOutput(filename)
-{
-	this->commentindicator = 'C'; 
-   this->setPrecision(precision);
-	
-   if(!this->open(filename,opt) && createPath) 
-   {
-      outfile.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0) UbSystem::makeDirectory(path);
-
-      this->open(filename,opt);
-   }
-
-   if(!outfile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-}
-/*==========================================================*/
-bool UbFileOutputASCII::open(const std::string& filename, CREATEOPTION opt)
-{
-   outfile.close();
-   outfile.clear(); //setzt flags zurueck
-   this->filename = filename;
-
-   if     (opt==UbFileOutput::OUTFILE      ) outfile.open(this->filename.c_str(),ios::out); 
-   else if(opt==UbFileOutput::INANDOUTFILE ) outfile.open(this->filename.c_str(),ios::out | ios::in);
-   else if(opt==UbFileOutput::APPENDFILE   ) outfile.open(this->filename.c_str(),ios::app);
-   else UB_THROW( UbException(UB_EXARGS,"undefined CREATEOPTION") );
-
-   return outfile.is_open();
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeBool(const bool& value, const int& width)				
-{
-   outfile.width(width);
-   if(value) outfile<<"true ";
-   else      outfile<<"false ";
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeDouble(const double& value, const int& width)				
-{
-   outfile.width(width);
-   //Problem: Ub::inf wird gerundet 
-   //         -> beim Einlesen ist der Wert evtl zu gross und es kommt murks raus 
-   //         -> max Laenge darstellen und gut ist
-   if(UbMath::equal(value, (double)Ub::inf) )
-   {
-      ios_base::fmtflags flags = outfile.flags();
-      outfile<<setprecision(std::numeric_limits<double>::digits10+2);
-      outfile<<value<<" ";
-      outfile.flags(flags);
-      return;
-   }
-   outfile<<value<<" ";
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeFloat(const float& value, const int& width)				
-{
-   outfile.width(width);
-   //Problem: Ub::inf wird gerundet 
-   //         -> beim Einlesen ist der Wert evtl zu gross und es kommt murks raus 
-   //         -> max Laenge darstellen und gut ist
-   if(UbMath::equal(value, (float)Ub::inf) )
-   {
-      ios_base::fmtflags flags = outfile.flags();
-      outfile<<setprecision(std::numeric_limits<float>::digits10+2);
-      outfile<<value<<" ";
-      outfile.flags(flags);
-      return;
-   }
-   outfile<<value<<" ";
-}
-/*==========================================================*/
-void UbFileOutputASCII::setPrecision(const int& precision)				
-{
-   outfile<<setprecision(precision);
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeInteger(const int& value, const int& width)				
-{
-   outfile.width(width);
-   outfile<<value<<" ";
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeSize_t(const std::size_t& value, const int& width)
-{
-   outfile.width(width);
-   outfile<<value<<" ";
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeChar(const char& value, const int& width)
-{
-   outfile.width(width);
-   outfile<<(int)value<<" ";	
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeString(const string& value, const int& width)				
-{
-   outfile.width(width);
-   outfile<<value.c_str()<<" ";	
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeStringOnly(const string& value)				
-{
-	outfile<<value.c_str();	
-}
-
-/*==========================================================*/
-void UbFileOutputASCII::writeLine(const string& value, const int& width)				
-{
-   outfile.width(width);
-   outfile<<value.c_str()<<endl;	
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeLine()				
-{
-	outfile<<endl;	
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeCommentLine(const string& line) 
-{
-   this->writeCommentLine(this->commentindicator, line); 
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeCommentLine(char indicator, const string& line) 
-{
-	this->outfile<<indicator<<line<<endl;
-}
-/*==========================================================*/
-void UbFileOutputASCII::writeCopyOfFile(const string& filename)
-{
-   ifstream infile(filename.c_str());
-   if(!infile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-
-   try
-   {
-      char c;
-      while(infile.get(c)) 
-      {
-         outfile.put(c);  //=out<<c;
-      }
-      outfile.flush();
-      infile.close();
-   }
-   catch(std::exception& e) { UB_THROW( UbException(UB_EXARGS,"catched std::exception, error: "+(std::string)e.what()) ); }
-   catch(...)               { UB_THROW( UbException(UB_EXARGS,"unknown error") ); }
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.h b/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.h
deleted file mode 100644
index c0accdfbefc4f78aefc4812ff6f10fbce7e13ac7..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputASCII.h
+++ /dev/null
@@ -1,72 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEOUTPUTASCII_H
-#define UBFILEOUTPUTASCII_H
-
-#include <iomanip>
-#include <fstream>
-#include <iostream>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileOutput.h>
-
-/*=========================================================================*/
-/*  UbFileOutputASCII                                                             */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/ 
-
-/*
-usage: ...
-*/
-
-class UbFileOutputASCII : public UbFileOutput
-{
-public:
-   UbFileOutputASCII() : UbFileOutput() {}
-   UbFileOutputASCII(const std::string& filename, const bool& createPath=true,  const int& precision=15);             
-   UbFileOutputASCII(const std::string& filename, CREATEOPTION opt, const bool& createPath=true, const int& precision=15);
-   
-   bool open(const std::string& filename, CREATEOPTION opt=OUTFILE);
-   
-   void writeBool(const bool& value, const int& width=0);
-   void writeDouble(const double& value, const int& width=0);
-	void writeFloat(const float& value, const int& width=0);
-	void writeInteger(const int& value, const int& width=0);
-   void writeSize_t(const std::size_t& value, const int& width=0);
-   void writeChar(const char& value, const int& width=0);
-   void writeString(const std::string& value, const int& width=0);
-   void writeStringOnly(const std::string& value);
-   void writeLine(const std::string& value, const int& width=0);
-   void writeLine();
-  
-   void setPrecision(const int& precision);
-   int  getPrecision() { return (int)outfile.precision(); }
-
-   void setCommentIndicator(char commentindicator) {this->commentindicator = commentindicator;} 
-   
-   void writeCommentLine(const std::string& line);
-   void writeCommentLine(char indicator, const std::string& line);
-   void writeCopyOfFile(const std::string& filename);
-
-   FILETYPE getFileType() { return ASCII; }
-
-   template< typename T >
-   friend inline UbFileOutputASCII& operator<<(UbFileOutputASCII& file, const T& data) 
-   {
-      file.outfile<<data;
-      return file;
-   }
-};
-
-#endif
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.cpp b/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.cpp
deleted file mode 100644
index 144adbc76b1b020f049f237bbd23c496110ebd9a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#include <basics/utilities/UbFileOutputBinary.h>
-#include <basics/utilities/UbSystem.h>
-#include <cstring>
-
-using namespace std;
-
-/*==========================================================*/
-UbFileOutputBinary::UbFileOutputBinary(const string& filename, const bool& createPath)
-{
-   this->filename         = filename;
-   this->commentindicator = 'C'; 
-
-   outfile.open(filename.c_str(),ios::out | ios::binary);
-
-   if(!outfile && createPath) 
-   {
-      string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0)
-      {
-         outfile.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-         UbSystem::makeDirectory(path);
-         outfile.open(filename.c_str(),ios::out | ios::binary);
-      }
-   }
-
-   if(!outfile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-
-}
-/*==========================================================*/
-UbFileOutputBinary::UbFileOutputBinary(const string& filename,UbFileOutput::CREATEOPTION opt, const bool& createPath)
-{
-   this->filename         = filename;
-   this->commentindicator = 'C'; 
-
-   this->open(filename,opt);
-
-   if(!this->open(filename,opt) && createPath) 
-   {
-      string path = UbSystem::getPathFromString(filename);
-      if(path.size()>0)
-      {
-         outfile.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-         UbSystem::makeDirectory(path,20);
-
-         this->open(filename,opt);     
-      }      
-   }
-
-   if(!outfile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-}
-/*==========================================================*/
-bool UbFileOutputBinary::open(const string& filename, UbFileOutput::CREATEOPTION opt)
-{
-   outfile.close();
-   outfile.clear(); //setzt flags zurueck
-
-   this->filename         = filename;
-
-   if     (opt==UbFileOutput::OUTFILE    )  outfile.open(this->filename.c_str(),ios::out | ios::binary);
-   else if(opt==UbFileOutput::APPENDFILE )  outfile.open(this->filename.c_str(),ios::app | ios::binary);
-   else if(opt==UbFileOutput::INANDOUTFILE) UB_THROW( UbException(UB_EXARGS,"undefined CREATEOPTION - INANDOUTFILE not possible for BINARY files") );
-   else UB_THROW( UbException(UB_EXARGS,"undefined CREATEOPTION") );
-
-   return outfile.is_open();
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeBool(const bool& value, const int& width)				
-{
-   outfile.write((char*)&value,sizeof(bool));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeDouble(const double& value, const int& width)				
-{
-   outfile.write((char*)&value,sizeof(double));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeFloat(const float& value, const int& width)				
-{
-	outfile.write((char*)&value,sizeof(float));
-}
-/*==========================================================*/
-void UbFileOutputBinary::setPrecision(const int& precision)				
-{
-   UB_THROW( UbException(UB_EXARGS,"no way") );
-}
-/*==========================================================*/
-int UbFileOutputBinary::getPrecision()				
-{
-   UB_THROW( UbException(UB_EXARGS,"no way") );
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeInteger(const int& value, const int& width)				
-{
-   outfile.write((char*)&value,sizeof(value));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeSize_t(const std::size_t& value, const int& width)
-{
-   outfile.write((char*)&value,sizeof(value));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeChar(const char& value, const int& width)				
-{
-   outfile.write((char*)&value,sizeof(value));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeString(const string& value, const int& width)				
-{
-   char c='\0';
-   unsigned int length = (unsigned)value.length();
-   
-   unsigned pos;
-   //whitespaces und tabs am stringanfang uebergehen
-   for(pos=0; pos<length; pos++)
-      if( value[pos]!=' ' && value[pos]!='\t' ) break;
-
-   while(pos<length)
-   {
-      while(pos<length && value[pos]!=' ' && value[pos]!='\t' && value[pos]!='\0')
-      {
-         outfile.write((char*)&(value[pos++]),sizeof(char));
-      }
-
-      outfile.write(&c,sizeof(char));
-      pos++;
-
-      while(pos<length && (value[pos]==' ' || value[pos]=='\t' || value[pos]=='\0') )
-      {
-         pos++;
-      }
-   }
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeStringOnly(const string& value)				
-{
-   UbException(UB_EXARGS,"no way... causes to many errors");
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeLine(const std::string& value, const int& width)				
-{
-   this->writeString(value);
-   char c='\n';
-   outfile.write(&c,sizeof(char));
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeLine()				
-{
-   char c='\n';
-   outfile.write(&c,sizeof(char));   
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeCommentLine(const string& line) 
-{
-   try        { this->writeCommentLine(this->commentindicator, line); }
-   catch(...) { UB_THROW( UbException(UB_EXARGS,"unknown error") ); }
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeCommentLine(char indicator, const string& line) 
-{
-   string dummy = indicator + line;
-   this->writeLine(dummy);
-}
-/*==========================================================*/
-void UbFileOutputBinary::writeCopyOfFile(const string& filename)
-{
-   ifstream infile(filename.c_str(),ios::in | ios::binary);
-   if(!infile) UB_THROW( UbException(UB_EXARGS,"couldn't open file:\n "+filename) );
-
-   try
-   {
-      char c;
-      while(infile.get(c)) 
-      {
-         outfile.put(c);  //=out<<c;
-      }
-      outfile.flush();
-      infile.close();
-   }
-   catch(...) {UB_THROW( UbException(UB_EXARGS,"unknown error") );}
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.h b/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.h
deleted file mode 100644
index fac53e7ac439f4fe55410043f5830ff72fc4c852..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbFileOutputBinary.h
+++ /dev/null
@@ -1,70 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBFILEOUTPUTBINARY_H
-#define UBFILEOUTPUTBINARY_H
-
-#include <iomanip>
-#include <fstream>
-#include <iostream>
-
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileOutput.h>
-
-/*=========================================================================*/
-/*  UbFileOutputBinary                                                             */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.11.04
-*/ 
-
-/*
-usage: ...
-*/
-
-class UbFileOutputBinary : public UbFileOutput
-{
-public:
-   UbFileOutputBinary() : UbFileOutput() {}
-   UbFileOutputBinary(const std::string& filename, const bool& createPath=true);
-   UbFileOutputBinary(const std::string& filename, UbFileOutput::CREATEOPTION opt, const bool& createPath);
-   
-   bool open(const std::string& filename, UbFileOutput::CREATEOPTION opt=OUTFILE);
-
-   void writeInteger(const int& value, const int& width=0);
-   void writeDouble(const double& value, const int& width=0);
-	void writeFloat(const float& value, const int& width=0);
-	void writeBool(const bool& value, const int& width=0);
-   void writeChar(const char& value, const int& width=0);
-   void writeSize_t(const std::size_t& value, const int& width=0);
-   void writeString(const std::string& value, const int& width=0);
-   void writeStringOnly(const std::string& value);
-   void writeLine(const std::string& value, const int& width=0);
-   void writeLine();
-   void writeCommentLine(const std::string& line);
-   void writeCommentLine(char indicator, const std::string& line);
-   void writeCopyOfFile(const std::string& filename);
-
-   void setPrecision(const int& precision);
-   int  getPrecision();
-
-   FILETYPE getFileType() { return BINARY; }
-
-   template< typename T >
-   friend inline UbFileOutputBinary& operator<<(UbFileOutputBinary& file, const T& data) 
-   {
-      file.outfile.write((char*)&data,sizeof(T));
-      return file;
-   }
-};
-
-#endif
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbInfinity.h b/source/VirtualFluidsCore/Basics/utilities/UbInfinity.h
deleted file mode 100644
index 18546b8ad9d29c6c6119446243953ae235342724..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbInfinity.h
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef UB_INFINITY_H
-#define UB_INFINITY_H
-#include <limits>
-
-#include <basics/utilities/UbLimits.h>
-#include <basics/utilities/UbSystem.h>
-
-
-//////////////////////////////////////////////////////////////////////////
-//
-//  UbNegInfinity
-//  Anm: keine template klasse, da man am Ende eine Instanz "inf" verwendet
-//       die in "verschiedene"(!!!) Typen konvertiert werden kann und nicht 
-//       nur in den template Typ!
-//  Note: The UbNegInfinity class cannot be instantiated on its own, but works 
-//        as a base class for the Infinity class.
-//////////////////////////////////////////////////////////////////////////
-class UbNegInfinity
-{
- public:
-   //name Conversion operators 
-   inline operator signed char() const { return UbLimits<signed char>::ninf(); }
-   inline operator char()        const { return UbLimits<char>::ninf();        }
-   inline operator wchar_t()     const { return UbLimits<wchar_t>::ninf();     }
-   inline operator short()       const { return UbLimits<short>::ninf();       }
-   inline operator int()         const { return UbLimits<int>::ninf();         }
-   inline operator long()        const { return UbLimits<long>::ninf();        }
-   inline operator float()       const { return UbLimits<float>::ninf();       }
-   inline operator double()      const { return UbLimits<double>::ninf();      }
-   inline operator long double() const { return UbLimits<long double>::ninf(); }
-
-   // This function compares built-in data types with their largest possible value. The function
-   // only works for built-in data types. The attempt to compare user-defined class types will
-   // result in a compile time error.
-   template< typename T >
-   inline bool equal( const T& rhs ) const
-   {
-      UB_STATIC_ASSERT( std::numeric_limits<T>::is_specialized );
-      return UbLimits<T>::ninf() == rhs;
-   }
- protected:
-    inline UbNegInfinity() {}
-
- private:
-   UbNegInfinity( const UbNegInfinity& ninf );             //copy constructor (private & undefined)
-   UbNegInfinity& operator=( const UbNegInfinity& ninf );  //copy assignment operator (private & undefined)
-   void* operator&() const;                                //address operator (private & undefined)
-};
-
-//=================================================================================================
-//
-//  GLOBAL OPERATORS
-//
-//=================================================================================================
-template< typename T >
-inline bool operator==( const UbNegInfinity& lhs, const T& rhs )
-{
-   return lhs.equal( rhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator==( const T& lhs, const UbNegInfinity& rhs )
-{
-   return rhs.equal( lhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator!=( const UbNegInfinity& lhs, const T& rhs )
-{
-   return !lhs.equal( rhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator!=( const T& lhs, const UbNegInfinity& rhs )
-{
-   return !rhs.equal( lhs );
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-//  UbInfinity
-//
-//////////////////////////////////////////////////////////////////////////
-class UbInfinity : public UbNegInfinity //um später -UbInfinity leichter zu implementieren!!!
-{
- public:
-   inline UbInfinity() 
-      : UbNegInfinity()
-    {}
-   
-   inline operator unsigned char()  const  { return UbLimits<unsigned char>::inf();  }
-   inline operator signed char()    const  { return UbLimits<signed char>::inf();    }
-   inline operator char()           const  { return UbLimits<char>::inf();           }
-   inline operator wchar_t()        const  { return UbLimits<wchar_t>::inf();        }
-   inline operator unsigned short() const  { return UbLimits<unsigned short>::inf(); }
-   inline operator short()          const  { return UbLimits<short>::inf();          }
-   inline operator unsigned int()   const  { return UbLimits<unsigned int>::inf();   }
-   inline operator int()            const  { return UbLimits<int>::inf();            }
-   inline operator unsigned long()  const  { return UbLimits<unsigned long>::inf();  }
-   inline operator long()           const  { return UbLimits<long>::inf();           }
-   inline operator float()          const  { return UbLimits<float>::inf();          }
-   inline operator double()         const  { return UbLimits<double>::inf();         }
-   inline operator long double()    const  { return UbLimits<long double>::inf();    }
-
-   inline const UbNegInfinity& operator-() const { return static_cast<const UbNegInfinity&>( *this ); }
-
-   /*==========================================================*/
-   template< typename T >
-   inline bool equal( const T& rhs ) const
-   {
-      UB_STATIC_ASSERT( std::numeric_limits<T>::is_specialized );
-      return UbLimits<T>::inf() == rhs;
-   }
-
- private:
-   UbInfinity( const UbInfinity& inf );             //Copy constructor (private & undefined)
-   UbInfinity& operator=( const UbInfinity& inf );  //Copy assignment operator (private & undefined)
-   void* operator&() const;                         //Address operator (private & undefined)
-};
-
-//////////////////////////////////////////////////////////////////////////
-//  GLOBAL OPERATORS
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-inline bool operator==( const UbInfinity& lhs, const T& rhs );
-
-template< typename T >
-inline bool operator==( const T& lhs, const UbInfinity& rhs );
-
-template< typename T >
-inline bool operator!=( const UbInfinity& lhs, const T& rhs );
-
-template< typename T >
-inline bool operator!=( const T& lhs, const UbInfinity& rhs );
-//@}
-//*************************************************************************************************
-
-
-//*************************************************************************************************
-/*!\brief Equality comparison between an Infinity object and a built-in data type.
-// \ingroup util
-//
-// This operator works only for built-in data types. The attempt to compare user-defined class
-// types will result in a compile time error.
-*/
-template< typename T >
-inline bool operator==( const UbInfinity& lhs, const T& rhs )
-{
-   return lhs.equal( rhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator==( const T& lhs, const UbInfinity& rhs )
-{
-   return rhs.equal( lhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator!=( const UbInfinity& lhs, const T& rhs )
-{
-   return !lhs.equal( rhs );
-}
-//*************************************************************************************************
-template< typename T >
-inline bool operator!=( const T& lhs, const UbInfinity& rhs )
-{
-   return !rhs.equal( lhs );
-}
-//*************************************************************************************************
-
-//////////////////////////////////////////////////////////////////////////
-//  GLOBAL INFINITY VALUE
-//////////////////////////////////////////////////////////////////////////
-namespace Ub
-{
-   //e.g. double x = UbSystem::inf;  float x = -Ub::inf; 
-   const UbInfinity inf; 
-} 
-
-#endif //UB_INFINITY_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbKeys.h b/source/VirtualFluidsCore/Basics/utilities/UbKeys.h
deleted file mode 100644
index feaf5cab8c58e6fe2f26bd3ce6d63b2aee609ed5..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbKeys.h
+++ /dev/null
@@ -1,311 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBKEYS_H
-#define UBKEYS_H
-
-#include <iostream>
-
-#include <boost/serialization/serialization.hpp>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-/*=========================================================================*/
-/*  UbKeys                                                             */
-/*                                                                         */
-/**
-namespace for global Keys (e.g. for STL-maps)
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.08.07
-*/ 
-
-/*
-usage: ...
-*/
-
-namespace UbKeys
-{
-   //nested class
-   template< typename T1, typename T2 = T1 >
-   class Key2 
-   {
-   public:
-      //////////////////////////////////////////////////////////////////////////
-      //Konstruktoren
-      Key2(const T1& t1, const T2& t2) 
-         : t1(t1), t2(t2)
-      { 
-      }
-      /*==========================================================*/
-      Key2& operator=(const Key2& srcKey) 
-      {
-         if(this == &srcKey ) return *this;
-
-         t1    = srcKey.t1;
-         t2    = srcKey.t2;
-
-         return *this;
-      }
-      /*==========================================================*/
-      T1 getT1() const { return t1; }
-      T2 getT2() const { return t2; }
-
-      //////////////////////////////////////////////////////////////////////////
-      //global ueberladene Operatoren
-      friend inline bool operator<(const Key2& lhsKey,const Key2& rhsKey)  
-      {
-         if( lhsKey.t1 < rhsKey.t1 ) return true;
-         if( lhsKey.t1 > rhsKey.t1 ) return false;
-         if( lhsKey.t2 < rhsKey.t2 ) return true;
-
-         return false;
-      }
-      /*==========================================================*/
-      friend inline bool operator==(const Key2& lhsKey, const Key2& rhsKey)  
-      {
-         if(lhsKey.t1 != rhsKey.t1 ) return false;
-         if(lhsKey.t2 != rhsKey.t2 ) return false;
-
-         return true;
-      }
-      //ueberladene Operatoren
-      friend inline bool operator!=(const Key2& lhsKey, const Key2& rhsKey)  
-      {
-         return !(lhsKey == rhsKey); 
-      }
-      //ueberladene Operatoren
-      /*==========================================================*/
-      friend inline std::ostream& operator << (std::ostream& os, const Key2& key) 
-      {
-         os<<"Key2<"<<typeid(T1).name()<<","<<typeid(T2).name()<<">,("<<key.t1<<","<<key.t2<<")";
-         return os;
-      }
-      /*==========================================================*/
-      #ifdef CAB_RCF
-	      template<class Archive>
-	      void serialize(Archive & ar, const unsigned int version)
-	      {
-		      ar & t1;
-		      ar & t2;
-	      }
-      #endif //CAB_RCF
-
-   private:
-      //////////////////////////////////////////////////////////////////////////
-      //private Member
-      T1 t1;
-      T2 t2;
-
-      friend class boost::serialization::access;
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         ar & t1;
-         ar & t2;
-      }
-   };
-
-   //////////////////////////////////////////////////////////////////////////
-   //
-   //////////////////////////////////////////////////////////////////////////
-   template< typename T1, typename T2 = T1, typename T3 = T1 >
-   class Key3 
-   {
-   public:
-      //////////////////////////////////////////////////////////////////////////
-      //Konstruktoren
-      Key3() : t1(0), t2(0), t3(0)
-      {
-
-      }
-      Key3(const T1& t1, const T2& t2, const T3& t3) 
-         : t1(t1), t2(t2), t3(t3)
-      { 
-      }
-      /*==========================================================*/
-      T1 getT1() const { return t1; }
-      T2 getT2() const { return t2; }
-      T3 getT3() const { return t3; }
-      /*==========================================================*/
-      Key3& operator=(const Key3& srcKey) 
-      {
-         if(this == &srcKey ) return *this;
-
-         t1    = srcKey.t1;
-         t2    = srcKey.t2;
-         t3    = srcKey.t3;
-
-         return *this;
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-      //global ueberladene Operatoren
-      friend inline bool operator<(const Key3& lhsKey,const Key3& rhsKey)  
-      {
-         if( lhsKey.t1 < rhsKey.t1 ) return true;
-         if( lhsKey.t1 > rhsKey.t1 ) return false;
-         if( lhsKey.t2 < rhsKey.t2 ) return true;
-         if( lhsKey.t2 > rhsKey.t2 ) return false;
-         if( lhsKey.t3 < rhsKey.t3 ) return true;
-
-         return false;
-      }
-      /*==========================================================*/
-      friend inline bool operator==(const Key3& lhsKey,const Key3& rhsKey)  
-      {
-         if(lhsKey.t1 != rhsKey.t1 ) return false;
-         if(lhsKey.t2 != rhsKey.t2 ) return false;
-         if(lhsKey.t3 != rhsKey.t3 ) return false;
-
-         return true;
-      }
-      /*==========================================================*/
-      //ueberladene Operatoren
-      friend inline bool operator!=(const Key3& lhsKey, const Key3& rhsKey) 
-      {
-         return !(lhsKey == rhsKey); 
-      }
-
-      //ueberladene Operatoren
-      /*==========================================================*/
-      friend inline std::ostream& operator << (std::ostream& os, const Key3& key) 
-      {
-         os<<"Key3<"<<typeid(T1).name()<<","<<typeid(T2).name()<<","<<typeid(T3).name();
-         os<<">,("<<key.t1<<","<<key.t2<<","<<key.t3<<")";
-         return os;
-      }
-      /*==========================================================*/
-      #ifdef CAB_RCF
-	      template<class Archive>
-	      void serialize(Archive & ar, const unsigned int version)
-	      {
-		      ar & t1;
-		      ar & t2;
-            ar & t3;
-         }
-      #endif //CAB_RCF
-
-   private:
-      //////////////////////////////////////////////////////////////////////////
-      //private Member
-      T1 t1;
-      T2 t2;
-      T3 t3;
-
-      friend class boost::serialization::access;
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         ar & t1;
-         ar & t2;
-         ar & t3;
-      }
-   };
-
-   //////////////////////////////////////////////////////////////////////////
-   //
-   //////////////////////////////////////////////////////////////////////////
-   template< typename T1, typename T2 = T1, typename T3 = T1, typename T4 = T1 >
-   class Key4 
-   {
-   public:
-      //////////////////////////////////////////////////////////////////////////
-      //Konstruktoren
-      Key4(const T1& t1, const T2& t2, const T3& t3, const T4& t4) 
-         : t1(t1), t2(t2), t3(t3), t4(t4)
-      { 
-      }
-      /*==========================================================*/
-      T1 getT1() const { return t1; }
-      T2 getT2() const { return t2; }
-      T3 getT3() const { return t3; }
-      T4 getT4() const { return t4; }
-      /*==========================================================*/
-      Key4& operator=(const Key4& srcKey) 
-      {
-         if(this == &srcKey ) return *this;
-
-         t1    = srcKey.t1;
-         t2    = srcKey.t2;
-         t3    = srcKey.t3;
-         t4    = srcKey.t4;
-
-         return *this;
-      }
-      //////////////////////////////////////////////////////////////////////////
-      //global ueberladene Operatoren
-      friend inline bool operator<(const Key4& lhsKey,const Key4& rhsKey)  
-      {
-         if( lhsKey.t1 < rhsKey.t1 ) return true;
-         if( lhsKey.t1 > rhsKey.t1 ) return false;
-         if( lhsKey.t2 < rhsKey.t2 ) return true;
-         if( lhsKey.t2 > rhsKey.t2 ) return false;
-         if( lhsKey.t3 < rhsKey.t3 ) return true;
-         if( lhsKey.t3 > rhsKey.t3 ) return false;
-         if( lhsKey.t4 < rhsKey.t4 ) return true;
-
-         return false;
-      }
-      /*==========================================================*/
-      friend inline bool operator==(const Key4& lhsKey,const Key4& rhsKey)  
-      {
-         if(lhsKey.t1 != rhsKey.t1 ) return false;
-         if(lhsKey.t2 != rhsKey.t2 ) return false;
-         if(lhsKey.t3 != rhsKey.t3 ) return false;
-         if(lhsKey.t4 != rhsKey.t4 ) return false;
-
-         return true;
-      }
-
-      //ueberladene Operatoren
-      friend inline bool operator!=(const Key4& lhsKey, const Key4& rhsKey) 
-      {
-         return !(lhsKey == rhsKey); 
-      }
-      //ueberladene Operatoren
-      /*==========================================================*/
-      friend inline std::ostream& operator << (std::ostream& os, const Key4& key) 
-      {
-         os<<"Key4<"<<typeid(T1).name()<<","<<typeid(T2).name()<<","<<typeid(T3).name()<<","<<typeid(T4).name();
-         os<<">,("<<key.t1<<","<<key.t2<<","<<key.t3<<","<<key.t4<<")";
-         return os;
-      }
-      /*==========================================================*/
-      #ifdef CAB_RCF
-	      template<class Archive>
-	      void serialize(Archive & ar, const unsigned int version)
-	      {
-		      ar & t1;
-		      ar & t2;
-            ar & t3;
-            ar & t4;
-         }
-      #endif //CAB_RCF
-
-   private:
-      //////////////////////////////////////////////////////////////////////////
-      //private Member
-      T1 t1;
-      T2 t2;
-      T3 t3;
-      T4 t4;
-
-      friend class boost::serialization::access;
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         ar & t1;
-         ar & t2;
-         ar & t3;
-         ar & t4;
-      }
-   };
-}
-
-#endif //UBKEYS_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbLimits.h b/source/VirtualFluidsCore/Basics/utilities/UbLimits.h
deleted file mode 100644
index 9313f0620a138785dd9b7e6c334917806da93c30..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbLimits.h
+++ /dev/null
@@ -1,139 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UB_LIMITS_H
-#define UB_LIMITS_H
-
-
-//*************************************************************************************************
-// Includes
-//*************************************************************************************************
-
-#include <limits>
-
-//////////////////////////////////////////////////////////////////////////
-//  CLASS DEFINITION
-//////////////////////////////////////////////////////////////////////////
-template< typename T >
-struct UbLimits  {};
-
-//////////////////////////////////////////////////////////////////////////
-//  SPECIALIZATIONS
-//////////////////////////////////////////////////////////////////////////
-template<>
-struct UbLimits<unsigned char>
-{
-   //return the largest possible positive unsigned char value
-   static inline unsigned char inf() { return std::numeric_limits<unsigned char>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<char>
-{
-   //return the largest possible positive char value. */
-   static inline char inf () { return std::numeric_limits<char>::max(); }
-   //return the largest possible negative char value
-   static inline char ninf() { return std::numeric_limits<char>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<signed char>
-{
-   //return the largest possible positive signed char value
-   static inline signed char inf () { return std::numeric_limits<signed char>::max(); }
-
-   //return The largest possible negative signed char value
-   static inline signed char ninf() { return std::numeric_limits<signed char>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<wchar_t>
-{
-   //return The largest possible positive wchar_t value
-   static inline wchar_t inf () { return std::numeric_limits<wchar_t>::max(); }
-   //return The largest possible negative wchar_t value
-   static inline wchar_t ninf() { return std::numeric_limits<wchar_t>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<unsigned short>
-{
-   //return The largest possible positive unsigned short value
-   static inline unsigned short inf() { return std::numeric_limits<unsigned short>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<short>
-{
-   //return The largest possible positive short value
-   static inline short inf () { return std::numeric_limits<short>::max(); }
-   //return The largest possible negative short value
-   static inline short ninf() { return std::numeric_limits<short>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<unsigned int>
-{
-   //return The largest possible positive unsigned int value
-   static inline unsigned int inf() { return std::numeric_limits<unsigned int>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<int>
-{
-   //return The largest possible positive int value
-   static inline int inf () { return std::numeric_limits<int>::max(); }
-
-   //return The largest possible negative int value
-   static inline int ninf() { return std::numeric_limits<int>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<unsigned long>
-{
-   //return The largest possible positive unsigned long value
-   static inline unsigned long inf() { return std::numeric_limits<unsigned long>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<long>
-{
-   //return The largest possible positive long value
-   static inline long inf () { return std::numeric_limits<long>::max(); }
-
-   //return The largest possible negative long value
-   static inline long ninf() { return std::numeric_limits<long>::min(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<float>
-{
-   //return The largest possible positive float value
-   static inline float inf () { return  std::numeric_limits<float>::max(); }
-
-   //return The largest possible negative float value
-   static inline float ninf() { return -std::numeric_limits<float>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<double>
-{
-   //return The largest possible positive double value
-   static inline double inf () { return  std::numeric_limits<double>::max(); }
-   //return The largest possible negative double value
-   static inline double ninf() { return -std::numeric_limits<double>::max(); }
-};
-//*************************************************************************************************
-template<>
-struct UbLimits<long double>
-{
-   //return The largest possible positive long double value
-   static inline long double inf () { return  std::numeric_limits<long double>::max(); }
-   //return The largest possible negative long double value
-   static inline long double ninf() { return -std::numeric_limits<long double>::max(); }
-};
-
-#endif //UB_LIMITS_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbLogger.cpp b/source/VirtualFluidsCore/Basics/utilities/UbLogger.cpp
deleted file mode 100644
index f487a02ed08408d632ccab624b657f0283686ad5..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbLogger.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <basics/utilities/UbLogger.h>
-
-#if defined(CAB_BOOST) && !defined(NO_THREADSAFE_LOGGING)
-
-boost::mutex Output2Stream::mtx;
-
-#endif // CAB_BOOST
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbLogger.h b/source/VirtualFluidsCore/Basics/utilities/UbLogger.h
deleted file mode 100644
index 7d4e432ce7c4ec2284aba328cc7344d1db6aec4b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbLogger.h
+++ /dev/null
@@ -1,362 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBLOGGER_H
-#define UBLOGGER_H
-
-#include <sstream>
-#include <string>
-#include <iostream>
-#include <fstream>
-#include <iomanip>
-#include <memory>
-
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)  || defined(_WIN64)  || defined(__WIN64__)
-   #include <windows.h>
-#else
-   #include <sys/time.h>
-#endif
-
-#if defined(CAB_BOOST) && !defined(NO_THREADSAFE_LOGGING)
-   #include <boost/thread.hpp>
-#endif // CAB_BOOST
-
-//////////////////////////////////////////////////////////////////////////
-// UbLogger
-// C++ Logger
-// Funktionsweise:
-// pro Logeintrag wird ein UbLogger-Objekt erstellt, der logstring uebergeben und beim "zerstroeren"
-// wird der logstring mittels der entsprechenden policy (=template paramter)  z.B. in eine Datei
-// oder auf dem Bildschirm ausgegeben. Es werden verschiedene LogLevel unterstuetzt 
-//
-// Hilfsmakro:  UBLOG
-// Bsp1:        UBLOG(logINFO) << "Klasse::foo entered"; //endl wir nicht benötigt
-//              --> Eintrag:
-//
-// Bsp2: siehe Dateiende!
-//
-//Idee basierend auf: 
-//Artikel von Dr. Dobbs Portal
-//September 05, 2007
-//Logging In C++
-//
-//@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//@version 1.0 - 12.10.2008
-
-enum LogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5};
-
-//////////////////////////////////////////////////////////////////////////
-// template <typename OutputPolicy> class Log  - declaration
-//////////////////////////////////////////////////////////////////////////
-template <typename OutputPolicy>
-class UbLogger
-{   
-public:
-   typedef OutputPolicy output_policy;
-public:
-    UbLogger();
-    virtual ~UbLogger();
-    std::ostringstream& get(const LogLevel& level = logINFO);
-public:
-   //static, weil man so später die ObjErstellunge ersparen kann,
-   //falls level kleiner als Level
-   static LogLevel&   reportingLevel();
-    
-    static std::string logLevelToString(const LogLevel& level);
-    static LogLevel    logLevelFromString(const std::string& level);
-
-    static std::string logTimeString();
-
-protected:
-    std::ostringstream os;
-
-private:
-    UbLogger(const UbLogger&);
-    UbLogger& operator =(const UbLogger&);
-};
-
-//////////////////////////////////////////////////////////////////////////
-// template <typename OutputPolicy> class Log  - implementation
-//////////////////////////////////////////////////////////////////////////
-template <typename OutputPolicy>
-UbLogger<OutputPolicy>::UbLogger()
-{
-}
-/*==========================================================*/
-template <typename OutputPolicy>
-std::ostringstream& UbLogger<OutputPolicy>::get(const LogLevel& level) 
-{
-   os << logTimeString() << " " << std::setw(6) 
-#if defined(CAB_BOOST) && !defined(NO_MT_LOGGING)
-      <<boost::this_thread::get_id() << " "
-#endif
-      << std::setw(8) << std::left << UbLogger<OutputPolicy>::logLevelToString(level) << ": "
-      << std::string(level > logDEBUG ? 3*(level - logDEBUG) : 0, ' '); //<baumartiger output :D
-   
-    return os;
-}
-/*==========================================================*/
-template <typename OutputPolicy>
-UbLogger<OutputPolicy>::~UbLogger()
-{
-    os << std::endl;
-    OutputPolicy::output(os.str());
-}
-/*==========================================================*/
-template <typename OutputPolicy>
-LogLevel& UbLogger<OutputPolicy>::reportingLevel()
-{
-    static LogLevel reportLevel = logINFO;
-    return reportLevel;
-}
-/*==========================================================*/
-template <typename OutputPolicy>
-std::string UbLogger<OutputPolicy>::logLevelToString(const LogLevel& level)
-{
-   static std::string const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4", "DEBUG5"};
-   return buffer[level];
-}
-/*==========================================================*/
-template <typename OutputPolicy>
-LogLevel UbLogger<OutputPolicy>::logLevelFromString(const std::string& level)
-{
-   if (level == "DEBUG5" ) return logDEBUG5;
-   if (level == "DEBUG4" ) return logDEBUG4;
-   if (level == "DEBUG3" ) return logDEBUG3;
-   if (level == "DEBUG2" ) return logDEBUG2;
-   if (level == "DEBUG1" ) return logDEBUG1;
-   if (level == "DEBUG"  ) return logDEBUG;
-   if (level == "INFO"   ) return logINFO;
-   if (level == "WARNING") return logWARNING;
-   if (level == "ERROR"  ) return logERROR;
-       
-   UbLogger<OutputPolicy>().get(logWARNING) << "UbLogger<OutputPolicy>::logLevelFromString(level) - unknown logging level '" << level << "'. Using INFO level as default.";
-   return logINFO;
-}
-
-//////////////////////////////////////////////////////////////////////////
-// logTimeString
-//////////////////////////////////////////////////////////////////////////
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)  || defined(_WIN64)  || defined(__WIN64__)
-template <typename OutputPolicy>
-inline std::string UbLogger<OutputPolicy>::logTimeString()
-{
-   const int MAX_LEN = 200;
-   char buffer[MAX_LEN];
-   if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0, "HH':'mm':'ss", buffer, MAX_LEN) == 0 )
-   {
-      return "Error in std::string UbLogger<OutputPolicy>::logTimeString()";
-   }
-
-   char result[100] = {0};
-   static DWORD first = GetTickCount();
-   std::sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000); 
-   return result;
-}
-#else
-template <typename OutputPolicy>
-inline std::string UbLogger<OutputPolicy>::logTimeString()
-{
-   char buffer[11];
-   time_t t;
-   time(&t);
-   tm r = {0};
-   strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r));
-   struct timeval tv;
-   gettimeofday(&tv, 0);
-   char result[100] = {0};
-   std::sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); 
-   return result;
-}
-#endif 
-
-
-//////////////////////////////////////////////////////////////////////////
-// Output2Stream (=implementation of OutputPolicy)
-//////////////////////////////////////////////////////////////////////////
-//Anm: die erste Version mit auto_ptr fuer den stream fuehrte zu
-//     exceptions bei Verwedung vom Logger in dtors stat. globaler
-//     Objekte. Aber auch die Pointer-Lsg. ist noch nicht die 
-//     optimale Lösung
-class Output2Stream // implementation of OutputPolicy
-{
-public:
-   static std::ostream*& getStream();
-   static void output(const std::string& msg);
-   
-   //creates output-file-stream (of file opening fails -> stream is set to std::cerr)
-   static void setStream(const std::string& filename);
-   
-   //direct set outputstream, gcControl = true -> object will be deleted by Output2Stream 
-   static void setStream(std::ostream* pStream, const bool& gcControl = false);
-
-protected:
-#if defined(CAB_BOOST) && !defined(NO_MT_LOGGING)
-   static boost::mutex mtx;
-#endif
-};
-/*==========================================================*/
-inline std::ostream*& Output2Stream::getStream()
-{
-   static std::ostream* pStream = &std::clog;
-   return pStream;
-}
-/*==========================================================*/
-inline void Output2Stream::setStream(std::ostream* pFile, const bool& gcControl)
-{
-#if defined(CAB_BOOST) && !defined(NO_MT_LOGGING)
-   boost::mutex::scoped_lock lock(mtx);
-#endif
-   static bool s_gcControl = false;
-   
-   if( s_gcControl && Output2Stream::getStream() ) 
-   {
-      delete Output2Stream::getStream();
-   }
-   
-   s_gcControl = gcControl;
-   
-   Output2Stream::getStream() = pFile;
-}
-/*==========================================================*/
-inline void Output2Stream::setStream(const std::string& filename)
-{
-   std::ofstream* file = new std::ofstream( filename.c_str() );
-   if( !(*file) ) 
-   {
-      delete file;
-      Output2Stream::setStream(&std::cerr, false);
-      UbLogger<Output2Stream>().get(logERROR) << " Output2Stream::setStream(const std::string& filename) could not open file "
-                                               << filename << " -> std::cerr is used instead " << std::endl;
-      return;
-   }
-   std::cout<<"UbLog writes to "<<filename<<std::endl;
-   Output2Stream::setStream(file,true);
-}
-/*==========================================================*/
-inline void Output2Stream::output(const std::string& msg)
-{
-#if defined(CAB_BOOST) && !defined(NO_MT_LOGGING)
-   boost::mutex::scoped_lock lock(mtx);
-#endif
-   std::ostream* pStream = getStream();
-   if (!pStream) return;
-   (*pStream) << msg << std::flush;
-}
-
-//////////////////////////////////////////////////////////////////////////
-// UbLog
-//////////////////////////////////////////////////////////////////////////
-class UbLog : public UbLogger< Output2Stream > 
-{
-public:
-   typedef Output2Stream output_policy;
-};
-
-//Makro um compilerseitig maxLevel zu beschränken
-#ifndef UBLOG_MAX_LEVEL
-   #define UBLOG_MAX_LEVEL logDEBUG5
-#endif
-
-//////////////////////////////////////////////////////////////////////////
-//Hauptmakro fuers Loggen
-// example UBLOG(logINFO) << "das ist ein log eintrag";
-//////////////////////////////////////////////////////////////////////////
-#define UBLOG(level, logtext) \
-   if(level > UBLOG_MAX_LEVEL || level > UbLog::reportingLevel() || !Output2Stream::getStream()) ; \
-   else UbLog().get(level) << logtext;                                                             
-   
-//wieso dieses Macro (was der der scheaeaeaesss???)
-// z.B. UBLOG(logDEBUG2) << "Ich bin sooo toll " << username;
-//also, was macht der praeprozessor draus?:
-// if(level > UBLOG_MAX_LEVEL || level > UbLog::reportingLevel() || !Output2Stream::getStream()) ;
-// else // Log().Get(logINFO) << "Ich bin sooo toll " << username;
-//Ergo: das prinzip des logging beruht auf: Log-Objekt erstellen und rauschreiben beim zerstoeren
-//    -> ist der zu loggende Level < als der im UBLOG angegebene erspart man sich hier die
-//       Objekt erstellung -> optimale Performance -> laut Petru Marginean (dem Verfasser des
-//       Ursprungslogger ist der Performance Unterschied kaum messbar, wenn NICHT geloggt wird!
-
-//////////////////////////////////////////////////////////////////////////
-//makro 2 fuer korrekten MultiLineOutput (teuer!!)
-// example1: UBLOGML(logINFO, "line1"<<endl<<"line2"<<endl<<"line3" )
-// example2: UBLOGML(logINFO, "line1\nline2\nendl\nline3" )
-//////////////////////////////////////////////////////////////////////////
-#define UBLOGML(level, multiline) \
-   if(level > UBLOG_MAX_LEVEL || level > UbLog::reportingLevel() || !Output2Stream::getStream()) ; \
-   else                                                                                            \
-   {                                                                                               \
-      std::ostringstream output;                                                                   \
-      output << multiline;                                                                         \
-      std::istringstream input( output.str() );                                                    \
-      while(!input.eof())                                                                          \
-      {                                                                                            \
-         std::string dummy;                                                                        \
-         getline(input,dummy,'\n');                                                                \
-         UbLog().get(level) << dummy;                                                              \
-      }                                                                                            \
-   }                                                                                          
-//////////////////////////////////////////////////////////////////////////
-//makro3, falls auch bildschirmausgabe erwünscht
-//   -> es wird sowohl ins logfile als auch auf den "stream" geschrieben
-//      wenn reporting level und level passen :D
-//example1: UBLOG2ML(logINFO, std::cout,  "line1"<<endl<<"line2"<<endl<<"line3" ) 
-//example2: UBLOG2ML(logINFO, std::cout,  "line1\nline2\nendl\nline3" ) 
-//////////////////////////////////////////////////////////////////////////
-#define UBLOG2(level, stream,  text ) \
-   if(level > UBLOG_MAX_LEVEL || level > UbLog::reportingLevel() || !Output2Stream::getStream()) ; \
-   else { stream << text <<std::endl; UbLog().get(level) << text;   }                             
-
-//////////////////////////////////////////////////////////////////////////
-//makro4, wie 3 nur mit multiline
-//example: UBLOG2(logINFO, std::cout,  "test" ) 
-//////////////////////////////////////////////////////////////////////////
-#define UBLOG2ML(level, stream,  multiline ) \
-   if(level > UBLOG_MAX_LEVEL || level > UbLog::reportingLevel() || !Output2Stream::getStream()) ; \
-   else                                                                                            \
-   {                                                                                               \
-      stream << multiline << std::endl;                                                            \
-      std::ostringstream output;                                                                   \
-      output << multiline;                                                                         \
-      std::istringstream input( output.str() );                                                    \
-      while(!input.eof())                                                                          \
-      {                                                                                            \
-         std::string dummy;                                                                        \
-         getline(input,dummy,'\n');                                                                \
-         UbLog().get(level) << dummy;                                                              \
-      }                                                                                            \
-   }                                                                                               
-
-//////////////////////////////////////////////////////////////////////////
-// example 2
-//////////////////////////////////////////////////////////////////////////
-// try
-// {
-//    UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG3");
-//    //UbLog::output_policy::setStream(&std::cerr); //<- clog ist stdandard
-//    UbLog::output_policy::setStream("c:/temp/out.txt");  //kann man diese nicht oeffnen -> fehlermeldung -> Log wird in cerr ausgegben
-// 
-//    int count = 3;
-//    UBLOG(logINFO, "A loop with " << count << " iterations");
-//    for (int i = 0; i != count; ++i)
-//    {
-//        UBLOG(logERROR , "error  - the counter i = " << i );
-//        UBLOG(logDEBUG1, "debug1 - the counter i = " << i );
-//        UBLOG(logDEBUG2, "debug2 - the counter i = " << i );
-//        UBLOG(logDEBUG3, "debug3 - the counter i = " << i );
-//        //fuer MultiLine Eintraege: --> koerrekte formatierung im logfile
-//        UBLOGML(logDEBUG3, "debug3 - the counter i = "<<endl<<" 2 zeile "<< "3. Zeile" << i);
-//        UBLOGML(logDEBUG3, "debug3 - the counter i = "<<endl<<" 2 zeile "<< "3. Zeile" << i);
-//        UBLOG2ML(logDEBUG3,std:cout,"debug3 - the counter i = "<<endl<<" 2 zeile "<< "3. Zeile" << i);
-//    }
-//    return 0;
-// }
-// catch(const std::exception& e)
-// {
-//    UBLOG(logERROR) << e.what();
-// }
-
-
-#endif //UBLOGGER_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbMath.cpp b/source/VirtualFluidsCore/Basics/utilities/UbMath.cpp
deleted file mode 100644
index ad38b9cf945d569e8f2d7bd6118c35b27fadd4fe..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbMath.cpp
+++ /dev/null
@@ -1,614 +0,0 @@
-#include <basics/utilities/UbMath.h>
-#include <basics/utilities/UbInfinity.h>
-#include <cstring> //for memcmp
-
-// namespace UbMath
-// {
-//double UbMath::EPSILON  = 1.0E-10;           
-const double UbMath::PI = 4.0* std::atan(1.0);   //3.1415926535897932384626433832795
-//}
-namespace UbMath{
-
-//////////////////////////////////////////////////////////////////////////
-const Vector3D Vector3D::ZERO(0.0,0.0,0.0);
-const Vector3D Vector3D::UNIT_X1(1.0,0.0,0.0);
-const Vector3D Vector3D::UNIT_X2(0.0,1.0,0.0);
-const Vector3D Vector3D::UNIT_X3(0.0,0.0,1.0);
-
-/*=======================================================*/
-Vector3D::Vector3D() 
-{                                      
-   m_afTuple[0] = 0.0;
-   m_afTuple[1] = 0.0;
-   m_afTuple[2] = 0.0;
-}
-/*=======================================================*/
-Vector3D::Vector3D(const double& fX, const double& fY, const double& fZ) 
-{
-   m_afTuple[0] = fX;
-   m_afTuple[1] = fY;
-   m_afTuple[2] = fZ;
-}
-/*=======================================================*/
-Vector3D::Vector3D (const Vector3D& rkV) 
-{
-   m_afTuple[0] = rkV.m_afTuple[0];
-   m_afTuple[1] = rkV.m_afTuple[1];
-   m_afTuple[2] = rkV.m_afTuple[2];
-}
-/*=======================================================*/
-std::string Vector3D::toString()  const
-{
-   std::stringstream os;
-   os<< "Vector3D["<<m_afTuple[0]<<","<<m_afTuple[1]<<","<<m_afTuple[2]<<"]";
-   return os.str();
-}
-/*=======================================================*/
-Vector3D::operator const double*() const
-{
-   return m_afTuple;
-}
-/*=======================================================*/
-Vector3D::operator double*()
-{
-   return m_afTuple;
-}
-/*=======================================================*/
-double Vector3D::operator[](const int& i) const
-{
-   assert( i >= 0 && i <= 2 );
-   return m_afTuple[i];
-}
-/*=======================================================*/
-double& Vector3D::operator[](const int& i)
-{
-   assert( i >= 0 && i <= 2 );
-   return m_afTuple[i];
-}
-/*=======================================================*/
-double Vector3D::X1() const
-{
-   return m_afTuple[0];
-}
-/*=======================================================*/
-double& Vector3D::X1()
-{
-   return m_afTuple[0];
-}
-/*=======================================================*/
-double Vector3D::X2() const
-{
-   return m_afTuple[1];
-}
-/*=======================================================*/
-double& Vector3D::X2()
-{
-   return m_afTuple[1];
-}
-/*=======================================================*/
-double Vector3D::X3() const
-{
-   return m_afTuple[2];
-}
-/*=======================================================*/
-double& Vector3D::X3()
-{
-   return m_afTuple[2];
-}
-/*=======================================================*/
-Vector3D& Vector3D::operator=(const Vector3D& rkV)
-{
-   m_afTuple[0] = rkV.m_afTuple[0];
-   m_afTuple[1] = rkV.m_afTuple[1];
-   m_afTuple[2] = rkV.m_afTuple[2];
-   return *this;
-}
-/*=======================================================*/
-int Vector3D::CompareArrays(const Vector3D& rkV) const
-{
-   return memcmp(m_afTuple,rkV.m_afTuple,3*sizeof(double));
-}
-/*=======================================================*/
-bool Vector3D::operator==(const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) == 0;
-}
-/*=======================================================*/
-bool Vector3D::operator!=(const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) != 0;
-}
-/*=======================================================*/
-bool Vector3D::operator<(const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) < 0;
-}
-/*=======================================================*/
-bool Vector3D::operator<=(const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) <= 0;
-}
-/*=======================================================*/
-bool Vector3D::operator> (const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) > 0;
-}
-/*=======================================================*/
-bool Vector3D::operator>=(const Vector3D& rkV) const
-{
-   return CompareArrays(rkV) >= 0;
-}
-/*=======================================================*/
-Vector3D Vector3D::operator+(const Vector3D& rkV) const
-{
-   return Vector3D( m_afTuple[0]+rkV.m_afTuple[0],
-                    m_afTuple[1]+rkV.m_afTuple[1],
-                    m_afTuple[2]+rkV.m_afTuple[2] );
-}
-/*=======================================================*/
-Vector3D Vector3D::Add(Vector3D& vector)
-{
-   return Vector3D( m_afTuple[0]+vector.m_afTuple[0],
-                    m_afTuple[1]+vector.m_afTuple[1],
-                    m_afTuple[2]+vector.m_afTuple[2] );
-}
-/*=======================================================*/
-Vector3D Vector3D::operator- (const Vector3D& rkV) const
-{
-   return Vector3D( m_afTuple[0]-rkV.m_afTuple[0],
-                    m_afTuple[1]-rkV.m_afTuple[1],
-                    m_afTuple[2]-rkV.m_afTuple[2] );
-}
-/*=======================================================*/
-Vector3D Vector3D::Subtract(Vector3D& vector)
-{
-   return Vector3D( m_afTuple[0]-vector.m_afTuple[0],
-                    m_afTuple[1]-vector.m_afTuple[1],
-                    m_afTuple[2]-vector.m_afTuple[2] );
-}
-/*=======================================================*/
-Vector3D Vector3D::operator*(const double& fScalar) const
-{
-   return Vector3D( fScalar*m_afTuple[0],
-                    fScalar*m_afTuple[1],
-                    fScalar*m_afTuple[2]  );
-}
-/*=======================================================*/
-Vector3D Vector3D::operator/(const double& fScalar) const
-{
-   Vector3D kQuot;
-
-   if ( fScalar != 0.0 )
-   {
-      double fInvScalar = 1.0/fScalar;
-      kQuot.m_afTuple[0] = fInvScalar*m_afTuple[0];
-      kQuot.m_afTuple[1] = fInvScalar*m_afTuple[1];
-      kQuot.m_afTuple[2] = fInvScalar*m_afTuple[2];
-   }
-   else
-   {
-      kQuot.m_afTuple[0] = Ub::inf;
-      kQuot.m_afTuple[1] = Ub::inf;
-      kQuot.m_afTuple[2] = Ub::inf;
-   }
-
-   return kQuot;
-}
-/*=======================================================*/
-Vector3D Vector3D::operator-() const
-{
-   return Vector3D( -m_afTuple[0],
-                    -m_afTuple[1],
-                    -m_afTuple[2] );
-}
-/*=======================================================*/
-Vector3D& Vector3D::operator+=(const Vector3D& rkV)
-{
-   m_afTuple[0] += rkV.m_afTuple[0];
-   m_afTuple[1] += rkV.m_afTuple[1];
-   m_afTuple[2] += rkV.m_afTuple[2];
-   return *this;
-}
-/*=======================================================*/
-Vector3D& Vector3D::operator-=(const Vector3D& rkV)
-{
-   m_afTuple[0] -= rkV.m_afTuple[0];
-   m_afTuple[1] -= rkV.m_afTuple[1];
-   m_afTuple[2] -= rkV.m_afTuple[2];
-   return *this;
-}
-/*=======================================================*/
-Vector3D& Vector3D::operator*=(const double& fScalar)
-{
-   m_afTuple[0] *= fScalar;
-   m_afTuple[1] *= fScalar;
-   m_afTuple[2] *= fScalar;
-   return *this;
-}
-/*=======================================================*/
-Vector3D& Vector3D::operator/=(const double& fScalar)
-{
-   if ( !zero(fScalar) )
-   {
-      double fInvScalar = 1.0/fScalar;
-      m_afTuple[0] *= fInvScalar;
-      m_afTuple[1] *= fInvScalar;
-      m_afTuple[2] *= fInvScalar;
-   }
-   else
-   {
-      m_afTuple[0] = Ub::inf;
-      m_afTuple[1] = Ub::inf;
-      m_afTuple[2] = Ub::inf;
-   }
-
-   return *this;
-}
-/*=======================================================*/
-Vector3D Vector3D::Scale(const double& x)
-{
-   Vector3D PointA(0.0,0.0,0.0);
-   PointA.m_afTuple[0] = x * m_afTuple[0];
-   PointA.m_afTuple[1] = x * m_afTuple[1];
-   PointA.m_afTuple[2] = x * m_afTuple[2];
-   return PointA;	
-}
-/*=======================================================*/
-double Vector3D::Length() const
-{
-   return std::sqrt( m_afTuple[0]*m_afTuple[0] +
-                     m_afTuple[1]*m_afTuple[1] +
-                     m_afTuple[2]*m_afTuple[2] );
-}
-/*=======================================================*/
-double Vector3D::SquaredLength() const
-{
-   return m_afTuple[0]*m_afTuple[0] +
-          m_afTuple[1]*m_afTuple[1] +
-          m_afTuple[2]*m_afTuple[2];
-}
-/*=======================================================*/
-double Vector3D::Dot(const Vector3D& rkV) const
-{
-   return m_afTuple[0]*rkV.m_afTuple[0] +
-          m_afTuple[1]*rkV.m_afTuple[1] +
-          m_afTuple[2]*rkV.m_afTuple[2];
-}
-/*=======================================================*/
-double Vector3D::Normalize()
-{
-   double fLength = Length();
-
-   if( !zero(fLength) )
-   {
-      double fInvLength = 1.0/fLength;
-      m_afTuple[0] *= fInvLength;
-      m_afTuple[1] *= fInvLength;
-      m_afTuple[2] *= fInvLength;
-   }
-   else
-   {
-      fLength = 0.0;
-      m_afTuple[0] = 0.0;
-      m_afTuple[1] = 0.0;
-      m_afTuple[2] = 0.0;
-   }
-
-   return fLength;
-}
-/*=======================================================*/
-Vector3D Vector3D::Cross(const Vector3D& rkV) const
-{
-   return Vector3D( m_afTuple[1]*rkV.m_afTuple[2] - m_afTuple[2]*rkV.m_afTuple[1],
-                    m_afTuple[2]*rkV.m_afTuple[0] - m_afTuple[0]*rkV.m_afTuple[2],
-                    m_afTuple[0]*rkV.m_afTuple[1] - m_afTuple[1]*rkV.m_afTuple[0] );
-}
-/*=======================================================*/
-Vector3D Vector3D::UnitCross(const Vector3D& rkV) const
-{
-   Vector3D kCross( m_afTuple[1]*rkV.m_afTuple[2] - m_afTuple[2]*rkV.m_afTuple[1],
-                    m_afTuple[2]*rkV.m_afTuple[0] - m_afTuple[0]*rkV.m_afTuple[2],
-                    m_afTuple[0]*rkV.m_afTuple[1] - m_afTuple[1]*rkV.m_afTuple[0] );
-   kCross.Normalize();
-   return kCross;
-}
-/*=======================================================*/
-void Vector3D::GetBarycentrics(const Vector3D& rkV0,const Vector3D& rkV1, const Vector3D& rkV2,const Vector3D& rkV3, double afBary[4]) const
-{
-   // compute the vectors relative to V3 of the tetrahedron
-   Vector3D akDiff[4] = { rkV0  - rkV3,
-                          rkV1  - rkV3,
-                          rkV2  - rkV3,
-                          *this - rkV3 };
-
-   // If the vertices have large magnitude, the linear system of
-   // equations for computing barycentric coordinates can be
-   // ill-conditioned.  To avoid this, uniformly scale the tetrahedron
-   // edges to be of order 1.  The scaling of all differences does not
-   // change the barycentric coordinates.
-   double fMax = 0.0,fValue=0.0;
-   for(int i=0; i<3; i++)
-      for (int j=0; j<3; j++)
-      {
-         fValue = std::fabs(akDiff[i][j]);
-         if ( fValue > fMax )  fMax = fValue;
-      }
-   
-   // scale down only large data
-   if( greater(fMax,1.0) )
-   {
-      double fInvMax = ((double)1.0)/fMax;
-      for( int i=0; i<4; i++)
-         akDiff[i] *= fInvMax;
-   }
-
-   double     fDet = akDiff[0].Dot(akDiff[1].Cross(akDiff[2]));
-   Vector3D kE1cE2 = akDiff[1].Cross(akDiff[2]);
-   Vector3D kE2cE0 = akDiff[2].Cross(akDiff[0]);
-   Vector3D kE0cE1 = akDiff[0].Cross(akDiff[1]);
-   
-   if( !zero( fDet ) )
-   {
-      double fInvDet = 1.0/fDet;
-      afBary[0] = akDiff[3].Dot(kE1cE2)*fInvDet;
-      afBary[1] = akDiff[3].Dot(kE2cE0)*fInvDet;
-      afBary[2] = akDiff[3].Dot(kE0cE1)*fInvDet;
-      afBary[3] = 1.0 - afBary[0] - afBary[1] - afBary[2];
-   }
-   else
-   {
-      // The tetrahedron is potentially flat.  Determine the face of
-      // maximum area and compute barycentric coordinates with respect
-      // to that face.
-      Vector3D kE02 = rkV0 - rkV2;
-      Vector3D kE12 = rkV1 - rkV2;
-      Vector3D kE02cE12 = kE02.Cross(kE12);
-      double fMaxSqrArea = kE02cE12.SquaredLength();
-      int iMaxIndex = 3;
-      double fSqrArea = kE0cE1.SquaredLength();
-      if ( fSqrArea > fMaxSqrArea )
-      {
-         iMaxIndex = 0;
-         fMaxSqrArea = fSqrArea;
-      }
-      fSqrArea = kE1cE2.SquaredLength();
-      if ( fSqrArea > fMaxSqrArea )
-      {
-         iMaxIndex = 1;
-         fMaxSqrArea = fSqrArea;
-      }
-      fSqrArea = kE2cE0.SquaredLength();
-      if ( fSqrArea > fMaxSqrArea )
-      {
-         iMaxIndex = 2;
-         fMaxSqrArea = fSqrArea;
-      }
-
-      if ( greater(fMaxSqrArea,0.0)  )
-      {
-         double fInvSqrArea = 1.0/fMaxSqrArea;
-         Vector3D kTmp;
-         if( iMaxIndex==0 )
-         {
-            kTmp      = akDiff[3].Cross(akDiff[1]);
-            afBary[0] = kE0cE1.Dot(kTmp)*fInvSqrArea;
-            kTmp      = akDiff[0].Cross(akDiff[3]);
-            afBary[1] = kE0cE1.Dot(kTmp)*fInvSqrArea;
-            afBary[2] = 0.0;
-            afBary[3] = 1.0 - afBary[0] - afBary[1];
-         }
-         else if( iMaxIndex == 1 )
-         {
-            afBary[0] = 0.0;
-            kTmp      = akDiff[3].Cross(akDiff[2]);
-            afBary[1] = kE1cE2.Dot(kTmp)*fInvSqrArea;
-            kTmp      = akDiff[1].Cross(akDiff[3]);
-            afBary[2] = kE1cE2.Dot(kTmp)*fInvSqrArea;
-            afBary[3] = 1.0 - afBary[1] - afBary[2];
-         }
-         else if( iMaxIndex == 2 )
-         {
-            kTmp      = akDiff[2].Cross(akDiff[3]);
-            afBary[0] = kE2cE0.Dot(kTmp)*fInvSqrArea;
-            afBary[1] = 0.0;
-            kTmp      = akDiff[3].Cross(akDiff[0]);
-            afBary[2] = kE2cE0.Dot(kTmp)*fInvSqrArea;
-            afBary[3] = 1.0 - afBary[0] - afBary[2];
-         }
-         else
-         {
-            akDiff[3] = *this - rkV2;
-            kTmp      = akDiff[3].Cross(kE12);
-            afBary[0] = kE02cE12.Dot(kTmp)*fInvSqrArea;
-            kTmp      = kE02.Cross(akDiff[3]);
-            afBary[1] = kE02cE12.Dot(kTmp)*fInvSqrArea;
-            afBary[2] = 1.0 - afBary[0] - afBary[1];
-            afBary[3] = 0.0;
-         }
-      }
-      else
-      {
-         // The tetrahedron is potentially a sliver.  Determine the edge of
-         // maximum length and compute barycentric coordinates with respect
-         // to that edge.
-         double fMaxSqrLength = akDiff[0].SquaredLength();
-         iMaxIndex            = 0;  // <V0,V3>
-         double fSqrLength    = akDiff[1].SquaredLength();
-         
-         if( fSqrLength > fMaxSqrLength )
-         {
-            iMaxIndex     = 1;  // <V1,V3>
-            fMaxSqrLength = fSqrLength;
-         }
-         fSqrLength = akDiff[2].SquaredLength();
-         
-         if( fSqrLength > fMaxSqrLength )
-         {
-            iMaxIndex     = 2;  // <V2,V3>
-            fMaxSqrLength = fSqrLength;
-         }
-         fSqrLength = kE02.SquaredLength();
-         
-         if( fSqrLength > fMaxSqrLength )
-         {
-            iMaxIndex     = 3;  // <V0,V2>
-            fMaxSqrLength = fSqrLength;
-         }
-         fSqrLength = kE12.SquaredLength();
-         
-         if( fSqrLength > fMaxSqrLength )
-         {
-            iMaxIndex     = 4;  // <V1,V2>
-            fMaxSqrLength = fSqrLength;
-         }
-         
-         Vector3D kE01 = rkV0 - rkV1;
-         fSqrLength    = kE01.SquaredLength();
-         
-         if( fSqrLength > fMaxSqrLength )
-         {
-            iMaxIndex     = 5;  // <V0,V1>
-            fMaxSqrLength = fSqrLength;
-         }
-
-         if( greater(fMaxSqrLength, 0.0) )
-         {
-            double fInvSqrLength = 1.0/fMaxSqrLength;
-            if( iMaxIndex == 0 )
-            {
-               // P-V3 = t*(V0-V3)
-               afBary[0] = akDiff[3].Dot(akDiff[0])*fInvSqrLength;
-               afBary[1] = 0.0;
-               afBary[2] = 0.0;
-               afBary[3] = 1.0 - afBary[0];
-            }
-            else if( iMaxIndex == 1 )
-            {
-               // P-V3 = t*(V1-V3)
-               afBary[0] = 0.0;
-               afBary[1] = akDiff[3].Dot(akDiff[1])*fInvSqrLength;
-               afBary[2] = 0.0;
-               afBary[3] = 1.0 - afBary[1];
-            }
-            else if( iMaxIndex == 2 )
-            {
-               // P-V3 = t*(V2-V3)
-               afBary[0] = 0.0;
-               afBary[1] = 0.0;
-               afBary[2] = akDiff[3].Dot(akDiff[2])*fInvSqrLength;
-               afBary[3] = 1.0 - afBary[2];
-            }
-            else if( iMaxIndex == 3 )
-            {      
-               // P-V2 = t*(V0-V2)
-               akDiff[3] = *this - rkV2;
-               afBary[0] = akDiff[3].Dot(kE02)*fInvSqrLength;
-               afBary[1] = 0.0;
-               afBary[2] = 1.0 - afBary[0];
-               afBary[3] = 0.0;
-            }
-            else if( iMaxIndex == 4 )
-            {
-               // P-V2 = t*(V1-V2)
-               akDiff[3] = *this - rkV2;
-               afBary[0] = 0.0;
-               afBary[1] = akDiff[3].Dot(kE12)*fInvSqrLength;
-               afBary[2] = 1.0 - afBary[1];
-               afBary[3] = 0.0;
-            }
-            else
-            {
-               // P-V1 = t*(V0-V1)
-               akDiff[3] = *this - rkV1;
-               afBary[0] = akDiff[3].Dot(kE01)*fInvSqrLength;
-               afBary[1] = 1.0 - afBary[0];
-               afBary[2] = 0.0;
-               afBary[3] = 0.0;
-            }
-         }
-         else
-         {
-            // tetrahedron is a nearly a point, just return equal weights
-            afBary[0] = 0.25;
-            afBary[1] = afBary[0];
-            afBary[2] = afBary[0];
-            afBary[3] = afBary[0];
-         }
-      }
-   }
-}
-/*=======================================================*/
-void Vector3D::Orthonormalize(Vector3D& rkU, Vector3D& rkV, Vector3D& rkW)
-{
-   // If the input vectors are v0, v1, and v2, then the Gram-Schmidt
-   // orthonormalization produces vectors u0, u1, and u2 as follows,
-   //
-   //   u0 = v0/|v0|
-   //   u1 = (v1-(u0*v1)u0)/|v1-(u0*v1)u0|
-   //   u2 = (v2-(u0*v2)u0-(u1*v2)u1)/|v2-(u0*v2)u0-(u1*v2)u1|
-   //
-   // where |A| indicates length of vector A and A*B indicates dot
-   // product of vectors A and B.
-
-   // compute u0
-   rkU.Normalize();
-
-   // compute u1
-   double fDot0 = rkU.Dot(rkV); 
-   rkV -= fDot0*rkU;
-   rkV.Normalize();
-
-   // compute u2
-   double fDot1 = rkV.Dot(rkW);
-   fDot0 = rkU.Dot(rkW);
-   rkW  -= fDot0*rkU + fDot1*rkV;
-   rkW.Normalize();
-}
-/*=======================================================*/
-void Vector3D::Orthonormalize(Vector3D* akV)
-{
-   Orthonormalize(akV[0],akV[1],akV[2]);
-}
-/*=======================================================*/
-void Vector3D::GenerateOrthonormalBasis(Vector3D& rkU, Vector3D& rkV,Vector3D& rkW, bool bUnitLengthW)
-{
-   if ( !bUnitLengthW )
-      rkW.Normalize();
-
-   double fInvLength;
-
-   if ( greaterEqual( std::fabs(rkW.m_afTuple[0]),std::fabs(rkW.m_afTuple[1]) ) )
-   {
-      // W.x or W.z is the largest magnitude component, swap them
-      fInvLength = UbMath::invSqrt(rkW.m_afTuple[0]*rkW.m_afTuple[0] + rkW.m_afTuple[2]*rkW.m_afTuple[2]);
-      rkU.m_afTuple[0] = -rkW.m_afTuple[2]*fInvLength;
-      rkU.m_afTuple[1] = (double)0.0;
-      rkU.m_afTuple[2] = +rkW.m_afTuple[0]*fInvLength;
-   }
-   else
-   {
-      // W.y or W.z is the largest magnitude component, swap them
-      fInvLength = UbMath::invSqrt(rkW.m_afTuple[1]*rkW.m_afTuple[1] + rkW.m_afTuple[2]*rkW.m_afTuple[2]);
-      rkU.m_afTuple[0] = (double)0.0;
-      rkU.m_afTuple[1] = +rkW.m_afTuple[2]*fInvLength;
-      rkU.m_afTuple[2] = -rkW.m_afTuple[1]*fInvLength;
-   }
-
-   rkV = rkW.Cross(rkU);
-}
-/*=======================================================*/
-//globaler operator* 
-Vector3D operator*(const double& fScalar, const Vector3D& rkV)
-{
-   return Vector3D( fScalar*rkV[0],
-                    fScalar*rkV[1],
-                    fScalar*rkV[2] );
-}
-/*=======================================================*/
-std::ostream& operator* (std::ostream& os, const Vector3D& rkV)
-{
-   os<<rkV.toString();
-   return os;
-}
-} //end namespace UbMath
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbMath.h b/source/VirtualFluidsCore/Basics/utilities/UbMath.h
deleted file mode 100644
index 4571514f86d3cc743008dd9b5d4ba1d5f687dd5e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbMath.h
+++ /dev/null
@@ -1,548 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBMATH_H
-#define UBMATH_H
-
-#include <cmath>
-#include <limits>
-#include <iostream>
-#include <cassert>
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbEqual.h>
-
-/*=========================================================================*/
-/*  UbMath                                                             */
-/*                                                                         */
-/**
-namespace for global math-functions
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.4 - 04.10.07
-*/ 
-
-/*
-usage: ...
-*/
-
-namespace UbMath 
-{
-   extern const double PI;
-   
-   
-   //////////////////////////////////////////////////////////////////////////
-   //Hilfsfunktion fuer Genauigkeit
-   template< typename T >
-   struct Epsilon {  };
-
-   //////////////////////////////////////////////////////////////////////////
-   //  SPECIALIZATIONS von Epsilon
-   //////////////////////////////////////////////////////////////////////////
-   template<>
-   struct Epsilon<double>        { static inline double      val() { return 1.0E-11; } };
-   template<>
-   struct Epsilon<float>         { static inline float       val() { return 1.0E-7f; } };
-   template<>
-   struct Epsilon<long double>   { static inline long double val() { return 1.0E-15; } };
-   template<>
-   struct Epsilon<int>           { static inline int         val() { return 0;       } };
-
-   /*=======================================================*/
-   // -------------------------------------------------------------------------------------------------
-   // Funktion berechnet den Logarithmus einer Zahl z bzgl. der Basis b
-   // -------------------------------------------------------------------------------------------------
-   template<typename T>
-   inline T log(const T& z, const T& base)
-   {
-      if( ::log(base)==0 ) return 1.0f;
-      return ::log(z) / ::log(base);
-   }
-   /*=======================================================*/
-   //double x = UbMath::getNegativeInfinity<double>();
-   template<typename T>
-   inline T getNegativeInfinity()
-   {
-      //assert(std::numeric_limits<T>::has_infinity);
-      UB_STATIC_ASSERT(std::numeric_limits<T>::has_infinity);
-      return -std::numeric_limits<T>::infinity();
-   }
-   /*=======================================================*/
-   //double x = UbMath::getPositiveInfinity<double>();
-   template<typename T>
-   inline T getPositiveInfinity()
-   {
-      //assert(std::numeric_limits<T>::has_infinity);
-      UB_STATIC_ASSERT(std::numeric_limits<T>::has_infinity);
-      return std::numeric_limits<T>::infinity();
-   }
-   /*=======================================================*/
-   //double x; bool b = UbMath::isInfinity(x);
-   template<typename T>
-   inline bool isInfinity(const T& value)
-   {
-      if(value==getNegativeInfinity<T>()) return true;
-      if(value==getPositiveInfinity<T>()) return true;
-      return false;
-   }
-   /*=======================================================*/
-   //double x = UbMath::getNaN<double>(x);
-   template<typename T>
-   inline T getNaN()
-   {
-      UB_STATIC_ASSERT(std::numeric_limits<T>::has_quiet_NaN);
-      return std::numeric_limits<T>::quiet_NaN();
-   }
-   /*=======================================================*/
-   //double x; bool b = UbMath::isNaN(x);
-   // x!=x liefert bei #QNAN "true"!
-   template<typename T>
-   inline bool isNaN(const T& x)
-   {
-      UB_STATIC_ASSERT(std::numeric_limits<T>::has_quiet_NaN);
-      return (x != x); 
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline T getEqualityEpsilon()		  
-   { 
-      return  Epsilon<T>::val();  
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline bool zero(const T& value)		  
-   { 
-      return std::fabs( value ) < Epsilon<T>::val();
-      //return value >= -UbMath::EPSILON && value <= UbMath::EPSILON;	
-   }
-   /*=======================================================*/
-   //spezialisierung fuer ints
-   template<>
-   inline bool zero(const int& value)		  
-   { 
-      return value == 0;
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool zero(const T1& value1, const T2& value2)		  
-   { 
-      return !(!UbMath::zero(value1) || !UbMath::zero(value2));	
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3>
-   inline bool zero(const T1& value1, const T2& value2, const T3& value3)		  
-   { 
-      return !(!UbMath::zero(value1) || !UbMath::zero(value2,value3));	
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline bool negative(const T& value)    
-   { 
-      return value < -Epsilon<T>::val();  
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline bool nonPositive(const T& value) 
-   { 
-      return value <= Epsilon<T>::val(); 
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline bool positive(const T& value)    
-   { 
-      return value > +Epsilon<T>::val();   
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline bool nonNegative(const T& value) 
-   { 
-      return value >= -Epsilon<T>::val(); 
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool equal(const T1& value, const T2& reference) 
-   { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
-      return std::fabs(value-reference) < Epsilon<High>::val(); 
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3>
-   inline bool equal(const T1& val1, const T2& val2, const T3& val3) 
-   { 
-      return ( UbMath::equal(val1,val2) && UbMath::equal(val1,val3) ); 
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool less(const T1& value, const T2& reference)   
-   { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
-      return value < reference - Epsilon<High>::val(); 
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool lessEqual(const T1& value, const T2& reference) 
-   { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
-      return value <= reference + Epsilon<High>::val();
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool greater(const T1& value, const T2& reference)      
-   { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
-      return value > reference + Epsilon<High>::val();  
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2>
-   inline bool greaterEqual(const T1& value, const T2& reference) 
-   { 
-      typedef typename UbEqualTrait<T1,T2>::High High;
-      return value >= reference - Epsilon<High>::val(); 
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline T round(const T& value, const int& decimalPlaces) 
-   { 
-      return static_cast<T>(floor(value * pow( 10.0, decimalPlaces) + 0.5 ) * pow(10.0, -decimalPlaces)); 
-   } 
-   /*=======================================================*/
-   template<typename T>
-   inline int integerRounding(const T& value) 
-   { 
-      return static_cast<int>( UbMath::zero(value) ?  0 : ( (value<0.0) ? (value-0.5) : (value+0.5) ) );
-   } 
-   /*=======================================================*/
-   template<typename T>
-   inline T getRad(const T& degrees) 
-   {
-      return degrees*static_cast<T>(UbMath::PI/180.0);
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline T getDegrees(const T& rad) 
-   {
-      return rad*static_cast<T>(UbMath::PI/180.0);
-   }
-   /*=======================================================*/
-   //aus wildmagic
-   template<typename T>
-   inline T ACos (const T& fValue)
-   {
-      if ( -1.0 < fValue )
-      {
-         if ( fValue < 1.0 ) return static_cast<T>( acos(fValue) );
-         else                return static_cast<T>( 0.0          );
-      }
-      else return static_cast<T>( PI );
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline T ASin(const T& fValue)
-   {
-      double HALF_PI = 0.5*UbMath::PI;
-      if ( -1.0 < fValue )
-      {
-         if ( fValue < 1.0 ) return static_cast<T>( asin(fValue) );
-         else                return static_cast<T>( HALF_PI      );
-      }
-      else return -static_cast<T>( HALF_PI );         
-   }
-   /*=======================================================*/
-   template<typename T>
-   inline T invSqrt(const T& fValue)   
-   { 
-      return static_cast<T>(1.0/sqrt(fValue));
-   }
-
-   /*=======================================================*/
-   /**
-   * Returns true, if specified values a and b are less both values c and d.
-   * @param a the first value to check
-   * @param b the second value to check
-   * @param c the first value to check against
-   * @param d the second value to check against
-   * @return true, if specified values a and b are less both values c and d
-   **/
-   template<typename T1, typename T2, typename T3, typename T4>
-   inline bool less2(const T1& value1, const T2& value2, T3 toBeLessAs1, T4 toBeLessAs2) 
-   {	
-      return (   less(value1,toBeLessAs1)
-              && less(value1,toBeLessAs2)
-              && less(value2,toBeLessAs1)
-              && less(value2,toBeLessAs2) );
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3, typename T4>
-   inline bool greater2(const T1& value1, const T2& value2, T3 toBeGreaterAs1, T4 toBeGreaterAs2)
-   { 
-      return (   greater(value1,toBeGreaterAs1)
-              && greater(value1,toBeGreaterAs2)
-              && greater(value2,toBeGreaterAs1)
-              && greater(value2,toBeGreaterAs2) );
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3>
-   inline bool inClosedInterval(const T1& value, const T2& threshold1, const T3& threshold2)
-   { 
-      if(threshold1 < threshold2)
-      {
-         return ( greaterEqual( value, threshold1) && lessEqual( value, threshold2) );
-      }
-
-      return ( greaterEqual( value, threshold2) && lessEqual( value, threshold1) );
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3>
-   inline bool inOpenInterval(const T1& value, const T2& threshold1, const T3& threshold2)
-   {	
-      if(threshold1 < threshold2) 
-      {
-         return (greater( value, threshold1) && less( value, threshold2));
-      }
-
-      return (greater( value, threshold2) && less( value, threshold1));
-   }
-   /*=======================================================*/
-   template<typename T1, typename T2, typename T3>
-   inline double adaptToClosedInterval(const T1& value, const T2& threshold1, const T3& threshold2)
-   { 
-      if(threshold1 < threshold2)
-      {
-         if     ( less(   value, threshold1) ) return threshold1;
-         else if( greater(value, threshold2) ) return threshold2;
-      }
-      else
-      {
-         if     ( less(   value, threshold2) ) return threshold2;
-         else if( greater(value, threshold1) ) return threshold1;
-      }
-      return value;
-   }
-   /*=======================================================*/
-   // -------------------------------------------------------------------------------------------------
-   // Funktion berechnet den groessten gemeinsamen Teiler zweier Zahlen (MK)
-   // -------------------------------------------------------------------------------------------------
-   /*=======================================================*/
-   inline int calcGgt(int val1, int val2)
-   {
-      if( val1 < val2 ) std::swap(val1,val2);
-      int ggt=val2;
-      while(ggt > 1)
-      {
-         if( (val1%ggt)==0 && (val2%ggt)==0 ) break;
-
-         ggt -=1;
-      }
-      return ggt;
-   }
-   /*=======================================================*/
-   // -------------------------------------------------------------------------------------------------
-   // Funktion berechnet den groessten gemeinsamen Teiler von drei Zahlen (MK)
-   // -------------------------------------------------------------------------------------------------
-   inline int calcGgt(int val1, const int& val2, int val3)
-   {
-      return UbMath::calcGgt( UbMath::calcGgt(val1, val2), val3 );
-   }
-   /*=======================================================*/
-   //returns the max of two values
-   //to avoid errors at mixed argument-types use: double myMax = max<double>(2,2.3);
-   template< typename T >
-   inline const T& max(const T& a1, const T& a2) 
-   { 
-     return (a1<a2) ? a2 : a1;
-   }
-   /*=======================================================*/
-   template< typename T >
-   inline const T& max(const T& a1, const T& a2, const T& a3) 
-   { 
-      return max(max(a1,a2),a3);
-   }
-   /*=======================================================*/
-   template< typename T >
-   inline const T& max(const T& a1, const T& a2, const T& a3, const T& a4)
-   {
-      return max(max(max(a1,a2),a3),a4);
-   }
-   /*=======================================================*/
-   template< typename T >
-   inline const T& min(const T& a1,const T& a2) 
-   { 
-      return (a1<a2) ? a1 : a2;
-   }
-   /*=======================================================*/
-   template< typename T >
-   inline const T& min(const T& a1, const T& a2, const T& a3) 
-   { 
-      return min(min(a1,a2),a3);
-   }
-   /*=======================================================*/
-   template< typename T >
-   inline const T& min(const T& a1, const T& a2, const T& a3, const T& a4)
-   {
-      return min(min(min(a1,a2),a3),a4);
-      
-//       double tmp = a1;
-//       if(tmp>a2) tmp=a2;
-//       if(tmp>a3) tmp=a3;
-//       if(tmp>a4) tmp=a4;
-//       return tmp;
-   }
-   /*=======================================================*/
-
-   class Vector3D
-   {
-   public:
-      // construction
-      Vector3D(); 
-      Vector3D(const double& fX1, const double& fX2, const double& fX3);
-      Vector3D(const Vector3D& rkV);
-
-      std::string toString() const;
-
-      // coordinate access
-      operator const double*() const;
-      operator double*();
-      double   operator[](const int& i) const;
-      double&  operator[](const int& i);
-      double   X1() const;
-      double&  X1();
-      double   X2() const;
-      double&  X2();                                    
-      double   X3() const;
-      double&  X3();
-
-      // assignment
-      Vector3D& operator=(const Vector3D& rkV);
-
-      // comparison
-      bool operator==(const Vector3D& rkV) const;
-      bool operator!=(const Vector3D& rkV) const;
-      bool operator< (const Vector3D& rkV) const;
-      bool operator<=(const Vector3D& rkV) const;
-      bool operator> (const Vector3D& rkV) const;
-      bool operator>=(const Vector3D& rkV) const;
-
-      // arithmetic operations
-      Vector3D operator+(const Vector3D& rkV) const;
-      Vector3D operator-(const Vector3D& rkV) const;
-      Vector3D operator*(const double& fScalar) const;
-      Vector3D operator/(const double& fScalar) const;
-      Vector3D operator-() const;
-
-      // arithmetic updates
-      Vector3D& operator+= (const Vector3D& rkV);
-      Vector3D& operator-= (const Vector3D& rkV);
-      Vector3D& operator*= (const double& fScalar);
-      Vector3D& operator/= (const double& fScalar);
-
-      Vector3D Add(Vector3D& vector);
-      Vector3D Subtract(Vector3D& vector);
-      Vector3D Scale(const double& x);
-
-      // vector operations
-      double Length () const;
-      double SquaredLength () const;
-      double Dot (const Vector3D& rkV) const;
-      double Normalize ();
-
-      // The cross products are computed using the right-handed rule.  Be aware
-      // that some graphics APIs use a left-handed rule.  If you have to compute
-      // a cross product with these functions and send the result to the API
-      // that expects left-handed, you will need to change sign on the vector
-      // (replace each component value c by -c).
-      Vector3D Cross (const Vector3D& rkV) const;
-      Vector3D UnitCross (const Vector3D& rkV) const;
-
-      // Compute the barycentric coordinates of the point with respect to the
-      // tetrahedron <V0,V1,V2,V3>, P = b0*V0 + b1*V1 + b2*V2 + b3*V3, where
-      // b0 + b1 + b2 + b3 = 1.
-      void GetBarycentrics (const Vector3D& rkV0, const Vector3D& rkV1, const Vector3D& rkV2, const Vector3D& rkV3, double afBary[4]) const;
-
-      // Gram-Schmidt orthonormalization.  Take linearly independent vectors
-      // U, V, and W and compute an orthonormal set (unit length, mutually
-      // perpendicular).
-      static void Orthonormalize (Vector3D& rkU, Vector3D& rkV, Vector3D& rkW);
-      static void Orthonormalize (Vector3D* akV);
-
-      // Input W must be initialized to a nonzero vector, output is {U,V,W},
-      // an orthonormal basis.  A hint is provided about whether or not W
-      // is already unit length.
-      static void GenerateOrthonormalBasis (Vector3D& rkU, Vector3D& rkV, Vector3D& rkW, bool bUnitLengthW);
-
-      // special vectors
-      static const Vector3D ZERO;
-      static const Vector3D UNIT_X1;
-      static const Vector3D UNIT_X2;
-      static const Vector3D UNIT_X3;
-
-   #ifdef CAB_RCF
-         template<class Archive>
-         void serialize(Archive & ar, const unsigned int version)
-         {
-            ar & m_afTuple;
-         }
-   #endif //CAB_RCF
-
-   protected:
-      // support for comparisons
-      int CompareArrays (const Vector3D& rkV) const;
-
-      double m_afTuple[3];
-   };
-   
-   //globaler multiplaktor mit skalar
-   Vector3D operator*(const double& fScalar, const Vector3D& rkV);
-   std::ostream& operator<<(std::ostream& os, const Vector3D& rkV);
-
-   //////////////////////////////////////////////////////////////////////////
-   //
-   //constants
-   //
-   //////////////////////////////////////////////////////////////////////////
-   static const double c8o27=8./27.;
-   static const double c2o27=2./27.;
-   static const double c1o54=1./54.;
-   static const double c1o216=1./216.;
-   static const double c9o2=9./2.;
-   static const double c3o9=3./9.;
-   static const double c3o54=3./54.;
-   static const double c3o216=3./216.;
-
-   static const double c1o27=1./27.;
-
-   static const double c1o72  = 1./72.;          //0.01388888
-   static const double c1o36  = 1./36.;          //0.02777777
-   static const double c1o48  = 1./48.;          //0.02083333
-   static const double c1o32  = 1./32.;          //0.03125
-   static const double c1o24  = 1./24.;          //0.04166666
-   static const double c1o20  = 1./20.;          //0.05
-   static const double c1o18  = 1./18.;          //0.05555555
-   static const double c1o16  = 1./16.;          //0.0625
-   static const double c1o12  = 1./12.;          //0.08333333
-   static const double c1o9   = 1./9.;           //0.11111111
-   static const double c1o8   = 1./8.;           //0.125
-   static const double c1o6   = 1./6.;           //0.16666666
-   static const double c1o5   = 1./5.;           //0.2
-   static const double c1o4   = 1./4.;           //0.25
-   static const double c5o16  = 5./16.;          //0.3125
-   static const double c1o3   = 1./3.;           //0.33333333
-   static const double c3o8   = 3./8.;           //0.375
-   static const double c4o9   = 4./9.;           //0.44444444
-   static const double c1o2   = 1./2.;           //0.5
-   static const double c9o16  = 9./16.;          //0.5625
-   static const double c2o3   = 2./3.;           //0.66666666
-   static const double c3o4   = 3./4.;           //0.75
-   static const double c3o2   = 3./2.;           //1.5
-   static const double c4o3   = 4./3.;           //1.33333333
-   static const double c5o3   = 5./3.;           //1.66666666
-   static const double c9o5   = 9./5.;           //1.8
-   static const double c2o9   = 2./9.;           //0.22222222
-   static const double one_over_sqrt2 =  1.0/sqrt(2.0); //0.707106781
-   static const double one_over_sqrt3 =  1.0/sqrt(3.0); //0.577350269
-   static const double sqrt2  = sqrt(2.0); //1.4142135
-   static const double sqrt3  = sqrt(3.0); //1.7320508
-}
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbNupsTimer.h b/source/VirtualFluidsCore/Basics/utilities/UbNupsTimer.h
deleted file mode 100644
index 8320aa7de8c5e465edaa032a1816f016e6133bc7..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbNupsTimer.h
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef UBNUPSTIMER_H
-#define UBNUPSTIMER_H
-
-#include <basics/utilities/UbTiming.h>
-#include <sstream>
-#include <vector>
-
-
-/*=========================================================================*/
-/*  UbNupsTimer                                                             */
-/*                                                                         */
-/**
-This Class provides the base for ...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 01.11.04
-*/ 
-class UbNupsTimer : public UbTiming
-{
-public:
-   UbNupsTimer() : UbTiming()
-   {
-      mTempNodes = 0.0;
-      mNofNodes.resize(0);
-      mDurations.resize(0);
-   }
-   /*==========================================================*/
-   UbNupsTimer(std::string name) : UbTiming(name)
-   {
-      mNofNodes.resize(0);
-      mDurations.resize(0);
-      mTempNodes = 0.0;
-   }
-   /*==========================================================*/
-   void initTiming()
-   {
-      UbTiming::initTiming();
-      mNofNodes.resize(0);
-      mDurations.resize(0);
-      mTempNodes   = 0.0;
-   }
-   /*==========================================================*/
-   void startTiming(double nofNodes)
-   {
-      mTempNodes=nofNodes;
-      UbTiming::startTiming();
-   }
-   /*==========================================================*/
-   void endTiming()
-   {
-      UbTiming::endTiming();
-      //save #node and time informations
-      mNofNodes.push_back(mTempNodes);
-      mDurations.push_back(UbTiming::getDuration());
-      //reset internal timecounter
-      UbTiming::initTiming();
-   }
-   /*==========================================================*/
-   double getAverageNups()
-   { 
-      double averageNups = 0.0;
-      for(int i=0;i<(int)mNofNodes.size();i++)
-         averageNups+=mNofNodes.at(i)/mDurations.at(i);
-      
-      return averageNups/(double)mNofNodes.size(); 
-   }
-   /*==========================================================*/
-   double getSumOfDuration()
-   {
-      double duration = 0.0;
-      for(int i=0;i<(int)mDurations.size();i++) duration+=mDurations.at(i);
-      return duration;
-   }
-   /*==========================================================*/
-   std::string getNupsString()
-   {
-      std::stringstream ss;
-      ss<<"saved nups informations"<<std::endl;
-      for(int i=0;i<(int)mNofNodes.size();i++)
-         ss<<mNofNodes.at(i)<<"nodes/"<<mDurations.at(i)<<"sec="<<mNofNodes.at(i)/mDurations.at(i)<<"nups\n";
-      return ss.str();
-   }
-
-protected:
-
-private:
-   std::vector<double> mNofNodes;
-   std::vector<double> mDurations;
-   
-   double mTempNodes;
-};
-
-#endif
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbObservable.h b/source/VirtualFluidsCore/Basics/utilities/UbObservable.h
deleted file mode 100644
index a1ab9cafbe4443680dc728d1f8907a1ba34c1462..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbObservable.h
+++ /dev/null
@@ -1,259 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBOBSERVABLE_H
-#define UBOBSERVABLE_H
-
-#include <list>               
-#include <iostream>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-#include <basics/utilities/UbObserver.h>
-
-class UbObserver;
-
-/*=========================================================================*/
-/*  Beobachtbares Objekt                                                   */
-/*                                                                         */
-/**
-  This class provides Observables. The Observeres which observe this
-  Observable are stored in an observerlist.
-  IMPORTANT: objectWillBeDeleted is called at UbObserver::~UbObserver
-             this destructor is called AFTER the destructor of the
-             child classes. if you down_cast the pointer sent with the
-             objectWillBeDeleted(UbObserver* objpointer) then have to go this:
-               
-               if(dynamic_cast<UbObserver*>(observedObj)==objpointer) 
-                     (e.g.) observedObj=NULL;
-   example: see end of file
-
-   a copy of an UbservableObject will NOT copy the observerList
-  <UL>
-    <LI><B>Extending:</B> This UbObservable is the observable object itself. Extending should be used
-	where object types can be extended from UbObservable.
-    <LI><B>Associating:</B> Initialization is done via the constructor <tt>UbObservable(ObservableObject)</tt>.
-	Associating may be used, where object types to be observed could not be extended from UbObservable.
-  </UL>
-  <BR><BR><HR>        
-  @author <A HREF="mailto:geller@cab.bau.tu-bs.de">S. Geller</A>
-  @author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-  @version 1.2 - 13.07.05
-  @see UbObserver
-*/
-
-class UbObservable 
-{
-protected:
-   /*======================================================================*/
-   /*  Konstruktoren                                                       */
-   /*                                                                      */
-   /**
-     Creates a UbObservable itself to be the object to be observed.
-     Usually this constructor is used in extended classes.
-   */
-   UbObservable()
-   {
-   }
-   
-   UbObservable(const UbObservable& src)
-   {
-      //no copy of observers !!!
-   }
-   
-   //falls irgendein schlaumeier den =operator von UbObservable aufrufen sollte,
-   //dann macht diesr auch keine kopie! (Allg: zuweisungsoperatoren werden nie vererbt
-   UbObservable& operator=(const UbObservable& src)
-   {
-      return *this;
-   }
-   
-   //   /**
-   //     Creates a UbObservable for the specified Object to be observed.
-   //     Usually this constructor is used in associating UbObservable.
-   //     @param object Object to be observed
-   //   */
-public:
-   /*======================================================================*/
-   /*  Destruktor                                                          */
-   /*                                                                      */
-   /**
-   */
-   virtual ~UbObservable()
-   {
-      this->notifyObserversObjectWillBeDeleted();
-   } 
-
-   /*======================================================================*/
-   /*  methods                                                            */
-   /*                                                                      */
-   
-   /**
-   Adds an UbObserver to the observerlist.
-   @param observer the observer to add to this observable (note that an observer may observe one observable more than once)
-   */
-   virtual void addObserver(UbObserver* observer)
-   {
-      if(!observer) return;
-      for(std::list<UbObserver*>::iterator pos=mObserverList.begin();pos!=mObserverList.end();++pos)
-      {
-         if(*pos == observer) return;
-      }
-      this->mObserverList.push_back(observer);
-   }
-   /**
-   Deletes an UbObserver from the observerlist.
-   @param observer the observer to remove from this observable (note that all observers identical are deleted)
-   ( delete means delete Heap... but here we're only removing a pointer)
-   */
-   virtual void removeObserver(UbObserver* observer)
-   {
-      if(!observer) return;
-      this->mObserverList.remove(observer);
-
-   }
-   /**
-   Deletes all Observers from the observerlist.
-   ( delete means delete Heap... but here we're only removing a pointer)
-   */
-   virtual void removeAllObservers()
-   {
-      this->mObserverList.clear();
-   }
-   
-   /**
-     Checks whether the specified UbObserver observes this observable.
-     @param observer the observer to remove from this observable (note that all observers identical are deleted)
-     @return true if the specified observer observes this observable
-   */
-   virtual bool isObservedBy(UbObserver* observer)
-   {
-      if(!observer) return false;
-      for(std::list<UbObserver*>::iterator pos=mObserverList.begin();pos!=mObserverList.end();++pos)
-      {
-         if(*pos == observer) return true;
-      }
-      return false;
-   }
-   /**
-     Notifies all of its observers that something happened. Does nothing, if the observed object is null.
-     Calls the Method UbObserver.objectChanged(Object) with the object of this observable as parameter.
-     The Method UbObserver.objectChanged(Object) must be defined
-     by each class implementing the interface TiObserver
-   */
-   virtual void notifyObserversObjectChanged()
-   {
-      std::list<UbObserver*>::iterator tmp_pos; //es kann sein, dass der aktuelle observer waehrend
-                                           //objectChanged() removed wird...
-      for(std::list<UbObserver*>::iterator pos=mObserverList.begin();pos!=mObserverList.end();)
-      {
-        //cout<<"in notifyObserversObjectChanged\n";
-        //cout<<this->mObserverList.size()<<endl;
-
-         tmp_pos = pos++; // erst tmp_pos=pos und dann pos++
-         (*tmp_pos)->objectChanged(this);
-      }
-   }
-
-   std::list<UbObserver*>* getObserverList() { return &mObserverList;}
-
-   virtual std::string toString() { return "UbObservable - toString()"; }
-
-#ifdef CAB_RCF
-   template<typename Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      //do nothing!
-   }
-#endif //CAB_RCF
-
-private:
-   /**
-     Notifies all of its observers that something happened. Does nothing, if the observed object is null.
-     Calls the Method UbObserver.objectChanged(Object) with the object of this observable as parameter.
-     The Method UbObserver.objectChanged(Object) must be defined
-     by each class implementing the interface TiObserver
-   */
-   virtual void notifyObserversObjectWillBeDeleted()
-   {
-      std::list<UbObserver*>::iterator tmp_pos; //es kann sein, dass der aktuelle observer waehrend
-                                          //objectWillBeDeleted() removed wird...
-      for(std::list<UbObserver*>::iterator pos=mObserverList.begin();pos!=mObserverList.end();)
-      {
-         //cout<<"in notifyObserversObjectWillBeDeleted\n";
-         //cout<<this->mObserverList.size()<<endl;
-
-         tmp_pos = pos++;
-         (*tmp_pos)->objectWillBeDeleted(this);
-      }
-   }
-
-   std::list<UbObserver*> mObserverList;
-};
-/*=========================================================================*/
-
-
-#ifdef RCF_USE_SF_SERIALIZATION
-   SF_NO_CTOR(UbObservable);
-#endif //RCF_USE_SF_SERIALIZATION
-
-#endif
-
-////  E X A M P L E 
-////===================
-//class Point : public UbObservable
-//{
-//public:
-//   Point(){x=y=0;}
-//   ~Point(){}
-//   void setXCorrdinates(int x,int y)
-//   {
-//     this->x = x; this->y = y;
-//     this->notifyObserverObjectChanged();
-//   }
-//private:
-//   int x,y;
-//};
-//class VisPoint : public UbObserver
-//{
-//public:
-//   VisPoint(Point* point)
-//   { 
-//      this->point = point;
-//      this->point->addObserver(this);
-//   }
-//   ~VisPoint()
-//   {
-//      if(this->point) point->removeObserver(this);
-//   }
-//   void update() { /* do some actualisation stuff */ }
-//   void objectChanged(UbObservable* changedObject)
-//   {
-//      Point* point = dynamic_cast<Point*>(changedObject);
-//      if( !this->point || this->point != point ) return;
-//      this->repaint();
-//   }
-//   void objectWillBeDeleted(UbObservable* objectForDeletion)
-//   {
-//      if(!this->point) return;
-//      UbObservable* obsobjet = dynamic_cast<UbObservable*>(this->point);
-//      if(obsobjet == objectForDeletion) this->point = NULL;
-//      ///////////////////////////////////////////////////////////////////
-//      //*********************************************************************//
-//      //INGEGEN erster annahmen nicht verwenden, da es nicht immer funktioniert
-//      //z.B. bei mehrfachvererbung haut es nicht hin!
-//      ////      Point* point = reinterpret_cast<point*>(objectForDeletion);
-//      ////if(!this->point || objectForDeletion != this->point) return;
-//      ////this->point = NULL;
-//      //*********************************************************************//
-//      //was hingegen immer moeglich sein sollte:
-//      //if(dynamic_cast<void*>(objectForDeletion)==dynamic_cast<void*>(this->point))
-//   }
-//private:
-//   Point* point;
-//};
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbObserver.h b/source/VirtualFluidsCore/Basics/utilities/UbObserver.h
deleted file mode 100644
index 6008481f65fffca2853ab6409d492ac7f9183050..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbObserver.h
+++ /dev/null
@@ -1,55 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBOBSERVER_H
-#define UBOBSERVER_H
-
-class UbObservable;
-/*=========================================================================*/
-/*  Observer                                                               */
-/*                                                                         */
-/**
-This interface must be implemented by classes which want to
-observe other objects.
-IMPORTANT: if you delete an observer, ensure to remove Observer from
-           all his oberved observable objects before!!!
-example: see end of UbObservable.h-file
-<BR><BR><HR>
-@author <A HREF="mailto:geller@cab.bau.tu-bs.de">S. Geller</A>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.1 - 20.11.04
-*/
-
-class UbObserver 
-{
-protected:
-
-   UbObserver(){}
-
-public:
-
-   virtual ~UbObserver(){}
-
-   /*======================================================================*/
-   /*  Methoden                                                            */
-   /*                                                                      */
-   /**
-   This function is called when the observable indicated that an object
-   has changed.
-   @param changedObject Object which has changed
-   */
-   virtual void objectChanged(UbObservable* changedObject)=0;
-   /**
-   This function is called when the observable indicated that an object
-   should be deleted.
-   @param objectForDeletion Object which should be deleted
-   */
-   virtual void objectWillBeDeleted(UbObservable* objectForDeletion)=0;
-};
-
-#endif
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbPointerWrapper.h b/source/VirtualFluidsCore/Basics/utilities/UbPointerWrapper.h
deleted file mode 100644
index 3fcf0b599c3f87971bbd9f4ee316cb26a9a55275..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbPointerWrapper.h
+++ /dev/null
@@ -1,36 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBPOINTERWRAPPER_H
-#define UBPOINTERWRAPPER_H
-
-//kappselt dynamische Objekte zur remote uebetragung
-//bei RCF werden z.B. aufgrund GC alle lokalen Objekte und 
-//"nackte" Pointer die automatisch als shared_ptr initialisert 
-//werde nach Methoden-Aufruf zerstoert
-//hierfuer kann man dann den UbPointerWrapper verwenden
-
-template<typename T>
-class UbPointerWrapper
-{
-public:
-	UbPointerWrapper() : pointer(NULL) {}
-	
-	UbPointerWrapper(T* pointer) : pointer(pointer) {}
-
-   T* get() { return pointer; }
-
-   template<class Archive>
-	void serialize(Archive& ar, const unsigned int version) 
-   {
-		ar & pointer;
-	}
-
-private:
-   T* pointer;
-};
-
-#endif //UBPOINTERWRAPPER_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbRandom.h b/source/VirtualFluidsCore/Basics/utilities/UbRandom.h
deleted file mode 100644
index b4429579eeb94f7a0381bc0f0a19d24845bd3e36..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbRandom.h
+++ /dev/null
@@ -1,60 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBRANDOM_H 
-#define UBRANDOM_H 
-
-#include <cstdlib> 
-#include <ctime> 
-#include <cassert> 
-#include <cmath> 
-
-/*=========================================================================*/
-/*  UbRandom                                                             */
-/*                                                                         */
-/**
-generates a random number
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 04.10.2007
-*/ 
-/*
-usage: 
-   int main() 
-   { 
-      char* hand[] = {"Schere", "Stein", "Papier"}; 
-      for (unsigned u = 0; u < 20; u++) 
-      { 
-         cout << hand[UbRandom::rand(0, 2, 1)] << endl; 
-      } 
-
-      return 0; 
-   } 
-*/
-
-class UbRandom 
-{ 
-private: 
-   UbRandom() { std::srand(static_cast<int>(std::time(NULL)));  } 
-
-public: 
-   //returns arbitrary int value element of [min ; max]
-   static inline int rand(const int& min, const int& max) 
-   { 
-      static UbRandom dummy; 
-      assert(max - min < RAND_MAX); 
-      return ( min + std::rand() % (max - min + 1) ); 
-   } 
-   //returns arbitrary float value element of "( (max - min) / gran ) * [min ; max]"
-   //with other words: val = min+n*(max-min)/gran, n=0..gran-1
-   static inline double rand(const double& min, const double& max, const double& gran)
-   {
-      static UbRandom dummy; 
-      return (min + std::floor( std::rand() / (1.0 + RAND_MAX) * gran)* (max - min) / gran);
-   }
-}; 
-
-#endif //UBRANDOM_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbScheduler.h b/source/VirtualFluidsCore/Basics/utilities/UbScheduler.h
deleted file mode 100644
index 493b567c8c7fbbdaeadda18711b1cc1a1ca14bab..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbScheduler.h
+++ /dev/null
@@ -1,414 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBSCHEDULER_H
-#define UBSCHEDULER_H
-
-#include <iostream>
-#include <string>
-#include <limits>
-#include <cassert> 
-#include <sstream>
-#include <iomanip>
-#include <algorithm>
-
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbMath.h>
-#include <basics/utilities/UbInfinity.h>
-#include <basics/utilities/UbComparators.h>
-#include <basics/utilities/UbFileOutput.h>
-#include <basics/utilities/UbFileInput.h>
-
-#include <boost/serialization/serialization.hpp>
-
-
-/*=========================================================================*/
-/*  UbScheduler                                                            */
-/*                                                                         */
-/**
-namespace for global system-functions
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@author <A HREF="mailto:hegewald@cab.bau.tu-bs.de">J. Hegewald</A>
-@version 1.0 - 06.09.06
-@version 1.1 - 09.09.06
-@version 1.2 - 03.07.08 - nun auch isDue(t) mehrmals fuer dasselbe t moeglich
-                          isDue(t) auch fuer t < lastUsedT
-                          bug entfernt, der bei Schedule (5,0,500) auch 505 als Due zurückgibt!
-*/ 
-
-/*
-usage: ...
-*/
-
-// this class is not thread save
-//
-#include <boost/smart_ptr.hpp>
-class UbScheduler;
-typedef boost::shared_ptr<UbScheduler> UbSchedulerPtr;
-
-class UbScheduler
-{
-public:
-   class UbSchedule
-   {
-      friend class UbScheduler;
-   public:
-      UbSchedule() :  step(Ub::inf), begin(Ub::inf), end(Ub::inf) { }
-      UbSchedule(const double& step, const double& begin=0.0, const double& end=Ub::inf) 
-         : step(step), begin(begin), end(end) 
-      {  
-      }
-      double getStep()  const { return this->step;  }
-      double getBegin() const { return this->begin; }
-      double getEnd()   const { return this->end;   }
-      
-      /*==========================================================*/
-      std::string toString() { std::stringstream text; text<<*this; return text.str(); }
-      /*==========================================================*/
-      friend inline std::ostream& operator << (std::ostream& os, const UbSchedule& schedule) 
-      {
-         os<<"Schedule[start,end,step]=["<<schedule.begin<<", "<<schedule.end<<", "<<schedule.step<<"]";
-         return os;
-      }
-
-      //------------- implements CAB serialization ----- start
-      virtual void write(UbFileOutput* out)
-      {
-         out->writeDouble( begin );
-         out->writeDouble( end );
-         out->writeDouble( step );
-      }
-      virtual void read(UbFileInput* in)
-      {
-         begin = in->readDouble();
-         end   = in->readDouble();
-         step  = in->readDouble();
-      }
-      //------------- implements boost serialization ----- end
-
-   private:
-      friend class boost::serialization::access;
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         ar & begin; 
-         ar & end; 
-         ar & step;
-      }
-   
-
-   private:
-      double step, begin, end;
-   };
-
-public:
-   UbScheduler() 
-   {
-      this->initVals();
-   }
-   /*==========================================================*/                         
-   UbScheduler(const double& step,const double& begin=0, const double& end=Ub::inf ) 
-   {
-      this->initVals();
-      this->addSchedule(step,begin,end);
-   }
-   /*==========================================================*/
-   UbScheduler(const UbSchedule& schedule) 
-   {
-      this->initVals();
-      this->addSchedule(schedule);
-   }
-   /*==========================================================*/
-   virtual ~UbScheduler() {}
-   /*==========================================================*/
-   inline void addSchedule(const UbSchedule& schedule)
-   {
-      this->addSchedule(schedule.step, schedule.begin, schedule.end);
-   }
-   /*==========================================================*/
-   bool addSchedule(const double& step, const double& begin, double end)
-   {
-      if( UbMath::zero(step) || begin>end )
-      { 
-         std::cerr<<"UbScheduler::addSchedule - invalid Schedule:\n\t"<<UbSchedule(step, begin, end)<<std::endl;
-         return false; 
-      }
-      
-      if( UbMath::less( end, (double)Ub::inf )  )
-      {
-         //es kann vorkommen, dass man mit dem intervall nicht genau auf den letzten wert kommt
-         //(z.B. step=2; start=0; end=9; -> ende wird angepasst)
-         //also wenn end-begin>Ub::inf ist, dann geht es halt nicht.. ein cast in long double half hier nichts
-         double multiplier=0.0;
-         double fractpart =  modf( (end-begin)/step, &multiplier);
-         if( !UbMath::zero(fractpart) )
-         {
-            //tmp-speicherung (fuer cerr)
-            fractpart = end;
-            //neues ende
-            end = begin+multiplier*step;
-            
-            std::cerr<<"Warning: UbScheduler::addSchedule - "
-                      <<"end of schedule was adapted to intervall \n\t"
-                      <<"from "<< UbSchedule(step, begin, fractpart) <<" to "<< UbSchedule(step, begin, end) <<std::endl;
-         }
-      }
-
-      //nu aber:
-      schedules.push_back(UbSchedule(step, begin, end));
-
-      if( end>maxT ) maxT = end;
-
-      double potentialDueTime;
-      if(   calcNextDueTimeForSchedule(schedules.back(), lastUsedT, potentialDueTime)
-         && potentialDueTime < nextDueTime   )
-      {
-         nextDueTime = potentialDueTime;
-      }
-
-      return true;
-   }
-   /*==========================================================*/
-   //returns true if scheduler contains schedules
-   bool   hasSchedules() const { return !schedules.empty(); }
-   /*==========================================================*/
-   //time bei dem das letzte mal isDue(time) true war
-   double getLastDueTime() const { return lastDueTime; }
-   /*==========================================================*/
-   //time bei dem das naechste mal isDue(time) true ergibt
-   double getNextDueTime() const { return nextDueTime; }
-   /*==========================================================*/
-   //maxDueTime (maxTime der Schedules!
-   double getMaxDueTime()  const { return this->maxT; }
-   /*==========================================================*/
-   bool isDue(const double& t)
-   {
-      lastUsedT = t;
-      if( UbMath::greaterEqual(t,nextDueTime) ) 
-      {
-         //groesser maxT is nicht
-         if( UbMath::greater(t,maxT) )  return false;
-         
-         //temp var
-         double actDueTime = nextDueTime;
-
-         //um Suche nach nextDueTime bei "Zukunfts-t" zu optimieren, setzt man die "start"-suchzeit auf "t-1":
-         nextDueTime = t-1; //t-1 deshlab, damit falls z.B. while Schleife nicht durchlaufen wird
-                            //die folgende if Abfrage nicht faelschlicher Weise true ist!
-         while( UbMath::greaterEqual(t,nextDueTime) && !UbMath::equal(nextDueTime, maxT) )
-         {
-            double tmpNextDueTime = maxT, potentialDueTime=-1.0;
-            for(std::size_t i=0; i<schedules.size(); i++)
-            {
-               if(   calcNextDueTimeForSchedule(schedules[i], nextDueTime, potentialDueTime)
-                  && potentialDueTime < tmpNextDueTime                 )
-               {
-                  assert( nextDueTime < potentialDueTime );
-                  tmpNextDueTime = potentialDueTime;
-               }
-            }
-            actDueTime  = nextDueTime;
-            nextDueTime = tmpNextDueTime;
-         } 
-
-         //wenn t = der aktuuellen oder gar schon der nächstmöglichen ist (hierbei wurde
-         //zuvor actDueTime und nextDueTime ggf. angepasst)
-         //Bsp.: nextDuTime war 5, aber für t=400 gilt andere schedule -> Bsp actDue=350 und nextDue 405
-         if(    UbMath::equal(t,actDueTime)    
-             || UbMath::equal(t,nextDueTime) ) 
-         {
-            lastDueTime = t;
-            return true;
-         }
-      }
-      else if( UbMath::lessEqual(t, lastDueTime) ) 
-      {
-         if(UbMath::equal(t, lastDueTime) ) return true; //braucht man, wenn man für dasselbe t isDue(t) aufruft
-         else  
-         {
-            //Fall: Zeit liegt faktisch in der Vergangenheit -> neu initialsisieren
-            double tmpNextDueTime = maxT, potentialDueTime=-1.0;
-            for(size_t i=0; i<schedules.size(); i++)
-            {
-               if(   calcNextDueTimeForSchedule(schedules[i], t-1, potentialDueTime)
-                  && potentialDueTime < tmpNextDueTime                 )
-               {
-                  tmpNextDueTime = potentialDueTime;
-               }
-            }
-            nextDueTime = tmpNextDueTime;
-
-            return UbMath::equal(t, nextDueTime);
-         }
-      }
-
-      return false;
-   }
-   /*==========================================================*/
-   inline double getMinBegin( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::min_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getBegin) )->getBegin();
-   }
-   /*==========================================================*/
-   inline double getMaxBegin( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::max_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getBegin) )->getBegin();
-   }
-   /*==========================================================*/
-   inline double getMinEnd( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::min_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getEnd) )->getEnd();
-   }
-   /*==========================================================*/
-   inline double getMaxEnd( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::max_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getEnd) )->getEnd();
-   }
-   /*==========================================================*/
-   inline double getMinStep( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::min_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getStep) )->getStep();
-   }
-   /*==========================================================*/
-   inline double getMaxStep( ) const
-   {
-      if( schedules.empty() ) return Ub::inf;
-      return std::max_element(schedules.begin(), schedules.end(),UbComparators::membercomp(&UbSchedule::getStep) )->getStep();
-   }
-   /*==========================================================*/
-   inline std::string toString() const
-   {
-      std::stringstream text;
-      text<<*this;
-      return text.str();
-   }
-   /*==========================================================*/
-   friend inline std::ostream& operator << (std::ostream& os, const UbScheduler& scheduler) 
-   {
-      os<<"UbScheduler\n";
-      os<<"Schedule |       start       |        end        |     intervall     "<<std::endl;
-      for(std::size_t i=0; i<scheduler.schedules.size(); i++)
-         os<<std::setw(9)<<i<<"|"
-           <<std::setw(19)<<scheduler.schedules[i].getBegin()<<"|"
-           <<std::setw(19)<<scheduler.schedules[i].getEnd()  <<"|"
-           <<std::setw(19)<<scheduler.schedules[i].getStep() <<std::endl;
-      return os;
-   }
-
-   //------------- implements CAB serialization ----- start
-   virtual void write(UbFileOutput* out)
-   {
-      out->writeSize_t( schedules.size() );
-      
-      for(std::size_t i=0; i<schedules.size(); i++)
-         schedules[i].write(out);
-   }
-   virtual void read(UbFileInput* in)
-   {
-      this->initVals();
-
-      std::size_t nofSchedules = in->readSize_t();
-      for(std::size_t i=0; i<nofSchedules; i++)
-      {
-         UbSchedule schedule;
-         schedule.read(in);
-         this->addSchedule(schedule);
-      }
-   }
-   //------------- implements boost serialization ----- end
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & lastUsedT;
-      ar & lastDueTime; 
-      ar & nextDueTime; 
-      ar & maxT; 
-      ar & schedules;
-   }
-
-protected:
-   /*==========================================================*/
-   void initVals()
-   {
-      lastUsedT   = -Ub::inf; 
-      lastDueTime = -Ub::inf;
-      nextDueTime =  Ub::inf;
-      maxT        = -Ub::inf;
-   }
-   /*==========================================================*/
-   // calculates next due time for a schedule 
-   // with  nextDueTime > searchStart
-   bool calcNextDueTimeForSchedule(const UbSchedule& schedule, const double& searchStart, double& nextDueTime )
-   {
-      if     ( UbMath::greater(searchStart, schedule.end  ) ) return false;
-      else if( UbMath::less(   searchStart, schedule.begin) ) nextDueTime = schedule.begin;
-      else                            
-      {
-         nextDueTime = schedule.begin + ((int)((searchStart-schedule.begin)/schedule.step)+1)*schedule.step;
-         if(   UbMath::less(   nextDueTime, searchStart )
-            || UbMath::greater(nextDueTime, schedule.end) ) 
-         {
-            return false;
-         }
-      }
-      return true;
-   }
-
-protected:
-   double lastUsedT;
-   double lastDueTime;
-   double nextDueTime;
-   double maxT;
-   
-   std::vector<UbSchedule> schedules;
-};
-
-typedef UbScheduler::UbSchedule UbSchedule;
-// inline std::ostream& operator<<( std::ostream& os, const UbScheduler& scheduler )
-// {
-//    os<<"UbScheduler\n";
-//    os<<"Schedule |       start       |        end        |     intervall     "<<std::endl;
-//    for(std::size_t i=0; i<scheduler.schedules.size(); i++)
-//       os<<std::setw(9)<<i<<"|"
-//         <<std::setw(19)<<scheduler.schedules[i].getBegin()<<"|"
-//         <<std::setw(19)<<scheduler.schedules[i].getEnd()  <<"|"
-//         <<std::setw(19)<<scheduler.schedules[i].getStep() <<std::endl;
-//    return os;
-// }
-
-#endif //UBSCHEDULER_H
-
-
-
-//int main(int argc, char** argv)            
-//{   
-//	UbScheduler writeSchedule;
-////	writeSchedule.addSchedule(0,2000,100);
-////	writeSchedule.addSchedule(3005,4500,300);
-////	writeSchedule.addSchedule(0,10,1);
-////	writeSchedule.addSchedule(0,100001,100);
-//	writeSchedule.addSchedule(0,2,1);
-//	writeSchedule.addSchedule(0,100001,200);
-//
-//	for(int t = 0; t < 1001; t++)
-//	{
-//		if(writeSchedule.isDue(t))
-//		{
-//			cout<<"due@ "<<t<<endl;
-//		}
-//	}
-//	return 0;
-//}
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.cpp b/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.cpp
deleted file mode 100644
index 7772fc5d822487033d53af7caeb49b956ba7a201..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.cpp
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <basics/utilities/UbStaticPathMap.h>
-
-UbStaticPathMap::PathMap UbStaticPathMap::pathMap;
-const std::string UbStaticPathMap::GLOBAL = "UbStaticPathMap::GLOBAL";
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.h b/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.h
deleted file mode 100644
index 20e5b7e8fb294ba8da532aac010d8f85a878fd1c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbStaticPathMap.h
+++ /dev/null
@@ -1,71 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBSTATICPATHMAP_H
-#define UBSTATICPATHMAP_H
-
-#include <iostream>
-#include <string>
-#include <map>
-
-#include <basics/utilities/UbSystem.h>
-
-/*=========================================================================*/
-/*  UbStaticPathMap                                                             */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 12.10.2007
-*/ 
-
-/*
-stores pathnames for pathIDs (e.g. on different processes different paths with same pathID)
-adding an path autom. changes "\" to "/" and removed last "/" if exists
-
-*/
-
-class UbStaticPathMap
-{
-   typedef std::map< std::string, std::string > PathMap;
-public:
-   static const std::string GLOBAL;
-public:
-
-   static std::string addAndMakePath(const std::string& id, const std::string& path)
-   {
-      std::string tmpPath = UbStaticPathMap::addPath(id,path);
-      if( !tmpPath.empty() ) UbSystem::makeDirectory(tmpPath,20);
-      return tmpPath;
-   }
-   static std::string addPath(const std::string& id, const std::string& path)
-   {
-      std::string tmpPath = UbSystem::replaceInString(path,"\\","/");
-      if(tmpPath.rfind("/") == tmpPath.size()-1) tmpPath.resize(tmpPath.size()-1);
-      pathMap[id] = tmpPath;   
-      return tmpPath;
-   }
-   static std::string getPath(const std::string& id)
-   {
-      PathMap::iterator it = pathMap.find(id);
-      if(it == pathMap.end()) return "";
-      return it->second;
-   }
-   static void removePath(const std::string& id)
-   {
-      pathMap.erase(id);
-   }
-
-protected:
-   static PathMap pathMap;
-
-private:
-   UbStaticPathMap() {}
-   UbStaticPathMap(const UbStaticPathMap&) {}
-};
-
-#endif //UBSTATICPATHMAP_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbString.h b/source/VirtualFluidsCore/Basics/utilities/UbString.h
deleted file mode 100644
index 516ee76ea90d44d33983fa3a1a531f98211e3dd1..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbString.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//unnoetig: UbSystem::toString() verwenden,... andere Richtung: stringTo... oder am besten boost::lexical_cast
-
-
-//#ifndef UBSTRING_H
-//#define UBSTRING_H
-//#include <string>
-//#include <sstream>
-//
-//using namespace std;
-//
-//class UbString
-//{
-//public:
-//   static void IntToString(int i, string& res)
-//   {
-//      ostringstream temp;
-//      temp << i;
-//      res = temp.str();
-//   }
-//protected:
-//private:
-//};
-//
-//#endif //end UBSTRING_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.cpp b/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.cpp
deleted file mode 100644
index cf104b9fd8c182621b67975e9693f8cd78d91b84..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-#include <basics/utilities/UbStringInputASCII.h>
-#include <cstring>
-
-using namespace std;
-
-
-UbStringInputASCII::UbStringInputASCII(string inputString) : UbFileInputASCII("")
-{
-	instream.str(inputString);
-	
-	
-//	this->filename         = filename;
-//   this->commentindicator = 'C'; 
-//   
-//   infile.open(filename.c_str());
-
-}
-/*==========================================================*/
-int UbStringInputASCII::readInteger()				
-{
-	int dummy;
-	instream>>dummy;
-	return dummy;
-}
-/*==========================================================*/
-std::size_t UbStringInputASCII::readSize_t()				
-{
-   std::size_t dummy;
-   instream>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-string UbStringInputASCII::getFileName()				
-{
-	return this->filename;
-}
-
-/*==========================================================*/
-void UbStringInputASCII::skipLine()				
-{
-	string dummy;
-	getline(instream, dummy);
-}
-/*==========================================================*/
-void UbStringInputASCII::readLine()				
-{
-	string dummy;
-	getline(instream, dummy);
-}
-/*==========================================================*/
-string UbStringInputASCII::readStringLine()				
-{
-   string dummy;
-   getline(instream, dummy);
-   return dummy;
-}
-/*==========================================================*/
-string UbStringInputASCII::readLineTill(char stop)				
-{
-	string dummy;
-	getline(instream, dummy, stop);
-	return dummy;
-}
-/*==========================================================*/
-string UbStringInputASCII::parseString()				
-{
-	string dummy;
-	getline(instream, dummy, ' ');
-	return dummy;
-}
-/*==========================================================*/
-double UbStringInputASCII::readDouble()	
-{
-   double dummy;
-   instream>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-float UbStringInputASCII::readFloat()	
-{
-   float dummy;
-   instream>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-char UbStringInputASCII::readChar()	
-{
-   char dummy;
-   instream>>dummy;
-   return dummy;
-}
-/*==========================================================*/
-string UbStringInputASCII::readString()	
-{
-	string dummy;
-	instream>>dummy;
-	return dummy;
-}
-/*==========================================================*/
-bool UbStringInputASCII::containsString(string var)
-{
-   instream.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-   char line[512];								
-   do
-   { 
-      instream.getline(line,512);
-      if(instream.eof()) return false;
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt	
-   
-   return true;
-}
-/*==========================================================*/
-void UbStringInputASCII::setPosAfterLineWithString(string var)
-{
-   instream.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-   char line[512];								
-   do
-   { 
-      instream.getline(line,512);
-      if(instream.eof()) UB_THROW( UbException(UB_EXARGS,var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt	
-}
-/*==========================================================*/
-int UbStringInputASCII::readIntegerAfterString(string var)
-// last change [10.3.2004] at [9:46] 
-//suchts in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. timesteps 9
-{
-   instream.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];								
-
-   do
-   { 
-      instream.getline(line,512);
-      if(instream.eof()) UB_THROW( UbException(UB_EXARGS,var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt	
-
-   strcpy (line, (line+strlen(var.c_str())));	    // zeile um "varname" kuerzen 
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   return(atoi(line));						// Umwandlung in int 					
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46] 
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-double UbStringInputASCII::readDoubleAfterString(string var)	
-{
-   instream.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];								
-
-   do
-   { 
-      instream.getline(line,512);
-      if(instream.eof()) UB_THROW( UbException(UB_EXARGS,var+" wasn't found in "+this->filename) );
-   }while (/*!strncmp(varname,line,sizeof(varname))==0*/strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt	
-
-
-   strcpy (line, (line+strlen(var.c_str())));	    // zeile um "varname" kuerzen 
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   return (atof(line));			// Umwandlung in double 					
-}
-/*==========================================================*/
-//  [9.9.2002]
-// liefert sring-Wert der hinter dem uebergebenen char feld in der datei instream steht
-// zudem wird der wert in die uebergebene variable value uebertragen (falls man das ergebniss als char benoetig)
-string UbStringInputASCII::readStringAfterString(string var)	
-{
-   instream.seekg(0L, ios::beg); //Positionszeiger der Datei auf den Anfang setzen
-
-   char line[512];								
-   //string line_copy[512];
-
-   do{ 
-      instream.getline(line,512);
-      if(instream.eof()) UB_THROW( UbException(UB_EXARGS,var+" wasn't found in "+this->filename) );
-   }while (strstr(line,var.c_str()) != line);		// Ende Schleife, wenn varname ganz in zeile vorkommt	
-
-   strcpy (line, (line+strlen(var.c_str())));										// zeile um "varname" kuerzen 
-   while ((line[0] == ' ') || (line[0] == '\t')) strcpy (line, (line+1));	// Whitespaces entfernen
-
-   char *p;
-   p=strtok(line," "); //schneidet alles "ab und inklusive space " nach namen ab
-   p=strtok(line,"\t");//schneidet alles "ab und inklusive tab   " nach namen ab
-
-   return (string)p;			// Umwandlung in string					
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46] 
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-bool UbStringInputASCII::readBoolAfterString(string var)	
-{
-   if(this->readStringAfterString(var.c_str())      == "true" ) return true;
-   else if(this->readStringAfterString(var.c_str()) == "false") return false;
-   else UB_THROW( UbException(UB_EXARGS,var+" is not equal to 'true' or 'false' in "+this->filename) );
-}
-/*==========================================================*/
-// last change [10.3.2004] at [9:46] 
-//sucht in einer Datei nach varname und gibt den dahinter stehenden int-Wert zurueck
-//z.B. nue 9.5
-bool UbStringInputASCII::readBool()	
-{
-   string tmp = this->readString();
-   if(     tmp == "true" ) return true;
-   else if(tmp == "false") return false;
-   else UB_THROW( UbException(UB_EXARGS,"expression is not equal to 'true' or 'false' in "+this->filename) );
-}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.h b/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.h
deleted file mode 100644
index 787048e071daf501e988d2baf9ebd861f04bf6cf..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbStringInputASCII.h
+++ /dev/null
@@ -1,55 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBSTRINGINPUTASCII_H
-#define UBSTRINGINPUTASCII_H
-
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileInput.h>
-
-#include <basics/utilities/UbFileInputASCII.h>
-
-class UbStringInputASCII : public UbFileInputASCII
-{                               
-public:
-	UbStringInputASCII(std::string inputString);
-	
-	std::string getFileName();				
-	void	      skipLine();					   // Springt zur naechsten Zeile
-
-   void        readLine();		 
-   std::string readStringLine();				
-   std::size_t readSize_t();				
-   int		   readInteger();				   // Liest einen Int-Wert ein
-   double	   readDouble();				   // Liest einen double-Wert ein
-	float 	   readFloat();				   // Liest einen float-Wert ein
-	bool  	   readBool();				      // Liest einen bool-Wert ein
-   char        readChar();                // Liest einen char-Wert ein
-   std::string	readString();				   // Liest ein Wort ein
-	std::string	readLineTill(char stop);	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
-	std::string	parseString();	
-
-   bool        containsString(std::string var);
-   void        setPosAfterLineWithString(std::string var);
-   int		   readIntegerAfterString(std::string var);
-   double	   readDoubleAfterString(std::string var);
-   bool        readBoolAfterString(std::string var);
-   std::string readStringAfterString(std::string var);
-
-   FILETYPE getFileType() { return ASCII; }
-
-private:
-	std::istringstream instream;
-};
-
-
-#endif
-
-
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbSystem.h b/source/VirtualFluidsCore/Basics/utilities/UbSystem.h
deleted file mode 100644
index 4178ff2c02342837c0638c8fdac4406caab30d7e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbSystem.h
+++ /dev/null
@@ -1,534 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBSYSTEM_H
-#define UBSYSTEM_H
-
-#if defined(_WIN32) || defined(_WIN64)
-   #define UBSYSTEM_WINDOWS
-   #include <process.h>
-   #include <io.h>
-   #include <direct.h>
-   //#ifndef _WINSOCK2API_  //ansonsten gibt es mecker bei #include "Windows.h" und ::Sleep()
-   //   #define _WINSOCK2API_
-   //   #include<WinSock2.h> 
-   //#endif
-  #include <windows.h>
-  //#include <Windows.h>
-  //#include <tchar.h>
-#elif defined(__APPLE__)
-   #define UBSYSTEM_APPLE
-   #include "dirent.h"
-   #include "sys/stat.h"
-   #include <sys/syscall.h>
-   #include <sys/stat.h>
-#elif (defined(__amd64) || defined(__amd64__) || defined(__unix__) || defined(__CYGWIN__)) && !defined(__AIX__) 
-   #define UBSYSTEM_LINUX
-   #include "dirent.h"
-   #include "sys/stat.h"
-   #include <sys/syscall.h>
-   #include <sys/stat.h>
-   #include <unistd.h>
-#elif defined(__AIX__)
-   #define UBSYSTEM_AIX
-   #include "dirent.h"
-   #include <unistd.h>
-   #include <sys/stat.h>
-   #include <sys/types.h>
-#else
-   #error "UbSystem::UnknownMachine"
-#endif
-
-
-
-#if defined(min) || defined(max) //daruch kann man sich spaeter #undef min; #undef max erparen
-#   error add NOMINMAX to preprocessor defines
-#endif
-
-
-#include <iostream>
-#include <iomanip>
-#include <string>
-#include <sstream>
-#include <algorithm>
-#include <typeinfo>
-#include <cctype> //for toupper
-#include <ctime>
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbLogger.h>
-
-#if defined(CAB_BOOST)
-#include <boost/thread.hpp>
-#endif // CAB_BOOST
-
-//DEFINE TO STRING
-//e.g. #define FOO hallo
-//     -> QUOTEME(FOO) == "hallo"
-#define _QUOTEME(x) #x
-#define QUOTEME(x) _QUOTEME(x)
-
-//allg.:
-//const int * C1        -> C1 is variable pointer to a constant integer
-//int const * C2        -> C2 is variable pointer to a constant integer (same as above)
-//int * const C3        -> C3 is constant pointer to a variable integer
-//int const * const C4  -> C4 is constant pointer to a constant integer
-
-//////////////////////////////////////////////////////////////////////////
-//UbSystem
-//////////////////////////////////////////////////////////////////////////
-namespace UbSystem
-{
-   template<bool> struct ub_static_assert;     //deklaration (ub_xxx da static_assert in C++0x ein keyword werden wird)
-   template<> struct ub_static_assert<true>{}; //deklaration + definition der spezialisierung fuer "true"
-                                               //ub_static_assert<false> fuehrt zu compiler fehler, da dafuer
-                                               //keine implementierung vorhanden!  //UB_STATIC_ASSERT(false)
-
-   /*==========================================================*/
-   inline void sleepMs(const unsigned int& msec)
-   {
-      #if defined UBSYSTEM_WINDOWS
-         ::Sleep(  (msec==0) ? 1 : msec );  // +1 here causes a context switch if SleepMSec(0) is called
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE) || defined(UBSYSTEM_AIX)
-         ::usleep(1000*msec);
-      #else
-         #error "UbSystem::sleepMSec - UnknownMachine"
-      #endif
-   }
-   /*==========================================================*/
-   inline void sleepS(const unsigned int& sec)
-   {
-      #if defined UBSYSTEM_WINDOWS
-         ::Sleep( (sec==0) ? 1 : sec*1000 );  // +1 here causes a context switch if sleepS(0) is called
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE) || defined(UBSYSTEM_AIX)
-         ::sleep(sec);
-      #else
-         #error "UbSystem::sleepS - UnknownMachine"
-      #endif
-   }
-   /*==========================================================*/
-   //checks if the bits of bitmask are set in value
-   template<typename T>
-   inline bool bitCheck(const T& value, const T& bitmask)
-   {
-      return  ( (value & bitmask) == bitmask);
-   }
-   /*==========================================================*/
-   //checks if the bits of bitmask are set in value
-   template<typename T>
-   inline void setBit(T& value, const T& bitmask)
-   {
-      value |= bitmask;
-   }
-   /*==========================================================*/
-   template<typename T>
-   inline void unsetBit(T& value, const T& bitmask)
-   {
-      value &= ~bitmask;
-   }
-   /*==========================================================*/
-   //returns bitmask as string e.g. 0001 0100 1101
-   template<typename T>
-   inline std::string getBitString(const T& value)
-   {
-      std::stringstream text;
-      for(int i=sizeof(value)*8-1/*8 bits per byte*/; i>=0; i--)
-      {
-         text<<(char) ( ((value>>i) & 1) + '0');
-         if(i%4 == 0 && i>0) text<<' ';
-      }
-      return text.str();
-   }
-   /*==========================================================*/
-   //converts string to type T
-   // usage: int x = stringTo<int>("123");
-   template<typename T>
-   inline T stringTo(const std::string& s)
-   {
-     std::istringstream iss(s);
-     T x;
-     iss >> x;
-     if(!iss)
-        UB_THROW( UbException(UB_EXARGS," cannot convert \""+s+"\" to type <"+static_cast<std::string>(typeid(x).name())+">") );
-
-     return x;
-   }
-   /*==========================================================*/
-   // usage: string s = toString(x);
-   template<typename T>
-   inline std::string toString(const T& x, int precision=15)
-   {
-     std::ostringstream oss;
-     oss<<std::setprecision(precision);
-     oss<<x;
-     return oss.str();
-   }
-   /*==========================================================*/
-   //e.g. str="iHcsnW" -> "IHCSNW"
-   inline std::string toUpperString(const std::string& str)
-   {
-      std::string tmp(str);
-      std::transform(tmp.begin(),tmp.end(),tmp.begin(), static_cast<int (*)(int)>(std::toupper));
-
-      return tmp;
-   }
-   /*==========================================================*/
-   //e.g. str="iHcsnW" -> "ihcsnw"
-   inline std::string toLowerString(const std::string& str)
-   {
-      std::string tmp(str);
-      std::transform(tmp.begin(),tmp.end(),tmp.begin(), static_cast<int (*)(int)>(std::tolower));
-
-      return tmp;
-   }
-   /*==========================================================*/
-   // usage: std::string s = replaceInString(str,"\\","/");
-   //        std::string s = replaceInString(str,"ich","du");
-   static std::string replaceInString(std::string original, const std::string& replace, const std::string& replaceWith )
-   {
-      size_t pos=0;
-      while( (pos=original.find(replace,pos))!=std::string::npos )
-      {
-         original.replace(pos,replace.size(),replaceWith);
-         pos+=replaceWith.size();
-      }
-      return original;
-   }
-   /*==========================================================*/
-   //returns content of an enviroment variable
-   inline std::string getEnv(const std::string& var)
-   {
-      char* str = getenv( var.c_str());
-      if(  str == NULL  ) 
-      {
-         return std::string("");
-      }
-      
-      return static_cast<std::string>( str );
-   }
-   /*==========================================================*/
-   inline bool isDirectory(const std::string& dir, const unsigned& attemptions = 3)
-   {
-      if( dir.empty() ) 
-         UB_THROW( UbException(UB_EXARGS,"dir is empty") );
-      
-      std::string path = UbSystem::replaceInString(dir,"\\","/");
-
-      #if defined UBSYSTEM_WINDOWS
-         #ifndef _UNICODE 
-            if( _access(path.c_str(), 0  ) == -1 ) return false;
-         #else
-            if( _waccess(path.c_str(), 0 ) == -1 ) return false;
-         #endif
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE) || defined(UBSYSTEM_AIX)
-         struct stat stFileInfo;
-         if( stat(path.c_str(),&stFileInfo) != 0) 
-         {
-            return false;
-         } 
-      #endif
-      
-      return true;
-   }
-   /*==========================================================*/
-   // usage:  makeDirectory("c:/temp");
-   //         makeDirectory("c:/temp/");
-   // return: true  -> successful
-   //         false -> failed
-   #if defined(CAB_BOOST) 
-      static boost::mutex mtx_makeDirectory;
-   #endif
-   inline bool makeDirectory(const std::string& dir, const unsigned& attemptions = 3)
-   {
-      UBLOG(logDEBUG5,"UbSystem::makeDirectory - start, dir="<<dir<<" #attemptions="<<attemptions);
-
-      if( dir.empty() ) UB_THROW( UbException(UB_EXARGS,"dir is empty") );
-      std::string path = UbSystem::replaceInString(dir,"\\","/");
-
-      bool dirCreated = true;
-      #if defined UBSYSTEM_WINDOWS
-         if(path[path.size()-1] != '/') path+="/";
-         size_t  pos = 0;
-         while( ( pos=path.find("/",pos+1) ) != std::string::npos )
-         {
-            std::string tmpdir = path.substr(0,pos);
-            #if defined(CAB_BOOST) 
-            boost::mutex::scoped_lock lock(mtx_makeDirectory);
-            #endif
-            if( 
-                #ifndef _UNICODE 
-                 _access(tmpdir.c_str(), 0 ) == -1 && _mkdir(tmpdir.c_str() ) == -1
-                #else
-                 _waccess(tmpdir.c_str(), 0) == -1 && _wmkdir(tmpdir.c_str()) == -1
-                #endif
-               )
-               {
-                  UBLOG(logDEBUG5,"UbSystem::makeDirectory-  dir=\""<<tmpdir<<"\" doesn't exit or makedir failed");
-                  dirCreated = false;
-                  break;
-               }
-         }
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE) || defined(UBSYSTEM_AIX)
-         std::string command = "mkdir -p \""+path+"\"";
-         {
-            #if defined(CAB_BOOST) 
-               boost::mutex::scoped_lock lock(mtx_makeDirectory);
-            #endif
-            if(system(command.c_str())!=0)
-            {
-               UBLOG(logDEBUG5,"UbSystem::makeDirectory-  dir=\""<<path<<"\" doesn't exit or makedir failed");
-               dirCreated = false;
-            }
-         }
-      #else
-         #error "UbSystem::makeDirectory - UnknownMachine"
-      #endif
-
-      if(!dirCreated && attemptions > 1)
-      {
-         UBLOG(logDEBUG5,"UbSystem::makeDirectory - internal call of UbSystem::makeDirectory");
-         UbSystem::sleepMs(500);
-         dirCreated = UbSystem::makeDirectory(path, attemptions-1);
-      }
-      
-      UBLOG(logDEBUG5,"UbSystem::makeDirectory - end (success="<<dirCreated<<", attemptions = "<<attemptions<<")");
-      return dirCreated;
-   }
-   /*==========================================================*/
-#if defined(CAB_BOOST) 
-   static boost::mutex mtx_removeDirectory;
-#endif
-   inline int removeDirectory(const std::string& dir)
-   {
-      #if defined(CAB_BOOST) 
-         boost::mutex::scoped_lock lock(mtx_removeDirectory);
-      #endif
-      std::string command = "rmdir \""+dir+"\"";
-      return std::system(command.c_str());
-   }
-   /*==========================================================*/
-   // usage  : getPathFromString("c:/temp/foo.txt");
-   //returns: "c:/temp"
-   // usage  : getPathFromString("c:\\temp\\foo.txt");
-   //returns: "c:/temp"
-   // usage  : getPathFromString("foo.txt");
-   // returns: ""
-   inline std::string getPathFromString(const std::string& fileStringWithPath)
-   {
-      std::string tmp = UbSystem::replaceInString(fileStringWithPath,"\\","/");
-      std::size_t last = tmp.rfind("/");
-      if(last!=std::string::npos) tmp.resize(last);
-      else                        tmp = "";
-      return tmp;
-   }
-   /*==========================================================*/
-   // usage  : getFilenameFromString("c:/temp/foo.txt");
-   // returns: "foo.txt"
-   // usage  : getFilenameFromString("c:/temp/foo.txt",false);
-   // returns: "foo"
-   // usage  : getFilenameFromString("c:/temp/");
-   // returns: ""
-   inline std::string getFilenameFromString(const std::string& fileStringWithPath, bool withExtension = true)
-   {
-      std::string tmp = UbSystem::replaceInString(fileStringWithPath,"\\","/");
-      
-      //remove path
-      std::size_t last = tmp.rfind("/");
-      if(last!=std::string::npos && (last+1)<tmp.size()) tmp.erase(0,last+1);
-      
-      //remove extension
-      if(!withExtension)
-      {
-         last = tmp.rfind(".");
-         if(last!=std::string::npos) tmp.erase(last);
-      }
-
-      return tmp;
-   }
-   /*==========================================================*/
-   inline int getProcessID()
-   {
-      #if defined UBSYSTEM_WINDOWS
-         return _getpid();
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE) || defined(UBSYSTEM_AIX)
-         return getpid();
-      #else
-         #error "int UbSystem::getProcessID() - UnknownMachine"
-      #endif
-   }
-   /*==========================================================*/
-   inline unsigned long getCurrentThreadID()
-   {
-      #if defined UBSYSTEM_WINDOWS
-         return (unsigned long)GetCurrentThreadId();
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_APPLE)
-         return (unsigned long)syscall(SYS_gettid);
-      #elif defined(UBSYSTEM_AIX)
-         return (unsigned long) getpid(); //WORKAROUND for IBM (for get thread id is another function necessary) 
-      #else
-         #error "unsigned long UbSystem::getCurrentThreadID() - UnknownMachine"
-      #endif
-   }
-   /*==========================================================*/
-   inline bool isBigEndian()
-   {
-      short word = 0x4321;
-      if((*(char*)& word) != 0x21 ) return true;
-      else                           return false;
-   }
-   /*==========================================================*/
-   inline bool isLittleEndian()
-   {
-      return !isBigEndian();
-   }
-   /*==========================================================*/
-   inline std::string getTimeStamp()
-   {
-      time_t t = time(NULL);
-      tm* localTime = localtime(&t); 	
-      
-      std::stringstream tmp;
-      tmp.fill('0');
-      
-      tmp << localTime->tm_year+1900 
-          << "." << std::setw(2) <<localTime->tm_mon+1
-          << "." << std::setw(2) << localTime->tm_mday 
-          << "@" << std::setw(2) << localTime->tm_hour  
-          << "." << std::setw(2) << localTime->tm_min   
-          << "." << std::setw(2) << localTime->tm_sec  ;
-
-      return tmp.str();
-   }
-   /*==========================================================*/
-   //swap Byte Order
-   //usage: int test = 8;
-   //       swapByteOrder((unsigned char*)& test, sizeof(int))
-   //#define ByteSwap5(x) ByteSwap((unsigned char *) &x,sizeof(x))
-   inline void swapByteOrder(unsigned char* toSwap, int length)
-   {
-      register int i = 0;
-      register int j = length-1;
-      while(i<j)
-      {
-         std::swap(toSwap[i], toSwap[j]);
-         i++, j--;
-      }
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //get host name
-   inline std::string getMachineName()
-   {
-      char Name[150];
-      int i = 0;
-
-#ifdef UBSYSTEM_WINDOWS
-      TCHAR infoBuf[150];
-      DWORD bufCharCount = 150;
-      memset(Name, 0, 150);
-      if (GetComputerName(infoBuf, &bufCharCount))
-      {
-         for (i = 0; i<150; i++)
-         {
-            Name[i] = infoBuf[i];
-         }
-      }
-      else
-      {
-         strcpy(Name, "Unknown_Host_Name");
-      }
-#else
-      memset(Name, 0, 150);
-      gethostname(Name, 150);
-#endif
-      return std::string(Name);
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   // generic IfThenElse - start
-   //////////////////////////////////////////////////////////////////////////
-   // primary template: yield second or third argument depending on first argument
-   template<bool C, typename Ta, typename Tb>
-   class IfThenElse;
-
-   // partial specialization: true yields second argument
-   template<typename Ta, typename Tb>
-   class IfThenElse<true, Ta, Tb> {
-   public:
-      typedef Ta ResultT;
-   };
-
-   // partial specialization: false yields third argument
-   template<typename Ta, typename Tb>
-   class IfThenElse<false, Ta, Tb> {
-   public:
-      typedef Tb ResultT;
-   };
-   //////////////////////////////////////////////////////////////////////////
-   // generic IfThenElse - end
-   //////////////////////////////////////////////////////////////////////////
-
-   //////////////////////////////////////////////////////////////////////////
-   //help struct for overloading methods in template classes for specific types
-   //////////////////////////////////////////////////////////////////////////
-   template< typename T>
-   struct type2type
-   {
-      typedef T type;
-   };
-
-
-   //////////////////////////////////////////////////////////////////////////
-   // pair selector
-   //////////////////////////////////////////////////////////////////////////
-   template <typename Pair>
-   struct select1st
-   {
-      typedef Pair argument_type ;
-      typedef typename Pair::first_type result_type ;
-
-      const result_type&  operator()(const argument_type &p) const
-      {
-         return p.first ;
-      }
-   };
-
-   template <typename Pair>
-   struct select2nd
-   {
-      typedef Pair argument_type ;
-      typedef typename Pair::second_type result_type ;
-
-      const result_type& operator()(const argument_type &p) const
-      {
-         return p.second ;
-      }
-   };
-
-};
-
-#define UB_STATIC_ASSERT(expr) static_cast<void>(sizeof( UbSystem::ub_static_assert<expr> ));
-//zum ueberpruefen von STATISCHEN ausdruecken waehrend der compile-zeit
-//--> Ausdruecke muessen schon ZUR compilerzeit auswertbar sein !!!
-//Anwendung z.B. zur Ueberpruefung von Funktionalitaeten, wie z.B. bei UbMath::getNegativeInfinity<double>();
-//
-//Grund fuer macro ist einfach, dass es besser anzuwenden ist in der praxis!
-//ansonsten würde es so aussehen:
-//     UbSystem::ub_static_assert< aaa == 1 > test();
-//    da ist  UB_STATIC_ASSERT(aaa == 1); schoener
-//
-//um das zu vermeiden machtman hier diesen static_cast<void>(sizeof(...) )
-//Code-Snippet:
-// struct Test { const static bool m_const_bool = true; bool m_bool; };
-// int main() {
-//  UB_STATIC_ASSERT( Test::m_const_bool == true );
-//  --> okay, assert bestanden
-//  UB_STATIC_ASSERT( Test::m_const_bool == false); //:
-//  --> assert nicht bestanden z.B. error C2027: use of undefined type 'UbSystem::ub_static_assert<__formal> with __formal = false --> funzt nicht. fehler im code
-//  UB_STATIC_ASSERT( Test::m_bool == true );
-//  --> nicht erlaubt, da m_bool nicht statisch und nicht const ist.
-//}
-
-#endif //UBSYSTEM_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbTableModel.cpp b/source/VirtualFluidsCore/Basics/utilities/UbTableModel.cpp
deleted file mode 100644
index eca533129a77a21e3515939b72f848e8f611c9d4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbTableModel.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <basics/utilities/UbTableModel.h>
-
-UbTableModel::UbTableModel()
-{
-}
-
-UbTableModel::~UbTableModel()
-{
-	//this->notifyObserversObjectWillBeDeleted();
-}
-
-//void UbTableModel::objectChanged(UbObservable* changedObject)
-//{
-//	this->notifyObserversObjectChanged();	
-//}
-//
-//void UbTableModel::objectWillBeDeleted(UbObservable* objectForDeletion)
-//{
-//	objectForDeletion->removeObserver(this);
-//}
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbTableModel.h b/source/VirtualFluidsCore/Basics/utilities/UbTableModel.h
deleted file mode 100644
index 4a12d63b3881238daeb261b35b599ccbb7b64890..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbTableModel.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBTABLEMODEL_H
-#define UBTABLEMODEL_H
-
-#include <iostream>
-
-class UbTableModel 
-{
-public:
-   const static int COL_TYPE_STRING  = 1;
-   const static int COL_TYPE_BOOL    = 2;
-   const static int COL_TYPE_INTEGER = 3;
-   const static int COL_TYPE_DOUBLE  = 4;
-
-	UbTableModel();
-	virtual ~UbTableModel();
-
-	//////////////////////////////////////////////////////////////////////////
-	//void objectChanged(UbObservable*);
-	//void objectWillBeDeleted(UbObservable*);
-
-	virtual int getColumnNumber() = 0;
-	virtual int getRowNumber()    = 0;
-   virtual std::string getColumnLabel(int column) = 0;
-	virtual int getColumnType(int column) = 0;
-	virtual std::string getStringValue(int row, int col) = 0;
-   virtual void setStringValue(int row, int col, std::string str) = 0;
-	virtual int getSelectedRowIndex() = 0;
-	//virtual bool GetBoolValue(int row, int col) = 0;
-};
-
-#endif //UBTABLEMODEL_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbTiming.h b/source/VirtualFluidsCore/Basics/utilities/UbTiming.h
deleted file mode 100644
index 5f768fea3d98129f7359f1576c46032ea42cf763..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbTiming.h
+++ /dev/null
@@ -1,429 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBTIMING_H
-#define UBTIMING_H
-
-#include <string>
-#include <limits>
-#include <iostream>
-#include <sstream>
-#include <vector>
-#include <ctime>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-#ifdef VF_MPI
-   #include <mpi.h>
-   #include <basics/parallel/PbMpi.h>
-#endif //VF_MPI
-
-/*=========================================================================*/
-//  UbTiming - Time Measuring                                              
-//                                                                         
-//
-//
-//This Class provides the base for ...
-//<BR><BR>
-//@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//@author <A HREF="mailto:geller@cab.bau.tu-bs.de">S. Geller</A>
-//@version 1.1 - 14.02.06
-// 
-
-class UbTiming
-{
-public:
-	UbTiming()
-   {
-      this->duration		= 0.0;
-      this->deltaT		= 0.0;
-      this->startTime	= 0;
-      this->name        = "noname";
-   }
-   /*==========================================================*/
-   UbTiming(const std::string& name)
-   {
-      this->duration		= 0.0;
-      this->deltaT		= 0.0;
-      this->startTime	= 0;
-      this->name        = name;
-   }
-   /*==========================================================*/
-   virtual ~UbTiming() {}  
-   /*==========================================================*/
-   virtual void initTiming()
-   {
-      this->duration = 0.0;	
-   }
-   /*==========================================================*/
-   virtual void startTiming()
-   {
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         this->startTime = PbMpi::Wtime();
-      #else
-         this->startTime = (double)clock();	
-      #endif //VF_MPI 
-   }
-   /*==========================================================*/
-   virtual void initAndStartTiming()
-   {
-      this->initTiming();
-      this->startTiming();
-   }
-   /*==========================================================*/
-   virtual void endTiming()
-   {
-      this->stopTiming();
-   }
-   /*==========================================================*/
-   virtual void stopTiming()
-   {
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-            this->deltaT   = PbMpi::Wtime()-this->startTime;
-      #else
-         this->deltaT   = ((double)clock()-this->startTime)/(double)CLOCKS_PER_SEC;
-      #endif //VF_MPI 
-
-      this->duration += this->deltaT;
-   }
-   /*==========================================================*/
-   virtual double getDuration() const
-   {
-      return this->duration;
-   }
-   /*==========================================================*/
-   virtual void setName(const std::string& name)
-   {
-      this->name = name;
-   }
-   /*==========================================================*/
-   virtual std::string getName() const
-   { 
-      return this->name; 
-   }
-   /*==========================================================*/
-   void start()
-   {
-      this->duration = 0.0;
-
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         this->startTime = PbMpi::Wtime();
-      #else
-         this->startTime = (double)clock();
-      #endif //VF_MPI 
-   }
-   /*==========================================================*/
-   void pause()
-   {
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         this->duration += PbMpi::Wtime()-this->startTime;
-      #else
-         this->duration +=((double)clock()-this->startTime)/(double)CLOCKS_PER_SEC;
-      #endif //VF_MPI 
-   }
-   /*==========================================================*/
-   void unpause()
-   {
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         this->startTime   = PbMpi::Wtime();
-      #else
-         this->startTime = (double)clock();
-      #endif //VF_MPI 
-   }
-   /*==========================================================*/
-   void stop()
-   {
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         this->duration += PbMpi::Wtime()-this->startTime;
-      #else
-         this->duration +=((double)clock()-this->startTime)/(double)CLOCKS_PER_SEC;
-      #endif //VF_MPI 
-   }
-   /*==========================================================*/
-   double getTicks() const            
-   { 
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         return PbMpi::Wtick();
-      #else
-         return double(1.0)/double(CLOCKS_PER_SEC);
-      #endif  //VF_MPI 
-   }
-
-protected:
-   std::string name;
-
-   double startTime;
-   double duration;
-	double deltaT;
-};
-
-/*=========================================================================*/
-//  UbTimer - Time Measuring                                              
-//                                                                         
-//
-//
-//This Class provides the base for ...
-//<BR><BR>
-//@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//@version 1.0 - 16.08.2007
-// 
-#include <basics/utilities/UbSystem.h> //for definitons of system/OS type
-
-#ifdef UBSYSTEM_APPLE   //Apple hack
-   #include <mach/mach_time.h>  
-   #include <time.h>  
-   #include <stdio.h> 
-   inline void mach_absolute_difference(const uint64_t& end, const uint64_t& start, struct timespec *tp) 
-   {  
-         uint64_t difference = end - start;  
-         static mach_timebase_info_data_t info = {0,0};  
-   
-         if (info.denom == 0)  
-                 mach_timebase_info(&info);  
-   
-         uint64_t elapsednano = difference * (info.numer / info.denom);  
-   
-         tp->tv_sec = elapsednano * 1e-9;  
-         tp->tv_nsec = elapsednano - (tp->tv_sec * 1e9);  
-   } 
-#elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_AIX)
-   #include <ctime>
-   #include <unistd.h> // for sysconf
-   #include <pthread.h>
-#endif
-
-//example:
-//t=0  start 
-//t=1 
-//t=2  stop  -> return 2; getLapTime=2; getTotalTime 2; getLapTimes:  2
-//t=3 
-//t=4 
-//t=5  stop  -> return 3; getLapTime=3; getTotalTime 5; getLapTimes:  2,3
-//t=6  stop  -> return 1; getLapTime=1; getTotalTime 6; getLapTimes:  2,3,1
-//t=7  
-//t=8  start ->no consideration of time 7 and 8 
-//t=9  
-//t=10 stop  -> return 2; getLapTime=2; getTotalTime 8; getLapTimes:  2,3,1,2
-//t=11 resetAndStart timer wird zurueckgestellt und neu gestaret
-//t=12
-//t=13 
-//t=14 stop  -> return 3; getLapTime=3; getTotalTime 3; getLapTimes:  3
-
-class UbTimer
-{
-public:
-   UbTimer(const bool& storeLapTimes = false) 
-      :  name("unamed"), isMeasuring(false), storeLapTimes(storeLapTimes)
-       , startTime(0.0), totalTime(0.0), lapTime(0.0)
-   {
-
-   }
-   /*==========================================================*/
-   UbTimer(const std::string& name, const bool& storeLapTimes = false) 
-      :  name(name), isMeasuring(false), storeLapTimes(storeLapTimes)
-       , startTime(0.0), totalTime(0.0), lapTime(0.0)
-   {
-
-   }
-   /*==========================================================*/
-   virtual ~UbTimer() {}  
-   /*==========================================================*/
-   double              getLapTime() const               { return this->lapTime;  }
-   std::vector<double> getLapTimes() const              { return this->lapTimes; }
-   void                setName(const std::string& name) { this->name = name;     }
-   std::string         getName() const                  { return this->name;     }
-   bool                isRunning() const                { return isMeasuring;    }
-   bool                isStoringLapTimes() const        { return storeLapTimes;  }
-   /*==========================================================*/
-   void setStoreLapTimes(const bool& storeLapTimes) { this->storeLapTimes = storeLapTimes; }
-   /*==========================================================*/
-   void start()
-   {
-      this->isMeasuring = true;
-
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-          this->startTime = PbMpi::Wtime();
-      #elif defined(UBSYSTEM_APPLE)
-    	 this->startTime = mach_absolute_time();  
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_AIX)
-         timespec tp;
-         clock_gettime(CLOCK_REALTIME,&tp);
-         this->startTime = (double)(tp.tv_sec)*1.0e9 + (double)(tp.tv_nsec);
-      #else
-         this->startTime = (double)clock();
-      #endif //VF_MPI
-   }
-   /*==========================================================*/
-   void resetAndStart() { this->reset(); this->start(); }
-   /*==========================================================*/
-   //stop: - stops the calculation and returns the time elapsed since last start/stop
-   //      - timing continues
-   double stop()
-   {
-      //if start() was never activated before:
-      if(!isMeasuring) return 0.0; 
-      
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         double actTime = PbMpi::Wtime();
-         this->lapTime  = actTime-this->startTime;
-      #elif defined(UBSYSTEM_APPLE)
-    	 double actTime = mach_absolute_time();  
-         timespec tp;  
-         mach_absolute_difference(actTime, this->startTime, &tp);
-         this->lapTime  =  tp.tv_sec + tp.tv_nsec*1e-9;
-	  #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_AIX)
-         timespec tp;
-         clock_gettime(CLOCK_REALTIME,&tp);
-         double actTime = (double)(tp.tv_sec)*1.0e9 + (double)(tp.tv_nsec);
-         this->lapTime  = (actTime-this->startTime)*1.0e-9;
-      #else
-         double actTime = (double)clock();
-         this->lapTime  = (actTime-this->startTime)/(double)CLOCKS_PER_SEC;
-      #endif //VF_MPI 
-      
-      this->startTime  = actTime;
-      this->totalTime += this->lapTime;
-      if(storeLapTimes) lapTimes.push_back(this->lapTime);
-
-      return lapTime;
-   }
-   /*==========================================================*/
-   void reset()
-   {
-      this->isMeasuring = false;
-      
-      this->startTime   = 0.0;
-      this->totalTime   = 0.0;
-      this->lapTime     = 0.0;
-
-      lapTimes.resize(0);
-   }
-   /*==========================================================*/
-   double getCurrentLapTime() const
-   {
-     //if start() was never activated before:
-      if(!isMeasuring) return 0.0; 
-      
-      #if defined(VF_MPI) && !defined(CAB_RUBY)
-         return PbMpi::Wtime() - this->startTime;
-      #elif defined(UBSYSTEM_APPLE)
-         timespec tp;  
-         mach_absolute_difference(mach_absolute_time(), this->startTime, &tp);
-         return tp.tv_sec + tp.tv_nsec*1e-9;
-      #elif defined(UBSYSTEM_LINUX) || defined(UBSYSTEM_AIX)
-         timespec tp;
-         clock_gettime(CLOCK_REALTIME,&tp);
-         return ((double)(tp.tv_sec)*1.0e9 + (double)(tp.tv_nsec) - this->startTime)*1.0e-9;
-      #else
-         return ( (double)clock() - this->startTime ) / (double)CLOCKS_PER_SEC;
-      #endif //VF_MPI 
-      
-   }
-   /*==========================================================*/
-   double getTotalTime() const
-   {
-      return this->totalTime;
-   }
-   /*==========================================================*/
-   std::string toString()
-   {
-      std::stringstream text;
-      text<<*this;
-      return text.str();
-   }
-
-   //ueberladene Operatoren
-   /*==========================================================*/
-   friend inline std::ostream& operator << (std::ostream& os, const UbTimer& timer) 
-   {
-       os<<"UbTimer[totalTime="<<timer.totalTime<<"sec, lapTimes(";
-       for(std::size_t i=0; i<timer.lapTimes.size(); i++) os<<timer.lapTimes[i]<<",";
-       os<<")]";
-       return os;
-   }
-
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void SF_SERIALIZE(Archive & ar)
-   {
-      ar & name;
-      ar & isMeasuring;
-      ar & startTime;
-      ar & totalTime;
-      ar & lapTime;
-      ar & lapTimes;
-      ar & storeLapTimes;
-   }
-#endif //CAB_RCF
-
-protected:
-   std::string name;
-   bool        isMeasuring;
-   bool        storeLapTimes;
-
-   double      startTime;
-   double      totalTime;
-   double      lapTime;
-   
-   std::vector<double> lapTimes;
-};
-
-
-/*=========================================================================*/
-//  UbProgressTimer - Time Measuring                                              
-//                                                                         
-//
-//
-//UbProressTimer misst die Zeit von seiner Instantiierung bis zur Zerstörung
-//und gib die verstrichene Zeit auf "os" in [s] aus
-//example:
-// {
-//    UbProgressTimer timer;
-//    UbSystem::sleepS(10);
-// } //--> 10s
-//<BR><BR>
-//@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-//@version 1.0 - 10.03.2008
-// 
-class UbProgressTimer : public UbTimer
-{
-private:
-	UbProgressTimer(const UbProgressTimer& rhs);
-public:
-  explicit UbProgressTimer( std::ostream & os = std::cout )
-     : UbTimer(),os(os) 
-  {
-  	  this->start();
-  }
-  /*==========================================================*/
-  ~UbProgressTimer()
-  {
-  //  A) Throwing an exception from a destructor is a Bad Thing.
-  //  B) The progress_timer destructor does output which may throw.
-  //  C) A progress_timer is usually not critical to the application.
-  //  Therefore, wrap the I/O in a try block, catch and ignore all exceptions.
-    try
-    {
-      // use istream instead of ios_base to workaround GNU problem (Greg Chicares)
-      std::istream::fmtflags old_flags = os.setf( std::istream::fixed,
-                                                  std::istream::floatfield );
-      std::streamsize old_prec = os.precision( 2 );
-      os << stop() << " s" << std::endl;
-      os.flags( old_flags );
-      os.precision( old_prec );
-    }
-    catch (...) {} // eat any exceptions
-  } 
-
-private:
-  std::ostream & os;
-};
-
-
-#endif //UBTIMING_H
diff --git a/source/VirtualFluidsCore/Basics/utilities/UbTuple.h b/source/VirtualFluidsCore/Basics/utilities/UbTuple.h
deleted file mode 100644
index bb711c9dc9c3b91922a1252f78b1f00208d5ccc7..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/utilities/UbTuple.h
+++ /dev/null
@@ -1,1138 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef UBTUPLE_H
-#define UBTUPLE_H
-
-#include <iostream>
-#include <string>
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif //CAB_RCF
-
-/*=========================================================================*/
-/*  UbTuple                                                             */
-/*                                                                         */
-/**
-...
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 23.10.06
-*/ 
-
-/*
-usage: ...
-////Advanced UbTuple
-//Bsp:
-//// create and use tuple with only one field
-//UbTuple<int,int,int,int,int> t1;
-//val<1>(t1) += 42;
-//std::cout << t1.v1() << std::endl;
-
-//// create and use duo
-//UbTuple<bool,int> t2;
-//std::cout << val<1>(t2) << ", ";
-//std::cout << t2.v1() << std::endl;
-
-//// create and use triple
-//UbTuple<bool,int,double> t3;
-//val<1>(t3) = true;  // new values via: val< pos >(triple) = ...
-//val<2>(t3) = 42;
-//val<3>(t3) = 0.2;
-//t3 = makeUbTuple(false, 23, 13.13);
-
-//std::cout << val<1>(t3) << ", ";
-//std::cout << val<2>(t3) << ", ";
-//std::cout << val<3>(t3) << std::endl;
-
-//// create and use quadruple
-//UbType<bool,int,float,double> t4(true,42,13,1.95583);
-//std::cout << val<4>(t4) << std::endl;        //<- option 2 (std)
-//std::cout << t4.v2().v2().v2() << std::endl; //<- option 2
-*/
-
-//typeop.h
-// primary template
-/**********************************
-* typeop1.hpp:
-**********************************/
-template <typename T>
-class UbTypeOp    // primary template
-{           
-public:
-   typedef T         ArgT;
-   typedef T         BareT;
-   typedef T const   ConstT;
-   typedef T &       RefT;
-   typedef T &       RefBareT;
-   typedef T const & RefConstT;
-};
-/**** end of typeop1.hpp ****/
-
-// partial specialization for const
-/**********************************
-* typeop2.hpp:
-**********************************/
-template <typename T>
-class UbTypeOp <T const>  // partial specialization for const types
-{
- public:
-   typedef T const   ArgT;
-   typedef T         BareT;
-   typedef T const   ConstT;
-   typedef T const & RefT;
-   typedef T &       RefBareT;
-   typedef T const & RefConstT;
-};
-/**** end of typeop2.hpp ****/
-
-// partial specialization for references
-/**********************************
-* typeop3.hpp:
-**********************************/
-template <typename T>
-class UbTypeOp <T&>        // partial specialization for references
-{
-public:
-   typedef T &                           ArgT;
-   typedef typename UbTypeOp<T>::BareT   BareT;
-   typedef T const                       ConstT;
-   typedef T &                           RefT;
-   typedef typename UbTypeOp<T>::BareT & RefBareT;
-   typedef T const &                     RefConstT;
-};
-/**** end of typeop3.hpp ****/
-
-// full specialization for void
-/**********************************
-* typeop4.hpp:
-**********************************/
-template<>
-class UbTypeOp <void>      // full specialization for void
-{
-public:
-   typedef void       ArgT;
-   typedef void       BareT;
-   typedef void const ConstT;
-   typedef void       RefT;
-   typedef void       RefBareT;
-   typedef void       RefConstT;
-};
-/**** end of typeop4.hpp ****/
-
-//duo1.hpp
-template <typename T1, typename T2>
-class UbDuo 
-{
-public:
-   typedef T1 Type1;  // type of first field
-   typedef T2 Type2;  // type of second field
-   enum { N = 2 };    // number of fields
-
-public:
-   // constructors
-   UbDuo() : value1(), value2() {  }
-   UbDuo (T1 const & a, T2 const & b) : value1(a), value2(b)  {  }
-
-   // for implicit type conversion during construction
-   template <typename U1, typename U2>
-   UbDuo (UbDuo<U1,U2> const & d) : value1(d.v1()), value2(d.v2()) {  }
-
-   // for implicit type conversion during assignments
-   template <typename U1, typename U2>
-   UbDuo<T1, T2>& operator = (UbDuo<U1,U2> const & d) 
-   {
-      value1 = d.v1();//value1;
-      value2 = d.v2();//value2;
-      return *this;
-   }
-
-   // field access
-   T1& v1()             { return value1; }
-   T1 const& v1() const { return value1; }
-
-   T2& v2()             { return value2; }
-   T2 const& v2() const { return value2; }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive& ar, const unsigned int version)
-   {
-      ar & value1;
-      ar & value2;
-   }
-#endif //CAB_RCF
-
-private:
-   T1 value1;         // value of first field
-   T2 value2;         // value of second field
-};
-
-// comparison operators (allow mixed types):
-template <typename T1, typename T2,typename U1, typename U2>
-inline bool operator == (UbDuo<T1,T2> const& d1, UbDuo<U1,U2> const& d2)
-{
-   return d1.v1()==d2.v1() && d1.v2()==d2.v2();
-}
-
-template <typename T1, typename T2,typename U1, typename U2>
-inline bool operator != (UbDuo<T1,T2> const& d1, UbDuo<U1,U2> const& d2)
-{
-   return !(d1==d2);
-}
-
-template <typename T1, typename T2,typename U1, typename U2>
-inline bool operator < (UbDuo<T1,T2> const& d1, UbDuo<U1,U2> const& d2)
-{
-   if     (d1.v1() <  d2.v1() ) return true;
-   else if(d1.v1() == d2.v1() ) return d1.v2() < d2.v2();
-
-   return false;
-}
-
-// convenience function for creation and initialization
-template <typename T1, typename T2> 
-inline UbDuo<T1,T2> makeUbDuo(T1 const & a, T2 const & b)
-{
-   return UbDuo<T1,T2>(a,b);
-}
-
-//duo2.hpp
-template <typename A, typename B, typename C>
-class UbDuo<A, UbDuo<B,C> > 
-{
-public:
-   typedef A          T1;           // type of first field
-   typedef UbDuo<B,C> T2;           // type of second field
-   enum { N = UbDuo<B,C>::N + 1 };  // number of fields
- 
-public:
-   // constructors
-   UbDuo() : value1(), value2() { }
-   UbDuo (T1 const & a, T2 const & b) : value1(a), value2(b) { }
-
-   // for implicit type conversion during construction
-   template <typename U1, typename U2>
-   UbDuo (UbDuo<U1,U2> const & d) : value1(d.v1()), value2(d.v2()) { }
-
-   // for implicit type conversion during assignments
-   template <typename U1, typename U2>
-   UbDuo<T1, T2>& operator = (UbDuo<U1,U2> const & d) 
-   { 
-      value1 = d.v1();//value1;     
-      value2 = d.v2();//value2;
-      return *this;
-   }
-
-   // field access
-   T1& v1()             { return value1; }
-   T1 const& v1() const { return value1; }
-
-   T2& v2()             { return value2; }
-   T2 const& v2() const { return value2; }
-
-#ifdef CAB_RCF
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & value1;
-      ar & value2;
-   }
-#endif //CAB_RCF
-
-private:
-   T1 value1;         // value of first field
-   T2 value2;         // value of second field
-};
-
-//duo3.hpp
-// primary template for type of Nth field of (duo) T
-template <int N, typename T>
-class UbDuoT 
-{
-public:
-   typedef void ResultT;    // in general, the result type is void
-};
-
-// specialization for 1st field of a plain duo
-template <typename A, typename B>
-class UbDuoT<1, UbDuo<A,B> > 
-{
-public:
-   typedef A ResultT;
-};
-
-// specialization for 2nd field of a plain duo
-template <typename A, typename B>
-class UbDuoT<2, UbDuo<A,B> > 
-{
-public:
-   typedef B ResultT;
-};
-
-// specialization for Nth field of a recursive duo
-template <int N, typename A, typename B, typename C>
-class UbDuoT<N, UbDuo<A, UbDuo<B,C> > > 
-{
-public:
-   typedef typename UbDuoT<N-1, UbDuo<B,C> >::ResultT ResultT;
-};
-
-// specialization for 1st field of a recursive duo
-template <typename A, typename B, typename C>
-class UbDuoT<1, UbDuo<A, UbDuo<B,C> > > 
-{
-public:
-   typedef A ResultT;
-};
-
-// specialization for 2nd field of a recursive duo
-template <typename A, typename B, typename C>
-class UbDuoT<2, UbDuo<A, UbDuo<B,C> > > 
-{
-public:
-   typedef B ResultT;
-};
-
-//duo4.hpp
-// primary template for value of Nth field of (duo) T
-template <int N, typename T>
-class DuoValue 
-{
-public:
-   static void get(T&) {  }      // in general, we have no value
-   static void get(T const&) { }
-};
-
-// specialization for 1st field of a plain duo
-template <typename A, typename B>
-class DuoValue<1, UbDuo<A, B> > 
-{
-public:
-   static A& get(UbDuo<A, B> &d)             { return d.v1(); }
-   static A const& get(UbDuo<A, B> const &d) { return d.v1(); }
-};
-
-// specialization for 2nd field of a plain duo
-template <typename A, typename B>
-class DuoValue<2, UbDuo<A, B> > 
-{
-public:
-   static B& get(UbDuo<A, B> &d)             { return d.v2(); }
-   static B const& get(UbDuo<A, B> const &d) { return d.v2(); }
-};
-
-// specialization for Nth field of recursive duo
-template <int N, typename A, typename B, typename C>
-struct DuoValue<N, UbDuo<A, UbDuo<B,C> > >
-{
-   static typename UbTypeOp<typename UbDuoT<N-1, UbDuo<B,C> >::ResultT>::RefT  get(UbDuo<A, UbDuo<B,C> > &d)
-   { 
-      return DuoValue<N-1, UbDuo<B,C> >::get(d.v2()); 
-   }
-   static typename UbTypeOp<typename UbDuoT<N-1, UbDuo<B,C> >::ResultT>::RefConstT  get(UbDuo<A, UbDuo<B,C> > const &d)
-   { 
-      return DuoValue<N-1, UbDuo<B,C> >::get(d.v2()); 
-   }
-};
-
-// specialization for 1st field of recursive duo
-template <typename A, typename B, typename C>
-class DuoValue<1, UbDuo<A, UbDuo<B,C> > > 
-{
-public:
-   static A& get(UbDuo<A, UbDuo<B,C> > &d)             { return d.v1(); }
-   static A const& get(UbDuo<A, UbDuo<B,C> > const &d) { return d.v1(); }
-};
-
-// specialization for 2nd field of recursive duo
-template <typename A, typename B, typename C>
-class DuoValue<2, UbDuo<A, UbDuo<B,C> > > 
-{
-public:
-   static B& get(UbDuo<A, UbDuo<B,C> > &d)             { return d.v2().v1(); }
-   static B const& get(UbDuo<A, UbDuo<B,C> > const &d) { return d.v2().v1(); }
-};
-
-//duo5.hpp
-// return Nth value of variable duo
-template <int N, typename A, typename B> 
-inline typename UbTypeOp<typename UbDuoT<N, UbDuo<A, B> >::ResultT>::RefT val(UbDuo<A, B>& d)
-{
-   return DuoValue<N, UbDuo<A, B> >::get(d);
-}
-
-// return Nth value of constant duo
-template <int N, typename A, typename B> 
-inline typename UbTypeOp<typename UbDuoT<N, UbDuo<A, B> >::ResultT>::RefConstT val(UbDuo<A, B> const& d)
-{
-   return DuoValue<N, UbDuo<A, B> >::get(d);
-}
-
-//duo6.hpp
-// partial specialization for UbDuo<> with only one field
-template <typename A>
-struct UbDuo<A,void> 
-{
-public:
-   typedef A    T1;  // type of first field
-   typedef void T2;  // type of second field
-   enum { N = 1 };   // number of fields
-
-private:
-   T1 value1;        // value of first field
-
-public:
-   // constructors
-   UbDuo() : value1() { }
-   UbDuo (T1 const & a) : value1(a) { }
-
-   // field access
-   T1& v1()             { return value1; }
-   T1 const& v1() const { return value1; }
-
-   void v2() { }
-   void v2() const { }
-
-   #ifdef CAB_RCF
-      template<class Archive>
-      void serialize(Archive & ar, const unsigned int version)
-      {
-         ar & value1;
-      }
-   #endif
-};
-
-//tupel1.hpp
-// type that represents unused type parameters
-class UbNullT 
-{
-};
-
-// UbTuple<> in general derives from UbTuple<> with one more UbNullT
-template <typename P1,
-          typename P2 = UbNullT,
-          typename P3 = UbNullT,
-          typename P4 = UbNullT,
-          typename P5 = UbNullT,
-          typename P6 = UbNullT,
-          typename P7 = UbNullT,
-          typename P8 = UbNullT >
-class UbTuple : public UbDuo<P1, typename UbTuple<P2,P3,P4,P5,P6,P7,P8,UbNullT>::BaseT> 
-{
-public:
-   typedef UbDuo<P1, typename UbTuple<P2,P3,P4,P5,P6,P7,P8,UbNullT>::BaseT>  BaseT;
-
-   // constructor:
-   UbTuple() {}
-   UbTuple( typename UbTypeOp<P1>::RefConstT a1,
-            typename UbTypeOp<P2>::RefConstT a2,
-            typename UbTypeOp<P3>::RefConstT a3 = UbNullT(),
-            typename UbTypeOp<P4>::RefConstT a4 = UbNullT(),
-            typename UbTypeOp<P5>::RefConstT a5 = UbNullT(),
-            typename UbTypeOp<P6>::RefConstT a6 = UbNullT(),
-            typename UbTypeOp<P7>::RefConstT a7 = UbNullT(),
-            typename UbTypeOp<P8>::RefConstT a8 = UbNullT() )
-      : BaseT(a1, UbTuple<P2,P3,P4,P5,P6,P7,P8,UbNullT>(a2,a3,a4,a5,a6,a7,a8))
-   {
-   }
-
-   // for implicit type conversion during assignments
-   template <typename U1,typename U2, typename U3, typename U4, typename U5, typename U6, typename U7, typename U8 >
-   UbTuple<P1,P2,P3,P4,P5,P6,P7,P8>& operator = ( const UbTuple<U1,U2,U3,U4,U5,U6,U7,U8>& rhs)
-   {
-      this->BaseT::operator=( typename UbTuple<U1,U2,U3,U4,U5,U6,U7,U8>::BaseT(rhs) );
-      return *this;
-   }
-
-};
-
-// specialization to end deriving recursion
-template <typename P1, typename P2>
-class UbTuple<P1,P2,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,P2> {
-public:
-   typedef UbDuo<P1,P2> BaseT;
-   
-   // constructor:
-   UbTuple() {}
-   UbTuple( typename UbTypeOp<P1>::RefConstT a1,
-            typename UbTypeOp<P2>::RefConstT a2,
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT() )
-      : BaseT(a1, a2) 
-   {
-   }
-
-   // for implicit type conversion during assignments
-   template <typename U1,typename U2 >
-   UbTuple<P1,P2>& operator = ( const UbTuple<U1,U2>& rhs)
-   {
-      this->BaseT::operator=( typename UbTuple<U1,U2>::BaseT(rhs) );
-      return *this;
-   }
-
-};
-
-// specialization for singletons
-template <typename P1>
-class UbTuple<P1,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,void>
-{
-public:
-   typedef UbDuo<P1,void> BaseT;
-
-   // constructor:
-   UbTuple() {}
-   UbTuple( typename UbTypeOp<P1>::RefConstT a1,
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-            typename UbTypeOp<UbNullT>::RefConstT = UbNullT() )
-      : BaseT(a1) 
-   {
-   }
-
-   // for implicit type conversion during assignments
-   template <typename U1 >
-   UbTuple<P1>& operator = ( const UbTuple<U1>& rhs)
-   {
-      this->v1() = rhs.v1();
-      return *this;
-   }
-
-};
-
-// convenience function for 1 argument
-template <typename T1> 
-inline UbTuple<T1> makeUbTuple(T1 const &a1)
-{
-   return UbTuple<T1>(a1);
-}
-
-// convenience function for 2 arguments
-template <typename T1, typename T2>
-inline UbTuple<T1,T2> makeUbTuple(T1 const &a1, T2 const &a2)
-{
-   return UbTuple<T1,T2>(a1,a2);
-}
-
-// convenience function for 3 arguments
-template <typename T1, typename T2, typename T3>
-inline UbTuple<T1,T2,T3> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3)
-{
-   return UbTuple<T1,T2,T3>(a1,a2,a3);
-}
-
-// convenience function for 4 arguments
-template <typename T1, typename T2, typename T3, typename T4>
-inline UbTuple<T1,T2,T3,T4> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3, T4 const &a4)
-{
-   return UbTuple<T1,T2,T3,T4>(a1,a2,a3,a4);
-}
-
-// convenience function for 5 arguments
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-inline UbTuple<T1,T2,T3,T4,T5> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3, T4 const &a4,T5 const &a5)
-{
-   return UbTuple<T1,T2,T3,T4,T5>(a1,a2,a3,a4,a5);
-}
-
-// convenience function for 6 arguments
-template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
-inline UbTuple<T1,T2,T3,T4,T5,T6> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3, T4 const &a4, T5 const &a5, T6 const &a6)
-{
-   return UbTuple<T1,T2,T3,T4,T5,T6>(a1,a2,a3,a4,a5,a6);
-}
-
-// convenience function for 7 arguments
-template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
-inline UbTuple<T1,T2,T3,T4,T5,T6,T7> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3, T4 const &a4, T5 const &a5, T6 const &a6, T7 const &a7)
-{
-   return UbTuple<T1,T2,T3,T4,T5,T6,T7>(a1,a2,a3,a4,a5,a6,a7);
-}
-
-// convenience function for 8 arguments
-template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
-inline UbTuple<T1,T2,T3,T4,T5,T6,T7,T8> makeUbTuple(T1 const &a1, T2 const &a2,T3 const &a3, T4 const &a4,T5 const &a5, T6 const &a6,T7 const &a7, T8 const &a8 )
-{
-   return UbTuple<T1,T2,T3,T4,T5,T6,T7,T8>(a1,a2,a3,a4,a5,a6,a7,a8);
-}
-
-//some typedefs
-typedef UbTuple<float,float>                               UbTupleFloat2;
-typedef UbTuple<float,float,float>                         UbTupleFloat3;
-typedef UbTuple<int,int>                                   UbTupleInt2;
-typedef UbTuple<int,int,int>                               UbTupleInt3;
-typedef UbTuple<int,int,int,int>                           UbTupleInt4;
-typedef UbTuple<int,int,int,int,int>                       UbTupleInt5;
-typedef UbTuple<int,int,int,int,int,int>                   UbTupleInt6;
-typedef UbTuple<int,int,int,int,int,int,int,int>           UbTupleInt8;
-typedef UbTuple<double,double>                             UbTupleDouble2;
-typedef UbTuple<double,double,double>                      UbTupleDouble3;
-typedef UbTuple<double,double,double,double>               UbTupleDouble4;
-typedef UbTuple<double,double,double,double,double,double> UbTupleDouble6;
-typedef UbTuple<std::string,double,double>                 UbTupleStringDouble2;
-typedef UbTuple<std::string,double,double,double>          UbTupleStringDouble3;
-typedef UbTuple<std::string,int,int,int>                   UbTupleStringInt3;
-typedef UbTuple<short,short,short,short>                   UbTupleShort4;
-typedef UbTuple<bool,bool,bool>                            UbTupleBool3;
-typedef UbTuple<int,double,double>                         UbTupleIntDouble2;
-typedef UbTuple<int, bool>                                 UbTupleIntBool;
-
-
-// class UbTupleWrapper
-// {
-// public:
-//    UbTuple<int, int> a;
-// 
-// #ifdef CAB_RCF
-//    template<class Archive>
-//    void serialize(Archive & ar, const unsigned int version)
-//    {
-//       ar & a;
-//    }
-//    void tuWas()
-//    {
-//       std::cout<<val<1>(a)<<std::endl;
-// 
-//       std::cout<<val<2>(a)<<std::endl;
-//    }
-// 
-// #endif
-// 
-// };
-
-
-#endif //UBTUPLE_H
-
-
-//#ifndef AAAAAAAAAAAAAAAAAAAAAAAAAAAAA //UBTUPLE_H
-//#define AAAAAAAAAAAAAAAAAAAAAAAAAAAAA //UBTUPLE_H
-//class UbTuble;
-//#include <iostream>
-//#include <string>
-//#include <algorithm> 
-//
-//
-//// a helper traits to make the make_tuple functions shorter (Vesa Karvonen's suggestion)
-//struct UbNullType{};
-//
-//template < class T0 = UbNullType, class T1 = UbNullType, class T2 = UbNullType,
-//class T3 = UbNullType, class T4 = UbNullType, class T5 = UbNullType,
-//class T6 = UbNullType, class T7 = UbNullType, class T8 = UbNullType >
-//class UbSimpleTuple
-//{
-//public:  
-//   UbSimpleTuple() {}
-//   UbSimpleTuple(T0 t0) {}
-//   UbSimpleTuple( const T0& t0) 
-//      : t0(t0) {}
-//   UbSimpleTuple( const T0& t0,  const T1& t1)
-//      : t0(t0), t1(t1){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2) 
-//      : t0(t0), t1(t1), t2(t2) {}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3)
-//      : t0(t0), t1(t1), t2(t2), t3(t3){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3,  const T4& t4) 
-//      : t0(t0), t1(t1), t2(t2), t3(t3), t4(t4){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3,  const T4& t4,  const T5& t5) 
-//      : t0(t0), t1(t1), t2(t2), t3(t3), t4(t4), t5(t5){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3,  const T4& t4,  const T5& t5,  const T6& t6) 
-//      : t0(t0), t1(t1), t2(t2), t3(t3), t4(t4), t5(t5), t6(t6){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3,  const T4& t4,  const T5& t5,  const T6& t6,  const T7& t7) 
-//      : t0(t0), t1(t1), t2(t2), t3(t3), t4(t4), t5(t5), t6(t6), t7(t7){}
-//   UbSimpleTuple( const T0& t0,  const T1& t1,  const T2& t2,  const T3& t3,  const T4& t4,  const T5& t5,  const T6& t6,  const T7& t7, const T8& t8) 
-//      : t0(t0), t1(t1), t2(t2), t3(t3), t4(t4), t5(t5), t6(t6), t7(t7), t8(t8){}
-//
-//   T0 t0;
-//   T1 t1;
-//   T2 t2;
-//   T3 t3;
-//   T4 t4;
-//   T5 t5;
-//   T6 t6;
-//   T7 t7;
-//   T8 t8;
-//};
-// 
-//
-//UbSimpleTuple<> 
-//inline makeUbSimpleTuple() { return UbSimpleTuple<>(); }
-//
-//template<class T0>
-//inline UbSimpleTuple<T0> makeUbSimpleTuple(const T0& t0) { return UbSimpleTuple<T0>(t0); }
-//
-//template<class T0, class T1>
-//inline UbSimpleTuple<T0,T1> makeUbSimpleTuple(const T0& t0, const T1& t1)  { return UbSimpleTuple<T0,T1>(t0,t1); }
-//
-//template<class T0, class T1, class T2>
-//inline UbSimpleTuple<T0,T1,T2> makeUbSimpleTuple(const T0& t0, const T1& t1, const T2& t2)  { return UbSimpleTuple<T0,T1,T2>(t0,t1,t2); }
-//
-//template<class T0, class T1, class T2, class T3>
-//inline UbSimpleTuple<T0,T1,T2,T3> makeUbSimpleTuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3)  { return UbSimpleTuple<T0,T1,T2,T3>(t0,t1,t2,t2); }
-//
-////////////////////////////////////////////////////////////////////////////
-////Advanced UbTuple
-////Bsp:
-// //// create and use tuple with only one field
-// //UbTuple<int,int,int,int,int> t1;
-// //val<1>(t1) += 42;
-// //std::cout << t1.v1() << std::endl;
-//
-// //UbTuple<int,double,double> ttt3;
-// //val<3>(t3);
-// //
-// //// create and use duo
-// //UbType<bool,int> t2;
-// //std::cout << val<1>(t2) << ", ";
-// //std::cout << t2.v1() << std::endl;
-//
-// //// create and use triple
-// //UbType<bool,int,double> t3;
-// //val<1>(t3) = true;
-// //val<2>(t3) = 42;
-// //val<3>(t3) = 0.2;
-//
-// //std::cout << val<1>(t3) << ", ";
-// //std::cout << val<2>(t3) << ", ";
-// //std::cout << val<3>(t3) << std::endl;
-//
-// //t3 = make_tuple(false, 23, 13.13);
-//
-// //std::cout << val<1>(t3) << ", ";
-// //std::cout << val<2>(t3) << ", ";
-// //std::cout << val<3>(t3) << std::endl;
-//
-// //// create and use quadruple
-// //UbType<bool,int,float,double> t4(true,42,13,1.95583);
-// //std::cout << val<4>(t4) << std::endl;
-// //std::cout << t4.v2().v2().v2() << std::endl;
-//
-////typeop.hpp
-//// primary template
-///**********************************
-//* typeop1.hpp:
-//**********************************/
-//template <typename T>
-//class UbTypeOp             // primary template
-//{
-//public:
-//   typedef T         ArgT;
-//   typedef T         BareT;
-//   typedef T const   ConstT;
-//   typedef T &       RefT;
-//   typedef T &       RefBareT;
-//   typedef T const & RefConstT;
-//};
-///**** end of typeop1.hpp ****/
-//
-//// partial specialization for const
-///**********************************
-//* typeop2.hpp:
-//**********************************/
-//template <typename T>
-//class UbTypeOp <T const>   // partial specialization for const types
-//{
-//   public:
-//   typedef T const   ArgT;
-//   typedef T         BareT;
-//   typedef T const   ConstT;
-//   typedef T const & RefT;
-//   typedef T &       RefBareT;
-//   typedef T const & RefConstT;
-//};
-///**** end of typeop2.hpp ****/
-//
-//// partial specialization for references
-///**********************************
-//* typeop3.hpp:
-//**********************************/
-//template <typename T>
-//class UbTypeOp <T&>        // partial specialization for references
-//{
-//public:
-//   typedef T &                         ArgT;
-//   typedef typename UbTypeOp<T>::BareT   BareT;
-//   typedef T const                     ConstT;
-//   typedef T &                         RefT;
-//   typedef typename UbTypeOp<T>::BareT & RefBareT;
-//   typedef T const &                   RefConstT;
-//};
-///**** end of typeop3.hpp ****/
-//
-//// full specialization for void
-///**********************************
-//* typeop4.hpp:
-//**********************************/
-//template<>
-//class UbTypeOp <void>      // full specialization for void
-//{
-//public:
-//   typedef void       ArgT;
-//   typedef void       BareT;
-//   typedef void const ConstT;
-//   typedef void       RefT;
-//   typedef void       RefBareT;
-//   typedef void       RefConstT;
-//};
-///**** end of typeop4.hpp ****/
-//
-////duo1.hpp
-//template <typename T1, typename T2>
-//class UbDuo 
-//{
-//public:
-//   typedef T1 Type1;  // type of first field
-//   typedef T2 Type2;  // type of second field
-//   enum { N = 2 };    // number of fields
-//
-//private:
-//   T1 value1;         // value of first field
-//   T2 value2;         // value of second field
-//
-//public:
-//   // constructors
-//   UbDuo() : value1(), value2() { }
-//   UbDuo (T1 const & a, T2 const & b) : value1(a), value2(b) { }
-//
-//   // for implicit type conversion during construction
-//   template <typename U1, typename U2>
-//   UbDuo (UbDuo<U1,U2> const & d) : value1(d.v1()), value2(d.v2()) { }
-//
-//   // for implicit type conversion during assignments
-//   template <typename U1, typename U2>
-//   UbDuo<T1, T2>& operator = (UbDuo<U1,U2> const & d)
-//   {
-//      value1 = d.value1;
-//      value2 = d.value2;
-//      return *this;
-//   }
-//
-//   // field access
-//   T1& v1() { return value1; }
-//   T1 const& v1() const { return value1; }
-//
-//   T2& v2() { return value2; }
-//   T2 const& v2() const { return value2; }
-//};
-//
-//// comparison operators (allow mixed types):
-//template <typename T1, typename T2,
-//typename U1, typename U2>
-//inline bool operator == (UbDuo<T1,T2> const& d1, UbDuo<U1,U2> const& d2)
-//{
-//   return d1.v1()==d2.v1() && d1.v2()==d2.v2();
-//}
-//
-//template <typename T1, typename T2,
-//typename U1, typename U2>
-//inline bool operator != (UbDuo<T1,T2> const& d1, UbDuo<U1,U2> const& d2)
-//{
-//   return !(d1==d2);
-//}
-//
-//// convenience function for creation and initialization
-//template <typename T1, typename T2> 
-//inline UbDuo<T1,T2> makeUbDuo(T1 const & a, T2 const & b)
-//{
-//   return UbDuo<T1,T2>(a,b);
-//}
-//
-////duo2.hpp
-//template <typename A, typename B, typename C>
-//class UbDuo<A, UbDuo<B,C> >
-//{
-//public:
-//   typedef A          T1;           // type of first field
-//   typedef UbDuo<B,C> T2;           // type of second field
-//   enum { N = UbDuo<B,C>::N + 1 };  // number of fields
-//
-//private:
-//   T1 value1;         // value of first field
-//   T2 value2;         // value of second field
-//
-//public:
-//   // constructors
-//   UbDuo() : value1(), value2() {}
-//   UbDuo (T1 const & a, T2 const & b) : value1(a), value2(b) { }
-//
-//   // for implicit type conversion during construction
-//   template <typename U1, typename U2>
-//   UbDuo (UbDuo<U1,U2> const & d) : value1(d.v1()), value2(d.v2()) { }
-//
-//   // for implicit type conversion during assignments
-//   template <typename U1, typename U2>
-//   UbDuo<T1, T2>& operator = (UbDuo<U1,U2> const & d) 
-//   {
-//      value1 = d.value1;
-//      value2 = d.value2;
-//      return *this;
-//   }
-//
-//   // field access
-//   T1& v1() { return value1; }
-//   T1 const& v1() const { return value1; }
-//
-//   T2& v2() { return value2; }
-//   T2 const& v2() const { return value2; }
-//};
-//
-////duo3.hpp
-//// primary template for type of Nth field of (duo) T
-//template <int N, typename T>
-//class UbDuoT 
-//{
-//public:
-//   typedef void ResultT;    // in general, the result type is void
-//};
-//
-//// specialization for 1st field of a plain duo
-//template <typename A, typename B>
-//class UbDuoT<1, UbDuo<A,B> > 
-//{
-//public:
-//   typedef A ResultT;
-//};
-//
-//// specialization for 2nd field of a plain duo
-//template <typename A, typename B>
-//class UbDuoT<2, UbDuo<A,B> > 
-//{
-//public:
-//   typedef B ResultT;
-//};
-//
-//// specialization for Nth field of a recursive duo
-//template <int N, typename A, typename B, typename C>
-//class UbDuoT<N, UbDuo<A, UbDuo<B,C> > > 
-//{
-//public:
-//   typedef typename UbDuoT<N-1, UbDuo<B,C> >::ResultT ResultT;
-//};
-//
-//// specialization for 1st field of a recursive duo
-//template <typename A, typename B, typename C>
-//class UbDuoT<1, UbDuo<A, UbDuo<B,C> > > 
-//{
-//public:
-//   typedef A ResultT;
-//};
-//
-//// specialization for 2nd field of a recursive duo
-//template <typename A, typename B, typename C>
-//class UbDuoT<2, UbDuo<A, UbDuo<B,C> > > 
-//{
-//public:
-//   typedef B ResultT;
-//};
-//
-////duo4.hpp
-//// primary template for value of Nth field of (duo) T
-//template <int N, typename T>
-//class UbDuoValue 
-//{
-//public:
-//   static void get(T&) { }       // in general, we have no value
-//   static void get(T const&) { }
-//};
-//
-//// specialization for 1st field of a plain duo
-//template <typename A, typename B>
-//class UbDuoValue<1, UbDuo<A, B> > 
-//{
-//public:
-//   static A& get(UbDuo<A, B> &d) { return d.v1(); }
-//   static A const& get(UbDuo<A, B> const &d) { return d.v1();}
-//};
-//
-//// specialization for 2nd field of a plain duo
-//template <typename A, typename B>
-//class UbDuoValue<2, UbDuo<A, B> > 
-//{
-//public:
-//   static B& get(UbDuo<A, B> &d) 
-//   { 
-//      return d.v2(); 
-//   }
-//   static B const& get(UbDuo<A, B> const &d) { return d.v2(); }
-//};
-//
-//// specialization for Nth field of recursive duo
-//template <int N, typename A, typename B, typename C>
-//struct UbDuoValue<N, UbDuo<A, UbDuo<B,C> > > 
-//{
-//   static typename UbTypeOp<typename UbDuoT<N-1, UbDuo<B,C> >::ResultT>::RefT
-//   get(UbDuo<A, UbDuo<B,C> > &d) { return UbDuoValue<N-1, UbDuo<B,C> >::get(d.v2()); }
-//
-//   static typename UbTypeOp<typename UbDuoT<N-1, UbDuo<B,C> >::ResultT>::RefConstT
-//   get(UbDuo<A, UbDuo<B,C> > const &d) { return UbDuoValue<N-1, UbDuo<B,C> >::get(d.v2()); }
-//};
-//
-//// specialization for 1st field of recursive duo
-//template <typename A, typename B, typename C>
-//class UbDuoValue<1, UbDuo<A, UbDuo<B,C> > > 
-//{
-//public:
-//   static A& get(UbDuo<A, UbDuo<B,C> > &d) { return d.v1(); }
-//   static A const& get(UbDuo<A, UbDuo<B,C> > const &d) { return d.v1(); }
-//};
-//
-//// specialization for 2nd field of recursive duo
-//template <typename A, typename B, typename C>
-//class UbDuoValue<2, UbDuo<A, UbDuo<B,C> > > 
-//{
-//public:
-//   static B& get(UbDuo<A, UbDuo<B,C> > &d) { return d.v2().v1(); }
-//   static B const& get(UbDuo<A, UbDuo<B,C> > const &d) { return d.v2().v1(); }
-//};
-//
-////duo5.hpp
-//// return Nth value of variable duo
-//template <int N, typename A, typename B> 
-//inline typename UbTypeOp<typename UbDuoT<N, UbDuo<A, B> >::ResultT>::RefT
-//val(UbDuo<A, B>& d)
-//{
-//   return UbDuoValue<N, UbDuo<A, B> >::get(d);
-//}
-//
-//// return Nth value of constant duo
-//template <int N, typename A, typename B> 
-//inline typename UbTypeOp<typename UbDuoT<N, UbDuo<A, B> >::ResultT>::RefConstT
-//val(UbDuo<A, B> const& d)
-//{
-//   return UbDuoValue<N, UbDuo<A, B> >::get(d);
-//}
-//
-////duo6.hpp
-//// partial specialization for UbDuo<> with only one field
-//template <typename A>
-//struct UbDuo<A,void> 
-//{
-//public:
-//   typedef A    T1;  // type of first field
-//   typedef void T2;  // type of second field
-//   enum { N = 1 };   // number of fields
-//
-//private:
-//   T1 value1;        // value of first field
-//
-//public:
-//   // constructors
-//   UbDuo() : value1() { }
-//   UbDuo (T1 const & a) : value1(a) { }
-//
-//   // field access
-//   T1& v1() { return value1; }
-//   T1 const& v1() const { return value1; }
-//
-//   void v2() { }
-//   void v2() const { }
-//   //...
-//};
-//
-////tuple1.hpp
-//// a helper traits to make the make_tuple functions shorter (Vesa Karvonen's suggestion)
-//struct UbNullT{};
-//
-//// UbType<> in general derives from UbType<> with one more UbNullT
-//template <typename P1,
-//          typename P2 = UbNullT,
-//          typename P3 = UbNullT,
-//          typename P4 = UbNullT,
-//          typename P5 = UbNullT>
-//class UbType : public UbDuo<P1, typename UbType<P2,P3,P4,P5,UbNullT>::BaseT> 
-//{
-//public:
-//   typedef UbDuo<P1, typename UbType<P2,P3,P4,P5,UbNullT>::BaseT> BaseT;
-//
-//   // constructors:
-//   UbType() {}
-//   UbType(typename UbTypeOp<P1>::RefConstT a1,
-//          typename UbTypeOp<P2>::RefConstT a2,
-//          typename UbTypeOp<P3>::RefConstT a3 = UbNullT(),
-//          typename UbTypeOp<P4>::RefConstT a4 = UbNullT(),
-//          typename UbTypeOp<P5>::RefConstT a5 = UbNullT() ) : BaseT(a1, UbType<P2,P3,P4,P5,UbNullT>(a2,a3,a4,a5)) 
-//   {
-//   }
-//};
-//
-//// specialization to end deriving recursion
-//template <typename P1, typename P2>
-//class UbType<P1,P2,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,P2> 
-//{
-//public:
-//   typedef UbDuo<P1,P2> BaseT;
-//   UbType() {}
-//   UbType(typename UbTypeOp<P1>::RefConstT a1,
-//          typename UbTypeOp<P2>::RefConstT a2,
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT() ) : BaseT(a1, a2) 
-//   {
-//   }
-//};
-//
-//// specialization for singletons
-//template <typename P1>
-//class UbType<P1,UbNullT,UbNullT,UbNullT,UbNullT> : public UbDuo<P1,void> 
-//{
-//public:
-//   typedef UbDuo<P1,void> BaseT;
-//   UbType() {}
-//   UbType(typename UbTypeOp<P1>::RefConstT a1,
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT(),
-//          typename UbTypeOp<UbNullT>::RefConstT = UbNullT() ) : BaseT(a1) 
-//   {
-//   }
-//};
-//
-//// convenience function for 1 argument
-//template <typename T1>
-//inline UbType<T1> makeUbTuple(T1 const &a1)
-//{
-//   return UbType<T1>(a1);
-//}
-//
-//// convenience function for 2 arguments
-//template <typename T1, typename T2>
-//inline UbType<T1,T2> makeUbTuple(T1 const &a1, T2 const &a2)
-//{
-//   return UbType<T1,T2>(a1,a2);
-//}
-//
-//// convenience function for 3 arguments
-//template <typename T1, typename T2, typename T3>
-//inline UbType<T1,T2,T3> makeUbTuple(T1 const &a1, T2 const &a2, T3 const &a3)
-//{
-//   return UbType<T1,T2,T3>(a1,a2,a3);
-//}
-//
-//// convenience function for 4 arguments
-//template <typename T1, typename T2, typename T3, typename T4>
-//inline UbType<T1,T2,T3,T4> make_tuple(T1 const &a1, T2 const &a2, T3 const &a3, T4 const &a4)
-//{
-//   return UbType<T1,T2,T3,T4>(a1,a2,a3,a4);
-//}
-//
-//// convenience function for 5 arguments
-//template <typename T1, typename T2, typename T3,
-//typename T4, typename T5>
-//inline UbType<T1,T2,T3,T4,T5> make_tuple(T1 const &a1, T2 const &a2,T3 const &a3, T4 const &a4,T5 const &a5)
-//{
-//   return UbType<T1,T2,T3,T4,T5>(a1,a2,a3,a4,a5);
-//}
-//
-//#endif
-
diff --git a/source/VirtualFluidsCore/Basics/writer/CMakePackage.txt b/source/VirtualFluidsCore/Basics/writer/CMakePackage.txt
deleted file mode 100644
index 1222f87f3fb0a45838379cdf4345e3d11a06e575..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/CMakePackage.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-GET_FILENAME_COMPONENT( CURRENT_DIR  ${CMAKE_CURRENT_LIST_FILE} PATH) 
-COLLECT_PACKAGE_DATA_WITH_OPTION(${CURRENT_DIR} ALL_SOURCES)
-
diff --git a/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.cpp.bugy b/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.cpp.bugy
deleted file mode 100644
index 2edbeeebb81ed1609ac84b6d34f40dc709e567e4..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.cpp.bugy
+++ /dev/null
@@ -1,896 +0,0 @@
-#include <basics/writer/WbCWriterVtkXmlASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::pvdEndTag ="   </Collection>\n</VTKFile>";
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   std::string vtkfilename=filename+".pvd";
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");	}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   std::string endian;
-   if(UbSystem::isLittleEndian()) endian = "LittleEndian";
-   else                           endian = "BigEndian";
-   fprintf(vtkfile,"<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\"%s\" >\n",endian);
-   fputs("   <Collection>\n",vtkfile);
-   
-   int group = 0, part=0;
-   for(std::size_t i=0; i<filenames.size(); i++)
-   {
-	  fprintf(vtkfile,"       <DataSet timestep=\"%g\" group=\"%d\" part=\"%d\" file=\"%s\"/>\n",timeStep,group,part,filenames[i]);
-      if(sepGroups) group++;
-      else          part++;
-   }
-   fprintf(vtkfile,"%s",pvdEndTag.c_str());
-   fclose(vtkfile);
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   std::string vtkfilename=filename;
-   FILE * test;
-   test = fopen(vtkfilename.c_str(), "r");
-
-   if(test == NULL)
-   {
-      vtkfilename += ".pvd";
-      test = fopen(vtkfilename.c_str(), "r");
-      if(test == NULL) return this->writeCollection(filename,filenames,timeStep,sepGroups);
-   }
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "r+");
-   fseek(vtkfile,-(int)pvdEndTag.size()-1,SEEK_END);								
-
-   int group = 0;
-   for(std::size_t i=0; i<filenames.size(); i++)
-   {
-	  fprintf(vtkfile,"       <DataSet timestep=\"%g\" group=\"%d\" part=\"%d\" file=\"%s\"/>\n",timeStep,group,i,filenames[i]);
-      if(sepGroups) group++;
-   }
-   fprintf(vtkfile,"%s",pvdEndTag.c_str());
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeParallelFile(const string& filename,vector<string>& pieceSources, vector<string>& pointDataNames, vector<string>& cellDataNames)
-{
-   string vtkfilename=filename+".pvtu";
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeParallelFile to "<<vtkfilename<<" - start");
-   
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");	}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //VTK FILE
-   fputs("<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n  <PUnstructuredGrid GhostLevel=\"0\">\n    <PPoints>\n      <PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n    </PPoints>\n    <PPointData>\n",vtkfile);
-   for(size_t s=0; s<pointDataNames.size(); s++)
-	   fprintf(vtkfile, "      <PDataArray type=\"Float32\" Name=\"%s\"/>\n", pointDataNames[s]);
-   fputs("    </PPointData>\n",vtkfile);
-   if (cellDataNames.size() > 0)
-   {
-	  fputs("    <PCellData>\n",vtkfile);
-      for(size_t s=0; s<cellDataNames.size(); s++)
-         fprintf(vtkfile, "      <PDataArray type=\"Float32\" Name=\"%s\"/>\n", cellDataNames[s]);
-	  fputs("    </PCellData>\n",vtkfile);
-   }
-
-   for(size_t s=0; s<pieceSources.size(); s++)
-	  fprintf(vtkfile, "    <Piece Source=\"%s\"/>\n", pieceSources[s]);
-   fputs("  </PUnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeParallelFile to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeQuads(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuads to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n", nofNodes, nofCells);
-
-   //POINTS SECTION
-   fputs("      <Points>\n         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile, "%g %g %g   ", val<1>(nodes[n]),val<2>(nodes[n]), val<3>(nodes[n]));
-   fputs("\n         </DataArray>\n      </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("      <Cells>\n         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]));
-   fputs("\n      </DataArray>\n         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*4);
-
-   fputs("\n         </DataArray>\n      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("8 ",vtkfile);
-
-   fputs("\n      </DataArray>\n      </Cells>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuads to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile, "%g %g %g   ", val<1>(nodes[n]),val<2>(nodes[n]), val<3>(nodes[n]));		 
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]));
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*4);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("8 ",vtkfile);
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <PointData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-		  fprintf(vtkfile,"%g ",nodedata[s][d]);
-	  fputs("\n          </DataArray>\n",vtkfile);
-    }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithCellData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]));
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*4);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("8 ",vtkfile);
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <CellData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-      for(int d=0; d<(int)celldata[s].size(); d++)
-		  fprintf(vtkfile,"%g ",celldata[s][d]);
-
-	  fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </CellData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbCWriterVtkXmlASCII::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, 
-                                                          vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames,
-                                                          vector< vector< double > >& celldata                                                                       )
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]));
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*4);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("8 ",vtkfile);
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write PointData section
-   fputs("         <PointData Scalars=\"PScalars\"> \n",vtkfile);
-   for(int s=0; s<(int)nodedatanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\">\n",nodedatanames[s]);
-
-	   for(int d=0; d<(int)nodedata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",nodedata[s][d]);
-	   
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n",vtkfile);
-
-   //write celldata section
-   fputs("         <CellData Scalars=\"CScalars\"> \n",vtkfile);
-   for(int s=0; s<(int)celldatanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\">\n",celldatanames[s]);
-
-	   for(int d=0; d<(int)celldata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",celldata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </CellData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeLines(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines) 
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofLines);
-
-   //POINTS SECTION
-   fputs("         <Points>\n         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n         </DataArray>\n      </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("      <Cells>\n         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofLines; c++)
-	   fprintf(vtkfile,"%d %d  ",val<1>(lines[c]),val<2>(lines[c]));
-   fputs("\n      </DataArray>\n         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n",vtkfile);
-   for(int c=1; c<=nofLines; c++)
-	   fprintf(vtkfile,"%d ",c*2);
-
-   fputs("\n         </DataArray>\n      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofLines; c++)
-	   fputs("3 ",vtkfile);
-   fputs("\n      </DataArray>\n      </Cells>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeLinesWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLinesWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofLines);
-
-   //POINTS SECTION
-   fputs("      <Points>\n         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n         </DataArray>\n      </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("      <Cells>\n         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofLines; c++)
-	   fprintf(vtkfile,"%d %d  ",val<1>(lines[c]),val<2>(lines[c]));
-   fputs("\n      </DataArray>\n         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n",vtkfile);
-   for(int c=1; c<=nofLines; c++)
-	   fprintf(vtkfile,"%d ",c*2);
-
-   fputs("\n         </DataArray>\n      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofLines; c++)
-	   fputs("3 ",vtkfile);
-   fputs("\n      </DataArray>\n      </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <PointData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-	   for(int d=0; d<(int)nodedata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",nodedata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLinesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTriangles to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofTriangles= (int)triangles.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofTriangles);
-
-   //POINTS SECTION
-   fputs("      <Points>\n         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n         </DataArray>\n      </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("      <Cells>\n         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofTriangles; c++)
-	   fprintf(vtkfile,"%d %d %d  ",val<1>(triangles[c]),val<2>(triangles[c]),val<3>(triangles[c]));
-   fputs("\n      </DataArray>\n         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n",vtkfile);
-   for(int c=1; c<nofTriangles+1; c++)
-	   fprintf(vtkfile,"%d ",c*3);
-
-   fputs("\n         </DataArray>\n      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n",vtkfile);
-
-   for(int c=0; c<nofTriangles; c++)
-	   fputs("5 ",vtkfile);
-   fputs("\n      </DataArray>\n      </Cells>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTriangles to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<3>(cells[c]));
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*3);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("5 ",vtkfile);
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <PointData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-	   for(int d=0; d<(int)nodedata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",nodedata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeOctsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithCellData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile, "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d %d %d %d %d  ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]),val<5>(cells[c]),val<6>(cells[c]),val<8>(cells[c]),val<7>(cells[c]));
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*8);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("11 ",vtkfile);
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <CellData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-	   for(int d=0; d<(int)celldata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",celldata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </CellData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeOctsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-      if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-		fprintf(vtkfile,"%g %g %g ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d %d %d %d %d  ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]),val<5>(cells[c]),val<6>(cells[c]),val<8>(cells[c]),val<7>(cells[c]));
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*8);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("11 ",vtkfile);
-
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write PointData section
-   fputs("         <PointData Scalars=\"PScalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-       fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\">",datanames[s]);
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-      {
-         //out<<base64_encode((unsigned char*)(&nodedata[s][d]),sizeof(float));
-         //out.write((char*)&nodedata[s][d],sizeof(float));
-		  fprintf(vtkfile,"%g ",nodedata[s][d]);
-      }
-	  fputs("</DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbCWriterVtkXmlASCII::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOcts to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofCells);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fprintf(vtkfile,"%d %d %d %d %d %d %d %d   ",val<1>(cells[c]),val<2>(cells[c]),val<4>(cells[c]),val<3>(cells[c]),val<5>(cells[c]),val<6>(cells[c]),val<8>(cells[c]),val<7>(cells[c]));
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-   for(int c=1; c<nofCells+1; c++)
-	   fprintf(vtkfile,"%d ",c*8);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofCells; c++)
-	   fputs("11 ",vtkfile);
-
-   fputs("\n            </DataArray>\n         </Cells>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOcts to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbCWriterVtkXmlASCII::writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofNodes);
-
-   //POINTS SECTION
-   fputs("      <Points>\n         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-   fputs("\n         </DataArray>\n      </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("      <Cells>\n         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n",vtkfile);
-
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%d  ",n);
-   fputs("\n      </DataArray>\n         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n",vtkfile);
-
-   for(int n=1; n<=nofNodes; n++)
-	   fprintf(vtkfile,"%d ",n);
-
-   fputs("\n         </DataArray>\n      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n",vtkfile);
-
-   for(int n=0; n<nofNodes; n++)
-	   fputs("1 ",vtkfile);
-
-   fputs("\n      </DataArray>\n      </Cells>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbCWriterVtkXmlASCII::writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofNodes);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofNodes; c++)
-	   fprintf(vtkfile,"%d   ",c);
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=1; c<nofNodes+1; c++)
-	   fprintf(vtkfile,"%d ",c);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int n=0; n<nofNodes; n++)
-	   fputs("1 ",vtkfile);
-
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <PointData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float32\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-	   for(int d=0; d<(int)nodedata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",nodedata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-
-//////////////////////////////////////////////////////////////////////////
-std::string WbCWriterVtkXmlASCII::writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - start");
-
-   FILE * vtkfile;
-   vtkfile = fopen(vtkfilename.c_str(), "w");
-   if(vtkfile == NULL)
-   { 
-	   string path = UbSystem::getPathFromString(vtkfilename);
-	   if(path.size()>0){UbSystem::makeDirectory(path);vtkfile = fopen(vtkfilename.c_str(), "w");}
-	   if(vtkfile == NULL) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   fprintf(vtkfile,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >\n   <UnstructuredGrid>\n      <Piece NumberOfPoints=\"%d\"	NumberOfCells=\"%d\">   \n",nofNodes,nofNodes);
-
-   //POINTS SECTION
-   fputs("         <Points>\n            <DataArray type=\"Float64\" NumberOfComponents=\"3\" format=\"ascii\">\n               ",vtkfile);
-   for(int n=0; n<nofNodes; n++)
-	   fprintf(vtkfile,"%g %g %g   ",val<1>(nodes[n]),val<2>(nodes[n]),val<3>(nodes[n]));
-   fputs("\n            </DataArray>\n         </Points>\n",vtkfile);
-
-   //CELLS SECTION
-   fputs("         <Cells>\n            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofNodes; c++)
-	   fprintf(vtkfile,"%d   ",c);
-   fputs("\n            </DataArray>\n            <DataArray type=\"Int64\" Name=\"offsets\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=1; c<nofNodes+1; c++)
-	   fprintf(vtkfile,"%d ",c);
-
-   fputs("\n            </DataArray>\n            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ",vtkfile);
-
-   for(int c=0; c<nofNodes; c++)
-	   fputs("1 ",vtkfile);
-
-   fputs("\n            </DataArray>\n         </Cells>\n",vtkfile);
-
-   //write data section
-   fputs("         <PointData Scalars=\"Scalars\"> \n",vtkfile);
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-	   fprintf(vtkfile,"           <DataArray type=\"Float64\" Name=\"%s\" format=\"ascii\"> \n",datanames[s]);
-
-	   for(int d=0; d<(int)nodedata[s].size(); d++)
-		   fprintf(vtkfile,"%g ",nodedata[s][d]);
-
-	   fputs("\n          </DataArray>\n",vtkfile);
-   }
-   fputs("         </PointData>\n      </Piece>\n   </UnstructuredGrid>\n</VTKFile>\n",vtkfile);
-   fclose(vtkfile);
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
diff --git a/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.h.bugy b/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.h.bugy
deleted file mode 100644
index 5e413892366d219098dbcfd2620d669c56a356c7..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbCWriterVtkXmlASCII.h.bugy
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef WBCWRITERVTKXMLASCII_H
-#define WBWCRITERVTKXMLASCII_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-//#include <boost/serialization/base_object.hpp>
-
-class WbCWriterVtkXmlASCII  : public WbWriter
-{
-public:
-	OBCREATOR_EXT( WbCWriterVtkXmlASCII )
-
-		static WbCWriterVtkXmlASCII* getInstance()
-	{
-		static WbCWriterVtkXmlASCII instance;
-		return &instance;
-	}
-private:
-	WbCWriterVtkXmlASCII() : WbWriter() 
-	{
-		if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"error char  type mismatch");
-		if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
-		if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
-	}
-	WbCWriterVtkXmlASCII( const WbCWriterVtkXmlASCII& );                  //no copy allowed 
-	const WbCWriterVtkXmlASCII& operator=( const WbCWriterVtkXmlASCII& ); //no copy allowed
-
-	static std::string  pvdEndTag;
-
-public:
-	std::string getFileExtension()  { return ".ascii.vtu"; }
-
-	//write a metafile 
-	std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timesteps, const bool& sepGroups);//std::vector<double>& groups, std::vector<double>& parts);
-	std::string addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-	std::string writeParallelFile(const std::string& filename,std::vector<std::string>& pieceSources, std::vector<std::string>& pointDataNames, std::vector<std::string>& cellDataNames);
-
-	//////////////////////////////////////////////////////////////////////////
-	//nodes
-	std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes);
-	std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-	std::string writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-	//////////////////////////////////////////////////////////////////////////
-	//lines
-	//     0 ---- 1
-	//nodenumbering must start with 0!
-	std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-	std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-	//////////////////////////////////////////////////////////////////////////
-	//triangles
-	//                    2
-	//                     
-	//                  0---1
-	//nodenumbering must start with 0!
-	std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-	std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-	//////////////////////////////////////////////////////////////////////////
-	//2D
-	//cell numbering:
-	//                  3---2
-	//                  |   |
-	//                  0---1
-	//nodenumbering must start with 0!
-
-	std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-	std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-	std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-	std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-		std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-		std::vector< std::vector< double > >& celldata                                                                       );
-
-	//////////////////////////////////////////////////////////////////////////
-	//octs
-	//     7 ---- 6
-	//    /|     /|
-	//   4 +--- 5 |
-	//   | |    | |
-	//   | 3 ---+ 2
-	//   |/     |/
-	//   0 ---- 1
-	std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-	std::string writeOctsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-	std::string writeOctsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-	//private:
-	//   friend class boost::serialization::access;
-	//   template<class Archive>
-	//   void serialize(Archive & ar, const unsigned int version)
-	//   {
-	//      ar & boost::serialization::base_object<WbWriter>(*this);
-	//   }
-};
-
-//UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbCWriterVtkXmlASCII ,WbWriter>::getInstance()), CAB_WbWriterVtkXmlASCII);
-
-#endif //WBWRITERVTKXMLASCII_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriter.h b/source/VirtualFluidsCore/Basics/writer/WbWriter.h
deleted file mode 100644
index 77869d11876747e42811a0c0659233804353a5a0..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriter.h
+++ /dev/null
@@ -1,183 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef WBWRITER_H
-#define WBWRITER_H
-
-#ifdef CAB_RCF
-   #include <3rdParty/rcf/RcfSerializationIncludes.h>
-#endif
-
-
-#include <vector>
-#include <string>
-#include <fstream>
-#include <sstream>
-#include <iostream>
-#include <map>
-
-
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbTuple.h>
-#include <basics/utilities/UbPointerWrapper.h>
-#include <basics/utilities/UbAutoRun.hpp>
-#include <basics/objects/ObFactory.h>
-
-#include <boost/serialization/serialization.hpp>
-
-class WbWriter
-{
-public:
-   OBCREATOR_EXT(WbWriter)
-
-   //////////////////////////////////////////////////////////////////////////
-   virtual ~WbWriter() 
-   {
-
-   }
-
-   //////////////////////////////////////////////////////////////////////////
-   //rein virtuelle Methoden
-   virtual std::string getFileExtension() = 0;
-
-   //////////////////////////////////////////////////////////////////////////
-   //nodes
-   virtual std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   virtual std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) { throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //cell numbering:
-   //                     2
-   //                      
-   //                  0 === 1
-   //nodenumbering must start with 0!
-   virtual std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-
-   //////////////////////////////////////////////////////////////////////////
-   //quads
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-   virtual std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                                     std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                                     std::vector< std::vector< double > >& celldata                                                                                       ){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   virtual std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-   virtual std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata){ throw UbException(UB_EXARGS,"not implemented for "+(std::string)typeid(*this).name() );  }
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-
-   }
-};
-
-
-#ifdef CAB_RCF
-//serialize von singletons muss hier etwas anders erfolgen ;-)
-template<class Archive>
-inline bool serializeWbWriter(Archive &ar, WbWriter*& writer)
-{
-   std::string writerID;
-
-   if( ArchiveTools::isReading(ar) )
-   {                                                                  
-      ar & writerID;
-      if(writerID!="no_WbWriter") writer = ObFactory<WbWriter>::getInstance()->createObject(writerID);
-      else                        writer = NULL;
-   }                                                                  
-   else /* if (ar.isWrite())) if(Archive::is_saving())*/                                      
-   {                                                                   
-      if(writer) writerID = writer->getClassObjectTypeID(); 
-      else       writerID = "no_WbWriter";
-      ar & writerID;
-   } 
-   return true;
-}
-//////////////////
-template<class Archive, class STL_container>
-inline bool serializeWbWriter(Archive &ar, STL_container& writers)
-{
-   int       nofCounter;
-   std::string    writerID;
-   WbWriter* dummy;
-
-   if( ArchiveTools::isReading(ar) )
-   {                                                                  
-      ar & nofCounter;
-      for(int i=0; i<nofCounter; i++)
-      {
-         serializeWbWriter(ar, dummy);
-         writers.push_back(dummy);
-      }
-   }                                                                  
-   else                                 
-   {                                                                   
-      nofCounter = (int)writers.size();
-      ar & nofCounter;
-      typename STL_container::iterator pos;
-      for(pos=writers.begin(); pos!=writers.end(); ++pos)
-         serializeWbWriter(ar, *pos);
-   }                                                                   
-
-   return true;
-}
-//////////////////////////////////////////////////////////////////////////
-// Spezialisierung des UbPointerWrappers fuer WbWriter... 
-// da man bei singletons keine serializemethode einbauen kann...
-template< >
-class UbPointerWrapper< WbWriter > 
-{
-public:
-   UbPointerWrapper() : pointer(NULL) {}
-
-   UbPointerWrapper(WbWriter* pointer) : pointer(pointer) {}
-
-   WbWriter* get() { return pointer; }
-
-   template<class Archive>
-   void serialize(Archive& ar, const unsigned int version) 
-   {
-      serializeWbWriter(ar, pointer);
-   }
-
-private:
-   WbWriter* pointer;
-};
-
-
-#endif //CAB_RCF
-
-
-#endif //WBWRITER_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.cpp
deleted file mode 100644
index 7a9616fd73b6ee250b1e11ac266d8bea77e478b2..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.cpp
+++ /dev/null
@@ -1,896 +0,0 @@
-#include <basics/writer/WbWriterAvsASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-std::string WbWriterAvsASCII::writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuads to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+avsfilename);
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuads to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOcts to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden "+avsfilename);
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 7; //=hex
-   int nofNodesPerCell = 8; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOcts to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithNodeData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write UCD File "+avsfilename+" konnte nicht geschrieben werden");
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)datanames.size();
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) 
-      { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithNodeData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithCellData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write_OutputFile-UCD File  "+avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = (int)datanames.size();
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   fdummy=0.0;
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //CELL DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofCellData-1; ++d) { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofCellData-1].c_str()); 
-
-   for(int d=0; d<nofCellData-1; ++d) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofCellData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofCellData; ++d)
-      for(int n=0; n<(int)celldata[d].size(); n++)
-         { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithCellData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames, vector< vector< double > >& celldata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithNodeAndCellData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write_OutputFile-UCD File  "+avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)nodedatanames.size();
-   int nofCellData     = (int)celldatanames.size();
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char nodelabels[1024];
-   char nodeunits[1024];
-   strcpy(nodelabels, "");
-   strcpy(nodeunits, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) { strcat(nodelabels, nodedatanames[d].c_str() ); strcat(nodelabels,"."); }
-   strcat(nodelabels, nodedatanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(nodeunits, "no_unit.");
-   strcat(nodeunits, "no_unit");
-
-   out.write((char*)&nodelabels,sizeof(nodelabels));
-   out.write((char*)&nodeunits,sizeof(nodeunits));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //CELL DATA
-   char celllabels[1024];
-   char cellunits[1024];
-   strcpy(celllabels, "");
-   strcpy(cellunits, "");
-
-   for(int d=0; d<nofCellData-1; ++d) { strcat(celllabels, celldatanames[d].c_str() ); strcat(celllabels,"."); }
-   strcat(celllabels, celldatanames[nofCellData-1].c_str()); 
-
-   for(int d=0; d<nofCellData-1; ++d) strcat(cellunits, "no_unit.");
-   strcat(cellunits, "no_unit");
-
-   out.write((char*)&celllabels,sizeof(celllabels));
-   out.write((char*)&cellunits,sizeof(cellunits));
-
-   //nof and type of data
-   idummy = nofCellData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofCellData; ++d)
-      for(int n=0; n<(int)celldata[d].size(); n++)
-      { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeQuadsWithNodeAndCellData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeLines(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeLines to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out);}
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-   
-   out<<"# UCD-File created by WbWriterAvsASCII\n";
-   out<<nofNodes<<" "<<nofLines<<" 0 0 0 "<<endl;
-
-   for(int n=0; n<nofNodes; n++)
-      out<<n+1<<" "<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n])<<" \n";
-
-   for(int l=0; l<nofLines; l++)
-       out<<l+1<<" 2 line "<< val<1>(lines[l])+1 <<" "<< val<2>(lines[l])+1 <<" "<<endl;
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeLines to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeTriangles to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out);}
-      if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden "+avsfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofTrian = (int)triangles.size(); 
-
-   out<<"# UCD-File created by WbWriterAvsASCII\n";
-   out<<nofNodes<<" "<<nofTrian<<" 0 0 0 "<<endl;
-
-   for(int n=0; n<nofNodes; n++)
-   out<<n+1<<" "<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n])<<" \n";
-
-   for(int l=0; l<nofTrian; l++)
-   out<<l+1<<" 2 tri "<< val<1>(triangles[l])+1 <<" "<< val<2>(triangles[l])+1 <<" "<< val<3>(triangles[l])+1 <<" "<<endl;
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeTriangles to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeTrianglesWithNodeData to "<<avsfilename<<" - end");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write_OutputFile-UCD File "+avsfilename+" konnte nicht geschrieben werden");
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)datanames.size();
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 2; //triangle
-   int nofNodesPerCell = 3; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) 
-   { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-      fdummy = 1.;
-      for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsASCII::writeTrianglesWithNodeData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeOctsWithCellData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& celldata)
-{
-    string avsfilename = filename+getFileExtension();
-    UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOctsWithCellData to "<<avsfilename<<" - start");
-
-    ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-    if(!out)
-    { 
-       out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-       string path = UbSystem::getPathFromString(avsfilename);
-       if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-       if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden "+avsfilename);
-    }
-
-    char magic = (char)7;
-    int   idummy;
-    float fdummy;
-
-    int nofNodes = (int)nodes.size();
-    int nofCells = (int)cells.size();
-
-    int nofNodeData     = 0;
-    int nofCellData     = (int)datanames.size();
-    int nofModelData    = 0;
-    int cellType        = 7; //=hex
-    int nofNodesPerCell = 8; 
-
-    out.write((char*)&magic,sizeof(char));      
-    out.write((char*)&nofNodes,sizeof(int));    
-    out.write((char*)&nofCells,sizeof(int));    
-    out.write((char*)&nofNodeData,sizeof(int)); 
-    out.write((char*)&nofCellData,sizeof(int)); 
-    out.write((char*)&nofModelData,sizeof(int));
-
-    idummy = (int)nofCells*nofNodesPerCell;
-    out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-       idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-       idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-       idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-    }
-    //knotennummern der einzelnen zellen
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-    }
-
-    //coords
-    //x1-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x2-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x3-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //out<<"\n";
-
-    //CELL DATA
-    char labels[1024];
-    char units[1024];
-    strcpy(labels, "");
-    strcpy(units, "");
-
-    for(int d=0; d<nofCellData-1; ++d) { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-    strcat(labels, datanames[nofCellData-1].c_str()); 
-
-    for(int d=0; d<nofCellData-1; ++d) strcat(units, "no_unit.");
-    strcat(units, "no_unit");
-
-    out.write((char*)&labels,sizeof(labels));
-    out.write((char*)&units,sizeof(units));
-
-    //nof and type of data
-    idummy = nofCellData;
-    out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-    idummy = 1;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-    //min and max of data
-    fdummy = 0.0;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-    fdummy = 1.0;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    //daten ins file schreiben
-    for(int d=0; d<nofCellData; ++d)
-    for(int n=0; n<(int)celldata[d].size(); n++)
-    { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-    fdummy = 1.;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    out.close(); 
-    UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOctsWithCellData to "<<avsfilename<<" - end");
-
-    return avsfilename;
- }
-/*===============================================================================*/
-std::string WbWriterAvsASCII::writeOctsWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& nodedata)
-{
-    string avsfilename = filename+getFileExtension();
-    UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOctsWithNodeData to "<<avsfilename<<" - start");
-
-    ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-    if(!out)
-    { 
-       out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-       string path = UbSystem::getPathFromString(avsfilename);
-       if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-       if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden "+avsfilename);
-    }
-
-    if((int)nodedata.size()==0) throw UbException(UB_EXARGS,"no nodedata!!!");
-    if(nodes.size()!=nodedata[0].size()) throw UbException(UB_EXARGS,"nodedata != nofNodes!!!");
-
-    char magic = (char)7;
-    int   idummy;
-    float fdummy;
-
-    int nofNodes = (int)nodes.size();
-    int nofCells = (int)cells.size();
-
-    int nofNodeData     = (int)datanames.size();
-    int nofCellData     = 0;
-    int nofModelData    = 0;
-    int cellType        = 7; //=hex
-    int nofNodesPerCell = 8; 
-
-    out.write((char*)&magic,sizeof(char));      
-    out.write((char*)&nofNodes,sizeof(int));    
-    out.write((char*)&nofCells,sizeof(int));    
-    out.write((char*)&nofNodeData,sizeof(int)); 
-    out.write((char*)&nofCellData,sizeof(int)); 
-    out.write((char*)&nofModelData,sizeof(int));
-
-    idummy = (int)nofCells*nofNodesPerCell;
-    out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-       idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-       idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-       idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-    }
-    //knotennummern der einzelnen zellen
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-    }
-
-    //coords
-    //x1-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x2-coords
-    for(int n=0; n<nofNodes; n++)
-       { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x3-coords
-    for(int n=0; n<nofNodes; n++)
-       { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-
-    //NODE DATA
-    char labels[1024];
-    char units[1024];
-    strcpy(labels, "");
-    strcpy(units, "");
-
-    for(int d=0; d<nofNodeData-1; ++d) 
-    { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-    strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-    for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-    strcat(units, "no_unit");
-
-    out.write((char*)&labels,sizeof(labels));
-    out.write((char*)&units,sizeof(units));
-
-    //nof and type of data
-    idummy = nofNodeData;
-    out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-    idummy = 1;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-    //min and max of data
-    fdummy = 0.0;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-    fdummy = 1.0;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    //daten ins file schreiben
-    for(int d=0; d<nofNodeData; ++d)
-       for(int n=0; n<(int)nodedata[d].size(); n++)
-       { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-    fdummy = 1.;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    out.close(); 
-    UBLOG(logDEBUG1,"WbWriterAvsASCII::writeOctsWithNodeData to "<<avsfilename<<" - end");
-
-    return avsfilename;
- }
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.h b/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.h
deleted file mode 100644
index 5c65e1683d3de61a6322be303be76bdfd7f5a677..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsASCII.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef WBWRITERAVSASCII_H
-#define WBWRITERAVSASCII_H
-
-#include <basics/writer/WbWriter.h>
-      
-class WbWriterAvsASCII : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterAvsASCII )
-
-   static WbWriterAvsASCII* getInstance()
-   {
-      static WbWriterAvsASCII instance;
-      return &instance;
-   }
-
-private:
-   WbWriterAvsASCII() : WbWriter() {}                            
-   WbWriterAvsASCII( const WbWriterAvsASCII& );                  //no copy allowed 
-   const WbWriterAvsASCII& operator=( const WbWriterAvsASCII& ); //no copy allowed
-
-public:
-   std::string getFileExtension() { return ".ascii.inp"; }
-   
-   ///////////////////virtual std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) = 0;
-   ///////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //cell numbering:
-   //                    2
-   //                       
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //quads
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata);
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterAvsASCII ,WbWriter>::getInstance()), CAB_WbWriterAvsASCII);
-
-#endif //WBWRITERAVSASCII_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.cpp
deleted file mode 100644
index 34d1d3415cf6ca738b0343b334a9d158d783012a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.cpp
+++ /dev/null
@@ -1,975 +0,0 @@
-#include <basics/writer/WbWriterAvsBinary.h>
-#include <basics/writer/WbWriterAvsASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-std::string WbWriterAvsBinary::writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeLines to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary); }
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)lines.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 1; //line
-   int nofNodesPerCell = 2; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(lines[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(lines[c])+1; out.write((char*)&idummy,sizeof(int)); 
-     
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   fdummy=0.0;
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeLines to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeTriangles to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)triangles.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 2; //triangle
-   int nofNodesPerCell = 3; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(triangles[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(triangles[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(triangles[c])+1; out.write((char*)&idummy,sizeof(int)); 
-
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   fdummy=0.0;
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeTriangles to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuads to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-  
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuads to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOcts to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 7; //=hex
-   int nofNodesPerCell = 8; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-   { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOcts to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeTrianglesWithNodeData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write_OutputFile-UCD File "+avsfilename+" konnte nicht geschrieben werden");
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)datanames.size();
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 2; //triangle
-   int nofNodesPerCell = 3; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) 
-      { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeTrianglesWithNodeData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithNodeData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"write_OutputFile-UCD File "+avsfilename+" konnte nicht geschrieben werden");
-   }
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)datanames.size();
-   int nofCellData     = 0;
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) 
-      { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithNodeData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithCellData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = 0;
-   int nofCellData     = (int)datanames.size();
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   fdummy=0.0;
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //CELL DATA
-   char labels[1024];
-   char units[1024];
-   strcpy(labels, "");
-   strcpy(units, "");
-
-   for(int d=0; d<nofCellData-1; ++d) { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-   strcat(labels, datanames[nofCellData-1].c_str()); 
-
-   for(int d=0; d<nofCellData-1; ++d) strcat(units, "no_unit.");
-   strcat(units, "no_unit");
-
-   out.write((char*)&labels,sizeof(labels));
-   out.write((char*)&units,sizeof(units));
-
-   //nof and type of data
-   idummy = nofCellData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofCellData; ++d)
-      for(int n=0; n<(int)celldata[d].size(); n++)
-         { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithCellData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames, vector< vector< double > >& celldata)
-{
-   string avsfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithNodeAndCellData to "<<avsfilename<<" - start");
-
-   ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-      string path = UbSystem::getPathFromString(avsfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,avsfilename+" konnte nicht geschrieben werden");
-   }
-
-   char magic = (char)7;
-   int   idummy;
-   float fdummy;
-
-   int nofNodes = (int)nodes.size();
-   int nofCells = (int)cells.size();
-
-   int nofNodeData     = (int)nodedatanames.size();
-   int nofCellData     = (int)celldatanames.size();
-   int nofModelData    = 0;
-   int cellType        = 3; //=quad
-   int nofNodesPerCell = 4; 
-
-   out.write((char*)&magic,sizeof(char));      
-   out.write((char*)&nofNodes,sizeof(int));    
-   out.write((char*)&nofCells,sizeof(int));    
-   out.write((char*)&nofNodeData,sizeof(int)); 
-   out.write((char*)&nofCellData,sizeof(int)); 
-   out.write((char*)&nofModelData,sizeof(int));
-
-   idummy = (int)nofCells*nofNodesPerCell;
-   out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-      idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-      idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-      idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-   }
-   //knotennummern der einzelnen zellen
-   for(int c=0; c<nofCells; c++)
-   {
-      idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-      idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-   }
-
-   //coords
-   //x1-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x2-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //x3-coords
-   for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-   //out<<"\n";
-
-   //NODE DATA
-   char nodelabels[1024];
-   char nodeunits[1024];
-   strcpy(nodelabels, "");
-   strcpy(nodeunits, "");
-
-   for(int d=0; d<nofNodeData-1; ++d) { strcat(nodelabels, nodedatanames[d].c_str() ); strcat(nodelabels,"."); }
-   strcat(nodelabels, nodedatanames[nofNodeData-1].c_str()); 
-
-   for(int i=0;i<(nofNodeData-1);i++) strcat(nodeunits, "no_unit.");
-   strcat(nodeunits, "no_unit");
-
-   out.write((char*)&nodelabels,sizeof(nodelabels));
-   out.write((char*)&nodeunits,sizeof(nodeunits));
-
-   //nof and type of data
-   idummy = nofNodeData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofNodeData; ++d)
-      for(int n=0; n<(int)nodedata[d].size(); n++)
-      { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //CELL DATA
-   char celllabels[1024];
-   char cellunits[1024];
-   strcpy(celllabels, "");
-   strcpy(cellunits, "");
-
-   for(int d=0; d<nofCellData-1; ++d) { strcat(celllabels, celldatanames[d].c_str() ); strcat(celllabels,"."); }
-   strcat(celllabels, celldatanames[nofCellData-1].c_str()); 
-
-   for(int d=0; d<nofCellData-1; ++d) strcat(cellunits, "no_unit.");
-   strcat(cellunits, "no_unit");
-
-   out.write((char*)&celllabels,sizeof(celllabels));
-   out.write((char*)&cellunits,sizeof(cellunits));
-
-   //nof and type of data
-   idummy = nofCellData;
-   out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-   idummy = 1;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-   //min and max of data
-   fdummy = 0.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-   fdummy = 1.0;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   //daten ins file schreiben
-   for(int d=0; d<nofCellData; ++d)
-      for(int n=0; n<(int)celldata[d].size(); n++)
-      { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-   fdummy = 1.;
-   for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-   out.close(); 
-   UBLOG(logDEBUG1,"WbWriterAvsBinary::writeQuadsWithNodeAndCellData to "<<avsfilename<<" - end");
-
-   return avsfilename;
-}
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeOctsWithCellData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& celldata)
-{
-    string avsfilename = filename+getFileExtension();
-    UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOctsWithCellData to "<<avsfilename<<" - start");
-
-    ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-    if(!out)
-    { 
-       out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-       string path = UbSystem::getPathFromString(avsfilename);
-       if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-       if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden");
-    }
-
-    char magic = (char)7;
-    int   idummy;
-    float fdummy;
-
-    int nofNodes = (int)nodes.size();
-    int nofCells = (int)cells.size();
-
-    int nofNodeData     = 0;
-    int nofCellData     = (int)datanames.size();
-    int nofModelData    = 0;
-    int cellType        = 7; //=hex
-    int nofNodesPerCell = 8; 
-
-    out.write((char*)&magic,sizeof(char));      
-    out.write((char*)&nofNodes,sizeof(int));    
-    out.write((char*)&nofCells,sizeof(int));    
-    out.write((char*)&nofNodeData,sizeof(int)); 
-    out.write((char*)&nofCellData,sizeof(int)); 
-    out.write((char*)&nofModelData,sizeof(int));
-
-    idummy = (int)nofCells*nofNodesPerCell;
-    out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-       idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-       idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-       idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-    }
-    //knotennummern der einzelnen zellen
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-    }
-
-    //coords
-    //x1-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x2-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x3-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //out<<"\n";
-
-    //CELL DATA
-    char labels[1024];
-    char units[1024];
-    strcpy(labels, "");
-    strcpy(units, "");
-
-    for(int d=0; d<nofCellData-1; ++d) { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-    strcat(labels, datanames[nofCellData-1].c_str()); 
-
-    for(int d=0; d<nofCellData-1; ++d) strcat(units, "no_unit.");
-    strcat(units, "no_unit");
-
-    out.write((char*)&labels,sizeof(labels));
-    out.write((char*)&units,sizeof(units));
-
-    //nof and type of data
-    idummy = nofCellData;
-    out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-    idummy = 1;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-    //min and max of data
-    fdummy = 0.0;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-    fdummy = 1.0;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    //daten ins file schreiben
-    for(int d=0; d<nofCellData; ++d)
-    for(int n=0; n<(int)celldata[d].size(); n++)
-    { fdummy=(float)celldata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-    fdummy = 1.;
-    for(int i=0;i<nofCellData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    out.close(); 
-    UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOctsWithCellData to "<<avsfilename<<" - end");
-
-    return avsfilename;
- }
-/*===============================================================================*/
-std::string WbWriterAvsBinary::writeOctsWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& nodedata)
-{
-    string avsfilename = filename+getFileExtension();
-    UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOctsWithNodeData to "<<avsfilename<<" - start");
-
-    ofstream out(avsfilename.c_str(),ios::out|ios::binary);
-    if(!out)
-    { 
-       out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!outfile) weiterhin true!!!
-       string path = UbSystem::getPathFromString(avsfilename);
-       if(path.size()>0){UbSystem::makeDirectory(path);out.open(avsfilename.c_str(),ios::out|ios::binary);}
-       if(!out) throw UbException(UB_EXARGS,"file konnte nicht geschrieben werden");
-    }
-
-    if((int)nodedata.size()==0) throw UbException(UB_EXARGS,"no nodedata!!!");
-    if(nodes.size()!=nodedata[0].size()) throw UbException(UB_EXARGS,"nodedata != nofNodes!!!");
-
-    char magic = (char)7;
-    int   idummy;
-    float fdummy;
-
-    int nofNodes = (int)nodes.size();
-    int nofCells = (int)cells.size();
-
-    int nofNodeData     = (int)datanames.size();
-    int nofCellData     = 0;
-    int nofModelData    = 0;
-    int cellType        = 7; //=hex
-    int nofNodesPerCell = 8; 
-
-    out.write((char*)&magic,sizeof(char));      
-    out.write((char*)&nofNodes,sizeof(int));    
-    out.write((char*)&nofCells,sizeof(int));    
-    out.write((char*)&nofNodeData,sizeof(int)); 
-    out.write((char*)&nofCellData,sizeof(int)); 
-    out.write((char*)&nofModelData,sizeof(int));
-
-    idummy = (int)nofCells*nofNodesPerCell;
-    out.write((char*)&idummy,sizeof(int)); //(nof nodes) * (nodes per cell)
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy=c+1;             out.write((char*)&idummy,sizeof(int)); //cell id
-       idummy=1;               out.write((char*)&idummy,sizeof(int)); //mat
-       idummy=nofNodesPerCell; out.write((char*)&idummy,sizeof(int)); //nodes per cell
-       idummy=cellType;        out.write((char*)&idummy,sizeof(int)); //cell type 
-    }
-    //knotennummern der einzelnen zellen
-    for(int c=0; c<nofCells; c++)
-    {
-       idummy = val<1>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<2>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<3>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<4>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<5>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<6>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<7>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-       idummy = val<8>(cells[c])+1; out.write((char*)&idummy,sizeof(int)); 
-    }
-
-    //coords
-    //x1-coords
-    for(int n=0; n<nofNodes; n++)
-      { fdummy = (float)( val<1>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x2-coords
-    for(int n=0; n<nofNodes; n++)
-       { fdummy = (float)( val<2>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-    //x3-coords
-    for(int n=0; n<nofNodes; n++)
-       { fdummy = (float)( val<3>(nodes[n]) ); out.write((char*)&fdummy ,sizeof(float)); }
-
-    //NODE DATA
-    char labels[1024];
-    char units[1024];
-    strcpy(labels, "");
-    strcpy(units, "");
-
-    for(int d=0; d<nofNodeData-1; ++d) 
-    { strcat(labels, datanames[d].c_str() ); strcat(labels,"."); }
-    strcat(labels, datanames[nofNodeData-1].c_str()); 
-
-    for(int i=0;i<(nofNodeData-1);i++) strcat(units, "no_unit.");
-    strcat(units, "no_unit");
-
-    out.write((char*)&labels,sizeof(labels));
-    out.write((char*)&units,sizeof(units));
-
-    //nof and type of data
-    idummy = nofNodeData;
-    out.write((char*)&idummy,sizeof(int)); //Datentypen pro knoten (hier = nof_node_data, da NUR skalare)
-
-    idummy = 1;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&idummy,sizeof(int)); //jeder Datentyp ist ein skalarer Wert
-
-    //min and max of data
-    fdummy = 0.0;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //min Wert pro Datentyp
-    fdummy = 1.0;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    //daten ins file schreiben
-    for(int d=0; d<nofNodeData; ++d)
-       for(int n=0; n<(int)nodedata[d].size(); n++)
-       { fdummy=(float)nodedata[d][n]; out.write((char*)&fdummy,sizeof(float)); }
-
-    fdummy = 1.;
-    for(int i=0;i<nofNodeData;i++) out.write((char*)&fdummy,sizeof(float)); //max Wert pro Datentyp
-
-    out.close(); 
-    UBLOG(logDEBUG1,"WbWriterAvsBinary::writeOctsWithNodeData to "<<avsfilename<<" - end");
-
-    return avsfilename;
- }
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.h b/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.h
deleted file mode 100644
index 39a5019e92568ea529aacb257253fc5274a4ae2e..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterAvsBinary.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef WBWRITERAVSBINARY_H
-#define WBWRITERAVSBINARY_H
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterAvsBinary : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterAvsBinary )
-
-   static WbWriterAvsBinary* getInstance()
-   {
-      static WbWriterAvsBinary instance;
-      return &instance;
-   }
-private:
-   WbWriterAvsBinary() : WbWriter() {}                             
-   WbWriterAvsBinary( const WbWriterAvsBinary& );                  //no copy allowed 
-   const WbWriterAvsBinary& operator=( const WbWriterAvsBinary& ); //no copy allowed
-
-public:
-   std::string getFileExtension() { return ".bin.inp"; }
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //cell numbering:
-   //                    2
-   //                      
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   
-   //////////////////////////////////////////////////////////////////////////
-   //quads
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename, std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames, std::vector< std::vector< double > >& celldata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata);
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterAvsBinary ,WbWriter>::getInstance()), CAB_WbWriterAvsBinary);
-
-#endif //WBWRITERAVSBINARY_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.cpp
deleted file mode 100644
index 20b1774de592e73bd0bb95d52cffeeacd1431345..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifdef CAB_ZLIB
-   #include <basics/writer/WbWriterBOBJ.h>
-   #include <basics/utilities/UbLogger.h>
-   #include <cstring>
-
-   #include <zlib.h>
-
-
-   using namespace std;
-   /*===============================================================================*/
-   std::string WbWriterBOBJ::writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles)
-   {
-      string bobjFilename=filename+getFileExtension();
-      UBLOG(logDEBUG1,"WbWriterBOBJ::writeTriangles to "<<bobjFilename<<" - start");
-
-      gzFile gzf = gzopen( bobjFilename.c_str(), "wb1" );
-      
-      size_t nofNodes     = nodes.size(); 
-      size_t nofTriangles = triangles.size(); 
-
-      //write to file
-      size_t numVerts;
-      //double v[3];
-      if(sizeof(numVerts)!=4) { throw UbException(UB_EXARGS,"danger..."); }
-      numVerts = nofNodes;
-      gzwrite(gzf, &numVerts, sizeof(numVerts));
-
-      for(size_t k=0; k<nofNodes; k++) {
-         float vertp = val<1>(nodes[k]);
-         gzwrite(gzf, &vertp, sizeof(vertp));
-         vertp       = val<2>(nodes[k]);
-         gzwrite(gzf, &vertp, sizeof(vertp));
-         vertp       = val<3>(nodes[k]);
-         gzwrite(gzf, &vertp, sizeof(vertp));
-      }
-
-      //NORMAL VECTOR
-      //double n[3];
-      gzwrite(gzf, &numVerts, sizeof(numVerts));
-      for(size_t k=0; k<nofNodes; k++) {
-         //poly->GetPointData()->GetNormals()->GetTuple(k, n);
-         float normp = 0.0;//n[0];
-         gzwrite(gzf, &normp, sizeof(normp));
-         normp = 0.0;//n[1];
-         gzwrite(gzf, &normp, sizeof(normp));
-         normp = 0.0;//n[2];
-         gzwrite(gzf, &normp, sizeof(normp));
-      }
-
-      //vtkIdType npts = 3;
-      //vtkIdType* pts;
-      size_t numTris = nofTriangles;
-      gzwrite(gzf, &numTris, sizeof(numTris));
-      for(size_t k=0; k<nofTriangles/*(size_t)poly->GetNumberOfPolys()*/; k++) {
-         //poly->GetPolys()->GetNextCell(npts, pts);
-         //int triIndex = *pts;
-         //gzwrite(gzf, &triIndex, sizeof(triIndex)); 
-         //triIndex = *(pts+1);
-         //gzwrite(gzf, &triIndex, sizeof(triIndex)); 
-         //triIndex = *(pts+2);
-         //gzwrite(gzf, &triIndex, sizeof(triIndex));
-         //poly->GetPolys()->GetNextCell(npts, pts);
-         int triIndex = val<1>(triangles[k]);//*pts;
-         gzwrite(gzf, &triIndex, sizeof(triIndex)); 
-         triIndex     = val<2>(triangles[k]);//*(pts+1);
-         gzwrite(gzf, &triIndex, sizeof(triIndex)); 
-         triIndex     = val<3>(triangles[k]);//*(pts+2);
-         gzwrite(gzf, &triIndex, sizeof(triIndex));
-      }
-
-      gzclose( gzf );
-
-      UBLOG(logDEBUG1,"WbWriterBOBJ::writeTriangles to "<<bobjFilename<<" - end");
-
-      return bobjFilename;
-   }
-   /*===============================================================================*/
-
-#endif //CAB_ZLIB
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.h b/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.h
deleted file mode 100644
index fec3454c3d4cbafb5d360c37f99a3a847f052dec..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterBOBJ.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifdef CAB_ZLIB
-   #ifndef WBWRITERBOBJ_H
-   #define WBWRITERBOBJ_H
-
-   #include <string>
-   #include <basics/writer/WbWriter.h>
-
-   class WbWriterBOBJ  : public WbWriter
-   {
-   public:
-      OBCREATOR_EXT( WbWriterBOBJ )
-
-         static WbWriterBOBJ* getInstance()
-      {
-         static WbWriterBOBJ instance;
-         return &instance;
-      }
-   private:
-      WbWriterBOBJ() : WbWriter() 
-      {
-         if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"error char  type mismatch");
-         if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
-         if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
-      }
-      WbWriterBOBJ( const WbWriterBOBJ& );                  //no copy allowed 
-      const WbWriterBOBJ& operator=( const WbWriterBOBJ& ); //no copy allowed
-
-      static std::string  pvdEndTag;
-
-   public:
-      std::string getFileExtension()  { return "BOBJ.gz"; }
-
-      std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-   };
-
-   UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterBOBJ ,WbWriter>::getInstance()), CAB_WbWriterVtkXmlASCII);
-
-   #endif //WBWRITERBOBJ_H
-
-#endif //CAB_ZLIB
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.cpp
deleted file mode 100644
index 4fa1a6381babc0837a2f3c65c576cfe76b75431c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-#include <basics/writer/WbWriterSunflow.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-/*===============================================================================*/
-std::string WbWriterSunflow::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string sunflowFilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterSunflow::writeTriangles to "<<sunflowFilename<<" - start");
-
-   std::ofstream out(sunflowFilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(sunflowFilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(sunflowFilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+sunflowFilename);
-   }
-
-   // General part
-
-   // Image details
-   out<<"image {"              <<endl;
-   out<<"   resolution 640 480"<<endl;
-   out<<"   aa 0 1"            <<endl;
-   out<<"   filter mitchell"   <<endl;
-   out<<"}"                    <<endl<<endl;
-
-   // Camera position
-   out<<"camera {"                 <<endl;
-   out<<"   type pinhole"          <<endl;
-   out<<"   eye    -0.25 -0.3 0.13"<<endl;
-   out<<"   target -0.1 0.1 0.13"  <<endl;
-   out<<"   up     0 0 1"          <<endl;
-   out<<"   fov    60"             <<endl;
-   out<<"   aspect 1.333333"       <<endl;
-   out<<"}"                        <<endl<<endl;
-
-   // Light
-   out<<"light {"                  <<endl;
-   out<<"   type ibl"              <<endl;
-   out<<"   image sky_small.hdr"   <<endl;
-   out<<"   center 0 -1 0"         <<endl;
-   out<<"   up 0 0 1"              <<endl;
-   out<<"   lock true"             <<endl;
-   out<<"   samples 200"           <<endl;
-   out<<"}"                        <<endl<<endl;
-
-   // Shaders
-   out<<"shader {"                 <<endl;
-   out<<"   name default-shader"   <<endl;
-   out<<"   type diffuse"          <<endl;
-   out<<"   diff 0.25 0.25 0.25"   <<endl;
-   out<<"}"                        <<endl<<endl;
-
-   out<<"shader {"                 <<endl;
-   out<<"   name Glass"            <<endl;
-   out<<"   type glass"            <<endl;
-   out<<"   eta 1.333"             <<endl;
-   out<<"   color 0.1 0.3 0.8"     <<endl;
-   out<<"}"                        <<endl<<endl;
-                                   
-   out<<"shader {"                 <<endl;
-   out<<"   name Mirror"           <<endl;
-   out<<"   type mirror"           <<endl;
-   out<<"   refl 0.7 0.7 0.7"      <<endl;
-   out<<"}"                        <<endl<<endl;
-
-   // Objects
-   // a) Ground plane
-   out<<"object {"                 <<endl;
-   out<<"   shader default-shader" <<endl;
-   out<<"   type plane"            <<endl;
-   out<<"   p 0 0 0"               <<endl;
-   out<<"   n 0 0 1"               <<endl;
-   out<<"}"                        <<endl<<endl;
-
-   // b) Mesh
-   out<<"object {"                 <<endl;
-   out<<"   shader Glass"          <<endl;
-   out<<"   transform {"           <<endl;
-   out<<"      rotatey 270.0"      <<endl;
-   out<<"   }"                     <<endl;
-   out<<"   type generic-mesh"     <<endl;
-   out<<"      name polySurfac"    <<endl<<endl;
-
-
-   // POINTS SECTION
-   int nofNodes = (int)nodes.size(); 
-   out<<"   points "<<nofNodes<<endl;
-   for(int n=0; n<nofNodes; n++)
-      out<<"      "<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<endl;
-
-   // TRIANGLES SECTION
-   int nofTriangles= (int)triangles.size(); 
-   out<<"   triangles "<<nofTriangles<<endl;
-   for(int c=0; c<nofTriangles; c++)
-      out<<"      "<<val<1>(triangles[c]) <<" "<< val<2>(triangles[c])<<" "<< val<3>(triangles[c])<<endl;
-
-   // FOOTER
-   out<<"   normals none" << endl;
-   out<<"   uvs none"     << endl;
-   out<<"}"               << endl;
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterSunflow::writeTriangles to "<<sunflowFilename<<" - end");
-
-   return sunflowFilename;
-}
-/*===============================================================================*/
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.h b/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.h
deleted file mode 100644
index 5681eac73dc63a24c703120bb58821312aab2090..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterSunflow.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef WbWriterSunflow_H
-#define WbWriterSunflow_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterSunflow  : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterSunflow )
-
-   static WbWriterSunflow* getInstance()
-   {
-      static WbWriterSunflow instance;
-      return &instance;
-   }
-private:
-   WbWriterSunflow() : WbWriter() 
-   {
-      if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"error char  type mismatch");
-      if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
-      if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
-   }
-   WbWriterSunflow( const WbWriterSunflow& );                  //no copy allowed 
-   const WbWriterSunflow& operator=( const WbWriterSunflow& ); //no copy allowed
-
-   static std::string  pvdEndTag;
-
-public:
-   std::string getFileExtension()  { return "ascii.sunflow"; }
-
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterSunflow ,WbWriter>::getInstance()), CAB_WbWriterSunflow);
-
-#endif //WbWriterSunflow_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.cpp
deleted file mode 100644
index b2f83ef59c09e5d9b00b15b90c3d166042444f6a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <basics/writer/WbWriterTecPlotASCII.h>
-#include <basics/utilities/UbLogger.h>
-
-using namespace std;
-
-/*===============================================================================*/
-string WbWriterTecPlotASCII::writeOctsWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& nodedata)
-{
-   string tecplotfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterTecPlotASCII::writeOctsWithNodeData to "<<tecplotfilename<<" - start");
-
-   ofstream out(tecplotfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(tecplotfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(tecplotfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+tecplotfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"TITLE = VirtualFluids OctGrid from "<<UbSystem::getTimeStamp()<<endl;
-
-   out<<"VARIABLES = \"X\", \"Y\", \"Z\"";
-   for(size_t d=0; d<datanames.size(); d++)   
-      out<<", \""<<datanames[d]<<"\"";
-   out<<endl;
-
-   out<<"ZONE NODES="<<nofNodes<<", ELEMENTS="<<nofCells<<", DATAPACKING=POINT, ZONETYPE=FEBRICK"<<endl;
-   for(size_t n=0; n<nodes.size(); n++)   
-   {
-      UbTupleFloat3& coords = nodes[n];
-      out<<val<1>(coords)<<" "
-         <<val<2>(coords)<<" "
-         <<val<3>(coords);
-      for(size_t d=0; d<datanames.size(); d++)   
-         out<<" "<<nodedata[d][n];
-      out<<endl;
-   }
-
-   for(size_t c=0; c<cells.size(); c++)   
-   {
-      UbTupleInt8& cell = cells[c];
-      out<<val<1>(cell)<<" "
-         <<val<2>(cell)<<" "
-         <<val<3>(cell)<<" "
-         <<val<4>(cell)<<" "
-         <<val<5>(cell)<<" "
-         <<val<6>(cell)<<" "
-         <<val<7>(cell)<<" "
-         <<val<8>(cell)<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterTecPlotASCII::writeOctsWithNodeData to "<<tecplotfilename<<" - end");
-
-   return tecplotfilename;
-}
-/*===============================================================================*/
-string WbWriterTecPlotASCII::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   vector<string > datanames;
-   vector<vector<double > > nodedata;
-   return writeOctsWithNodeData(filename,nodes,cells,datanames,nodedata);
-}
-/*===============================================================================*/
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.h b/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.h
deleted file mode 100644
index ff50c9c928d3636c0a894a77c5e2d523fb88be86..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterTecPlotASCII.h
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef WBWRITERTECPLOTASCII_H
-#define WBWRITERTECPLOTASCII_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterTecPlotASCII  : public WbWriter
-{
-public:
-   #ifndef SWIG
-   OBCREATOR_EXT( WbWriterTecPlotASCII )
-   #endif
-
-   static WbWriterTecPlotASCII* getInstance()
-   {
-      static WbWriterTecPlotASCII instance;
-      return &instance;
-   }
-private:
-   WbWriterTecPlotASCII() : WbWriter() 
-   {
-      if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"machine error char  type mismatch");
-      if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"machine error int   type mismatch");
-      if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"machine error float type mismatch");
-   }
-
-   WbWriterTecPlotASCII( const WbWriterTecPlotASCII& );                  //no copy allowed 
-   const WbWriterTecPlotASCII& operator=( const WbWriterTecPlotASCII& ); //no copy allowed
-
-   static std::string  pvdEndTag;
-public:
-   std::string getFileExtension() { return ".ascii.dat";   }
-
-   //write a metafile 
-//    std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-//    std::string addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-//    std::string writeParallelFile(const std::string& filename,std::vector<std::string>& pieceSources, std::vector<std::string>& pointDataNames, std::vector<std::string>& cellDataNames);
-
-   //////////////////////////////////////////////////////////////////////////
-   //nodes
-//    std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes);
-//    std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-//    std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-//    std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-// 
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //                    2
-   //                     
-   //                  0---1
-   //nodenumbering must start with 0!
-//    std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-//    std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //2D
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-
-//    std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-//    std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-//    std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-//    std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-//                                              std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-//                                              std::vector< std::vector< double > >& celldata                                                                    );
-   
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   //std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-   
-};
-
-#ifndef SWIG
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterTecPlotASCII ,WbWriter>::getInstance()), CAB_WbWriterTecPlotASCII);
-#endif
-
-#endif //WBWRITERTECPLOTASCII_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.cpp
deleted file mode 100644
index 0356f38fa155525ac929c81a7117acba2ffbd0bc..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.cpp
+++ /dev/null
@@ -1,601 +0,0 @@
-#include <basics/writer/WbWriterVtkASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-std::string WbWriterVtkASCII::writeQuads(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuads to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-   
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<5*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"4 "
-         << val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"8"<<endl;
-   out<<endl;
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuads to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
- 
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<5*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"4 "
-      << val<1>(cells[c]) <<" "
-      << val<2>(cells[c]) <<" "
-      << val<4>(cells[c]) <<" "
-      << val<3>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"8"<<endl;
-   out<<endl;
-
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<"\n";
-      
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithCellData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<5*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"4 "
-      << val<1>(cells[c]) <<" "
-      << val<2>(cells[c]) <<" "
-      << val<4>(cells[c]) <<" "
-      << val<3>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"8"<<endl;
-   out<<endl;
-
-   //write data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithCellData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, 
-                                                            vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames,
-                                                            vector< vector< double > >& celldata                                                                       )
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<5*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"4 "
-         << val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"8"<<endl;
-   out<<endl;
-
-   //write node data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)nodedatanames.size(); ++s)
-   {
-      out<<"SCALARS "<<nodedatanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   //write cell data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)celldatanames.size(); ++s)
-   {
-      out<<"SCALARS "<<celldatanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeLines(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines) 
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeLines to "<<vtkfilename<<" - start");
-   
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-   
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n])<<" \n";
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofLines<<" "<<3*nofLines<<"\n";
-   int nr = 0;
-   for(int l=0; l<nofLines; l++)
-   {
-      int el = nr+1;	
-      out<<"2 "<< val<1>(lines[l]) <<" "<< val<2>(lines[l]) <<" "<<endl;
-      nr=el+1;
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofLines<<"\n";
-   for(int l=0; l<nofLines; l++) out<<"3"<<endl;
-   out<<endl;
-
-   out.close();
-   
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeLines to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeTriangles to "<<vtkfilename<<" - start");
-   
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes     = (int)nodes.size(); 
-   int nofTriangles = (int)triangles.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n])<<" \n";
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofTriangles<<" "<<4*nofTriangles<<"\n";
-   int nr = 0;
-   for(int t=0; t<nofTriangles; t++)
-   {
-      int el = nr+1;	
-      out<<"3 "<< val<1>(triangles[t]) <<" "<< val<2>(triangles[t]) <<" "<< val<3>(triangles[t]) <<" "<<endl;
-      nr=el+1;
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofTriangles<<"\n";
-   for(int l=0; l<nofTriangles; l++) out<<"5"<<endl;
-   out<<endl;
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeTriangles to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeTrianglesWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt3 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - start");
-   
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<4*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"3 "<< val<1>(cells[c]) <<" "<< val<2>(cells[c]) <<" "<< val<3>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"5"<<endl;
-   out<<endl;
-
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeOctsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOctsWithCellData to "<<vtkfilename<<" - start");
-   
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<9*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-   {   out<<"8 "
-         << val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" "
-         << val<5>(cells[c]) <<" "
-         << val<6>(cells[c]) <<" "
-         << val<8>(cells[c]) <<" "
-         << val<7>(cells[c]) <<" \n";
-   }
-
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"11 "<<endl;
-   out<<endl;
-
-   //write data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOctsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeOctsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOctsWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //write geo
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<9*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-   {   out<<"8 "
-         << val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" "
-         << val<5>(cells[c]) <<" "
-         << val<6>(cells[c]) <<" "
-         << val<8>(cells[c]) <<" "
-         << val<7>(cells[c]) <<" \n";
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"11"<<endl;
-   out<<endl;
-
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<"\n";
-
-      out<<endl;
-   }
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOctsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkASCII::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOcts to "<<vtkfilename<<" - start");
-   
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VtkASCII FILE
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"GeoFile"<<"\n";
-   out<<"ASCII"<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<" \n";
-
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<9*nofCells<<"\n";
-   for(int c=0; c<(int)cells.size(); c++)
-      out<<"8 "
-      << val<1>(cells[c]) <<" "
-      << val<2>(cells[c]) <<" "
-      << val<4>(cells[c]) <<" "
-      << val<3>(cells[c]) <<" "
-      << val<5>(cells[c]) <<" "
-      << val<6>(cells[c]) <<" "
-      << val<8>(cells[c]) <<" "
-      << val<7>(cells[c]) <<" \n";
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<nofCells<<"\n";
-   for(int i=0; i<nofCells; i++) out<<"11"<<endl;
-   out<<endl;
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkASCII::writeOcts to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.h b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.h
deleted file mode 100644
index 914ab2cab9a37ace767e9fd389c79401d12c5a8a..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkASCII.h
+++ /dev/null
@@ -1,78 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef WBWRITERVTKASCII_H
-#define WBWRITERVTKASCII_H
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterVtkASCII : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterVtkASCII )
-
-   static WbWriterVtkASCII* getInstance()
-   {
-      static WbWriterVtkASCII instance;
-      return &instance;
-   }
-private:
-   WbWriterVtkASCII() : WbWriter() {}                            
-   WbWriterVtkASCII( const WbWriterVtkASCII& );                  //no copy allowed 
-   const WbWriterVtkASCII& operator=( const WbWriterVtkASCII& ); //no copy allowed
-
-public:
-   std::string getFileExtension()  { return ".ascii.vtk"; }
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //cell numbering:
-   //                    2
-   //                     
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //2D
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                             std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                       );
-   
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsBinary(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterVtkASCII,WbWriter>::getInstance()), CAB_WbWriterVtkASCII);
-
-#endif //WBWRITERVTKASCII_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.cpp
deleted file mode 100644
index f766fa402236f3fa47a218a54e3187fb3b3a9fb0..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.cpp
+++ /dev/null
@@ -1,747 +0,0 @@
-#include <basics/writer/WbWriterVtkBinary.h>
-#include <basics/writer/WbWriterVtkASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-std::string WbWriterVtkBinary::writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines)
-{
-   return WbWriterVtkASCII::getInstance()->writeLines(filename,nodes,lines);
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells)
-{
-   return WbWriterVtkASCII::getInstance()->writeTriangles(filename,nodes,cells);
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   return WbWriterVtkASCII::getInstance()->writeTrianglesWithNodeData(filename,nodes,cells,datanames,nodedata);
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeQuads(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells)
-{
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuads to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //HEADER-SECTION
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = (float)val<1>(nodes[n]); 
-      float x2 = (float)val<2>(nodes[n]); 
-      float x3 = (float)val<3>(nodes[n]); 
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*5<<"\n";
-
-   int nodesPerCellDummy = 4;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int SW = val<1>(cells[c]); 
-      int SE = val<2>(cells[c]); 
-      int NE = val<3>(cells[c]);
-      int NW = val<4>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&SW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&SE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&SW,sizeof(int));
-      out.write((char*)&SE,sizeof(int));
-      out.write((char*)&NW,sizeof(int));
-      out.write((char*)&NE,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 8;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuads to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = (float)val<1>(nodes[n]); 
-      float x2 = (float)val<2>(nodes[n]); 
-      float x3 = (float)val<3>(nodes[n]); 
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*5<<"\n";
-
-   int nodesPerCellDummy = 4;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int SW = val<1>(cells[c]); 
-      int SE = val<2>(cells[c]); 
-      int NE = val<3>(cells[c]);
-      int NW = val<4>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&SW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&SE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&SW,sizeof(int));
-      out.write((char*)&SE,sizeof(int));
-      out.write((char*)&NW,sizeof(int));
-      out.write((char*)&NE,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 8;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-
-   //DATA SECTION
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      if((int)nodedata[s].size() != nofNodes) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-      { 
-         float dummy = (float)nodedata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   //HEADER-SECTION
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = (float)val<1>(nodes[n]); 
-      float x2 = (float)val<2>(nodes[n]); 
-      float x3 = (float)val<3>(nodes[n]); 
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*5<<"\n";
-
-   int nodesPerCellDummy = 4;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int SW = val<1>(cells[c]); 
-      int SE = val<2>(cells[c]); 
-      int NE = val<3>(cells[c]);
-      int NW = val<4>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&SW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&SE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&SW,sizeof(int));
-      out.write((char*)&SE,sizeof(int));
-      out.write((char*)&NW,sizeof(int));
-      out.write((char*)&NE,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 8;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-
-   //DATA SECTION
-   //write data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      if((int)celldata[s].size() != nofCells) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-      { 
-         float dummy = (float)celldata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithCellData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, 
-                                                             vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames,
-                                                             vector< vector< double > >& celldata                                                                    )
-{
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //HEADER-SECTION
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = (float)val<1>(nodes[n]); 
-      float x2 = (float)val<2>(nodes[n]); 
-      float x3 = (float)val<3>(nodes[n]);  
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*5<<"\n";
-
-   int nodesPerCellDummy = 4;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int SW = val<1>(cells[c]); 
-      int SE = val<2>(cells[c]); 
-      int NE = val<3>(cells[c]);
-      int NW = val<4>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&SW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&SE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&NE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&SW,sizeof(int));
-      out.write((char*)&SE,sizeof(int));
-      out.write((char*)&NW,sizeof(int));
-      out.write((char*)&NE,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 8;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-
-   //NODE DATA SECTION
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)nodedatanames.size(); ++s)
-   {
-      if((int)nodedata[s].size() != nofNodes) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<nodedatanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-      { 
-         float dummy = (float)nodedata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-   
-   //CELL DATA SECTION
-   //write data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)celldatanames.size(); ++s)
-   {
-      if((int)celldata[s].size() != nofCells) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<celldatanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-      { 
-         float dummy = (float)celldata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeOctsWithCellData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& celldata)
-{
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOctsWithCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //HEADER-SECTION
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = (float)val<1>(nodes[n]); 
-      float x2 = (float)val<2>(nodes[n]); 
-      float x3 = (float)val<3>(nodes[n]);
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*9<<"\n";
-
-   int nodesPerCellDummy = 8;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int BSW = val<1>(cells[c]);  int TSW = val<5>(cells[c]);
-      int BSE = val<2>(cells[c]);  int TSE = val<6>(cells[c]);
-      int BNW = val<3>(cells[c]);  int TNW = val<7>(cells[c]);
-      int BNE = val<4>(cells[c]);  int TNE = val<8>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&BSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&BSW,sizeof(int));
-      out.write((char*)&BSE,sizeof(int));
-      out.write((char*)&BNE,sizeof(int));
-      out.write((char*)&BNW,sizeof(int));
-      out.write((char*)&TSW,sizeof(int));
-      out.write((char*)&TSE,sizeof(int));
-      out.write((char*)&TNE,sizeof(int));
-      out.write((char*)&TNW,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 11;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-
-   //CELL DATA SECTION
-   //write data section
-   out<<"CELL_DATA "<<nofCells<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      if((int)celldata[s].size() != nofCells) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)celldata[s].size(); d++)
-      { 
-         float dummy = (float)celldata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOctsWithCellData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeOctsWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& nodedata)
-{
-   //HEADER-SECTION
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOctsWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = val<1>(nodes[n]); 
-      float x2 = val<2>(nodes[n]); 
-      float x3 = val<3>(nodes[n]); 
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*9<<"\n";
-
-   int nodesPerCellDummy = 8;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int BSW = val<1>(cells[c]);  int TSW = val<5>(cells[c]);
-      int BSE = val<2>(cells[c]);  int TSE = val<6>(cells[c]);
-      int BNW = val<3>(cells[c]);  int TNW = val<7>(cells[c]);
-      int BNE = val<4>(cells[c]);  int TNE = val<8>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&BSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNE,sizeof(int));
-      }
-
-      out.write((char*)&nodesPerCellDummy,sizeof(int));
-      out.write((char*)&BSW,sizeof(int));
-      out.write((char*)&BSE,sizeof(int));
-      out.write((char*)&BNE,sizeof(int));
-      out.write((char*)&BNW,sizeof(int));
-      out.write((char*)&TSW,sizeof(int));
-      out.write((char*)&TSE,sizeof(int));
-      out.write((char*)&TNE,sizeof(int));
-      out.write((char*)&TNW,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 11;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-
-   //NODE DATA SECTION
-   //write data section
-   out<<"POINT_DATA "<<nofNodes<<"\n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      if((int)nodedata[s].size() != nofNodes) throw UbException(UB_EXARGS,"datasetsize must be equal to nofNodes");
-      out<<"SCALARS "<<datanames[s]<<" float 1 \n LOOKUP_TABLE default \n";
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-      { 
-         float dummy = (float)nodedata[s][d]; 
-         if(swapByte) UbSystem::swapByteOrder((unsigned char*)&dummy,sizeof(float)); 
-         out.write((const char*)&dummy,sizeof(float));
-      }
-      out<<endl;
-   }
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOctsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkBinary::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   string vtkfilename = filename + getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOcts to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ofstream::out | ofstream::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //HEADER-SECTION
-   //WRITE BIGENDIAN VtkBinary FILE
-   bool swapByte = UbSystem::isLittleEndian();
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   out<<"# vtk DataFile Version 4.0"<<"\n";
-   out<<"D3Q19MasterNodeGrid"<<"\n";
-   out<<""<<"\n";
-
-   //POINTS SECTION
-   out<<"DATASET UNSTRUCTURED_GRID"<<"\n";
-   out<<"POINTS "<<nofNodes<<" float"<<"\n";
-   for(int n=0; n<nofNodes; n++)
-   {
-      float x1 = val<1>(nodes[n]); 
-      float x2 = val<2>(nodes[n]); 
-      float x3 = val<3>(nodes[n]); 
-
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&x1,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x2,sizeof(float));
-         UbSystem::swapByteOrder((unsigned char*)&x3,sizeof(float));
-      }
-
-      out.write((char*)&x1,sizeof(float));
-      out.write((char*)&x2,sizeof(float));
-      out.write((char*)&x3,sizeof(float));
-   }
-   out<<"\n";
-
-   //CELLS SECTION
-   out<<"CELLS "<<nofCells<<" "<<nofCells*9<<"\n";
-
-   int nodesPerCellDummy = 8;  //nofNodesPerCell         
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&nodesPerCellDummy,sizeof(int));
-   for(int c=0; c<(int)cells.size(); c++)
-   {
-      int BSW = val<1>(cells[c]);  int TSW = val<5>(cells[c]);
-      int BSE = val<2>(cells[c]);  int TSE = val<6>(cells[c]);
-      int BNW = val<3>(cells[c]);  int TNW = val<7>(cells[c]);
-      int BNE = val<4>(cells[c]);  int TNE = val<8>(cells[c]);
-      if(swapByte)
-      {
-         UbSystem::swapByteOrder((unsigned char*)&BSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&BNE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TSE,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNW,sizeof(int));
-         UbSystem::swapByteOrder((unsigned char*)&TNE,sizeof(int));
-      }
-
-       out.write((char*)&nodesPerCellDummy,sizeof(int));
-       out.write((char*)&BSW,sizeof(int));
-       out.write((char*)&BSE,sizeof(int));
-       out.write((char*)&BNE,sizeof(int));
-       out.write((char*)&BNW,sizeof(int));
-       out.write((char*)&TSW,sizeof(int));
-       out.write((char*)&TSE,sizeof(int));
-       out.write((char*)&TNE,sizeof(int));
-       out.write((char*)&TNW,sizeof(int));
-   }
-   out<<"\n";
-
-   out<<"CELL_TYPES "<<(int)cells.size()<<"\n";
-   int celltype = 11;
-   if(swapByte) UbSystem::swapByteOrder((unsigned char*)&celltype,sizeof(int));
-   for(int c=0; c<nofCells; c++)
-      out.write((char*)&celltype,sizeof(int));
-
-   out<<endl;
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkBinary::writeOcts to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.h b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.h
deleted file mode 100644
index dca3567d3505e0bea3c549ab601cb478c0bb17ed..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkBinary.h
+++ /dev/null
@@ -1,77 +0,0 @@
-//  _    ___      __              __________      _     __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/
-//
-#ifndef WBWRITERVTKBINARY_H
-#define WBWRITERVTKBINARY_H
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterVtkBinary : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterVtkBinary )
-
-   static WbWriterVtkBinary* getInstance()
-   {
-      static WbWriterVtkBinary instance;
-      return &instance;
-   }
-private:
-   WbWriterVtkBinary() : WbWriter() {}                             
-   WbWriterVtkBinary( const WbWriterVtkBinary& );                  //no copy allowed 
-   const WbWriterVtkBinary& operator=( const WbWriterVtkBinary& ); //no copy allowed
-
-public:
-   std::string getFileExtension() { return ".bin.vtk"; }
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //cell numbering:
-   //                    2
-   //                     
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //2D
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                             std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                    );
-   
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterVtkBinary ,WbWriter>::getInstance()), CAB_WbWriterVtkBinary);
-
-#endif //WBWRITERVTKBINARY_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.cpp
deleted file mode 100644
index a5e5fdf7cf9d5550046fb66dfc0250de23a797d0..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.cpp
+++ /dev/null
@@ -1,1188 +0,0 @@
-#include <basics/writer/WbWriterVtkXmlASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::pvdEndTag ="   </Collection>\n</VTKFile>";
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   std::string vtkfilename=filename+".pvd";
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   std::string endian;
-   if(UbSystem::isLittleEndian()) endian = "LittleEndian";
-   else                           endian = "BigEndian";
-   out<<"<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\""<<endian<<"\" >\n";
-   out<<"   <Collection>"<<endl;
-   
-   int group = 0, part=0;
-   for(std::size_t i=0; i<filenames.size(); i++)
-   {
-      out<<"       <DataSet timestep=\""<<timeStep<<"\" group=\""<<group<<"\" part=\""<<part<<"\" file=\""<<filenames[i]<<"\"/>\n";
-      if(sepGroups) group++;
-      else          part++;
-   }
-   out<<pvdEndTag;
-   out.close();
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   std::string vtkfilename=filename;
-   std::fstream test(vtkfilename.c_str(), ios::in);
-   if(!test)
-   {
-      test.clear();
-      vtkfilename += ".pvd";
-      test.open(vtkfilename.c_str(), ios::in);
-      if(!test) return this->writeCollection(filename,filenames,timeStep,sepGroups);
-   }
-
-   std::fstream out(vtkfilename.c_str(), ios::in | ios::out);
-   out.seekp(-(int)pvdEndTag.size()-1, ios_base::end);
-
-   int group = 0;
-   for(std::size_t i=0; i<filenames.size(); i++)
-   {
-      out<<"       <DataSet timestep=\""<<timeStep<<"\" group=\""<<group<<"\" part=\""<<i<<"\" file=\""<<filenames[i]<<"\"/>\n";
-      if(sepGroups) group++;
-   }
-   out<<pvdEndTag;
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeParallelFile(const string& filename,vector<string>& pieceSources, vector<string>& pointDataNames, vector<string>& cellDataNames)
-{
-   string vtkfilename=filename+".pvtu";
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeParallelFile to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //VTK FILE
-   out<<"<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
-   out<<"  <PUnstructuredGrid GhostLevel=\"0\">\n";
-   out<<"    <PPoints>\n"; 
-   out<<"      <PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n";
-   out<<"    </PPoints>\n";
-   out<<"    <PPointData>\n";
-   for(size_t s=0; s<pointDataNames.size(); s++)
-      out<< "      <PDataArray type=\"Float32\" Name=\""<< pointDataNames[s] <<"\"/>\n";
-   out<<"    </PPointData>\n";
-   if (cellDataNames.size() > 0)
-   {
-      out<<"    <PCellData>\n";
-      for(size_t s=0; s<cellDataNames.size(); s++)
-         out<< "      <PDataArray type=\"Float32\" Name=\""<< cellDataNames[s] <<"\"/>\n";
-      out<<"    </PCellData>\n";
-   }
-
-   for(size_t s=0; s<pieceSources.size(); s++)
-      out<<"    <Piece Source=\""<<pieceSources[s]<<"\"/>\n";
-   out<<"  </PUnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeParallelFile to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeQuads(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuads to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"      <Points>\n"; 
-   out<<"         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-   out<<"      </Points>\n";
-
-   //CELLS SECTION
-   out<<"      <Cells>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*4<<" " ;
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-
-   out<<"      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"8 ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"      </Cells>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuads to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*4<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"8 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write data section
-   out<<"         <PointData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-    }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeData to "<<vtkfilename<<" - end");
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithCellData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*4<<" " ;
-
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"8 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write data section
-   out<<"         <CellData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </CellData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-
-   out.close();
-
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlASCII::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, 
-                                                          vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames,
-                                                          vector< vector< double > >& celldata                                                                       )
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*4<<" " ;
-
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"8 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-   
-   //write PointData section
-   out<<"         <PointData Scalars=\"PScalars\"> \n";
-   for(int s=0; s<(int)nodedatanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< nodedatanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-
-   //write celldata section
-   out<<"         <CellData Scalars=\"CScalars\"> \n";
-   for(int s=0; s<(int)celldatanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< celldatanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </CellData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeLines(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines) 
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofLines<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"      <Points>\n"; 
-   out<<"         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-   out<<"      </Points>\n";
-
-   //CELLS SECTION
-   out<<"      <Cells>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofLines; c++)
-      out<< val<1>(lines[c]) <<" "<< val<2>(lines[c])<<"  ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
-   for(int c=1; c<=nofLines; c++)
-      out<<c*2<<" " ;
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-
-   out<<"      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofLines; c++)
-      out<<"3 ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"      </Cells>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeLinesWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLinesWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofLines = (int)lines.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofLines<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"      <Points>\n"; 
-   out<<"         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-   out<<"      </Points>\n";
-
-   //CELLS SECTION
-   out<<"      <Cells>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofLines; c++)
-      out<< val<1>(lines[c]) <<" "<< val<2>(lines[c])<<"  ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
-   for(int c=1; c<=nofLines; c++)
-      out<<c*2<<" " ;
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-
-   out<<"      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofLines; c++)
-      out<<"3 ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"      </Cells>\n";
-
-   //write data section
-   out<<"         <PointData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLinesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTriangles to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofTriangles= (int)triangles.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofTriangles<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"      <Points>\n"; 
-   out<<"         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-   out<<"      </Points>\n";
-
-   //CELLS SECTION
-   out<<"      <Cells>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofTriangles; c++)
-      out<< val<1>(triangles[c]) <<" "<< val<2>(triangles[c])<<" "<< val<3>(triangles[c])<<"  ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
-   for(int c=1; c<nofTriangles+1; c++)
-      out<<c*3<<" " ;
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-
-   out<<"      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
-
-   for(int c=0; c<nofTriangles; c++)
-      out<<"5 ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"      </Cells>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTriangles to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "<< val<2>(cells[c]) <<" "<< val<3>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*3<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"5 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write data section
-   out<<"         <PointData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeTrianglesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeOctsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithCellData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" "
-         << val<5>(cells[c]) <<" "
-         << val<6>(cells[c]) <<" "
-         << val<8>(cells[c]) <<" "
-         << val<7>(cells[c]) <<"  ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*8<<" " ;
-
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"11 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-   
-
-   //write data section
-   out<<"         <CellData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)celldata[s].size(); d++)
-         out<<celldata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </CellData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeOctsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<<val<1>(nodes[n])<<" "<<val<2>(nodes[n])<<" "<<val<3>(nodes[n])<<" ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" "
-         << val<5>(cells[c]) <<" "
-         << val<6>(cells[c]) <<" "
-         << val<8>(cells[c]) <<" "
-         << val<7>(cells[c]) <<"  ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*8<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"11 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write PointData section
-   out<<"         <PointData Scalars=\"PScalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\">";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-      {
-         //out<<base64_encode((unsigned char*)(&nodedata[s][d]),sizeof(float));
-         //out.write((char*)&nodedata[s][d],sizeof(float));
-         out<<nodedata[s][d]<<" ";
-      }
-      out<<"</DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOctsWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlASCII::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOcts to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofCells<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<< val<1>(cells[c]) <<" "
-         << val<2>(cells[c]) <<" "
-         << val<4>(cells[c]) <<" "
-         << val<3>(cells[c]) <<" "
-         << val<5>(cells[c]) <<" "
-         << val<6>(cells[c]) <<" "
-         << val<8>(cells[c]) <<" "
-         << val<7>(cells[c]) <<"   ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofCells+1; c++)
-      out<<c*8<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofCells; c++)
-      out<<"11 ";
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Cells>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeOcts to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbWriterVtkXmlASCII::writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofNodes<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"      <Points>\n"; 
-   out<<"         <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-   out<<"      </Points>\n";
-
-   //CELLS SECTION
-   out<<"      <Cells>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
-   for(int n=0; n<nofNodes; n++)
-      out<< n << "  ";
-   out<<"\n";
-
-   out<<"      </DataArray>\n";
-   out<<"         <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
-   for(int n=1; n<=nofNodes; n++)
-      out << n << " ";
-
-   out<<"\n";
-   out<<"         </DataArray>\n";
-
-   out<<"      <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
-
-   for(int n=0; n<nofNodes; n++)
-      out<<"1 ";
-   out<<"\n";
-   out<<"      </DataArray>\n";
-   out<<"      </Cells>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeLines to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbWriterVtkXmlASCII::writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofNodes<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofNodes; c++)
-      out << c <<"   ";
-   out<<"\n";
-
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofNodes+1; c++)
-      out<<c<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-   for(int c=0; c<nofNodes; c++)
-      out<<"1 ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write data section
-   out<<"         <PointData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-
-//////////////////////////////////////////////////////////////////////////
-std::string WbWriterVtkXmlASCII::writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata)
-{
-   string vtkfilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - start");
-
-   std::ofstream out(vtkfilename.c_str());
-   out.precision (std::numeric_limits<double>::digits10 + 1);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   //VTK FILE
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\"	NumberOfCells=\""<<nofNodes<<"\">   \n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float64\" NumberOfComponents=\"3\" format=\"ascii\">\n               ";
-   for(int n=0; n<nofNodes; n++)
-      out<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<"   ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-   out<<"         </Points>\n";
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n              ";
-
-   for(int c=0; c<nofNodes; c++)
-      out << c <<"   ";
-   out<<"\n";
-
-   out<<"            </DataArray>\n";
-   out<<"            <DataArray type=\"Int64\" Name=\"offsets\" format=\"ascii\">\n              ";
-   for(int c=1; c<nofNodes+1; c++)
-      out<<c<<" " ;
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n              ";
-   for(int c=0; c<nofNodes; c++)
-      out<<"1 ";
-
-   out<<"\n";
-   out<<"            </DataArray>\n";
-
-   out<<"         </Cells>\n";
-
-   //write data section
-   out<<"         <PointData Scalars=\"Scalars\"> \n";
-   for(int s=0; s<(int)datanames.size(); ++s)
-   {
-      out<< "           <DataArray type=\"Float64\" Name=\""<< datanames[s] <<"\" format=\"ascii\"> \n";
-
-      for(int d=0; d<(int)nodedata[s].size(); d++)
-         out<<nodedata[s][d]<<" ";
-
-      out<<"\n          </DataArray>\n";
-   }
-   out<<"         </PointData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlASCII::writeNodesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.h b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.h
deleted file mode 100644
index 84212bd509f14768427a5792717b907e4e90601c..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlASCII.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef WBWRITERVTKXMLASCII_H
-#define WBWRITERVTKXMLASCII_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-#include <boost/serialization/base_object.hpp>
-
-class WbWriterVtkXmlASCII  : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterVtkXmlASCII )
-
-   static WbWriterVtkXmlASCII* getInstance()
-   {
-      static WbWriterVtkXmlASCII instance;
-      return &instance;
-   }
-private:
-   WbWriterVtkXmlASCII() : WbWriter() 
-   {
-      if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"error char  type mismatch");
-      if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
-      if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
-   }
-   WbWriterVtkXmlASCII( const WbWriterVtkXmlASCII& );                  //no copy allowed 
-   const WbWriterVtkXmlASCII& operator=( const WbWriterVtkXmlASCII& ); //no copy allowed
-
-   static std::string  pvdEndTag;
-
-public:
-   std::string getFileExtension()  { return ".ascii.vtu"; }
-
-   //write a metafile 
-   std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timesteps, const bool& sepGroups);//std::vector<double>& groups, std::vector<double>& parts);
-   std::string addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-   std::string writeParallelFile(const std::string& filename,std::vector<std::string>& pieceSources, std::vector<std::string>& pointDataNames, std::vector<std::string>& cellDataNames);
-
-   //////////////////////////////////////////////////////////////////////////
-   //nodes
-   std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes);
-   std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-   std::string writeNodesWithNodeDataDouble(const std::string& filename,std::vector< UbTupleDouble3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-   std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //                    2
-   //                     
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //2D
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                             std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                       );
-   
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<WbWriter>(*this);
-   }
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterVtkXmlASCII ,WbWriter>::getInstance()), CAB_WbWriterVtkXmlASCII);
-
-#endif //WBWRITERVTKXMLASCII_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.cpp
deleted file mode 100644
index 8d3d9dbf790dee6b6eca2eeb78135fcf877961f3..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.cpp
+++ /dev/null
@@ -1,1582 +0,0 @@
-#include <basics/writer/WbWriterVtkXmlBinary.h>
-#include <basics/writer/WbWriterVtkXmlASCII.h>
-#include <basics/utilities/UbLogger.h>
-#include <cstring>
-
-using namespace std;
-
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::pvdEndTag ="   </Collection>\n</VTKFile>";
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeCollection(const string& filename, const vector<string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   string vtkfilename=filename+".pvd";
-   ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   string endian;
-   if(UbSystem::isLittleEndian()) endian = "LittleEndian";
-   else                           endian = "BigEndian";
-   out<<"<VTKFile type=\"Collection\" version=\"0.1\" byte_order=\""<<endian<<"\" >"<<endl;
-   out<<"   <Collection>"<<endl;
-   
-   int group = 0, part=0;
-   for(size_t i=0; i<filenames.size(); i++)
-   {
-      out<<"       <DataSet timestep=\""<<timeStep<<"\" group=\""<<group<<"\" part=\""<<part<<"\" file=\""<<filenames[i]<<"\"/>"<<endl;
-      if(sepGroups) group++;
-      else          part++;
-   }
-   out<<pvdEndTag;
-   out.close();
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::addFilesToCollection(const string& filename, const vector<string>& filenames, const double& timeStep, const bool& sepGroups)
-{
-   string vtkfilename=filename;
-   fstream test(vtkfilename.c_str(), ios::in);
-   if(!test)
-   {
-      test.clear();
-      vtkfilename += ".pvd";
-      test.open(vtkfilename.c_str(), ios::in);
-      if(!test) return this->writeCollection(filename,filenames,timeStep,sepGroups);
-   }
- 
-   fstream out(vtkfilename.c_str(), ios::in | ios::out);
-   out.seekp(-(int)pvdEndTag.size()-1, ios_base::end);
-
-   int group = 0;
-   for(size_t i=0; i<filenames.size(); i++)
-   {
-      out<<"       <DataSet timestep=\""<<timeStep<<"\" group=\""<<group<<"\" part=\""<<i<<"\" file=\""<<filenames[i]<<"\"/>"<<endl;
-      if(sepGroups) group++;
-   }
-   out<<pvdEndTag;
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeParallelFile(const string& filename,vector<string>& pieceSources, vector<string>& pointDataNames, vector<string>& cellDataNames)
-{
-   string vtkfilename=filename+".pvtu";
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeParallelFile to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   //VTK FILE
-   out<<"<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">"<<"\n";
-   out<<"  <PUnstructuredGrid GhostLevel=\"0\">"<<"\n";
-   out<<"    <PPoints>\n"; 
-   out<<"      <PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n";
-   out<<"    </PPoints>\n";
-   out<<"    <PPointData>\n";
-   for(size_t s=0; s<pointDataNames.size(); s++)
-      out<< "      <PDataArray type=\"Float32\" Name=\""<< pointDataNames[s] <<"\"/>\n";
-   out<<"    </PPointData>\n";
-   if (cellDataNames.size() > 0)
-   {
-      out<<"    <PCellData>\n";
-      for(size_t s=0; s<cellDataNames.size(); s++)
-         out<< "      <PDataArray type=\"Float32\" Name=\""<< cellDataNames[s] <<"\"/>\n";
-      out<<"    </PCellData>\n";
-   }
-
-   for(size_t s=0; s<pieceSources.size(); s++)
-      out<<"    <Piece Source=\""<<pieceSources[s]<<"\"/>\n";
-   out<<"  </PUnstructuredGrid>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeParallelFile to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeLines(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeLines to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)lines.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 2 /*nodes per line */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per line */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of line */ * nofCells * sizeof(unsigned char);
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(lines[c]), sizeof(int) );
-      out.write( (char*)&val<2>(lines[c]), sizeof(int) );
-      
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 2 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 3;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeLines to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-std::string WbWriterVtkXmlBinary::writeLinesWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeLinesWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)lines.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 2 /*nodes per line  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per line */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of line    */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar          */ * nofNodes * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </PointData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(lines[c]), sizeof(int) );
-      out.write( (char*)&val<2>(lines[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 3 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 5;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeLinesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeTriangles to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)triangles.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3 - coord    */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 3 /*nodes per triangle  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per triangle */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of triangle    */ * nofCells * sizeof(unsigned char);
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(triangles[c]), sizeof(int) );
-      out.write( (char*)&val<2>(triangles[c]), sizeof(int) );
-      out.write( (char*)&val<3>(triangles[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 3 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 5;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out<<flush;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeTriangles to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeTrianglesWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt3 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeTrianglesWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 3 /*nodes per tri   */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per tri  */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of tri     */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar          */ * nofNodes * sizeof(float); 
-   
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </PointData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 3 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 5;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeTrianglesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeQuads(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuads to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 4 /*nodes per quad  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per quad */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of quad    */ * nofCells * sizeof(unsigned char);
-  
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 4 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 8;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out<<flush;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuads to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeQuadsWithNodeData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& nodedata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 4 /*nodes per quad  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per quad */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of quad    */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar          */ * nofNodes * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </PointData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 4 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 8;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeQuadsWithCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, vector< string >& datanames, vector< vector< double > >& celldata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 4 /*nodes per quad  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per quad */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of quad    */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar          */ * nofCells * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <CellData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </CellData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 4 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 8;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<celldata[s].size(); ++d)
-      {
-         //loake kopie machen, da in celldata "doubles" sind
-         float tmp = (float)celldata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-
-   out<<"\n</AppendedData>\n";
-
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeQuadsWithNodeAndCellData(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt4 >& cells, 
-                                                                vector< string >& nodedatanames, vector< vector< double > >& nodedata, vector< string >& celldatanames,
-                                                                vector< vector< double > >& celldata                                                                    )
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 4 /*nodes per quad  */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per quad */ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of quad    */ * nofCells * sizeof(unsigned char);
-   int bytesScalarDataPoint = 1 /*scalar          */ * nofNodes * sizeof(float); 
-   int bytesScalarDataCell  = 1 /*scalar          */ * nofCells * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   // Point DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<nodedatanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< nodedatanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarDataPoint);
-   }
-   out<<"         </PointData>\n";
-
-
-   // Cell DATA SECTION
-   out<<"         <CellData>\n";
-   for(size_t s=0; s<celldatanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< celldatanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarDataCell);
-   }
-   out<<"         </CellData>\n";
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 4 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 8;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //Point DATA SECTION
-   //scalarData
-   for(size_t s=0; s<nodedatanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarDataPoint,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   //Cell DATA SECTION
-   //scalarData
-   for(size_t s=0; s<celldatanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarDataCell,bytesPerByteVal);
-      for(size_t d=0; d<celldata[s].size(); ++d)
-      {
-         //loake kopie machen, da in celldata "doubles" sind
-         float tmp = (float)celldata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeQuadsWithNodeAndCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeOctsWithCellData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& celldata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOctsWithCellData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3      */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 8 /*nodes per oct */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per oct*/ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of oct   */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar        */ * nofCells * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <CellData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </CellData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<5>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<6>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<8>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<7>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 8 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 11;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<celldata[s].size(); ++d)
-      {
-         //loake kopie machen, da in celldata "doubles" sind
-         float tmp = (float)celldata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOctsWithCellData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeOctsWithNodeData(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt8 >& cells, vector<string >& datanames, vector<vector<double > >& nodedata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOctsWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3      */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 8 /*nodes per oct */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per oct*/ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of oct   */ * nofCells * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar        */ * nofNodes * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </PointData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<5>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<6>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<8>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<7>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 8 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 11;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOctsWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-/*===============================================================================*/
-string WbWriterVtkXmlBinary::writeOcts(const string& filename,vector< UbTupleFloat3 >& nodes, vector< UbTupleInt8 >& cells)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOcts to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-   int nofCells = (int)cells.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3      */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 8 /*nodes per oct */ * nofCells * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per oct*/ * nofCells * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of oct   */ * nofCells * sizeof(unsigned char);
-   //int bytesScalarData      = 1 /*scalar        */ * nofNodes * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofCells<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofCells; c++) 
-   {
-      out.write( (char*)&val<1>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<2>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<4>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<3>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<5>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<6>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<8>(cells[c]), sizeof(int) );
-      out.write( (char*)&val<7>(cells[c]), sizeof(int) );
-   }
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   int itmp;
-   for(int c=1; c<=nofCells; c++)
-   {
-      itmp = 8 * c;    
-      out.write( (char*)&itmp, sizeof(int) );
-   }
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 11;
-   for(int c=0; c<nofCells; c++)
-   {
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeOcts to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbWriterVtkXmlBinary::writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeNodes to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3        */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 1 /*nodes per cell  */ * nofNodes * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per cell */ * nofNodes * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of line    */ * nofNodes * sizeof(unsigned char);
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofNodes<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofNodes; c++) 
-      out.write( (char*)&c, sizeof(int) );
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   for(int c=1; c<=nofNodes; c++)
-      out.write( (char*)&c, sizeof(int) );
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 1;
-   for(int c=0; c<nofNodes; c++)
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeNodes to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-}
-std::string WbWriterVtkXmlBinary::writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata)
-{
-   string vtkfilename = filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeNodesWithNodeData to "<<vtkfilename<<" - start");
-
-   ofstream out(vtkfilename.c_str(),ios::out | ios::binary);
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(vtkfilename);
-      if(path.size()>0){ UbSystem::makeDirectory(path); out.open(vtkfilename.c_str(),ios::out | ios::binary);}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+vtkfilename);
-   }
-
-   int nofNodes = (int)nodes.size(); 
-
-   int bytesPerByteVal      = 4; //==sizeof(int)
-   int bytesPoints          = 3 /*x1/x2/x3       */ * nofNodes * sizeof(float);
-   int bytesCellConnectivty = 1 /*nodes per cell */ * nofNodes * sizeof(int  );
-   int bytesCellOffsets     = 1 /*offset per cell*/ * nofNodes * sizeof(int  );
-   int bytesCellTypes       = 1 /*type of oct    */ * nofNodes * sizeof(unsigned char);
-   int bytesScalarData      = 1 /*scalar         */ * nofNodes * sizeof(float); 
-
-   int offset = 0;
-   //VTK FILE
-   out<<"<?xml version=\"1.0\"?>\n";
-   out<<"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\" >"<<"\n";
-   out<<"   <UnstructuredGrid>"<<"\n";
-   out<<"      <Piece NumberOfPoints=\""<<nofNodes<<"\" NumberOfCells=\""<<nofNodes<<"\">\n";
-
-   //POINTS SECTION
-   out<<"         <Points>\n"; 
-   out<<"            <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\""<< offset <<"\"  />\n";
-   out<<"         </Points>\n";
-   offset += (bytesPerByteVal + bytesPoints);
-
-   //CELLS SECTION
-   out<<"         <Cells>\n";
-   out<<"            <DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellConnectivty); 
-   out<<"            <DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\""<< offset <<"\" />\n";
-   offset += (bytesPerByteVal + bytesCellOffsets);
-   out<<"            <DataArray type=\"UInt8\" Name=\"types\" format=\"appended\" offset=\""<< offset <<"\" />\n ";
-   offset += (bytesPerByteVal + bytesCellTypes);
-   out<<"         </Cells>\n";
-
-   //DATA SECTION
-   out<<"         <PointData>\n";
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out<< "            <DataArray type=\"Float32\" Name=\""<< datanames[s] <<"\" format=\"appended\" offset=\""<< offset <<"\" /> \n";
-      offset += (bytesPerByteVal + bytesScalarData);
-   }
-   out<<"         </PointData>\n";
-
-   out<<"      </Piece>\n";
-   out<<"   </UnstructuredGrid>\n";
-
-   // AppendedData SECTION
-   out<<"   <AppendedData encoding=\"raw\">\n";
-   out<<"_";
-
-   //POINTS SECTION
-   out.write((char*)&bytesPoints,bytesPerByteVal);
-   for(int n=0; n<nofNodes; n++)
-   {
-      out.write((char*)&val<1>(nodes[n]),sizeof(float));
-      out.write((char*)&val<2>(nodes[n]),sizeof(float));
-      out.write((char*)&val<3>(nodes[n]),sizeof(float));
-   }
-
-   //CELLS SECTION
-   //cellConnectivity
-   out.write( (char*)&bytesCellConnectivty, bytesPerByteVal );  
-   for(int c=0; c<nofNodes; c++) 
-      out.write( (char*)&c, sizeof(int) );
-
-   //cellOffsets
-   out.write( (char*)&bytesCellOffsets, bytesPerByteVal );
-   for(int c=1; c<=nofNodes; c++)
-      out.write( (char*)&c, sizeof(int) );
-
-   //cellTypes
-   out.write( (char*)&bytesCellTypes, bytesPerByteVal );
-   unsigned char vtkCellType = 1;
-   for(int c=0; c<nofNodes; c++)
-      out.write( (char*)&vtkCellType, sizeof(unsigned char) );
-   
-   //DATA SECTION
-   //scalarData
-   for(size_t s=0; s<datanames.size(); ++s)
-   {
-      out.write((char*)&bytesScalarData,bytesPerByteVal);
-      for(size_t d=0; d<nodedata[s].size(); ++d)
-      {
-         //loake kopie machen, da in nodedata "doubles" sind
-         float tmp = (float)nodedata[s][d];
-         out.write((char*)&tmp,sizeof(float));
-      }
-   }
-   out<<"\n</AppendedData>\n";
-   out<<"</VTKFile>";
-   out<<endl;
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterVtkXmlBinary::writeNodesWithNodeData to "<<vtkfilename<<" - end");
-
-   return vtkfilename;
-
-}
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.h b/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.h
deleted file mode 100644
index b00157fed2b38826b31375e6ffa459eda1b1483b..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterVtkXmlBinary.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifndef WBWRITERVTKXMLBINARY_H
-#define WBWRITERVTKXMLBINARY_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-#include <boost/serialization/base_object.hpp>
-
-class WbWriterVtkXmlBinary  : public WbWriter
-{
-public:
-#ifndef SWIG
-   OBCREATOR_EXT( WbWriterVtkXmlBinary )
-#endif
-
-   static WbWriterVtkXmlBinary* getInstance()
-   {
-      static WbWriterVtkXmlBinary instance;
-      return &instance;
-   }
-private:
-   WbWriterVtkXmlBinary() : WbWriter() 
-   {
-      if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"machine error char  type mismatch");
-      if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"machine error int   type mismatch");
-      if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"machine error float type mismatch");
-   }
-
-   WbWriterVtkXmlBinary( const WbWriterVtkXmlBinary& );                  //no copy allowed 
-   const WbWriterVtkXmlBinary& operator=( const WbWriterVtkXmlBinary& ); //no copy allowed
-
-   static std::string  pvdEndTag;
-public:
-   std::string getFileExtension() { return ".bin.vtu";   }
-
-   //write a metafile 
-   std::string writeCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-   std::string addFilesToCollection(const std::string& filename, const std::vector<std::string>& filenames, const double& timestep, const bool& sepGroups);
-   std::string writeParallelFile(const std::string& filename,std::vector<std::string>& pieceSources, std::vector<std::string>& pointDataNames, std::vector<std::string>& cellDataNames);
-
-   //////////////////////////////////////////////////////////////////////////
-   //nodes
-   std::string writeNodes(const std::string& filename,std::vector< UbTupleFloat3 >& nodes);
-   std::string writeNodesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //lines
-   //     0 ---- 1
-   //nodenumbering must start with 0!
-   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines);
-   std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //triangles
-   //                    2
-   //                     
-   //                  0---1
-   //nodenumbering must start with 0!
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-   std::string writeTrianglesWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-
-   //////////////////////////////////////////////////////////////////////////
-   //2D
-   //cell numbering:
-   //                  3---2
-   //                  |   |
-   //                  0---1
-   //nodenumbering must start with 0!
-
-   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells);
-   std::string writeQuadsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& nodedata);
-   std::string writeQuadsWithCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, std::vector< std::string >& datanames, std::vector< std::vector< double > >& celldata);
-   std::string writeQuadsWithNodeAndCellData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells, 
-                                             std::vector< std::string >& nodedatanames, std::vector< std::vector< double > >& nodedata, std::vector< std::string >& celldatanames,
-                                             std::vector< std::vector< double > >& celldata                                                                    );
-   
-   //////////////////////////////////////////////////////////////////////////
-   //octs
-   //     7 ---- 6
-   //    /|     /|
-   //   4 +--- 5 |
-   //   | |    | |
-   //   | 3 ---+ 2
-   //   |/     |/
-   //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
-   std::string writeOctsWithCellData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& celldata);
-   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
-   
-private:
-   friend class boost::serialization::access;
-   template<class Archive>
-   void serialize(Archive & ar, const unsigned int version)
-   {
-      ar & boost::serialization::base_object<WbWriter>(*this);
-   }
-};
-
-#ifndef SWIG
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterVtkXmlBinary ,WbWriter>::getInstance()), CAB_WbWriterVtkXmlBinary);
-#endif
-
-#endif //WBWRITERVTKXMLBINARY_H
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.cpp b/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.cpp
deleted file mode 100644
index 68eee613779233c44dbb0cf6c501c564a0bfdab2..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-#include <basics/writer/WbWriterX3D.h>
-#include <basics/utilities/UbLogger.h>
-
-using namespace std;
-
-/*===============================================================================*/
-std::string WbWriterX3D::writeTriangles(const string& filename,vector<UbTupleFloat3 >& nodes, vector<UbTupleInt3 >& triangles)
-{
-   string X3DFilename=filename+getFileExtension();
-   UBLOG(logDEBUG1,"WbWriterX3D::writeTriangles to "<<X3DFilename<<" - start");
-
-   std::ofstream out(X3DFilename.c_str());
-   if(!out)
-   { 
-      out.clear(); //flags ruecksetzen (ansonsten liefert utern if(!out) weiterhin true!!!
-      string path = UbSystem::getPathFromString(X3DFilename);
-      if(path.size()>0){UbSystem::makeDirectory(path);out.open(X3DFilename.c_str());}
-      if(!out) throw UbException(UB_EXARGS,"couldn't open file "+X3DFilename);
-   }
-
-   // General part
-
-   //Root Element
-   out<<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"																																 	   <<endl;
-   out<<"<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.1//EN\"   \"http://www.web3d.org/specifications/x3d-3.1.dtd\">"																	   <<endl;
-   out<<"<X3D profile='Interchange' version='3.1' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation=' http://www.web3d.org/specifications/x3d-3.1.xsd '>"<<endl<<endl;
-
-   //Head
-   out<<"<head>"										 <<endl;
-   out<<"<meta content='Simple X3D Writer for blender'/>"<<endl;
-   out<<"</head>"										 <<endl<<endl;
-
-	//Scene, Shape beginn 
-   out<<"<Scene>"            <<endl;
-   out<<"<Shape>"            <<endl;
-
-	//IndexedFaceSet => Polylinien der Dreiecke
-	out<<"<IndexedFaceSet  coordIndex=\""<<endl;
-
-	// TRIANGLES Ponits SECTION
-	int nofTriangles= (int)triangles.size(); 
-	//out<<"   triangles "<<nofTriangles<<endl;
-	for(int c=0; c<nofTriangles; c++)
-		out<<"      "<<val<1>(triangles[c]) <<" "<< val<2>(triangles[c])<<" "<< val<3>(triangles[c])<<" -1"<<endl;
-	out<<"\">"            <<endl;
-    
-	//Coordinates
-	out<<"<Coordinate  point=\""    <<endl;
-
-	// Coordinates SECTION
-	int nofNodes = (int)nodes.size(); 
-	//out<<"   points "<<nofNodes<<endl;
-	for(int n=0; n<nofNodes; n++)
-		out<<"      "<< val<1>(nodes[n]) <<", "<< val<2>(nodes[n]) <<", "<< val<3>(nodes[n])<<", "<<endl;
-   out<<"\"/>"            <<endl;
-
-	//Footer
-	out<<"</IndexedFaceSet>"<< endl;
-	out<<"</Shape>"			<< endl;
-	out<<"</Scene>"         << endl;
-	out<<"</X3D>"           << endl;
-   
-
-   //// Image details
-   //out<<"image {"              <<endl;
-   //out<<"   resolution 640 480"<<endl;
-   //out<<"   aa 0 1"            <<endl;
-   //out<<"   filter mitchell"   <<endl;
-   //out<<"}"                    <<endl<<endl;
-
-   //// Camera position
-   //out<<"camera {"                 <<endl;
-   //out<<"   type pinhole"          <<endl;
-   //out<<"   eye    -0.25 -0.3 0.13"<<endl;
-   //out<<"   target -0.1 0.1 0.13"  <<endl;
-   //out<<"   up     0 0 1"          <<endl;
-   //out<<"   fov    60"             <<endl;
-   //out<<"   aspect 1.333333"       <<endl;
-   //out<<"}"                        <<endl<<endl;
-
-   //// Light
-   //out<<"light {"                  <<endl;
-   //out<<"   type ibl"              <<endl;
-   //out<<"   image sky_small.hdr"   <<endl;
-   //out<<"   center 0 -1 0"         <<endl;
-   //out<<"   up 0 0 1"              <<endl;
-   //out<<"   lock true"             <<endl;
-   //out<<"   samples 200"           <<endl;
-   //out<<"}"                        <<endl<<endl;
-
-   //// Shaders
-   //out<<"shader {"                 <<endl;
-   //out<<"   name default-shader"   <<endl;
-   //out<<"   type diffuse"          <<endl;
-   //out<<"   diff 0.25 0.25 0.25"   <<endl;
-   //out<<"}"                        <<endl<<endl;
-
-   //out<<"shader {"                 <<endl;
-   //out<<"   name Glass"            <<endl;
-   //out<<"   type glass"            <<endl;
-   //out<<"   eta 1.333"             <<endl;
-   //out<<"   color 0.1 0.3 0.8"     <<endl;
-   //out<<"}"                        <<endl<<endl;
-   //                                
-   //out<<"shader {"                 <<endl;
-   //out<<"   name Mirror"           <<endl;
-   //out<<"   type mirror"           <<endl;
-   //out<<"   refl 0.7 0.7 0.7"      <<endl;
-   //out<<"}"                        <<endl<<endl;
-
-   //// Objects
-   //// a) Ground plane
-   //out<<"object {"                 <<endl;
-   //out<<"   shader default-shader" <<endl;
-   //out<<"   type plane"            <<endl;
-   //out<<"   p 0 0 0"               <<endl;
-   //out<<"   n 0 0 1"               <<endl;
-   //out<<"}"                        <<endl<<endl;
-
-   //// b) Mesh
-   //out<<"object {"                 <<endl;
-   //out<<"   shader Glass"          <<endl;
-   //out<<"   transform {"           <<endl;
-   //out<<"      rotatey 270.0"      <<endl;
-   //out<<"   }"                     <<endl;
-   //out<<"   type generic-mesh"     <<endl;
-   //out<<"      name polySurfac"    <<endl<<endl;
-
-
-   //// POINTS SECTION
-   //int nofNodes = (int)nodes.size(); 
-   //out<<"   points "<<nofNodes<<endl;
-   //for(int n=0; n<nofNodes; n++)
-   //   out<<"      "<< val<1>(nodes[n]) <<" "<< val<2>(nodes[n]) <<" "<< val<3>(nodes[n]) <<endl;
-
-   //// TRIANGLES SECTION
-   //int nofTriangles= (int)triangles.size(); 
-   //out<<"   triangles "<<nofTriangles<<endl;
-   //for(int c=0; c<nofTriangles; c++)
-   //   out<<"      "<<val<1>(triangles[c]) <<" "<< val<2>(triangles[c])<<" "<< val<3>(triangles[c])<<endl;
-
-   //// FOOTER
-   //out<<"   normals none" << endl;
-   //out<<"   uvs none"     << endl;
-   //out<<"}"               << endl;
-
-   out.close();
-   UBLOG(logDEBUG1,"WbWriterX3D::writeTriangles to "<<X3DFilename<<" - end");
-
-   return X3DFilename;
-}
-/*===============================================================================*/
diff --git a/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.h b/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.h
deleted file mode 100644
index b9c708c1215bb897d6ff58e5e30367b4b54505ae..0000000000000000000000000000000000000000
--- a/source/VirtualFluidsCore/Basics/writer/WbWriterX3D.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef WBWRITERX3D_H
-#define WBWRITERX3D_H
-
-#include <string>
-
-#include <basics/writer/WbWriter.h>
-
-class WbWriterX3D  : public WbWriter
-{
-public:
-   OBCREATOR_EXT( WbWriterX3D )
-
-   static WbWriterX3D* getInstance()
-   {
-      static WbWriterX3D instance;
-      return &instance;
-   }
-private:
-   WbWriterX3D() : WbWriter() 
-   {
-      if(sizeof(unsigned char)!=1) throw UbException(UB_EXARGS,"error char  type mismatch");
-      if(sizeof(int)          !=4) throw UbException(UB_EXARGS,"error int   type mismatch");
-      if(sizeof(float)        !=4) throw UbException(UB_EXARGS,"error float type mismatch");
-   }
-   WbWriterX3D( const WbWriterX3D& );                  //no copy allowed 
-   const WbWriterX3D& operator=( const WbWriterX3D& ); //no copy allowed
-
-   static std::string  pvdEndTag;
-
-public:
-   std::string getFileExtension()  { return "ascii.X3D"; }
-
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
-};
-
-UB_AUTO_RUN_NAMED(ObFactory<WbWriter>::getInstance()->addObCreator(ObSingletonCreatorImpl<WbWriterX3D ,WbWriter>::getInstance()), CAB_WbWriterX3D);
-
-#endif //WBWRITERX3D_H
diff --git a/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.cpp
index 2af5a8432a444cbd406f961e335168ede6ea28c1..2c71d261d315263d18747d27472cdc50a6b0efa4 100644
--- a/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.cpp
@@ -1,5 +1,5 @@
 /*
-* D3Q27AdjustForcingPostprocessor.cpp
+* D3Q27AdjustForcingCoProcessor.cpp
 *
 *  
 *  Author: Sonja Uphoff
@@ -63,7 +63,7 @@ void AdjustForcingCoProcessor::collectData(double step)
 {
    integrateValues->calculateMQ();
 
-   UBLOG(logDEBUG3, "D3Q27AdjustForcingPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "D3Q27AdjustForcingCoProcessor::update:" << step);
    int gridRank = grid->getRank();
    int minInitLevel = this->grid->getCoarsestInitializedLevel();
    int maxInitLevel = this->grid->getFinestInitializedLevel();
@@ -109,7 +109,7 @@ void AdjustForcingCoProcessor::collectData(double step)
 
    if (comm->getProcessID() == comm->getRoot())
    {
-      //UBLOG(logINFO, "D3Q27AdjustForcingPostprocessor step: " << static_cast<int>(step));
+      //UBLOG(logINFO, "D3Q27AdjustForcingCoProcessor step: " << static_cast<int>(step));
       //UBLOG(logINFO, "new forcing is: " << forcing);
       std::string fname = path+"/forcing/forcing.csv";
       std::ofstream ostr;
diff --git a/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.h
index 4dc4a974099302cef10fe002ca75b9ecdc0b7459..ba5c72d72e70134ab2e4b44461b48f668df8eb8b 100644
--- a/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/AdjustForcingCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef D3Q27ADJUSTFORCINGPOSTPROCESSOR_H
-#define D3Q27ADJUSTFORCINGPOSTPROCESSOR_H
+#ifndef D3Q27ADJUSTFORCINGCoProcessor_H
+#define D3Q27ADJUSTFORCINGCoProcessor_H
 
 #include "CoProcessor.h"
 #include "D3Q27IntegrateValuesHelper.h"
@@ -38,4 +38,4 @@ private:
 };
 
 
-#endif /* D3Q27RHODIFFERENCEPOSTPROCESSOR_H_ */
+#endif /* D3Q27RHODIFFERENCECoProcessor_H_ */
diff --git a/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
index 2054012a9d0f8d9ce9943900add3106d9f48e087..fdf498846428e92f033ac277b7a600220c69b249 100644
--- a/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.cpp
@@ -79,7 +79,7 @@ void AverageValuesCoProcessor::process(double step)
 
 		}
 
-		UBLOG(logDEBUG3, "AverageValuesPostprocessor::update:" << step);
+		UBLOG(logDEBUG3, "AverageValuesCoProcessor::update:" << step);
 }
 
 void AverageValuesCoProcessor::resetDataRMS(double step)
@@ -226,7 +226,7 @@ void AverageValuesCoProcessor::collectData(double step)
       {
          WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(cfilePath,filenames,istep,false);
       }
-      UBLOG(logINFO,"AverageValuesPostprocessor step: " << istep);
+      UBLOG(logINFO,"AverageValuesCoProcessor step: " << istep);
    }
 
 	clearData();
@@ -470,7 +470,7 @@ void AverageValuesCoProcessor::calculateAverageValues(double timeStep)
 	}
 }
 ////////////////////////////////////////////////////////////////////////////
-//void AverageValuesPostprocessor::initPlotData(double step)
+//void AverageValuesCoProcessor::initPlotData(double step)
 //{
 //   CommunicatorPtr comm = Communicator::getInstance();
 //	if (comm->getProcessID() == comm->getRoot())
@@ -493,7 +493,7 @@ void AverageValuesCoProcessor::calculateAverageValues(double timeStep)
 //	}
 //}
 //////////////////////////////////////////////////////////////////////////////
-//void AverageValuesPostprocessor::collectPlotData(double step)
+//void AverageValuesCoProcessor::collectPlotData(double step)
 //{
 //
 //	double hminX1 = 0.9;
diff --git a/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
index 95a112431dce211ebcf955dc40186526ca0ffd1f..d60ecaf59258f8537344baeb4b71e378352a856d 100644
--- a/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef AverageValuesPostprocessor_H
-#define AverageValuesPostprocessor_H
+#ifndef AverageValuesCoProcessor_H
+#define AverageValuesCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Grid3D.h"
diff --git a/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
index 03f16460cc89618780320d3577e63277f9c189f6..cfa597bd52942a636a3063d77c3e0857319933be 100644
--- a/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.cpp
@@ -45,7 +45,7 @@ void CalculateForcesCoProcessor::process( double step )
    if(scheduler->isDue(step) )
       collectData(step);
 
-   UBLOG(logDEBUG3, "D3Q27ForcesPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "D3Q27ForcesCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void CalculateForcesCoProcessor::collectData( double step )
diff --git a/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
index d270acf8b0c1c787b77f1888df7c2fc744f572cc..287f3dc9d270eb08794f214fa744dc4d282991b7 100644
--- a/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
@@ -1,12 +1,12 @@
 /*
- *  D3Q27ForcesPostprocessor.h
+ *  D3Q27ForcesCoProcessor.h
  *
  *  Created on: 29.09.2012
  *  Author: K. Kucher
  */
 
-#ifndef D3Q27ForcesPostprocessor_H
-#define D3Q27ForcesPostprocessor_H
+#ifndef D3Q27ForcesCoProcessor_H
+#define D3Q27ForcesCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Communicator.h"
@@ -56,4 +56,4 @@ private:
 };
 
 
-#endif /* D3Q27ForcesPostprocessor_H */
+#endif /* D3Q27ForcesCoProcessor_H */
diff --git a/source/VirtualFluidsCore/CoProcessors/CoProcessor.h b/source/VirtualFluidsCore/CoProcessors/CoProcessor.h
index f11661bd6dd65098fe48a2aea4006fffd0c631d1..e666dc6263cec8496bcdf01832e949d649dd37d8 100644
--- a/source/VirtualFluidsCore/CoProcessors/CoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/CoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef POSTPROCESSOR_H
-#define POSTPROCESSOR_H
+#ifndef CoProcessor_H
+#define CoProcessor_H
 
 #include <boost/bind.hpp>
 #include <boost/shared_ptr.hpp>
@@ -9,7 +9,7 @@
 #include <basics/utilities/UbScheduler.h>
 
 class CoProcessor;
-typedef boost::shared_ptr<CoProcessor> PostprocessorPtr;
+typedef boost::shared_ptr<CoProcessor> CoProcessorPtr;
 
 class CoProcessor
 {
diff --git a/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
index f5700763482045d48962a265f261f00d69e938d8..c9b003b0c0563a58e3873e55e842136061b6b70b 100644
--- a/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.cpp
@@ -1,5 +1,5 @@
 /*
-*  DecreaseViscosityPostprocessor
+*  DecreaseViscosityCoProcessor
 *
 *  Created on: 10.05.2013
 *  Author: uphoff
@@ -39,7 +39,7 @@ void DecreaseViscosityCoProcessor::process(double step)
 void DecreaseViscosityCoProcessor::setViscosity(double step)
 {
 
-   UBLOG(logDEBUG3, "DecreaseViscosityPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "DecreaseViscosityCoProcessor::update:" << step);
    int gridRank = grid->getRank();
    int minInitLevel = this->grid->getCoarsestInitializedLevel();
    int maxInitLevel = this->grid->getFinestInitializedLevel();
diff --git a/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
index ef1875cae479a3eb764fd42351a67c66b7651555..15e373d03c9f3f0e61096274055243b8871fdcd3 100644
--- a/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef DecreaseViscosityPOSTPROCESSOR_H
-#define DecreaseViscosityPOSTPROCESSOR_H
+#ifndef DecreaseViscosityCoProcessor_H
+#define DecreaseViscosityCoProcessor_H
 
 #include "CoProcessor.h"
 #include "D3Q27IntegrateValuesHelper.h"
@@ -17,9 +17,9 @@ typedef boost::shared_ptr<DecreaseViscosityCoProcessor> DecreaseViscosityCoProce
 //! decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");   //this function is time-dependent, the viscosity decreases a 1/t^2 
 //! decrViscFunc.DefineConst("nue0", nueLB);       
 //! decrViscFunc.DefineConst("c0", 0.1);           //constants such as c0 controll how fast the viscosity decreasis 
-//! UbSchedulerPtr DecrViscSch(new UbScheduler()); //the postprocessor is called according to a Scheduler
+//! UbSchedulerPtr DecrViscSch(new UbScheduler()); //the CoProcessor is called according to a Scheduler
 //! DecrViscSch->addSchedule(10,10,1000);          //in this case the viscosity is reset every 10 timesteps for the first 1000 timesteps 
-//! DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm); 
+//! DecreaseViscosityCoProcessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm); 
 //! \endcode
 //! \author Sonja Uphoff
 
@@ -41,4 +41,4 @@ private:
 };
 
 
-#endif /* DecreaseViscosityPOSTPROCESSOR_H_ */
+#endif /* DecreaseViscosityCoProcessor_H_ */
diff --git a/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
index 34bbc541a0a9831c44e142f19071834141c2d3bd..eb10d750d9449d900debd0dd1df25c094502b285 100644
--- a/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.cpp
@@ -30,7 +30,7 @@ void EmergencyExitCoProcessor::process( double step )
    if(scheduler->isDue(step) )
       collectData(step);
 
-   UBLOG(logDEBUG3, "EmergencyExitPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "EmergencyExitCoProcessor::update:" << step);
 }
 
 void EmergencyExitCoProcessor::collectData( double step )
@@ -38,7 +38,7 @@ void EmergencyExitCoProcessor::collectData( double step )
    if(readMetafile())
    {
       rp->doCheckPoint((int)step);
-      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"EmergencyExitPostprocessor save step: " << step);
+      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"EmergencyExitCoProcessor save step: " << step);
       comm->barrier();
       exit(EXIT_SUCCESS);
    }
diff --git a/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
index b5df123ff94330433ee8978b4b317004f4e901ef..ca7ffef597cbf6dd50169bde5a956ae9e072016a 100644
--- a/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
@@ -1,12 +1,12 @@
 /*
- *  EmergencyExitPostprocessor.h
+ *  EmergencyExitCoProcessor.h
  *
  *  Created on: 05.10.2012
  *  Author: K. Kucher
  */
 
-#ifndef EmergencyExitPostprocessor_H
-#define EmergencyExitPostprocessor_H
+#ifndef EmergencyExitCoProcessor_H
+#define EmergencyExitCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Communicator.h"
@@ -14,7 +14,7 @@
 
 #include <boost/shared_ptr.hpp>
 class EmergencyExitCoProcessor;
-typedef boost::shared_ptr<EmergencyExitCoProcessor> EmergencyExitPostprocessorPtr;
+typedef boost::shared_ptr<EmergencyExitCoProcessor> EmergencyExitCoProcessorPtr;
 
 class EmergencyExitCoProcessor: public CoProcessor 
 {
@@ -37,4 +37,4 @@ private:
 };
 
 
-#endif /* EmergencyExitPostprocessor_H */
+#endif /* EmergencyExitCoProcessor_H */
diff --git a/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.cpp
index b088d2722a09e5f71eac5b82bb9b60a74e9b14cf..11e646bd5f67b4a9e8a21379afe3df4e37a54b68 100644
--- a/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.cpp
@@ -53,7 +53,7 @@ void InSituCatalystCoProcessor::process(double step)
    if (scheduler->isDue(step))
       collectData(step);
 
-   UBLOG(logDEBUG3, "InSituCatalystPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "InSituCatalystCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void InSituCatalystCoProcessor::collectData(double step)
@@ -96,7 +96,7 @@ void InSituCatalystCoProcessor::collectData(double step)
       Processor->CoProcess(dataDescription.GetPointer());
    }
 
-   UBLOG(logINFO, "InSituCatalystPostprocessor step: " << istep);
+   UBLOG(logINFO, "InSituCatalystCoProcessor step: " << istep);
 }
 //////////////////////////////////////////////////////////////////////////
 void InSituCatalystCoProcessor::addData(Block3DPtr block)
diff --git a/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.h
index ad03df92e681b64ce111b1463ffc83051866d990..ed9aa6c77f00d1a5bd31a8176ee4d003e98a80c6 100644
--- a/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/InSituCatalystCoProcessor.h
@@ -1,7 +1,7 @@
 #ifdef VF_CATALYST
 
-#ifndef InSituCatalystPostprocessor_h__
-#define InSituCatalystPostprocessor_h__
+#ifndef InSituCatalystCoProcessor_h__
+#define InSituCatalystCoProcessor_h__
 
 
 #include <CoProcessor.h>
@@ -49,6 +49,6 @@ private:
    typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal& /*vx2*/, LBMReal& /*vx3*/);
    CalcMacrosFct calcMacros;
 };
-#endif // InSituCatalystPostprocessor_h__
+#endif // InSituCatalystCoProcessor_h__
 
 #endif
diff --git a/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
index 4a901e0c8d95d8869a18d952f268399819341006..365ac50e55dac241b008db7297e151e159593c49 100644
--- a/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
@@ -60,7 +60,7 @@ void InSituVTKCoProcessor::process( double step )
    if(scheduler->isDue(step) )
       collectData(step);
 
-   UBLOG(logDEBUG3, "InSituVTKPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "InSituVTKCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void InSituVTKCoProcessor::collectData( double step )
@@ -122,7 +122,7 @@ void InSituVTKCoProcessor::collectData( double step )
    //writer->SetDataModeToAscii();
    //writer->Update();
 
-   UBLOG(logINFO,"InSituVTKPostprocessor step: " << istep);
+   UBLOG(logINFO,"InSituVTKCoProcessor step: " << istep);
 }
 //////////////////////////////////////////////////////////////////////////
 void InSituVTKCoProcessor::addData( Block3DPtr block )
diff --git a/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.h
index 1898ac29665fd8c345f502b8017ee3da12bbaec2..858754f61f469e087a3f1a82e73ca155dd0c9004 100644
--- a/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.h
@@ -1,7 +1,7 @@
 #ifdef VF_VTK
 
-#ifndef InSituVTKPostprocessor_h__
-#define InSituVTKPostprocessor_h__
+#ifndef InSituVTKCoProcessor_h__
+#define InSituVTKCoProcessor_h__
 
 #include <CoProcessor.h>
 #include <Grid3D.h>
@@ -46,7 +46,7 @@ private:
    std::string wIP;
 };
 
-#endif // InSituVTKPostprocessor_h__
+#endif // InSituVTKCoProcessor_h__
 
 #endif
 
diff --git a/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.cpp
index 6bbefbfcc7f26b1f29dcdcfe7d7ab88afddb067e..9dc9cf3402fdf8569618e573d88f3944f8e967bc 100644
--- a/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.cpp
@@ -22,7 +22,7 @@ MacroscopicQuantitiesCoProcessor::MacroscopicQuantitiesCoProcessor(Grid3DPtr gri
                                                                                  writer(writer),
                                                                                  conv(conv),
                                                                                  bcInformation(bcInformation)
-//D3Q27MacroscopicQuantitiesPostprocessor::D3Q27MacroscopicQuantitiesPostprocessor(Grid3DPtr grid, UbSchedulerPtr s,
+//D3Q27MacroscopicQuantitiesCoProcessor::D3Q27MacroscopicQuantitiesCoProcessor(Grid3DPtr grid, UbSchedulerPtr s,
 //                                                                                 const std::string& path, WbWriter* const writer, 
 //                                                                                 const LBMUnitConverterPtr conv, CommunicatorPtr comm, 
 //                                                                                 bool bcInformation)
@@ -55,7 +55,7 @@ void MacroscopicQuantitiesCoProcessor::process(double step)
    if(scheduler->isDue(step) )
       collectData(step);
 
-   UBLOG(logDEBUG3, "D3Q27MacroscopicQuantitiesPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "D3Q27MacroscopicQuantitiesCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void MacroscopicQuantitiesCoProcessor::collectData(double step)
@@ -121,7 +121,7 @@ void MacroscopicQuantitiesCoProcessor::collectData(double step)
       {
          WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(cfilePath,filenames,istep,false);
       }
-      UBLOG(logINFO,"D3Q27MacroscopicQuantitiesPostprocessor step: " << istep);
+      UBLOG(logINFO,"D3Q27MacroscopicQuantitiesCoProcessor step: " << istep);
    }
 
    clearData();
diff --git a/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.h
index 8634885ee7b171a893482f38f990bbd4cafc7388..2fa8c3a5fa57940b454560427f4bbdb4d020a09d 100644
--- a/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/MacroscopicQuantitiesCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef D3Q27MACROSCOPICQUANTITIESPOSTPROCESSOR_H
-#define D3Q27MACROSCOPICQUANTITIESPOSTPROCESSOR_H
+#ifndef D3Q27MACROSCOPICQUANTITIESCoProcessor_H
+#define D3Q27MACROSCOPICQUANTITIESCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Grid3D.h"
diff --git a/source/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
index 1b1c6be6f9614c732731c9c789d7bd93519e3289..d0f26a2e25be12c421c7982f7f8b9ec2b6c11cfe 100644
--- a/source/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/NUPSCounterCoProcessor.h
@@ -1,12 +1,12 @@
 /*
-*  NUPSCounterPostprocessor.h
+*  NUPSCounterCoProcessor.h
 *
 *  Created on: 03.05.2011
 *  Author: K. Kucher
 */
 
-#ifndef NUPSCOUNTERPOSTPROCESSOR_H_
-#define NUPSCOUNTERPOSTPROCESSOR_H_
+#ifndef NUPSCOUNTERCoProcessor_H_
+#define NUPSCOUNTERCoProcessor_H_
 
 #include "CoProcessor.h"
 #include "Communicator.h"
diff --git a/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
index c6b35e9906e7149a59848ce38569f8ec67b3a732..1c6774639c99e98c5f1163d26a250ab5164c1b09 100644
--- a/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.cpp
@@ -1,5 +1,5 @@
 /*
- * D3Q27RhoPostprocessor.cpp
+ * D3Q27RhoCoProcessor.cpp
  *
  *  Created on: 28.12.2010
  *      Author: kucher
diff --git a/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
index 6c53c845d7a6f0262b8e6de29eae7d4f7726be65..b966ecf0193708cb5b32c2e148e2d57a456979cc 100644
--- a/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
@@ -1,12 +1,12 @@
 /*
- *  D3Q27PressureDifferencePostprocessor.h
+ *  D3Q27PressureDifferenceCoProcessor.h
  *
  *  Created on: 28.12.2010
  *  Author: kucher
  */
 
-#ifndef D3Q27PRESSUREDIFFERENCEPOSTPROCESSOR_H
-#define D3Q27PRESSUREDIFFERENCEPOSTPROCESSOR_H
+#ifndef D3Q27PRESSUREDIFFERENCECoProcessor_H
+#define D3Q27PRESSUREDIFFERENCECoProcessor_H
 
 #include "CoProcessor.h"
 #include "D3Q27IntegrateValuesHelper.h"
@@ -32,4 +32,4 @@ protected:
 };
 
 
-#endif /* D3Q27RHODIFFERENCEPOSTPROCESSOR_H_ */
+#endif /* D3Q27RHODIFFERENCECoProcessor_H_ */
diff --git a/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
index b6d461fbd5db50819aabb46dca11e4b616ec9ec0..58c020145df55a3c9bdb29881c2d517dc251b6ad 100644
--- a/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.cpp
@@ -32,7 +32,7 @@ void QCriterionCoProcessor::init()
 
 	for(int level = minInitLevel; level<=maxInitLevel;level++)
 	{
-		grid->getBlocks(level, gridRank, true, blockVector[level]); //grid: private variable in Postprocessor. Initialized by filling with blocks
+		grid->getBlocks(level, gridRank, true, blockVector[level]); //grid: private variable in CoProcessor. Initialized by filling with blocks
 	}
 }
 //////////////////////////////////////////////////////////////////////////
@@ -41,7 +41,7 @@ void QCriterionCoProcessor::process(double step)
 	if(scheduler->isDue(step) )
 		collectData(step);
 
-	UBLOG(logDEBUG3, "QCriterionPostprocessor::update:" << step);
+	UBLOG(logDEBUG3, "QCriterionCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void QCriterionCoProcessor::collectData(double step)
@@ -66,7 +66,7 @@ void QCriterionCoProcessor::collectData(double step)
 
 	vector<string> cellDataNames;
 
-	//distributed writing as in MacroscopicValuesPostprocessor.cpp
+	//distributed writing as in MacroscopicValuesCoProcessor.cpp
 	vector<string> pieces = comm->gather(piece); //comm: MPI-Wrapper
 	if (comm->getProcessID() == comm->getRoot())
 	{
@@ -82,7 +82,7 @@ void QCriterionCoProcessor::collectData(double step)
 		{
 			WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(path+"_collection",filenames,istep,false);
 		}
-		UBLOG(logINFO,"QCriterionPostprocessor step: " << istep);
+		UBLOG(logINFO,"QCriterionCoProcessor step: " << istep);
 	}
 
 	clearData();
@@ -229,7 +229,7 @@ void QCriterionCoProcessor::getNeighborVelocities(int offx, int offy, int offz,
 	int maxX1 = (int)(distributions->getNX1());
 	int maxX2 = (int)(distributions->getNX2());
 	int maxX3 = (int)(distributions->getNX3());
-	if (maxX1<3) throw UbException(UB_EXARGS,"QCriterionPostprocessor: NX1 too small for FD stencils!");
+	if (maxX1<3) throw UbException(UB_EXARGS,"QCriterionCoProcessor: NX1 too small for FD stencils!");
 	maxX1 -= 2;
 	maxX2 -= 2;
 	maxX3 -= 2;
diff --git a/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.h
index 1c0586035554d225b98adad79d468eb73d5a9fc1..2a6d0270108873a35245c6da7a4c8608fa9f0d0e 100644
--- a/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/QCriterionCoProcessor.h
@@ -1,10 +1,10 @@
-//! \file QCriterionPostprocessor.h
+//! \file QCriterionCoProcessor.h
 //!  \brief Created on: 25.08.2013
 //!  \author: Sonja Uphoff
 
 
-#ifndef QCriterionPostprocessor_H
-#define QCriterionPostprocessor_H
+#ifndef QCriterionCoProcessor_H
+#define QCriterionCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Grid3D.h"
@@ -46,7 +46,7 @@ private:
 	void init();
 	std::vector<UbTupleFloat3> nodes;
 	std::vector<UbTupleInt8> cells;
-	std::vector<std::string> datanames; //only one entry for QKrit-Postprocessor: Q
+	std::vector<std::string> datanames; //only one entry for QKrit-CoProcessor: Q
 	std::vector<std::vector<double> > data; 
 	std::vector<std::vector<Block3DPtr> > blockVector;
 	int minInitLevel; //go through all levels for block vector of current process from minInitLevel to maxInitLevel
diff --git a/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.cpp
index 44898e10a78cb2d9b05ef6bb8866fb281dff2dcc..373c62fca0689e39a4f333692d8ce0c450f77e87 100644
--- a/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.cpp
@@ -59,25 +59,25 @@ void RestartCoProcessor::process(double step)
    {
       doCheckPoint(int(step));
 
-      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"RestartPostprocessor save step: " << step);
+      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"RestartCoProcessor save step: " << step);
 
-      UBLOG(logDEBUG3, "RestartPostprocessor::update:" << step);
+      UBLOG(logDEBUG3, "RestartCoProcessor::update:" << step);
    }   
 }
 //////////////////////////////////////////////////////////////////////////
-void RestartCoProcessor::addCoProcessor( PostprocessorPtr p )
+void RestartCoProcessor::addCoProcessor( CoProcessorPtr p )
 {
-   postprocessors.push_back(p);
+   CoProcessors.push_back(p);
 }
 //////////////////////////////////////////////////////////////////////////
-PostprocessorPtr RestartCoProcessor::getCoProcessor(int index)
+CoProcessorPtr RestartCoProcessor::getCoProcessor(int index)
 {
-   return postprocessors[index];
+   return CoProcessors[index];
 }
 //////////////////////////////////////////////////////////////////////////
-std::vector<PostprocessorPtr> RestartCoProcessor::getPostprocessors()
+std::vector<CoProcessorPtr> RestartCoProcessor::getCoProcessors()
 {
-   return postprocessors;
+   return CoProcessors;
 }
 //////////////////////////////////////////////////////////////////////////
 void RestartCoProcessor::doCheckPoint(int step)
@@ -130,7 +130,7 @@ Grid3DPtr RestartCoProcessor::restart()
       this->reconnect(grid);
       if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"Load check point - end");
 
-      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"RestartPostprocessor restart step: " << restartStep);
+      if(comm->getProcessID() == comm->getRoot()) UBLOG(logINFO,"RestartCoProcessor restart step: " << restartStep);
 
       return grid;
    } 
@@ -181,11 +181,11 @@ void RestartCoProcessor::saveTxtArchive(std::string filename)
    oa.register_type<Grid3D>();
    oa << grid;
 
-   int psize = (int)postprocessors.size(); 
+   int psize = (int)CoProcessors.size(); 
    oa << psize;
 
-   oa.register_type<PostprocessorPtr>();
-   BOOST_FOREACH(PostprocessorPtr pp, postprocessors)
+   oa.register_type<CoProcessorPtr>();
+   BOOST_FOREACH(CoProcessorPtr pp, CoProcessors)
    {
       oa << pp;
    }
@@ -202,13 +202,13 @@ void RestartCoProcessor::loadTxtArchive( std::string filename )
    int psize;
    ia >> psize;
 
-   ia.register_type<PostprocessorPtr>();
+   ia.register_type<CoProcessorPtr>();
    for (int i = 0; i < psize; i++)
    {
-      PostprocessorPtr pp;
+      CoProcessorPtr pp;
       ia >> pp;
       pp->reconnect(grid);
-      postprocessors.push_back(pp);
+      CoProcessors.push_back(pp);
    }
 }
 //////////////////////////////////////////////////////////////////////////
@@ -227,11 +227,11 @@ void RestartCoProcessor::saveBinArchive( std::string filename )
    oa.register_type<Grid3D>();
    oa << grid;
 
-   int psize = (int)postprocessors.size(); 
+   int psize = (int)CoProcessors.size(); 
    oa << psize;
 
-   oa.register_type<PostprocessorPtr>();
-   BOOST_FOREACH(PostprocessorPtr pp, postprocessors)
+   oa.register_type<CoProcessorPtr>();
+   BOOST_FOREACH(CoProcessorPtr pp, CoProcessors)
    {
       oa << pp;
    }
@@ -249,13 +249,13 @@ void RestartCoProcessor::loadBinArchive( std::string filename )
    int psize;
    ia >> psize;
 
-   ia.register_type<PostprocessorPtr>();
+   ia.register_type<CoProcessorPtr>();
    for (int i = 0; i < psize; i++)
    {
-      PostprocessorPtr pp;
+      CoProcessorPtr pp;
       ia >> pp;
       pp->reconnect(grid);
-      postprocessors.push_back(pp);
+      CoProcessors.push_back(pp);
    }
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.h
index e544c950c68a81c15efedc0b877072343ab0e4e0..541166af86b9aa3972f705525cd9cf3c971c21c2 100644
--- a/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/RestartCoProcessor.h
@@ -19,9 +19,9 @@ public:
    RestartCoProcessor(Grid3DPtr& grid, UbSchedulerPtr s, CommunicatorPtr comm, const std::string& path, int restartStep, ArchiveType typetype = BINARY);
    ~RestartCoProcessor();
    void process(double step);
-   void addCoProcessor(PostprocessorPtr p);
-   PostprocessorPtr getCoProcessor(int index);
-   std::vector<PostprocessorPtr> getPostprocessors();
+   void addCoProcessor(CoProcessorPtr p);
+   CoProcessorPtr getCoProcessor(int index);
+   std::vector<CoProcessorPtr> getCoProcessors();
    void addGridVisitor(Grid3DVisitorPtr v);
    void addBlockVisitor(Block3DVisitorPtr v);
    void doCheckPoint(int step);
@@ -37,7 +37,7 @@ protected:
    int readMetafile();
    void checkMetafile();
 private:
-   std::vector<PostprocessorPtr> postprocessors;
+   std::vector<CoProcessorPtr> CoProcessors;
    std::vector<Grid3DVisitorPtr> gridVisitors;
    std::vector<Block3DVisitorPtr> blockVisitors;
    Grid3DPtr grid;
diff --git a/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
index 6daae755730987d403b7b41f225ca1806c8aee41..819b9f1e8fbf87a146d0c3ddde6faca837bdfade 100644
--- a/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.cpp
@@ -46,7 +46,7 @@ void ShearStressCoProcessor::process( double step )
    calculateShearStress(step);
    if(scheduler->isDue(step) )
       collectData(step);
-   UBLOG(logDEBUG3, "D3Q27ShearStressPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "D3Q27ShearStressCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void ShearStressCoProcessor::collectData(double step)
@@ -70,7 +70,7 @@ void ShearStressCoProcessor::collectData(double step)
 
    //   vector<string> filenames;
    //   filenames.push_back(pname);
-   //   if (step == Postprocessor::scheduler->getMinBegin())
+   //   if (step == CoProcessor::scheduler->getMinBegin())
    //   {
    //      WbWriterVtkXmlASCII::getInstance()->writeCollection(path+"__Shear_collection",filenames,istep,false);
    //   } 
@@ -78,7 +78,7 @@ void ShearStressCoProcessor::collectData(double step)
    //   {
    //      WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(path+"__Shear_collection",filenames,istep,false);
    //   }
-   //   UBLOG(logINFO,"D3Q27ShearStressPostprocessor step: " << istep);
+   //   UBLOG(logINFO,"D3Q27ShearStressCoProcessor step: " << istep);
    //}
 
    string pfilePath, partPath, subfolder, cfilePath;
@@ -111,7 +111,7 @@ void ShearStressCoProcessor::collectData(double step)
       {
          WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(cfilePath,filenames,istep,false);
       }
-      UBLOG(logINFO,"D3Q27ShearStressPostprocessor step: " << istep);
+      UBLOG(logINFO,"D3Q27ShearStressCoProcessor step: " << istep);
    }
 
    clearData();
@@ -346,7 +346,7 @@ void ShearStressCoProcessor::reset(double step)
    if(Resetscheduler->isDue(step) )
       resetData(step);
 
-   UBLOG(logDEBUG3, "resetPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "resetCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void ShearStressCoProcessor::resetData(double step)
diff --git a/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
index 0666bbafd2bbb73c09081f241732f0637aaf0d4b..15355dc4ba5173e656f9914d206fdb53ee07d547 100644
--- a/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef D3Q27ShearStressPostprocessor_H
-#define D3Q27ShearStressPostprocessor_H
+#ifndef D3Q27ShearStressCoProcessor_H
+#define D3Q27ShearStressCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Communicator.h"
@@ -73,4 +73,4 @@ private:
 };
 
 
-#endif /* D3Q27ShearStressPostprocessor_H */
+#endif /* D3Q27ShearStressCoProcessor_H */
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
index ee8b418891d02bf6a28f079fa5f6de489fd01db4..39138546073eaa47b2cc459e6559dd040f9d4e28 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.cpp
@@ -98,7 +98,7 @@ void TimeAveragedValuesCoProcessor::process(double step)
       counter = 0;
    }
 
-   UBLOG(logDEBUG3, "AverageValues2Postprocessor::update:" << step);
+   UBLOG(logDEBUG3, "AverageValues2CoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void TimeAveragedValuesCoProcessor::collectData(double step)
@@ -132,7 +132,7 @@ void TimeAveragedValuesCoProcessor::collectData(double step)
    if (comm->getProcessID() == comm->getRoot())
    {
       string pname = WbWriterVtkXmlASCII::getInstance()->writeParallelFile(pfilePath, pieces, datanames, cellDataNames);
-      UBLOG(logINFO, "TimeAveragedValuesPostprocessor step: " << istep);
+      UBLOG(logINFO, "TimeAveragedValuesCoProcessor step: " << istep);
    }
 
    clearData();
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
index ffb63123947870c21700a0edd56e9f73b95a1a23..45445ecccf8f998bdc55266918004cd8a2786710 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef TimeAveragedValuesPostprocessor_H
-#define TimeAveragedValuesPostprocessor_H
+#ifndef TimeAveragedValuesCoProcessor_H
+#define TimeAveragedValuesCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Grid3D.h"
@@ -94,7 +94,7 @@ private:
    //template<class Archive>
    //void serialize(Archive & ar, const unsigned int version)
    //{
-   //   ar & boost::serialization::base_object<Postprocessor>(*this);
+   //   ar & boost::serialization::base_object<CoProcessor>(*this);
    //   ar & path;
    //   ar & blockVector;
    //   ar & minInitLevel;
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
index 925b62e9756e23a2584df0d60415aa4ada897c85..f0b8c5350c92797b4e7287ec0e869a3dc8a891ff 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.cpp
@@ -17,7 +17,7 @@ void TimeDependentBCCoProcessor::process(double step)
 {
    BOOST_FOREACH(Interactor3DPtr inter, interactors)
       inter->updateInteractor( step );
-   UBLOG(logDEBUG3, "TimeDependentBCPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "TimeDependentBCCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void TimeDependentBCCoProcessor::addInteractor( Interactor3DPtr interactor )
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
index 01bd83a4f80b6ac29b1596cf690f28a3321b9692..d81a9ff8e27345c0fc150c7171d4ceb1e0215344 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef TimeDependentBCPOSTPROCESSOR_H
-#define TimeDependentBCPOSTPROCESSOR_H
+#ifndef TimeDependentBCCoProcessor_H
+#define TimeDependentBCCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Interactor3D.h"
@@ -16,7 +16,7 @@ public:
 	TimeDependentBCCoProcessor(Grid3DPtr grid);
 	virtual ~TimeDependentBCCoProcessor();
 	void process(double step);
-   //! add interactors to Postprocessor
+   //! add interactors to CoProcessor
    void addInteractor(Interactor3DPtr interactor);
 protected:
 private:
@@ -24,4 +24,4 @@ private:
 };
 
 
-#endif /* TimeDependentBCPOSTPROCESSOR_H */
+#endif /* TimeDependentBCCoProcessor_H */
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
index 3e20bd108d210175315baf0177c51c4958471189..74c8a1039a7ab9cedab0e5b9ae6036e908cf9b98 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.cpp
@@ -1,5 +1,5 @@
 /*
-*  TimeseriesWriterPostprocessor.h
+*  TimeseriesWriterCoProcessor.h
 *
 *  Created on: 08.05.2013
 *  Author: uphoff
@@ -26,7 +26,7 @@ TimeseriesCoProcessor::TimeseriesCoProcessor(Grid3DPtr grid, UbSchedulerPtr s,
       std::ofstream ostr;
       //fname = path+"/timeseries/timeseries"+UbSystem::toString(grid->getTimeStep())+".csv";
       fname = path+".csv";
-      UBLOG(logINFO, "TimeseriesWriterPostprocessor::fname:" << fname);
+      UBLOG(logINFO, "TimeseriesWriterCoProcessor::fname:" << fname);
       ostr.open(fname.c_str(), std::ios_base::out | std::ios_base::app);
       if(!ostr)
       { 
@@ -37,7 +37,7 @@ TimeseriesCoProcessor::TimeseriesCoProcessor(Grid3DPtr grid, UbSchedulerPtr s,
       }
       ostr << "step;rho;vx;vy;vz;volume\n";
       ostr.close();
-      UBLOG(logINFO, "TimeseriesWriterPostprocessor::Constructor:end");
+      UBLOG(logINFO, "TimeseriesWriterCoProcessor::Constructor:end");
    }
 }
 //////////////////////////////////////////////////////////////////////////
@@ -55,7 +55,7 @@ void TimeseriesCoProcessor::collectData(double step)
 {
    h1->calculateMQ();
 
-   UBLOG(logDEBUG3, "TimeseriesWriterPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "TimeseriesWriterCoProcessor::update:" << step);
 
    if (comm->getProcessID() == comm->getRoot())
    {
diff --git a/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
index d7ae683e71622a84c4c35e58f0610f09dda08cfb..bbea080eeabb3a3ae4bda2823c36de667f8eeed6 100644
--- a/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
@@ -1,12 +1,12 @@
 /*
- *  TimeseriesPostprocessor.h
+ *  TimeseriesCoProcessor.h
  *
  *  Created on: 08.05.2013
  *  Author: uphoff
  */
 
-#ifndef TimeseriesPOSTPROCESSOR_H
-#define TimeseriesPOSTPROCESSOR_H
+#ifndef TimeseriesCoProcessor_H
+#define TimeseriesCoProcessor_H
 
 #include "CoProcessor.h"
 #include "D3Q27IntegrateValuesHelper.h"
@@ -42,4 +42,4 @@ private:
 };
 
 
-#endif /* TimeseriesPOSTPROCESSOR_H */
+#endif /* TimeseriesCoProcessor_H */
diff --git a/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
index 888cc3dfb3caa4c0c1f3d4fe9f35c15765553b22..0bf331594eafdc06704a671758c9e3fa42315642 100644
--- a/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.cpp
@@ -49,7 +49,7 @@ void TurbulenceIntensityCoProcessor::process(double step)
    if(scheduler->isDue(step) )
       collectData(step);
 
-   UBLOG(logDEBUG3, "TurbulenceIntensityPostprocessor::update:" << step);
+   UBLOG(logDEBUG3, "TurbulenceIntensityCoProcessor::update:" << step);
 }
 //////////////////////////////////////////////////////////////////////////
 void TurbulenceIntensityCoProcessor::collectData(double step)
@@ -88,7 +88,7 @@ void TurbulenceIntensityCoProcessor::collectData(double step)
       {
          WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(path+"_collection",filenames,istep,false);
       }
-      UBLOG(logINFO,"TurbulenceIntensityPostprocessor step: " << istep);
+      UBLOG(logINFO,"TurbulenceIntensityCoProcessor step: " << istep);
    }
 
    clearData();
diff --git a/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
index 85ae0dac14f0ecc7ee29b2732a70abc743ecee2e..6f0926b9ab6ef6ab9af7a15abc70c751b15f165d 100644
--- a/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
@@ -1,5 +1,5 @@
-#ifndef TurbulenceIntensityPostprocessor_H
-#define TurbulenceIntensityPostprocessor_H
+#ifndef TurbulenceIntensityCoProcessor_H
+#define TurbulenceIntensityCoProcessor_H
 
 #include "CoProcessor.h"
 #include "Grid3D.h"
diff --git a/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
index ad28d8d1326febf66ccd5447333b2fcc42ce5a05..baf95617ab3bfeb4378f0d64023abb70d495dda8 100644
--- a/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
+++ b/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.cpp
@@ -144,6 +144,6 @@ void WriteBlocksCoProcessor::collectData(double step)
          WbWriterVtkXmlASCII::getInstance()->addFilesToCollection(path + "/blocks/blocks_collection", filenames, istep, false);
       }
 
-      UBLOG(logINFO,"BlocksPostprocessor step: " << istep);
+      UBLOG(logINFO,"BlocksCoProcessor step: " << istep);
    }
 }
diff --git a/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h b/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
index 927841607f3fd1aafac622aa4c8622f5a8616898..0dc8cc30b63433c92e13405d1c05f1c285675864 100644
--- a/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
+++ b/source/VirtualFluidsCore/CoProcessors/WriteBlocksCoProcessor.h
@@ -1,12 +1,12 @@
 /*
-*  BlocksPostprocessor.h
+*  BlocksCoProcessor.h
 *
 *  Created on: 24.09.2012
 *  Author: K. Kucher
 */
 
-#ifndef BlocksPostprocessor_H_
-#define BlocksPostprocessor_H_
+#ifndef BlocksCoProcessor_H_
+#define BlocksCoProcessor_H_
 
 #include "CoProcessor.h"
 #include "Communicator.h"