From cf828d08804744234010c38d42f7594ade6e3d6c Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Thu, 8 Oct 2020 09:29:10 +0200
Subject: [PATCH] Add overrides.

---
 src/basics/basics/container/CbVector.h        |  6 +-
 src/basics/basics/container/CbVectorPool.h    |  6 +-
 src/basics/basics/memory/MbSmartPtr.h         |  2 +-
 .../basics/transmitter/TbTransmitterLocal.h   | 14 ++--
 .../basics/transmitter/TbTransmitterMpiPool.h | 46 +++++------
 .../basics/utilities/UbFileInputASCII.h       | 42 +++++-----
 .../basics/utilities/UbFileInputBinary.h      | 40 +++++-----
 .../basics/utilities/UbFileOutputASCII.h      | 36 ++++-----
 .../basics/utilities/UbFileOutputBinary.h     | 34 ++++-----
 src/basics/basics/utilities/UbNupsTimer.h     |  4 +-
 src/basics/basics/utilities/Vector3DTest.cpp  |  2 +-
 src/basics/basics/writer/WbWriterAvsASCII.h   | 20 ++---
 src/basics/basics/writer/WbWriterAvsBinary.h  | 18 ++---
 src/basics/basics/writer/WbWriterSunflow.h    |  4 +-
 .../basics/writer/WbWriterTecPlotASCII.h      |  2 +-
 src/basics/basics/writer/WbWriterVtkASCII.h   | 18 ++---
 src/basics/basics/writer/WbWriterVtkBinary.h  | 22 +++---
 src/basics/basics/writer/WbWriterX3D.h        |  4 +-
 src/basics/geometry3d/GbCylinder3D.h          | 60 +++++++--------
 src/basics/geometry3d/GbHalfSpaceKrischan3D.h | 42 +++++-----
 src/basics/geometry3d/GbObjectGroup3D.h       | 66 ++++++++--------
 src/basics/geometry3d/GbQuadFaceMesh3D.h      | 36 ++++-----
 src/basics/geometry3d/GbSphere3D.h            | 68 ++++++++---------
 src/basics/geometry3d/GbTriFaceMesh3D.h       | 44 +++++------
 src/basics/geometry3d/GbTriangularMesh3D.h    | 40 +++++-----
 src/basics/geometry3d/GbVoxelMatrix3D.h       | 54 ++++++-------
 .../KdCountLineIntersectionHandler.h          |  2 +-
 .../KdCountRayIntersectionHandler.h           |  2 +-
 .../KdTree/splitalgorithms/KdSAHSplit.h       |  4 +-
 .../splitalgorithms/KdSpatiallMedianSplit.h   |  4 +-
 .../BoundaryConditions/DensityBCAdapter.h     |  8 +-
 .../BoundaryConditions/EqDensityBCAlgorithm.h |  6 +-
 .../HighViscosityNoSlipBCAlgorithm.h          |  6 +-
 .../NonEqDensityBCAlgorithm.h                 |  6 +-
 .../NonReflectingOutflowBCAlgorithm.h         |  6 +-
 .../BoundaryConditions/SlipBCAdapter.h        |  8 +-
 .../BoundaryConditions/SlipBCAlgorithm.h      |  6 +-
 .../ThinWallNoSlipBCAlgorithm.h               |  6 +-
 .../VelocityWithDensityBCAlgorithm.h          |  8 +-
 .../CoProcessors/AverageValuesCoProcessor.h   |  2 +-
 .../CoProcessors/CalculateForcesCoProcessor.h |  4 +-
 .../DecreaseViscosityCoProcessor.h            |  4 +-
 .../CoProcessors/EmergencyExitCoProcessor.h   |  2 +-
 .../CoProcessors/LineTimeSeriesCoProcessor.h  |  2 +-
 .../CoProcessors/MPIIOCoProcessor.h           |  4 +-
 .../MPIIOMigrationBECoProcessor.h             |  4 +-
 .../CoProcessors/MPIIOMigrationCoProcessor.h  |  4 +-
 .../CoProcessors/MPIIORestartCoProcessor.h    |  4 +-
 .../CoProcessors/MicrophoneArrayCoProcessor.h |  2 +-
 .../PressureCoefficientCoProcessor.h          |  2 +-
 .../PressureDifferenceCoProcessor.h           |  2 +-
 .../CoProcessors/ShearStressCoProcessor.h     |  2 +-
 .../TimeAveragedValuesCoProcessor.h           |  2 +-
 .../CoProcessors/TimeDependentBCCoProcessor.h |  2 +-
 .../CoProcessors/TimeseriesCoProcessor.h      |  2 +-
 .../TurbulenceIntensityCoProcessor.h          |  2 +-
 .../CoProcessors/WriteGbObjectsCoProcessor.h  |  2 +-
 .../WriteMQFromSelectionCoProcessor.h         |  2 +-
 .../Connectors/Block3DConnectorFactory.h      | 16 ++--
 .../Connectors/CoarseToFineBlock3DConnector.h | 52 ++++++-------
 .../CoarseToFineNodeSetBlock3DConnector.h     |  6 +-
 .../Connectors/D3Q27ETCFOffVectorConnector.h  | 50 ++++++------
 .../Connectors/D3Q27ETFCOffVectorConnector.h  | 50 ++++++------
 .../Connectors/D3Q27ETFullVectorConnector.h   |  6 +-
 .../Connectors/FineToCoarseBlock3DConnector.h | 50 ++++++------
 .../FineToCoarseNodeSetBlock3DConnector.h     |  6 +-
 .../Connectors/LocalBlock3DConnector.h        | 24 +++---
 .../Connectors/RemoteBlock3DConnector.h       | 50 ++++++------
 .../Data/D3Q27EsoTwist3DSoA.h                 | 30 ++++----
 src/cpu/VirtualFluidsCore/Data/VoidData3D.h   | 30 ++++----
 .../Interactors/D3Q27TriFaceMeshInteractor.h  | 10 +--
 src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h  |  2 +-
 ...ssibleCumulant4thOrderViscosityLBMKernel.h |  6 +-
 .../LBM/CompressibleCumulantLBMKernel.h       |  8 +-
 ...CompressibleOffsetInterpolationProcessor.h | 24 +++---
 ...sibleOffsetMomentsInterpolationProcessor.h | 24 +++---
 ...fsetSquarePressureInterpolationProcessor.h | 24 +++---
 .../LBM/CumulantK17LBMKernel.h                |  2 +-
 .../LBM/IncompressibleCumulantLBMKernel.h     |  8 +-
 ...ressibleCumulantWithSpongeLayerLBMKernel.h |  8 +-
 ...compressibleOffsetInterpolationProcessor.h | 24 +++---
 .../LBM/InitDensityLBMKernel.h                |  8 +-
 src/cpu/VirtualFluidsCore/LBM/LBMKernel.h     |  8 +-
 .../LBM/LBMKernelETD3Q27BGK.h                 |  2 +-
 src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h |  8 +-
 .../Parallel/MPICommunicator.h                | 76 +++++++++----------
 .../Parallel/NullCommunicator.h               | 24 +++---
 .../ChangeBoundaryDensityBlockVisitor.h       |  2 +-
 .../Visitors/CheckRatioBlockVisitor.h         |  2 +-
 ...oarsenCrossAndInsideGbObjectBlockVisitor.h |  2 +-
 .../Visitors/ConnectorBlockVisitor.h          |  2 +-
 ...istributionsWithInterpolationGridVisitor.h |  4 +-
 .../Visitors/MetisPartitioningGridVisitor.h   |  2 +-
 .../Visitors/OverlapBlockVisitor.h            |  2 +-
 .../Visitors/RatioBlockVisitor.h              |  2 +-
 .../Visitors/RatioSmoothBlockVisitor.h        |  2 +-
 ...RefineCrossAndInsideGbObjectBlockVisitor.h |  2 +-
 .../Visitors/RenumberBlockVisitor.h           |  2 +-
 .../Visitors/RenumberGridVisitor.h            |  2 +-
 .../Visitors/SetForcingBlockVisitor.h         |  4 +-
 .../SetInterpolationDirsBlockVisitor.h        |  2 +-
 .../Visitors/SetKernelBlockVisitor.h          |  2 +-
 .../Visitors/SetSpongeLayerBlockVisitor.h     |  2 +-
 .../Visitors/SetUndefinedNodesBlockVisitor.h  |  2 +-
 .../Visitors/SpongeLayerBlockVisitor.h        |  2 +-
 .../Visitors/ViscosityBlockVisitor.h          |  2 +-
 106 files changed, 765 insertions(+), 765 deletions(-)

diff --git a/src/basics/basics/container/CbVector.h b/src/basics/basics/container/CbVector.h
index 300b0212b..49ccfcfac 100644
--- a/src/basics/basics/container/CbVector.h
+++ b/src/basics/basics/container/CbVector.h
@@ -264,12 +264,12 @@ public:
 
    }
    /*==========================================================*/
-   bool alloc(CbVector< value_type >& src, const size_type& dataSize, const value_type& value=value_type())
+   bool alloc(CbVector< value_type >& src, const size_type& dataSize, const value_type& value=value_type()) override
    {
       return this->resize(src,dataSize,value);
    }
    /*==========================================================*/
-   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
+   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       if( CbVectorAllocatorStd< value_type >::dataSizeOf(vec) == dataSize) return false;
 
@@ -290,7 +290,7 @@ public:
       return true;
    }
    /*==========================================================*/
-   bool dealloc(CbVector< value_type >& vec)
+   bool dealloc(CbVector< value_type >& vec) override
    {
       if( this->ptrDataOf(vec) )
       {
diff --git a/src/basics/basics/container/CbVectorPool.h b/src/basics/basics/container/CbVectorPool.h
index a89804d82..9a45f8ac9 100644
--- a/src/basics/basics/container/CbVectorPool.h
+++ b/src/basics/basics/container/CbVectorPool.h
@@ -427,19 +427,19 @@ public:
       key = ptrVectorPool->getNextCbVectorKey();
    }
    /*==========================================================*/
-   bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type())
+   bool alloc(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       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())
+   bool resize(CbVector< value_type >& vec, const size_type& dataSize, const value_type& value=value_type()) override
    {
       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)
+   bool dealloc(CbVector< value_type >& vec) override
    {
       if(ptrVectorPool) return this->ptrVectorPool->deallocVectorData(vec);
       //wenn kein ptrVectorPool -> wurde bereits deallokiert
diff --git a/src/basics/basics/memory/MbSmartPtr.h b/src/basics/basics/memory/MbSmartPtr.h
index 4321a8e1a..0a705fa26 100644
--- a/src/basics/basics/memory/MbSmartPtr.h
+++ b/src/basics/basics/memory/MbSmartPtr.h
@@ -50,7 +50,7 @@ public:
 		init(ptr.get());
 	}
 	// Destruktor
-   ~MbSmartPtr<ObjType>()
+   ~MbSmartPtr<ObjType>() override
 	{
       init(NULL);
 	}
diff --git a/src/basics/basics/transmitter/TbTransmitterLocal.h b/src/basics/basics/transmitter/TbTransmitterLocal.h
index fba8f150c..9d6cd1db8 100644
--- a/src/basics/basics/transmitter/TbTransmitterLocal.h
+++ b/src/basics/basics/transmitter/TbTransmitterLocal.h
@@ -42,18 +42,18 @@ public:
 
    }
    
-   bool isLocalTransmitter()  const { return true;                         }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
+   bool isLocalTransmitter()  const override { return true;                         }
+   bool isRemoteTransmitter() const override { return !this->isLocalTransmitter();  }
 
    //send buffer wird autom resized
-   void sendDataSize()    { }
+   void sendDataSize() override    { }
    //reiceive braucht nichts machen, da send==receive buffer ;-)
-   void receiveDataSize() { } 
+   void receiveDataSize() override { } 
 
-   void        sendData()    { }
-   value_type& receiveData() { return this->data; }
+   void        sendData() override    { }
+   value_type& receiveData() override { return this->data; }
 
-   std::string toString()  const { return "TbLocalTransmitter"+(std::string)typeid(T).name(); }
+   std::string toString()  const override { return "TbLocalTransmitter"+(std::string)typeid(T).name(); }
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/basics/basics/transmitter/TbTransmitterMpiPool.h b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
index 78decb50c..052a9b39e 100644
--- a/src/basics/basics/transmitter/TbTransmitterMpiPool.h
+++ b/src/basics/basics/transmitter/TbTransmitterMpiPool.h
@@ -455,7 +455,7 @@ public:
    { 
       this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey,this->mpiVectorPool) );
    }
-   ~TbCbVectorSenderMpiPool()
+   ~TbCbVectorSenderMpiPool() override
    {
       if( this->mpiVectorPool->getNofStoredVectors()==1 ) //last entry!
       {
@@ -463,22 +463,22 @@ public:
       }
    }
 
-   bool isLocalTransmitter()  const { return false;                        }
-   bool isRemoteTransmitter() const { return !this->isLocalTransmitter();  }
+   bool isLocalTransmitter()  const override { return false;                        }
+   bool isRemoteTransmitter() const override { 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(); }
+   void sendDataSize() override          { this->mpiVectorPool->sendDataOrder(); }
+   void receiveDataSize() override       { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }   
+   CbVector< T >& receiveData() override { throw UbException(UB_EXARGS,"TbMpiPoolSender sends only");  }
+   void prepareForSend() override        { this->mpiVectorPool->prepareForSendData(); }
+   void sendData() override              { 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"); }
+   int  getRecvFromRank() const override { throw UbException(UB_EXARGS,"TbCbVectorSenderMpiPool sends only"); }
+   int  getRecvFromTag()  const override { 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())+")"; }
+   std::string toString() const override { return "TbCbVectorSenderMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getSendTbRank())+"("+UbSystem::toString(getSendTbTag())+")"; }
 
 protected:
    TbCbVectorMpiPool<T>* mpiVectorPool;
@@ -498,21 +498,21 @@ public:
    { 
       this->getData().setAllocator( new CbVectorAllocatorPool<T>(cbVectorKey, this->mpiVectorPool) );
    }
-   ~TbCbVectorReceiverMpiPool()
+   ~TbCbVectorReceiverMpiPool() override
    {
       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()
+   bool isLocalTransmitter()  const override { return false;                        }
+   bool isRemoteTransmitter() const override { return !this->isLocalTransmitter();  }
+
+   void sendDataSize() override      { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only");  }   
+   void receiveDataSize() override   { this->mpiVectorPool->receiveDataOrder(); }  
+   void sendData() override          { throw UbException(UB_EXARGS,"TbCbVectorReceiverMpiPool receives only"); }
+   void prepareForReceive() override { this->mpiVectorPool->prepareForReceiveData(); }
+   CbVector< T >& receiveData() override
    { 
       this->mpiVectorPool->receiveData();
       return this->getData();
@@ -521,10 +521,10 @@ public:
    //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();  }
+   int  getRecvFromRank() const override { return  this->mpiVectorPool->getRemoteRank();  }
+   int  getRecvFromTag()  const override { return  this->mpiVectorPool->getRemoteTag();  }
 
-   std::string toString() const { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
+   std::string toString() const override { return "TbCbVectorReceiverMpiPool<"+(std::string)typeid(T).name()+" to rank (tag)"+UbSystem::toString(getRecvFromRank())+"("+UbSystem::toString(getRecvFromTag())+")"; }
 
 protected:
    TbCbVectorMpiPool<T>* mpiVectorPool;
diff --git a/src/basics/basics/utilities/UbFileInputASCII.h b/src/basics/basics/utilities/UbFileInputASCII.h
index e999500a9..40d5528c8 100644
--- a/src/basics/basics/utilities/UbFileInputASCII.h
+++ b/src/basics/basics/utilities/UbFileInputASCII.h
@@ -36,34 +36,34 @@ public:
    UbFileInputASCII() : UbFileInput() { }
    UbFileInputASCII(std::string filename);
 	
-   bool open(std::string filename);
+   bool open(std::string filename) override;
 
-   std::string getFileName();				
-	void	      skipLine();					   // Springt zur naechsten Zeile
+   std::string getFileName() override;				
+	void	      skipLine() override;					   // Springt zur naechsten Zeile
 
-   void        readLine();		 
-   std::string readStringLine();				
-	int		   readInteger();				   // Liest einen Int-Wert ein
+   void        readLine() override;		 
+   std::string readStringLine() override;				
+	int		   readInteger() override;				   // Liest einen Int-Wert ein
     long long   readLongLong();                       // Liest einen long-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();	
+   std::size_t readSize_t() override;
+   double	   readDouble() override;				   // Liest einen double-Wert ein
+	float 	   readFloat() override;				   // Liest einen float-Wert ein
+	bool  	   readBool() override;				      // Liest einen bool-Wert ein
+   char        readChar() override;                // Liest einen char-Wert ein
+   std::string	readString() override;				   // Liest ein Wort ein
+	std::string	readLineTill(char stop) override;	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
+	std::string	parseString() override;	
 
 
-   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);
+   bool        containsString(const std::string& var) override;
+   void        setPosAfterLineWithString(const std::string& var) override;
+   int		   readIntegerAfterString(const std::string& var) override;
+   double	   readDoubleAfterString(const std::string& var) override;
+   bool        readBoolAfterString(const std::string& var) override;
+   std::string readStringAfterString(const std::string& var) override;
 
-   FILETYPE getFileType() { return ASCII; }
+   FILETYPE getFileType() override { return ASCII; }
 
    template< typename T >
    friend inline UbFileInputASCII& operator>>(UbFileInputASCII& file, T& data) 
diff --git a/src/basics/basics/utilities/UbFileInputBinary.h b/src/basics/basics/utilities/UbFileInputBinary.h
index c410c822f..060866393 100644
--- a/src/basics/basics/utilities/UbFileInputBinary.h
+++ b/src/basics/basics/utilities/UbFileInputBinary.h
@@ -34,29 +34,29 @@ public:
    UbFileInputBinary() : UbFileInput() {  }
    UbFileInputBinary(std::string filename);
 	
-	bool        open(std::string filename);
+	bool        open(std::string filename) override;
 
-   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 
+   void	      skipLine() override;					   // Springt zur naechsten Zeile
+	void        readLine() override;		 
+   std::string readStringLine() override;				
+   std::size_t readSize_t() override;				
+   int		   readInteger() override;				   // Liest einen Int-Wert ein
+	double	   readDouble() override;				   // Liest einen double-Wert ein
+	float 	   readFloat() override;				   // Liest einen float-Wert ein
+	bool  	   readBool() override;				      // Liest einen bool-Wert ein
+   char        readChar() override;                // Liest einen char-Wert ein
+   std::string	readString() override;				   // Liest ein Wort ein
+	std::string	readLineTill(char stop) override;	// Liest gesamte Zeile ein bis zu einem bestimmten Zeichen
+	std::string	parseString() override;	// 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);
+   bool        containsString(const std::string& var) override;
+   void        setPosAfterLineWithString(const std::string& var) override;
+   int		   readIntegerAfterString(const std::string& var) override;
+   double	   readDoubleAfterString(const std::string& var) override;
+   bool        readBoolAfterString(const std::string& var) override;
+   std::string readStringAfterString(const std::string& var) override;
 
-   FILETYPE getFileType() { return BINARY; }
+   FILETYPE getFileType() override { return BINARY; }
 
    template< typename T >
    friend inline UbFileInputBinary& operator>>(UbFileInputBinary& file, T& data) 
diff --git a/src/basics/basics/utilities/UbFileOutputASCII.h b/src/basics/basics/utilities/UbFileOutputASCII.h
index cfe68b699..25041513f 100644
--- a/src/basics/basics/utilities/UbFileOutputASCII.h
+++ b/src/basics/basics/utilities/UbFileOutputASCII.h
@@ -37,29 +37,29 @@ public:
    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);
+   bool open(const std::string& filename, CREATEOPTION opt=OUTFILE) override;
    
-   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 writeBool(const bool& value, const int& width=0) override;
+   void writeDouble(const double& value, const int& width=0) override;
+	void writeFloat(const float& value, const int& width=0) override;
+	void writeInteger(const int& value, const int& width=0) override;
+   void writeSize_t(const std::size_t& value, const int& width=0) override;
+   void writeChar(const char& value, const int& width=0) override;
+   void writeString(const std::string& value, const int& width=0) override;
+   void writeStringOnly(const std::string& value) override;
+   void writeLine(const std::string& value, const int& width=0) override;
+   void writeLine() override;
   
-   void setPrecision(const int& precision);
-   int  getPrecision() { return (int)outfile.precision(); }
+   void setPrecision(const int& precision) override;
+   int  getPrecision() override { return (int)outfile.precision(); }
 
-   void setCommentIndicator(char commentindicator) {this->commentindicator = commentindicator;} 
+   void setCommentIndicator(char commentindicator) override {this->commentindicator = commentindicator;} 
    
-   void writeCommentLine(const std::string& line);
-   void writeCommentLine(char indicator, const std::string& line);
-   void writeCopyOfFile(const std::string& filename);
+   void writeCommentLine(const std::string& line) override;
+   void writeCommentLine(char indicator, const std::string& line) override;
+   void writeCopyOfFile(const std::string& filename) override;
 
-   FILETYPE getFileType() { return ASCII; }
+   FILETYPE getFileType() override { return ASCII; }
 
    template< typename T >
    friend inline UbFileOutputASCII& operator<<(UbFileOutputASCII& file, const T& data) 
diff --git a/src/basics/basics/utilities/UbFileOutputBinary.h b/src/basics/basics/utilities/UbFileOutputBinary.h
index 76c502467..11b62b791 100644
--- a/src/basics/basics/utilities/UbFileOutputBinary.h
+++ b/src/basics/basics/utilities/UbFileOutputBinary.h
@@ -36,26 +36,26 @@ public:
    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);
+   bool open(const std::string& filename, UbFileOutput::CREATEOPTION opt=OUTFILE) override;
 
-   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 writeInteger(const int& value, const int& width=0) override;
+   void writeDouble(const double& value, const int& width=0) override;
+	void writeFloat(const float& value, const int& width=0) override;
+	void writeBool(const bool& value, const int& width=0) override;
+   void writeChar(const char& value, const int& width=0) override;
+   void writeSize_t(const std::size_t& value, const int& width=0) override;
+   void writeString(const std::string& value, const int& width=0) override;
+   void writeStringOnly(const std::string& value) override;
+   void writeLine(const std::string& value, const int& width=0) override;
+   void writeLine() override;
+   void writeCommentLine(const std::string& line) override;
+   void writeCommentLine(char indicator, const std::string& line) override;
+   void writeCopyOfFile(const std::string& filename) override;
 
-   void setPrecision(const int& precision);
-   int  getPrecision();
+   void setPrecision(const int& precision) override;
+   int  getPrecision() override;
 
-   FILETYPE getFileType() { return BINARY; }
+   FILETYPE getFileType() override { return BINARY; }
 
    template< typename T >
    friend inline UbFileOutputBinary& operator<<(UbFileOutputBinary& file, const T& data) 
diff --git a/src/basics/basics/utilities/UbNupsTimer.h b/src/basics/basics/utilities/UbNupsTimer.h
index b18cbe30f..b4668ba91 100644
--- a/src/basics/basics/utilities/UbNupsTimer.h
+++ b/src/basics/basics/utilities/UbNupsTimer.h
@@ -32,7 +32,7 @@ public:
       mTempNodes = 0.0;
    }
    /*==========================================================*/
-   void initTiming()
+   void initTiming() override
    {
       UbTiming::initTiming();
       mNofNodes.resize(0);
@@ -46,7 +46,7 @@ public:
       UbTiming::startTiming();
    }
    /*==========================================================*/
-   void endTiming()
+   void endTiming() override
    {
       UbTiming::endTiming();
       //save #node and time informations
diff --git a/src/basics/basics/utilities/Vector3DTest.cpp b/src/basics/basics/utilities/Vector3DTest.cpp
index e13f1fa2e..a1d634f51 100644
--- a/src/basics/basics/utilities/Vector3DTest.cpp
+++ b/src/basics/basics/utilities/Vector3DTest.cpp
@@ -11,7 +11,7 @@ public:
     Vector3D vec1;
     Vector3D vec2;
 
-    void SetUp() 
+    void SetUp() override 
 	{
         vec1[0] = vec1[1] = vec1[2] = 4.0f;
         vec2[0] = 0.0f; vec2[0] = 2.4f; vec2[0] = -1.3f;
diff --git a/src/basics/basics/writer/WbWriterAvsASCII.h b/src/basics/basics/writer/WbWriterAvsASCII.h
index 45e00fd6d..652e7986a 100644
--- a/src/basics/basics/writer/WbWriterAvsASCII.h
+++ b/src/basics/basics/writer/WbWriterAvsASCII.h
@@ -24,14 +24,14 @@ private:
    const WbWriterAvsASCII& operator=( const WbWriterAvsASCII& ); //no copy allowed
 
 public:
-   std::string getFileExtension() { return ".ascii.inp"; }
+   std::string getFileExtension() override { 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);
+   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -40,8 +40,8 @@ public:
    //                       
    //                  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);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles) override;
+   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) override;
 
    //////////////////////////////////////////////////////////////////////////
    //quads
@@ -50,10 +50,10 @@ public:
    //                  |   |
    //                  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);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   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) override;
+   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) override;
+   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) override;
 
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,8 +64,8 @@ public:
    //   | 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 writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
+   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) override;
    std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata) override;
 };
 
diff --git a/src/basics/basics/writer/WbWriterAvsBinary.h b/src/basics/basics/writer/WbWriterAvsBinary.h
index 8be53d2e9..ec9c3ca4c 100644
--- a/src/basics/basics/writer/WbWriterAvsBinary.h
+++ b/src/basics/basics/writer/WbWriterAvsBinary.h
@@ -23,13 +23,13 @@ private:
    const WbWriterAvsBinary& operator=( const WbWriterAvsBinary& ); //no copy allowed
 
 public:
-   std::string getFileExtension() { return ".bin.inp"; }
+   std::string getFileExtension() override { 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);
+   std::string writeLines(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +38,8 @@ public:
    //                      
    //                  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);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTuple<int,int,int> >& triangles) override;
+   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) override;
    
    //////////////////////////////////////////////////////////////////////////
    //quads
@@ -48,10 +48,10 @@ public:
    //                  |   |
    //                  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);
+   std::string writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   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) override;
+   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) override;
+   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) override;
 
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -62,7 +62,7 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
    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) override;
    std::string writeOctsWithNodeData(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector< std::vector<double > >& nodedata) override;
 };
diff --git a/src/basics/basics/writer/WbWriterSunflow.h b/src/basics/basics/writer/WbWriterSunflow.h
index 726476009..d270ab85c 100644
--- a/src/basics/basics/writer/WbWriterSunflow.h
+++ b/src/basics/basics/writer/WbWriterSunflow.h
@@ -26,9 +26,9 @@ private:
    static std::string  pvdEndTag;
 
 public:
-   std::string getFileExtension()  { return "ascii.sunflow"; }
+   std::string getFileExtension() override  { return "ascii.sunflow"; }
 
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles) override;
 };
 
 #endif //WbWriterSunflow_H
diff --git a/src/basics/basics/writer/WbWriterTecPlotASCII.h b/src/basics/basics/writer/WbWriterTecPlotASCII.h
index 1866ca60b..8110d9d75 100644
--- a/src/basics/basics/writer/WbWriterTecPlotASCII.h
+++ b/src/basics/basics/writer/WbWriterTecPlotASCII.h
@@ -26,7 +26,7 @@ private:
 
    static std::string  pvdEndTag;
 public:
-   std::string getFileExtension() { return ".ascii.dat";   }
+   std::string getFileExtension() override { 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);
diff --git a/src/basics/basics/writer/WbWriterVtkASCII.h b/src/basics/basics/writer/WbWriterVtkASCII.h
index c935c7d2c..6d422ebd1 100644
--- a/src/basics/basics/writer/WbWriterVtkASCII.h
+++ b/src/basics/basics/writer/WbWriterVtkASCII.h
@@ -23,13 +23,13 @@ private:
    const WbWriterVtkASCII& operator=( const WbWriterVtkASCII& ); //no copy allowed
 
 public:
-   std::string getFileExtension()  { return ".ascii.vtk"; }
+   std::string getFileExtension() override  { 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);
+   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +38,8 @@ public:
    //                     
    //                  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);
+   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells) override;
+   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) override;
 
    //////////////////////////////////////////////////////////////////////////
    //2D
@@ -48,12 +48,12 @@ public:
    //                  |   |
    //                  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 writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   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) override;
+   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) override;
    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                                                                       );
+                                             std::vector< std::vector< double > >& celldata                                                                       ) override;
    
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,7 +64,7 @@ public:
    //   | 3 ---+ 2
    //   |/     |/
    //   0 ---- 1
-   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
    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) override;
    std::string writeOctsWithNodeData(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
diff --git a/src/basics/basics/writer/WbWriterVtkBinary.h b/src/basics/basics/writer/WbWriterVtkBinary.h
index 46c101a5a..ead6cdba3 100644
--- a/src/basics/basics/writer/WbWriterVtkBinary.h
+++ b/src/basics/basics/writer/WbWriterVtkBinary.h
@@ -23,13 +23,13 @@ private:
    const WbWriterVtkBinary& operator=( const WbWriterVtkBinary& ); //no copy allowed
 
 public:
-   std::string getFileExtension() { return ".bin.vtk"; }
+   std::string getFileExtension() override { 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);
+   std::string writeLines(const std::string& filename, std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt2 >& lines) override;
 
    //////////////////////////////////////////////////////////////////////////
    //triangles
@@ -38,8 +38,8 @@ public:
    //                     
    //                  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);
+   std::string writeTriangles(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt3 >& cells) override;
+   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) override;
 
    //////////////////////////////////////////////////////////////////////////
    //2D
@@ -48,12 +48,12 @@ public:
    //                  |   |
    //                  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 writeQuads(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt4 >& cells) override;
+   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) override;
+   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) override;
    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                                                                    );
+                                             std::vector< std::vector< double > >& celldata                                                                    ) override;
    
    //////////////////////////////////////////////////////////////////////////
    //octs
@@ -64,9 +64,9 @@ public:
    //   | 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<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata);
+   std::string writeOcts(const std::string& filename,std::vector< UbTupleFloat3 >& nodes, std::vector< UbTupleInt8 >& cells) override;
+   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) override;
+   std::string writeOctsWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleUInt8 >& cells, std::vector<std::string >& datanames, std::vector<std::vector<double > >& nodedata) override;
 
 };
 
diff --git a/src/basics/basics/writer/WbWriterX3D.h b/src/basics/basics/writer/WbWriterX3D.h
index 2cea1c46d..4725e304f 100644
--- a/src/basics/basics/writer/WbWriterX3D.h
+++ b/src/basics/basics/writer/WbWriterX3D.h
@@ -26,9 +26,9 @@ private:
    static std::string  pvdEndTag;
 
 public:
-   std::string getFileExtension()  { return "ascii.X3D"; }
+   std::string getFileExtension() override  { return "ascii.X3D"; }
 
-   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles);
+   std::string writeTriangles(const std::string& filename,std::vector<UbTupleFloat3 >& nodes, std::vector<UbTupleInt3 >& triangles) override;
 };
 
 #endif //WBWRITERX3D_H
diff --git a/src/basics/geometry3d/GbCylinder3D.h b/src/basics/geometry3d/GbCylinder3D.h
index 04cdbb802..f5f852525 100644
--- a/src/basics/geometry3d/GbCylinder3D.h
+++ b/src/basics/geometry3d/GbCylinder3D.h
@@ -34,10 +34,10 @@ public:
 	GbCylinder3D(GbPoint3D* p1, GbPoint3D* p2, const double& radius);
 	GbCylinder3D(GbLine3D* line, const double& rad);
 	GbCylinder3D(GbCylinder3D* cylinder);
-	~GbCylinder3D();    
+	~GbCylinder3D() override;    
 
-	GbCylinder3D* clone() { return new GbCylinder3D(this); }
-	void finalize();
+	GbCylinder3D* clone() override { return new GbCylinder3D(this); }
+	void finalize() override;
 
 	double     getRadius() { return this->mRad; };
 	GbLine3D*  getLine() {return mLine;}
@@ -56,51 +56,51 @@ public:
 
 	double getHeight(); 
 
-	void scale(const double& sx1, const double& sx2, const double& sx3);
+	void scale(const double& sx1, const double& sx2, const double& sx3) override;
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->mLine->translate( x1, x2, x3 );
       this->calculateValues();
       //this->notifyObserversObjectChanged();
    }
 
-   double getX1Centroid() { return centerX1; }
-   double getX1Minimum()  { return minX1;    }
-	double getX1Maximum()  { return maxX1;    }
-	double getX2Centroid() { return centerX2; }
-	double getX2Minimum()  { return minX2;    }
-	double getX2Maximum()  { return maxX2;    }
-	double getX3Centroid() { return centerX3; }
-	double getX3Minimum()  { return minX3;    }
-	double getX3Maximum()  { return maxX3;    }
-
-	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p); 
-	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary); 
-   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-
-	GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   double getX1Centroid() override { return centerX1; }
+   double getX1Minimum() override  { return minX1;    }
+	double getX1Maximum() override  { return maxX1;    }
+	double getX2Centroid() override { return centerX2; }
+	double getX2Minimum() override  { return minX2;    }
+	double getX2Maximum() override  { return maxX2;    }
+	double getX3Centroid() override { return centerX3; }
+	double getX3Minimum() override  { return minX3;    }
+	double getX3Maximum() override  { return maxX3;    }
+
+	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override; 
+	bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override; 
+   bool isCellInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+
+	GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    
    //SG ausdokumentieren, da der nur unendlcihe Zylinder macht ...
    //bool hasRaytracing() { return true; }
-   bool hasRaytracing() { return false; }
-   bool raytracingSupportsPointsInside() { return true; }
+   bool hasRaytracing() override { return false; }
+   bool raytracingSupportsPointsInside() override { return true; }
    
    
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
-	std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+	std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
    void addSurfaceTriangleSetSegments(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles, int segmentsRound, int segmentsHeight );
 
-	std::string toString();
+	std::string toString() override;
 
 	//virtuelle Methoden von UbObserver
-	void objectChanged(UbObservable* changedObject);
-	void objectWillBeDeleted(UbObservable* objectForDeletion);
+	void objectChanged(UbObservable* changedObject) override;
+	void objectWillBeDeleted(UbObservable* objectForDeletion) override;
 
    
    using GbObject3D::isPointInGbObject3D; //Grund: dadurch muss man hier  isPointInGbObject3D(GbPoint3D*) nicht ausprogrammieren, welche sonst hier "ueberdeckt" waere
diff --git a/src/basics/geometry3d/GbHalfSpaceKrischan3D.h b/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
index b51849282..004b5b63c 100644
--- a/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
+++ b/src/basics/geometry3d/GbHalfSpaceKrischan3D.h
@@ -40,7 +40,7 @@ public:
                  , const double& p3x, const double& p3y, const double& p3z );
 
    /*=======================================================*/
-   virtual ~GbHalfSpaceKrischan3D() { }
+   ~GbHalfSpaceKrischan3D() override { }
    /*=======================================================*/
    std::string getTypeID() {return "GbHalfSpaceKrischan3D"; }
    /*=============================================*/
@@ -62,31 +62,31 @@ public:
 
    /*=====================================================*/
    //true, wenn 'in Object' oder 'auf Boundary'!
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p)
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override
    {
       return (ptInside(x1p,x2p,x3p));
    }
    /*=====================================================*/
    //true, wenn 'in Object' oder 'auf Boundary'!
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary)
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override
    {
       return (ptInside(x1p,x2p,x3p));
    }
 
-   void finalize(){}
+   void finalize() override{}
 
-   double getX1Centroid(){ return      0.0; }
-   double getX1Minimum() { return -99999.0; }
-   double getX1Maximum() { return  99999.0; }
-   double getX2Centroid(){ return      0.0; }
-   double getX2Minimum() { return -99999.0; }
-   double getX2Maximum() { return  99999.0; }
-   double getX3Centroid(){ return      0.0; }
-   double getX3Minimum() { return -99999.0; }
-   double getX3Maximum() { return  99999.0; }
+   double getX1Centroid() override{ return      0.0; }
+   double getX1Minimum() override { return -99999.0; }
+   double getX1Maximum() override { return  99999.0; }
+   double getX2Centroid() override{ return      0.0; }
+   double getX2Minimum() override { return -99999.0; }
+   double getX2Maximum() override { return  99999.0; }
+   double getX3Centroid() override{ return      0.0; }
+   double getX3Minimum() override { return -99999.0; }
+   double getX3Maximum() override { return  99999.0; }
 
 
-   GbLine3D* createClippedLine3D (GbPoint3D &point1, GbPoint3D &point2)
+   GbLine3D* createClippedLine3D (GbPoint3D &point1, GbPoint3D &point2) override
    {
 	   GbPoint3D *p1 = new GbPoint3D(point1);
 	   GbPoint3D *p2 = new GbPoint3D(point2);
@@ -127,7 +127,7 @@ public:
    }
  
 
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
 
    double getDistance(const double& x1p, const double& x2p, const double& x3p)
    {
@@ -141,12 +141,12 @@ public:
       n3 = this->Normal[2];
    }
 
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles)
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override
    {
 	   std::cout << " addSurfaceTriangleSet(): TO BE DONE AND CHECKED ... " << std::endl;
    }
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet()
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override
    {
       std::vector<GbTriangle3D*> triangles;
       GbPoint3D p1( 0.0,0.0,0.0 );
@@ -158,7 +158,7 @@ public:
       return triangles;
    }
 
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable* changedObject) override
    {
       return;
       
@@ -167,7 +167,7 @@ public:
       //this->notifyObserversObjectChanged();
    }
    /*==========================================================*/
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override
    {
       return;
       //if(this->mLine)
@@ -177,9 +177,9 @@ public:
       //}
    }
 
-   ObObject*   clone(){ return NULL; };
+   ObObject*   clone() override{ return NULL; };
 
-   std::string toString()
+   std::string toString() override
    { 
 	   std::stringstream temp;
 
diff --git a/src/basics/geometry3d/GbObjectGroup3D.h b/src/basics/geometry3d/GbObjectGroup3D.h
index fac78a728..a066a2a0e 100644
--- a/src/basics/geometry3d/GbObjectGroup3D.h
+++ b/src/basics/geometry3d/GbObjectGroup3D.h
@@ -33,10 +33,10 @@ public:
    // Konstruktoren
    GbObjectGroup3D(); 
    GbObjectGroup3D(GbObjectGroup3D *group){}; 
-   ~GbObjectGroup3D();
+   ~GbObjectGroup3D() override;
 
-   GbObjectGroup3D* clone() {return new GbObjectGroup3D(this);}
-   void finalize();
+   GbObjectGroup3D* clone() override {return new GbObjectGroup3D(this);}
+   void finalize() override;
 
    void addGbObject(GbObject3D* object)
    {
@@ -45,63 +45,63 @@ public:
 
    double getRadius() const	{	return this->radius;	}
 
-   double getX1Centroid()  { return midPoint->getX1Coordinate();}
-   double getX1Minimum()   { return midPoint->getX1Coordinate()-radius;}
-   double getX1Maximum()   { return midPoint->getX1Coordinate()+radius;}
-   double getX2Centroid()  { return midPoint->getX2Coordinate();}
-   double getX2Minimum()   { return midPoint->getX2Coordinate()-radius;}
-   double getX2Maximum()   { return midPoint->getX2Coordinate()+radius;}
-   double getX3Centroid()  { return midPoint->getX3Coordinate();}
-   double getX3Minimum()   { return midPoint->getX3Coordinate()-radius;}
-   double getX3Maximum()   { return midPoint->getX3Coordinate()+radius;}
-
-   void setCenterX1Coordinate(const double& value);
-   void setCenterX2Coordinate(const double& value);
-   void setCenterX3Coordinate(const double& value);
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
+   double getX1Centroid() override  { return midPoint->getX1Coordinate();}
+   double getX1Minimum() override   { return midPoint->getX1Coordinate()-radius;}
+   double getX1Maximum() override   { return midPoint->getX1Coordinate()+radius;}
+   double getX2Centroid() override  { return midPoint->getX2Coordinate();}
+   double getX2Minimum() override   { return midPoint->getX2Coordinate()-radius;}
+   double getX2Maximum() override   { return midPoint->getX2Coordinate()+radius;}
+   double getX3Centroid() override  { return midPoint->getX3Coordinate();}
+   double getX3Minimum() override   { return midPoint->getX3Coordinate()-radius;}
+   double getX3Maximum() override   { return midPoint->getX3Coordinate()+radius;}
+
+   void setCenterX1Coordinate(const double& value) override;
+   void setCenterX2Coordinate(const double& value) override;
+   void setCenterX3Coordinate(const double& value) override;
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
    void setRadius(const double& radius);
 
-   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    double getDistance(GbPoint3D* p); 
    double getDistance(const double& x1p, const double& x2p, const double& x3p);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
 
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
    
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
                                 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
    bool hasIntersectionWithDirectedLine(GbPoint3D origin, GbPoint3D direction);
 
-	std::string toString();
+	std::string toString() override;
 
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->midPoint->translate(x1, x2, x3); 
       this->notifyObserversObjectChanged();
    }
-   void rotate(const double& rx1, const double& rx2, const double& rx3) {/* rotation makes no sense*/ }
-   void scale(const double& sx1, const double& sx2, const double& sx3) { this->radius *= sx1; }
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override {/* rotation makes no sense*/ }
+   void scale(const double& sx1, const double& sx2, const double& sx3) override { this->radius *= sx1; }
 
    TRIANGULATIONMODE getTriangulationMode() {return triangulationMode;}
    void setTriangulationMode(TRIANGULATIONMODE mode) { this->triangulationMode = mode; }
    
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable* changedObject) override
    {
       this->notifyObserversObjectChanged();
       //std::cout<<"GbSphere:objectChanged() - toDo-);";
    }
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override
    {
 	   std::cout<<"throw UbException(-GbObjectGroup3D::finalize() - toDo-);";
    }
diff --git a/src/basics/geometry3d/GbQuadFaceMesh3D.h b/src/basics/geometry3d/GbQuadFaceMesh3D.h
index d04c84e1f..0ffa94867 100644
--- a/src/basics/geometry3d/GbQuadFaceMesh3D.h
+++ b/src/basics/geometry3d/GbQuadFaceMesh3D.h
@@ -62,27 +62,27 @@ public:
 public:
    GbQuadFaceMesh3D();
 	GbQuadFaceMesh3D(std::string name, std::vector<Vertex> *nodes, std::vector<QuadFace> *quads);
-	virtual ~GbQuadFaceMesh3D();   
-   GbQuadFaceMesh3D* clone() { throw UbException(UB_EXARGS,"clone() - not implemented"); }
-   void finalize()           { throw UbException(UB_EXARGS,"finalize() - not implemented");}
+	~GbQuadFaceMesh3D() override;   
+   GbQuadFaceMesh3D* clone() override { throw UbException(UB_EXARGS,"clone() - not implemented"); }
+   void finalize() override           { throw UbException(UB_EXARGS,"finalize() - not implemented");}
 
-   std::string toString();
-   std::string getName();
+   std::string toString() override;
+   std::string getName() override;
    std::vector<Vertex>*  getNodes();
    std::vector<QuadFace>* getQuads();
-   double getX1Centroid();
-   double getX2Centroid();
-   double getX3Centroid();
-   double getX1Minimum();
-   double getX1Maximum();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Minimum();
-   double getX3Maximum();
+   double getX1Centroid() override;
+   double getX2Centroid() override;
+   double getX3Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
    void calculateValues();
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
    bool isPointInObject3DHalfSpace(const double& xp, const double& yp, const double& zp);    //based on Halfspace algorithm
    //bool isPointInObject3DSpherical(const double& xp, const double& yp, const double& zp, int numQuads);    //based on Spherical polygon area method        
@@ -92,9 +92,9 @@ public:
    //char SegQuadCross(GbQuad3D *quad, GbVector3D  &PointQ, GbVector3D &PointR);
    //till here !!!
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
    //virtual std::vector<GbQuad3D*> getSurfaceQuadSet();
-	virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();
+	std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
 
    virtual void write(UbFileOutput* out) { std::cout<<"GbQuadFaceMesh3D::write - sorry not implemented\n"; }
    virtual void read(UbFileInput* in)    { std::cout<<"GbQuadFaceMesh3D::read  - sorry not implemented\n"; }
diff --git a/src/basics/geometry3d/GbSphere3D.h b/src/basics/geometry3d/GbSphere3D.h
index 694225a68..550b7c626 100644
--- a/src/basics/geometry3d/GbSphere3D.h
+++ b/src/basics/geometry3d/GbSphere3D.h
@@ -37,63 +37,63 @@ public:
    GbSphere3D(const GbSphere3D& sphere);            
    GbSphere3D(GbSphere3D* sphere); //<-unschoen!
    
-   ~GbSphere3D();
+   ~GbSphere3D() override;
 
-   GbSphere3D* clone() { return new GbSphere3D(*this);}
-   void finalize();
+   GbSphere3D* clone() override { return new GbSphere3D(*this);}
+   void finalize() override;
 
 
    bool intersects(SPtr<GbSphere3D> sphere);
 
    double getRadius() const	{	return this->radius;	}
 
-   double getX1Centroid()  { return midPoint->getX1Coordinate();}
-   double getX1Minimum()   { return midPoint->getX1Coordinate()-radius;}
-   double getX1Maximum()   { return midPoint->getX1Coordinate()+radius;}
-   double getX2Centroid()  { return midPoint->getX2Coordinate();}
-   double getX2Minimum()   { return midPoint->getX2Coordinate()-radius;}
-   double getX2Maximum()   { return midPoint->getX2Coordinate()+radius;}
-   double getX3Centroid()  { return midPoint->getX3Coordinate();}
-   double getX3Minimum()   { return midPoint->getX3Coordinate()-radius;}
-   double getX3Maximum()   { return midPoint->getX3Coordinate()+radius;}
-
-   void setCenterX1Coordinate(const double& value);
-   void setCenterX2Coordinate(const double& value);
-   void setCenterX3Coordinate(const double& value);
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
-   virtual void setCenterCoordinates(const UbTupleDouble3& position);
+   double getX1Centroid() override  { return midPoint->getX1Coordinate();}
+   double getX1Minimum() override   { return midPoint->getX1Coordinate()-radius;}
+   double getX1Maximum() override   { return midPoint->getX1Coordinate()+radius;}
+   double getX2Centroid() override  { return midPoint->getX2Coordinate();}
+   double getX2Minimum() override   { return midPoint->getX2Coordinate()-radius;}
+   double getX2Maximum() override   { return midPoint->getX2Coordinate()+radius;}
+   double getX3Centroid() override  { return midPoint->getX3Coordinate();}
+   double getX3Minimum() override   { return midPoint->getX3Coordinate()-radius;}
+   double getX3Maximum() override   { return midPoint->getX3Coordinate()+radius;}
+
+   void setCenterX1Coordinate(const double& value) override;
+   void setCenterX2Coordinate(const double& value) override;
+   void setCenterX3Coordinate(const double& value) override;
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
+   void setCenterCoordinates(const UbTupleDouble3& position) override;
    void setRadius(const double& radius);
 
-   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2);
+   GbLine3D* createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override;
    double getDistance(GbPoint3D* p); 
    double getDistance(const double& x1p, const double& x2p, const double& x3p);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
 
-   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
-   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
+   bool isCellCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
+   double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b) override;
    double getCellVolumeInsideGbObject3DHelperFunction(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
    bool hasIntersectionWithDirectedLine(GbPoint3D origin, GbPoint3D direction);
 
-	std::string toString();
+	std::string toString() override;
 
-   void translate(const double& x1, const double& x2, const double& x3) 
+   void translate(const double& x1, const double& x2, const double& x3) override 
    {
       this->midPoint->translate(x1, x2, x3); 
       this->notifyObserversObjectChanged();
    }
-   void rotate(const double& rx1, const double& rx2, const double& rx3) {/* rotation makes no sense*/ }
-   void scale(const double& sx1, const double& sx2, const double& sx3) 
+   void rotate(const double& rx1, const double& rx2, const double& rx3) override {/* rotation makes no sense*/ }
+   void scale(const double& sx1, const double& sx2, const double& sx3) override 
    { 
       this->radius *= sx1; 
       this->notifyObserversObjectChanged();
@@ -105,12 +105,12 @@ public:
    void setTriangulationMode(TRIANGULATIONMODE mode) { this->triangulationMode = mode; }
    
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject)
+   void objectChanged(UbObservable* changedObject) override
    {
       this->notifyObserversObjectChanged();
       //std::cout<<"GbSphere:objectChanged() - toDo-);";
    }
-   void objectWillBeDeleted(UbObservable* objectForDeletion)
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override
    {
 	   throw UbException(UB_EXARGS,"not implemented");
    }
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h
index 146c8c220..f4e0c8929 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.h
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.h
@@ -217,14 +217,14 @@ public:
 public:
    GbTriFaceMesh3D();
    GbTriFaceMesh3D(std::string name, std::vector<Vertex>* nodes, std::vector<TriFace>* triangles, KDTREE_SPLITAGORITHM splitAlg = KDTREE_SAHPLIT, bool removeRedundantNodes=true);
-	~GbTriFaceMesh3D();
+	~GbTriFaceMesh3D() override;
 
-   GbTriFaceMesh3D* clone();// { throw UbException(UB_EXARGS,"not implemented"); }
-   void finalize() {}
+   GbTriFaceMesh3D* clone() override;// { throw UbException(UB_EXARGS,"not implemented"); }
+   void finalize() override {}
 
    //void setRegardPointInPolyhedronTest(bool value) { this->regardPiO=value; }
 
-   std::string toString();
+   std::string toString() override;
 
    //std::string getName();
    std::vector<Vertex>*  getNodes();
@@ -240,17 +240,17 @@ public:
    }
    void readMeshFromSTLFile(std::string filename, bool removeRedundantNodes);
 
-   double getX1Minimum()  { if(!this->consistent) this->calculateValues(); return this->x1min;    }
-   double getX1Maximum()  { if(!this->consistent) this->calculateValues(); return this->x1max;    }
-   double getX1Centroid() { if(!this->consistent) this->calculateValues(); return this->x1center; }
+   double getX1Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x1min;    }
+   double getX1Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x1max;    }
+   double getX1Centroid() override { if(!this->consistent) this->calculateValues(); return this->x1center; }
 
-   double getX2Minimum()  { if(!this->consistent) this->calculateValues(); return this->x2min;    }
-   double getX2Maximum()  { if(!this->consistent) this->calculateValues(); return this->x2max;    }
-   double getX2Centroid() { if(!this->consistent) this->calculateValues(); return this->x2center; }
+   double getX2Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x2min;    }
+   double getX2Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x2max;    }
+   double getX2Centroid() override { if(!this->consistent) this->calculateValues(); return this->x2center; }
    
-   double getX3Minimum()  { if(!this->consistent) this->calculateValues(); return this->x3min;    }
-   double getX3Centroid() { if(!this->consistent) this->calculateValues(); return this->x3center; }
-   double getX3Maximum()  { if(!this->consistent) this->calculateValues(); return this->x3max;    }
+   double getX3Minimum() override  { if(!this->consistent) this->calculateValues(); return this->x3min;    }
+   double getX3Centroid() override { if(!this->consistent) this->calculateValues(); return this->x3center; }
+   double getX3Maximum() override  { if(!this->consistent) this->calculateValues(); return this->x3max;    }
 
    void   calculateValues();
 
@@ -260,23 +260,23 @@ public:
    UbTupleDouble6 calculateMomentOfInertia(double rhoP);
    UbTupleDouble3 calculateCenterOfGravity();
 
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
 
 
-   void scale(const double& sx1, const double& sx2, const double& sx3);
-   void rotate(const double& alpha, const double& beta, const double& gamma);
+   void scale(const double& sx1, const double& sx2, const double& sx3) override;
+   void rotate(const double& alpha, const double& beta, const double& gamma) override;
    void rotateAroundPoint(const double& px1, const double& px2, const double& px3, const double& alpha, const double& beta, const double& gamma);
-   void translate(const double& x1, const double& x2, const double& x3);
+   void translate(const double& x1, const double& x2, const double& x3) override;
    void reflectAcrossXYLine(const double& alpha);
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
    bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, int counter);
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
 
-   virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
    std::vector<GbTriFaceMesh3D::TriFace*> getTrianglesForVertex(Vertex* vertex);
 
diff --git a/src/basics/geometry3d/GbTriangularMesh3D.h b/src/basics/geometry3d/GbTriangularMesh3D.h
index d0b71589d..2691a95c1 100644
--- a/src/basics/geometry3d/GbTriangularMesh3D.h
+++ b/src/basics/geometry3d/GbTriangularMesh3D.h
@@ -41,9 +41,9 @@ public:
 	GbTriangularMesh3D(std::string name, std::vector<GbPoint3D*> *nodes, std::vector<GbTriangle3D*> *triangles);
    GbTriangularMesh3D(std::string name, std::vector<GbTriangle3D*> *triangles);
    GbTriangularMesh3D(std::string name, std::vector<GbPoint3D*> *nodes, std::vector<GbLine3D*> *edges, std::vector<GbTriangle3D*> *triangles);
-	~GbTriangularMesh3D();   
-   GbTriangularMesh3D* clone() { throw UbException(UB_EXARGS,"not implemented"); }
-   void finalize()
+	~GbTriangularMesh3D() override;   
+   GbTriangularMesh3D* clone() override { throw UbException(UB_EXARGS,"not implemented"); }
+   void finalize() override
    {
       throw UbException("GbTriangularMesh3D::finalize() - toDo");
    }
@@ -51,22 +51,22 @@ public:
 
    std::string getClassName() {return "GbTriangularMesh3D"; }
 
-   std::string toString();
+   std::string toString() override;
    //std::string getName();
    std::vector<GbPoint3D*>*    getNodes();
    std::vector<GbTriangle3D*>* getTriangles();
-   double getX1Centroid();
-   double getX2Centroid();
-	double getX3Centroid();
-   double getX1Minimum();
-   double getX1Maximum();
-   double getX2Minimum();
-   double getX2Maximum();
-   double getX3Minimum();
-   double getX3Maximum();
-
-   void rotate(const double& alpha, const double& beta, const double& gamma);
-   void translate(const double& x1, const double& x2, const double& x3);
+   double getX1Centroid() override;
+   double getX2Centroid() override;
+	double getX3Centroid() override;
+   double getX1Minimum() override;
+   double getX1Maximum() override;
+   double getX2Minimum() override;
+   double getX2Maximum() override;
+   double getX3Minimum() override;
+   double getX3Maximum() override;
+
+   void rotate(const double& alpha, const double& beta, const double& gamma) override;
+   void translate(const double& x1, const double& x2, const double& x3) override;
 
    void calculateValues();
    void deleteRedundantNodes();
@@ -83,9 +83,9 @@ public:
    double getX3MinimumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2);
    double getX3MaximumForRectangle(const double& p1x1, const double& p1x2, const double& p2x1, const double& p2x2); 
 
-   virtual bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3) override;
 
-   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary);
+   bool isPointInGbObject3D(const double& x1, const double& x2, const double& x3, bool& pointIsOnBoundary) override;
 
    bool isPointInObject3DHalfSpace(const double& xp, const double& yp, const double& zp);    //based on Halfspace algorithm
    bool isPointInObject3DSpherical(const double& xp, const double& yp, const double& zp, int numTriangles);    //based on Spherical polygon area method        
@@ -108,8 +108,8 @@ public:
    //till here !!!
 
 
-   virtual GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2);
-   virtual std::vector<GbTriangle3D*> getSurfaceTriangleSet();     
+   GbLine3D* createClippedLine3D (GbPoint3D &point1,GbPoint3D &point2) override;
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;     
 
    void writeMesh(std::string filename, WbWriter* writer, bool writeNormals=false);
    /*======================================================================*/
diff --git a/src/basics/geometry3d/GbVoxelMatrix3D.h b/src/basics/geometry3d/GbVoxelMatrix3D.h
index 4cc0925e0..9feceb824 100644
--- a/src/basics/geometry3d/GbVoxelMatrix3D.h
+++ b/src/basics/geometry3d/GbVoxelMatrix3D.h
@@ -32,10 +32,10 @@ public:
    GbVoxelMatrix3D();
    GbVoxelMatrix3D(int nx1, int nx2, int nx3, float initVal, double lowerThreshold = 0, double upperThreshold = 0);
    GbVoxelMatrix3D(const Matrix3D& voxelMatrix, double lowerThreshold = 0, double upperThreshold = 0);
-   ~GbVoxelMatrix3D() {}
+   ~GbVoxelMatrix3D() override {}
 
-   void finalize() {};
-   GbVoxelMatrix3D* clone();
+   void finalize() override {};
+   GbVoxelMatrix3D* clone() override;
 
    /*=======================================================================*/
    Matrix3D::reference operator() (const Matrix3D::size_type& x1, const Matrix3D::size_type& x2, const Matrix3D::size_type& x3)
@@ -69,47 +69,47 @@ public:
    void setVoxelMatrixDeltaX3(double deltaX3) { this->deltaX3 = deltaX3; }
 
    /*=======================================================================*/
-   double getX1Centroid() { return 0.5 * (minX1+this->getX1Maximum()); }
-   double getX1Minimum() { return minX1; }
-   double getX1Maximum() { return minX1+deltaX1*voxelMatrix.getNX1(); }
+   double getX1Centroid() override { return 0.5 * (minX1+this->getX1Maximum()); }
+   double getX1Minimum() override { return minX1; }
+   double getX1Maximum() override { return minX1+deltaX1*voxelMatrix.getNX1(); }
 
-   double getX2Centroid() { return 0.5 * (minX2+this->getX2Maximum()); }
-   double getX2Minimum() { return minX2; }
-   double getX2Maximum() { return minX2+deltaX2*voxelMatrix.getNX2(); }
+   double getX2Centroid() override { return 0.5 * (minX2+this->getX2Maximum()); }
+   double getX2Minimum() override { return minX2; }
+   double getX2Maximum() override { return minX2+deltaX2*voxelMatrix.getNX2(); }
 
-   double getX3Centroid() { return 0.5 * (this->getX3Minimum()+this->getX3Maximum()); }
-   double getX3Minimum() { return minX3; }
-   double getX3Maximum() { return minX3+deltaX3*voxelMatrix.getNX3(); }
+   double getX3Centroid() override { return 0.5 * (this->getX3Minimum()+this->getX3Maximum()); }
+   double getX3Minimum() override { return minX3; }
+   double getX3Maximum() override { return minX3+deltaX3*voxelMatrix.getNX3(); }
 
    double getLengthX1() { return this->getX1Maximum()-minX1; }
    double getLengthX2() { return this->getX2Maximum()-minX2; }
    double getLengthX3() { return this->getX3Maximum()-minX3; }
 
-   void setCenterCoordinates(const double& x1, const double& x2, const double& x3);
-   void translate(const double& tx1, const double& tx2, const double& tx3);
+   void setCenterCoordinates(const double& x1, const double& x2, const double& x3) override;
+   void translate(const double& tx1, const double& tx2, const double& tx3) override;
 
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary);
-   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p);
-   bool isCellInsideGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
-   bool isCellCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
-   bool isCellInsideOrCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b);
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p, bool& pointIsOnBoundary) override;
+   bool isPointInGbObject3D(const double& x1p, const double& x2p, const double& x3p) override;
+   bool isCellInsideGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
+   bool isCellCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
+   bool isCellInsideOrCuttingGbObject3D(const double& x1a, const double& x2a, const double& x3a, const double& x1b, const double& x2b, const double& x3b) override;
    //double getCellVolumeInsideGbObject3D(const double& x1a,const double& x2a,const double& x3a,const double& x1b,const double& x2b,const double& x3b);
 
    GbPoint3D*  calculateInterSectionPoint3D(GbPoint3D& point1, GbPoint3D &point2) { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
-   GbLine3D*   createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
+   GbLine3D*   createClippedLine3D(GbPoint3D& point1, GbPoint3D& point2) override { throw UbException(__FILE__, __LINE__, UB_FUNCTION, "not implemented"); }
 
-   std::vector<GbTriangle3D*> getSurfaceTriangleSet();
-   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles);
+   std::vector<GbTriangle3D*> getSurfaceTriangleSet() override;
+   void addSurfaceTriangleSet(std::vector<UbTupleFloat3>& nodes, std::vector<UbTupleInt3>& triangles) override;
 
-   bool hasRaytracing() { return true; }
+   bool hasRaytracing() override { return true; }
    /*|r| must be 1! einheitsvector!!*/
-   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3);
+   double getIntersectionRaytraceFactor(const double& x1, const double& x2, const double& x3, const double& rx1, const double& rx2, const double& rx3) override;
 
-   std::string toString();
+   std::string toString() override;
 
    //virtuelle Methoden von UbObserver
-   void objectChanged(UbObservable* changedObject) {}
-   void objectWillBeDeleted(UbObservable* objectForDeletion) {}
+   void objectChanged(UbObservable* changedObject) override {}
+   void objectWillBeDeleted(UbObservable* objectForDeletion) override {}
 
    template <class T>
    void readMatrixFromRawFile(std::string filename, GbVoxelMatrix3D::Endian endian);
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
index 4c815cfaf..89501b60e 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h
@@ -18,7 +18,7 @@ namespace Kd
    class CountLineIntersectionHandler : public LineIntersectionHandler<T> 
    {
    public:
-      bool intersectLine(const UbTuple<T,T,T>& n1, const UbTuple<T,T,T>& n2, Node<T>& parent, Node<T>*& child1, Node<T>*& child2) const
+      bool intersectLine(const UbTuple<T,T,T>& n1, const UbTuple<T,T,T>& n2, Node<T>& parent, Node<T>*& child1, Node<T>*& child2) const override
       {
          if( parent.intersectLineBoundingBox(n1, n2)  == Intersection::INTERSECTION)
          {
diff --git a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
index d72ed7ac7..460ec2174 100644
--- a/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
+++ b/src/basics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h
@@ -18,7 +18,7 @@ namespace Kd
    class CountRayIntersectionHandler : public RayIntersectionHandler<T> 
    {
    public:
-      int intersectRay(const Ray<T>& ray, Node<T>& parent, Node<T>*& child1, Node<T>*& child2, std::set< UbKeys::Key3<int> >& mailbox) const
+      int intersectRay(const Ray<T>& ray, Node<T>& parent, Node<T>*& child1, Node<T>*& child2, std::set< UbKeys::Key3<int> >& mailbox) const override
       {
          if( parent.intersectRayBoundingBox(ray)  == Intersection::INTERSECTION)
          {
diff --git a/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h b/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
index 686ff1c9a..07e9013cb 100644
--- a/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
+++ b/src/basics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h
@@ -21,7 +21,7 @@ namespace Kd
    {
    public:
       /* ======================================================================================= */
-      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node ) const
+      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node ) const override
       {
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "triFace NULL pointer");
 
@@ -72,7 +72,7 @@ namespace Kd
          return bestSplitCandidate;
       }
       /* ======================================================================================= */
-      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild1, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild2, Node<T>& node) const
+      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild1, std::vector<GbTriFaceMesh3D::TriFace>& triFacesForChild2, Node<T>& node) const override
       {  
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "null pointer at triface list");
 
diff --git a/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h b/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
index 9cc835601..a2c32fdf9 100644
--- a/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
+++ b/src/basics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h
@@ -12,7 +12,7 @@ namespace Kd
    class SpatialMedianSplit : public SplitAlgorithm<T> 
    {
       /* ======================================================================================= */
-      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node )  const
+      SplitCandidate<T> findBestSplitCandidate(const int& level, const int& maxLevel, Node<T>& node )  const override
       {
          if(   node.getTriFaces()->size() <= 24 //max triangles in node 
             || level >= maxLevel        )
@@ -31,7 +31,7 @@ namespace Kd
 
       }
       /* ======================================================================================= */
-      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child1, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child2, Node<T>& node) const
+      void distributeTriFaces(const SplitCandidate<T>& candidate, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child1, std::vector<GbTriFaceMesh3D::TriFace>& primitives_child2, Node<T>& node) const override
       {
          if( !node.getTriFaces() )  throw UbException(UB_EXARGS, "null pointer");
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
index 0dce4863e..02bf08a45 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBCAdapter.h
@@ -38,11 +38,11 @@ public:
    //------------- implements D3Q27BoundaryConditionAdapter ----- start
    std::string toString();
 
-   void init(const D3Q27Interactor* const& interactor, const double& time=0);
-   void update(const D3Q27Interactor* const& interactor, const double& time=0);
+   void init(const D3Q27Interactor* const& interactor, const double& time=0) override;
+   void update(const D3Q27Interactor* const& interactor, const double& time=0) override;
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 );
-   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 );
+   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 ) override;
+   void adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0 ) override;
 
    double getDensity(const double& x1, const double& x2, const double& x3, const double& timeStep);
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
index 8c4f472bf..576864170 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCAlgorithm.h
@@ -10,9 +10,9 @@ class EqDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    EqDensityBCAlgorithm();
-   ~EqDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~EqDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // EqDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
index aacc41a5a..78b27969b 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class HighViscosityNoSlipBCAlgorithm : public BCAlgorithm
 {
 public:
    HighViscosityNoSlipBCAlgorithm();
-   ~HighViscosityNoSlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~HighViscosityNoSlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // HighViscosityNoSlipBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
index 8cec91d6e..12ffa4fdc 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCAlgorithm.h
@@ -10,9 +10,9 @@ class NonEqDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    NonEqDensityBCAlgorithm();
-   ~NonEqDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~NonEqDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // NonEqDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
index 4effed280..d41cdc05a 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithm.h
@@ -10,9 +10,9 @@ class NonReflectingOutflowBCAlgorithm : public BCAlgorithm
 {
 public:
    NonReflectingOutflowBCAlgorithm();
-   ~NonReflectingOutflowBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~NonReflectingOutflowBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // NonReflectingDensityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
index 2112e8e44..b6b34a616 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAdapter.h
@@ -67,15 +67,15 @@ public:
 
    //------------- implements D3Q27BoundaryConditionAdapter ----- start
 
-   void init(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
-   void update(const D3Q27Interactor* const& interactor, const double& timestep=0) {}
+   void init(const D3Q27Interactor* const& interactor, const double& timestep=0) override {}
+   void update(const D3Q27Interactor* const& interactor, const double& timestep=0) override {}
 
-   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 )
+   void adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time=0 ) override
    {
       bc->setSlipBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
       bc->setQ((float)q,fdirection);
    }
-   void adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0);
+   void adaptBC(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time=0) override;
    
    //------------- implements D3Q27BoundaryConditionAdapter ----- end
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
index 423cde915..7f4e39c73 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class SlipBCAlgorithm : public BCAlgorithm
 {
 public:
    SlipBCAlgorithm();
-   virtual ~SlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~SlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void applyBC() override;
 };
 #endif // SlipBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
index 6f54bc766..db9244d10 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCAlgorithm.h
@@ -10,9 +10,9 @@ class ThinWallNoSlipBCAlgorithm : public BCAlgorithm
 {
 public:
    ThinWallNoSlipBCAlgorithm();
-   virtual ~ThinWallNoSlipBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
+   ~ThinWallNoSlipBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
    void setPass(int pass);
    void applyBC() override;
 
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
index 25ec70608..2216501db 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCAlgorithm.h
@@ -16,9 +16,9 @@ class VelocityWithDensityBCAlgorithm : public BCAlgorithm
 {
 public:
    VelocityWithDensityBCAlgorithm();
-   ~VelocityWithDensityBCAlgorithm();
-   SPtr<BCAlgorithm> clone();
-   void addDistributions(SPtr<DistributionArray3D> distributions);
-   void applyBC();
+   ~VelocityWithDensityBCAlgorithm() override;
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
+   void applyBC() override;
 };
 #endif // NonReflectingVelocityBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
index e45a52202..9b826e865 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/AverageValuesCoProcessor.h
@@ -27,7 +27,7 @@ public:
    AverageValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<UbScheduler> Avs, SPtr<UbScheduler> rsMeans, SPtr<UbScheduler> rsRMS, bool restart);
 	//! Make update
-	void process(double step); 
+	void process(double step) override; 
 	//! Resets averaged velocity and RMS-values according to ResetSceduler
 	void reset(double step); 
 protected:
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
index 165f42402..6c2288dc5 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/CalculateForcesCoProcessor.h
@@ -31,8 +31,8 @@ public:
    //! \param a - area of object in LB units
    CalculateForcesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path,
        SPtr<Communicator> comm, double v, double a);
-	virtual ~CalculateForcesCoProcessor();             
-	void process(double step); 
+	~CalculateForcesCoProcessor() override;             
+	void process(double step) override; 
    void addInteractor(SPtr<D3Q27Interactor> interactor);
 protected:
 	void collectData(double step);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
index 75551388a..3885ac399 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/DecreaseViscosityCoProcessor.h
@@ -32,9 +32,9 @@ class DecreaseViscosityCoProcessor: public CoProcessor
 public:
    DecreaseViscosityCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
       mu::Parser* nueFunc, SPtr<Communicator> comm);
-   virtual ~DecreaseViscosityCoProcessor();
+   ~DecreaseViscosityCoProcessor() override;
    //! calls collect PostprocessData.
-   void process(double step); 
+   void process(double step) override; 
 protected:
    //! resets the collision factor depending on the current timestep.
    void setViscosity(double step);  
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
index 8d7dfd169..4dd768a59 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/EmergencyExitCoProcessor.h
@@ -22,7 +22,7 @@ class EmergencyExitCoProcessor : public CoProcessor
 {
 public:
     EmergencyExitCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<MPIIORestartCoProcessor> rp, SPtr<Communicator> comm);
-    virtual ~EmergencyExitCoProcessor();
+    ~EmergencyExitCoProcessor() override;
 
     void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
index 745147792..027f2d9a1 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/LineTimeSeriesCoProcessor.h
@@ -26,7 +26,7 @@ public:
 enum Direction {X1, X2, X3};
 public:
    LineTimeSeriesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<GbLine3D> line, int level,SPtr<Communicator> comm);
-   ~LineTimeSeriesCoProcessor(){}
+   ~LineTimeSeriesCoProcessor() override{}
 
    void process(double step) override;
    void writeLine(const std::string& path);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
index abf064263..33a63f02c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOCoProcessor.h
@@ -16,10 +16,10 @@ class MPIIOCoProcessor : public CoProcessor
 {
 public:
    MPIIOCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm); 
-   virtual ~MPIIOCoProcessor();
+   ~MPIIOCoProcessor() override;
 
    //! Each timestep writes the grid into the files
-   virtual void process(double step) = 0;
+   void process(double step) override = 0;
 
    //! Writes the blocks of the grid into the file cpBlocks.bin
    void writeBlocks(int step);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
index a3ff742cb..90ad1a928 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.h
@@ -23,9 +23,9 @@ class MPIIOMigrationBECoProcessor : public MPIIOCoProcessor
 public:
 
    MPIIOMigrationBECoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIOMigrationBECoProcessor();
+   ~MPIIOMigrationBECoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
index 2db01731d..1f0932569 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.h
@@ -22,9 +22,9 @@ public:
    enum Arrays { AverageDensity = 1, AverageVelocity = 2, AverageFluktuations = 3, AverageTriple = 4, ShearStressVal = 5, RelaxationFactor = 6 };
 
    MPIIOMigrationCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIOMigrationCoProcessor();
+   ~MPIIOMigrationCoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
index a52ebe659..fa4cf2619 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.h
@@ -22,9 +22,9 @@ class MPIIORestartCoProcessor : public MPIIOCoProcessor
 {
 public:
    MPIIORestartCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MPIIORestartCoProcessor();
+   ~MPIIORestartCoProcessor() override;
    //! Each timestep writes the grid into the files
-   void process(double step);
+   void process(double step) override;
    //! Reads the grid from the files before grid reconstruction
    void restart(int step);
    //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
index b3f5edbc8..52210186f 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/MicrophoneArrayCoProcessor.h
@@ -23,7 +23,7 @@ class MicrophoneArrayCoProcessor : public CoProcessor
 {
 public:
    MicrophoneArrayCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, SPtr<Communicator> comm);
-   virtual ~MicrophoneArrayCoProcessor();
+   ~MicrophoneArrayCoProcessor() override;
 
    //! calls collectData.
    void process(double step) override;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
index c1d5685c5..16736237c 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureCoefficientCoProcessor.h
@@ -21,7 +21,7 @@ class PressureCoefficientCoProcessor: public CoProcessor
 public:
    PressureCoefficientCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
        SPtr<GbCuboid3D> plane, const std::string& path, SPtr<Communicator> comm);
-   ~PressureCoefficientCoProcessor();
+   ~PressureCoefficientCoProcessor() override;
 
    void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
index 2503bbd18..c3903443d 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/PressureDifferenceCoProcessor.h
@@ -26,7 +26,7 @@ public:
         SPtr<IntegrateValuesHelper> h1, SPtr<IntegrateValuesHelper> h2,
                                    LBMReal rhoReal, LBMReal uReal, LBMReal uLB,
                                    /*const SPtr<LBMUnitConverter> conv,*/ SPtr<Communicator> comm);
-	virtual ~PressureDifferenceCoProcessor();
+	~PressureDifferenceCoProcessor() override;
 
 	void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
index 4be491635..62843ab2e 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/ShearStressCoProcessor.h
@@ -29,7 +29,7 @@ public:
    //! Constructor
    ShearStressCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<UbScheduler> rs);
-   virtual ~ShearStressCoProcessor(); 
+   ~ShearStressCoProcessor() override; 
     
    void process(double step) override; 
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
index 9465167dc..7a70c7935 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeAveragedValuesCoProcessor.h
@@ -44,7 +44,7 @@ public:
    TimeAveragedValuesCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<Communicator> comm, int options, std::vector<int> levels, std::vector<double>& levelCoords, std::vector<double>& bounds, bool timeAveraging = true);
    //! Make update
-   void process(double step);
+   void process(double step) override;
    //! Computes subtotal of velocity , fluctuations and triple correlations
    void calculateSubtotal(double step);
    void addLevelCoordinate(double c);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
index e3d03e7a6..e316a1d19 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeDependentBCCoProcessor.h
@@ -16,7 +16,7 @@ class TimeDependentBCCoProcessor : public CoProcessor
 {
 public:
 	TimeDependentBCCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s);
-	virtual ~TimeDependentBCCoProcessor();
+	~TimeDependentBCCoProcessor() override;
 
 	void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
index b6ca9e903..981344167 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TimeseriesCoProcessor.h
@@ -27,7 +27,7 @@ class TimeseriesCoProcessor : public CoProcessor
 {
 public:
     TimeseriesCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, SPtr<IntegrateValuesHelper> h1, const std::string& path, SPtr<Communicator> comm);
-    virtual ~TimeseriesCoProcessor();
+    ~TimeseriesCoProcessor() override;
 
     //! calls collectData.
     void process(double step) override;
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
index 7ea876d4e..fe14a4922 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/TurbulenceIntensityCoProcessor.h
@@ -19,7 +19,7 @@ class TurbulenceIntensityCoProcessor : public CoProcessor
 public:
    TurbulenceIntensityCoProcessor(SPtr<Grid3D> grid, const std::string& path, WbWriter* const writer,
        SPtr<UbScheduler> s, SPtr<Communicator> comm);
-   void process(double step);
+   void process(double step) override;
 protected:
    void collectData(double step);
    void addData(const SPtr<Block3D> block);
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
index a6639a6e9..6b1c9f24a 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteGbObjectsCoProcessor.h
@@ -21,7 +21,7 @@ class WriteGbObjectsCoProcessor :public CoProcessor
 {
 public:
    WriteGbObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, WbWriter* const writer, SPtr<Communicator> comm);
-   virtual ~WriteGbObjectsCoProcessor();
+   ~WriteGbObjectsCoProcessor() override;
    //! calls collectData.
    void process(double step) override;
    //! adds geometry object
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
index 5a5c0a58e..5720b4929 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/WriteMQFromSelectionCoProcessor.h
@@ -27,7 +27,7 @@ public:
                                            SPtr<GbObject3D> gbObject,
                                            const std::string& path, WbWriter* const writer, 
                                            SPtr<LBMUnitConverter> conv, SPtr<Communicator> comm);
-   ~WriteMQFromSelectionCoProcessor(){}
+   ~WriteMQFromSelectionCoProcessor() override{}
 
    void process(double step) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
index e753f32ca..4e2ae44a0 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/Block3DConnectorFactory.h
@@ -9,28 +9,28 @@ class Block3DConnectorFactory : public ConnectorFactory
 {
 public:
    Block3DConnectorFactory();
-   virtual ~Block3DConnectorFactory();
+   ~Block3DConnectorFactory() override;
 
-   virtual SPtr<Block3DConnector> createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir);
+   SPtr<Block3DConnector> createSameLevelDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir) override;
 
-   virtual SPtr<Block3DConnector> createSameLevelVectorConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createSameLevelVectorConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender,
       VectorTransmitterPtr receiver,
-      int sendDir);
+      int sendDir) override;
 
-   virtual SPtr<Block3DConnector> createCoarseToFineConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createCoarseToFineConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender00, VectorTransmitterPtr receiver00,
       VectorTransmitterPtr sender01, VectorTransmitterPtr receiver01,
       VectorTransmitterPtr sender10, VectorTransmitterPtr receiver10,
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
-      int sendDir, InterpolationProcessorPtr iprocessor);
+      int sendDir, InterpolationProcessorPtr iprocessor) override;
 
-   virtual SPtr<Block3DConnector> createFineToCoarseConnector(SPtr<Block3D> block,
+   SPtr<Block3DConnector> createFineToCoarseConnector(SPtr<Block3D> block,
       VectorTransmitterPtr sender,
       VectorTransmitterPtr receiver,
       int sendDir,
       InterpolationProcessorPtr iprocessor,
-      FineToCoarseBlock3DConnector::CFconnectorType connType);
+      FineToCoarseBlock3DConnector::CFconnectorType connType) override;
 
 private:
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
index 8a04f0ca4..98199fdde 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineBlock3DConnector.h
@@ -49,43 +49,43 @@ public:
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   virtual ~CoarseToFineBlock3DConnector() {}
+   ~CoarseToFineBlock3DConnector() override {}
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
 
-   virtual void init()=0;
+   void init() override =0;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void fillSendVectors()=0;
-   virtual void distributeReceiveVectors() = 0;
+   void fillSendVectors() override =0;
+   void distributeReceiveVectors() override = 0;
 
-   bool isInterpolationConnectorCF() { return true; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return true; }
+   bool isInterpolationConnectorFC() override { return false; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
index a1834c336..9c5ec5bf6 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineNodeSetBlock3DConnector.h
@@ -50,10 +50,10 @@ public:
       VectorTransmitterPtr sender11, VectorTransmitterPtr receiver11,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   void init();
+   void init() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
 protected:
    typedef std::vector< int > INodeVector;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
index 48ac7a37f..094a9bec4 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETCFOffVectorConnector.h
@@ -54,42 +54,42 @@ public:
       VectorTransmitterPtr senderOddOddNE, VectorTransmitterPtr receiverOddOddNE,
       int sendDir, InterpolationProcessorPtr iprocessor);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
-   void init();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
+   void init() override;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
-   bool isInterpolationConnectorCF() { return true; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return true; }
+   bool isInterpolationConnectorFC() override { return false; }
 
    double getSendRecieveTime();
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
index 397a9c27c..9817caad7 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFCOffVectorConnector.h
@@ -44,42 +44,42 @@ public:
    D3Q27ETFCOffVectorConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, 
       InterpolationProcessorPtr iprocessor, CFconnectorType connType);
 
-	bool isLocalConnector();
-	bool isRemoteConnector();
-	void init();
+	bool isLocalConnector() override;
+	bool isRemoteConnector() override;
+	void init() override;
 
-	void sendTransmitterDataSize();
-	void receiveTransmitterDataSize();
+	void sendTransmitterDataSize() override;
+	void receiveTransmitterDataSize() override;
 
-	void prepareForSend();
-	void sendVectors();
+	void prepareForSend() override;
+	void sendVectors() override;
 
-	void prepareForReceive();
-	void receiveVectors();
+	void prepareForReceive() override;
+	void receiveVectors() override;
 
-	void fillSendVectors();
-	void distributeReceiveVectors();
+	void fillSendVectors() override;
+	void distributeReceiveVectors() override;
 
-	bool isInterpolationConnectorCF() { return false; }
-	bool isInterpolationConnectorFC() { return true; }
+	bool isInterpolationConnectorCF() override { return false; }
+	bool isInterpolationConnectorFC() override { return true; }
 
 	double getSendRecieveTime();
 
-	void prepareForSendX1() {}
-	void prepareForSendX2() {}
-	void prepareForSendX3() {}
+	void prepareForSendX1() override {}
+	void prepareForSendX2() override {}
+	void prepareForSendX3() override {}
 
-	void sendVectorsX1(){}
-	void sendVectorsX2(){}
-	void sendVectorsX3(){}
+	void sendVectorsX1() override{}
+	void sendVectorsX2() override{}
+	void sendVectorsX3() override{}
 
-	void prepareForReceiveX1() {}
-	void prepareForReceiveX2() {}
-	void prepareForReceiveX3() {}
+	void prepareForReceiveX1() override {}
+	void prepareForReceiveX2() override {}
+	void prepareForReceiveX3() override {}
 
-	void receiveVectorsX1() {}
-	void receiveVectorsX2() {}
-	void receiveVectorsX3() {}
+	void receiveVectorsX1() override {}
+	void receiveVectorsX2() override {}
+	void receiveVectorsX3() override {}
 
 protected:
 	WPtr<Block3D> block; //dieser nvd sendet daten und die empfangenen werden diesem nvd zugeordnet
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
index 149e53d62..b1c3a8e82 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.h
@@ -25,10 +25,10 @@ public:
       , VectorTransmitterPtr receiver
       , int sendDir);
 
-   void init();
+   void init() override;
 
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 
 protected:
    inline void fillData(vector_type& sdata, int& index, int x1, int x2, int x3);
diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
index cb1f1e1c9..c4bbc182f 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseBlock3DConnector.h
@@ -47,40 +47,40 @@ public:
 public:
    FineToCoarseBlock3DConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, InterpolationProcessorPtr iprocessor, CFconnectorType connType);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
    
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void init()=0;
-   virtual void fillSendVectors()=0;
-   virtual void distributeReceiveVectors()=0;
+   void init() override =0;
+   void fillSendVectors() override =0;
+   void distributeReceiveVectors() override =0;
 
-   bool isInterpolationConnectorCF() { return false; }
-   bool isInterpolationConnectorFC() { return true; }
+   bool isInterpolationConnectorCF() override { return false; }
+   bool isInterpolationConnectorFC() override { return true; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
index 899f91e2c..4d470fd62 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseNodeSetBlock3DConnector.h
@@ -29,9 +29,9 @@ class FineToCoarseNodeSetBlock3DConnector : public FineToCoarseBlock3DConnector
 {
 public:
    FineToCoarseNodeSetBlock3DConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, int sendDir, InterpolationProcessorPtr iprocessor, CFconnectorType connType);
-   void init();
-   void fillSendVectors();
-   void distributeReceiveVectors();
+   void init() override;
+   void fillSendVectors() override;
+   void distributeReceiveVectors() override;
 protected:
    typedef std::vector< int > INodeVector;
    typedef std::vector < INodeVector > INodeSet;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
index de6a01178..90790ce7d 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h
@@ -68,21 +68,21 @@ public:
 
    double getSendRecieveTime();
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> from;
diff --git a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h b/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
index 0956604ac..95d34f91f 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h
@@ -23,43 +23,43 @@ public:
       , VectorTransmitterPtr receiver
       , int sendDir);
 
-   bool isLocalConnector();
-   bool isRemoteConnector();
+   bool isLocalConnector() override;
+   bool isRemoteConnector() override;
 
-   virtual void init() = 0;
+   void init() override = 0;
 
-   void sendTransmitterDataSize();
-   void receiveTransmitterDataSize();
+   void sendTransmitterDataSize() override;
+   void receiveTransmitterDataSize() override;
 
-   void prepareForSend();
-   void sendVectors();
+   void prepareForSend() override;
+   void sendVectors() override;
 
-   void prepareForReceive();
-   void receiveVectors();
+   void prepareForReceive() override;
+   void receiveVectors() override;
 
-   virtual void fillSendVectors() = 0;
-   virtual void distributeReceiveVectors() = 0;
+   void fillSendVectors() override = 0;
+   void distributeReceiveVectors() override = 0;
 
-   bool isInterpolationConnectorCF() { return false; }
-   bool isInterpolationConnectorFC() { return false; }
+   bool isInterpolationConnectorCF() override { return false; }
+   bool isInterpolationConnectorFC() override { return false; }
 
    double getSendRecieveTime() { return 0; }
 
-   void prepareForSendX1() {}
-   void prepareForSendX2() {}
-   void prepareForSendX3() {}
+   void prepareForSendX1() override {}
+   void prepareForSendX2() override {}
+   void prepareForSendX3() override {}
 
-   void sendVectorsX1() {}
-   void sendVectorsX2() {}
-   void sendVectorsX3() {}
+   void sendVectorsX1() override {}
+   void sendVectorsX2() override {}
+   void sendVectorsX3() override {}
 
-   void prepareForReceiveX1() {}
-   void prepareForReceiveX2() {}
-   void prepareForReceiveX3() {}
+   void prepareForReceiveX1() override {}
+   void prepareForReceiveX2() override {}
+   void prepareForReceiveX3() override {}
 
-   void receiveVectorsX1() {}
-   void receiveVectorsX2() {}
-   void receiveVectorsX3() {}
+   void receiveVectorsX1() override {}
+   void receiveVectorsX2() override {}
+   void receiveVectorsX3() override {}
 
 protected:
    WPtr<Block3D> block; 
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
index 252311bff..c409b03a6 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
@@ -47,35 +47,35 @@ public:
    D3Q27EsoTwist3DSoA();
    D3Q27EsoTwist3DSoA(const size_t& nx1, const size_t& nx2, const size_t& nx3, LBMReal value);
    //////////////////////////////////////////////////////////////////////////
-   ~D3Q27EsoTwist3DSoA();
+   ~D3Q27EsoTwist3DSoA() override;
    //////////////////////////////////////////////////////////////////////////
-   void swap();
+   void swap() override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistribution( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    ////////////////////////////////////////////////////////////////////////
-   virtual void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void getDistributionInv( LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3);
+   void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction);
+   void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction);
+   void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   virtual LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction);
+   LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX1() const;
+   size_t getNX1() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX2() const;
+   size_t getNX2() const override;
    //////////////////////////////////////////////////////////////////////////
-   size_t getNX3() const;
+   size_t getNX3() const override;
    //////////////////////////////////////////////////////////////////////////
    Distributions getDistributions();
    //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
index d1f227101..3462d2102 100644
--- a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/VoidData3D.h
@@ -14,21 +14,21 @@ public:
       this->NX2 = nx2;
       this->NX3 = nx3;
    }
-    ~VoidData3D() {};
-    size_t getNX1() const { return NX1;}
-    size_t getNX2() const { return NX2;}
-    size_t getNX3() const { return NX3;}
-    void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3){}
-    void getDistributionInv(LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) {}
-    void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) {}
-    LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) {return 0.0;}
-    void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) {}
-    LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) {return 0.0;}
-    void swap() {}
+    ~VoidData3D() override {};
+    size_t getNX1() const override { return NX1;}
+    size_t getNX2() const override { return NX2;}
+    size_t getNX3() const override { return NX3;}
+    void getDistribution(LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistribution(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override{}
+    void getDistributionInv(LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistributionInv(const LBMReal* const f, size_t x1, size_t x2, size_t x3) override {}
+    void setDistributionForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    void setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, int direction) override {}
+    LBMReal getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override {return 0.0;}
+    void setDistributionInvForDirection(const LBMReal* const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    void setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override {}
+    LBMReal getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override {return 0.0;}
+    void swap() override {}
 protected:
 private:
    size_t NX1, NX2, NX3;
diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
index bd3f12720..84ac491b9 100644
--- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
+++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h
@@ -28,24 +28,24 @@ public:
    D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, SPtr<Grid3D> grid, SPtr<BCAdapter> bcAdapter, int type, Interactor3D::Accuracy a);
    //D3Q27TriFaceMeshInteractor(SPtr<GbTriFaceMesh3D> triFaceMesh, D3Q27BoundaryConditionAdapterPtr bcAdapter, int type, std::string name="D3Q27TriFaceMeshInteractor");
 
-   ~D3Q27TriFaceMeshInteractor();
+   ~D3Q27TriFaceMeshInteractor() override;
 
-   virtual void initInteractor(const double& timeStep=0);
+   void initInteractor(const double& timeStep=0) override;
    virtual void initInteractor2(const double& timeStep=0);
 
-   void updateInteractor(const double& timestep=0);
+   void updateInteractor(const double& timestep=0) override;
 
    void updateMovedGeometry(const double& timeStep=0);
    void setQs(const double& timeStep);
    void refineBlockGridToLevel(int level, double startDistance, double stopDistance);
 
-   bool setDifferencesToGbObject3D(const SPtr<Block3D> block/*,const double& orgX1,const double& orgX2,const double& orgX3,const double& blockLengthX1,const double& blockLengthX2,const double& blockLengthX3, const double& timestep=0*/);
+   bool setDifferencesToGbObject3D(const SPtr<Block3D> block/*,const double& orgX1,const double& orgX2,const double& orgX3,const double& blockLengthX1,const double& blockLengthX2,const double& blockLengthX3, const double& timestep=0*/) override;
 
    void setRegardPointInObjectTest( bool opt ) { this->regardPIOTest = opt; }
 
    ObObject*        clone() { throw UbException(UB_EXARGS,"not implemented");	}
 
-   UbTupleDouble3 getForces();
+   UbTupleDouble3 getForces() override;
    UbTupleDouble3 getForcesTriangle();
 
    void setStressMode(int stressMode)                      { this->stressMode = stressMode;                         }
diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
index d3b7cefb1..6a45748f2 100644
--- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h
@@ -11,7 +11,7 @@ class BGKLBMKernel :  public LBMKernel
 {
 public:
    BGKLBMKernel();
-   ~BGKLBMKernel(void);
+   ~BGKLBMKernel(void) override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
index d10ea218f..4acff84c1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
@@ -18,9 +18,9 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    CompressibleCumulant4thOrderViscosityLBMKernel();
-   virtual ~CompressibleCumulant4thOrderViscosityLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
+   ~CompressibleCumulant4thOrderViscosityLBMKernel(void) override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
    double getCalculationTime() override;
    //! The value should not be equal to a shear viscosity
    void setBulkViscosity(LBMReal value);
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
index 353fc4b53..a31ed59dd 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h
@@ -18,10 +18,10 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    CompressibleCumulantLBMKernel();
-   virtual ~CompressibleCumulantLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
-   double getCalculationTime();
+   ~CompressibleCumulantLBMKernel(void) override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override;
    void setBulkOmegaToOmega(bool value);
    void setRelaxationParameter(Parameter p);
 protected:
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
index b4465799a..d29a20497 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.h
@@ -16,13 +16,13 @@ class CompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 public:
    CompressibleOffsetInterpolationProcessor();
    CompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    //LBMReal forcingC, forcingF;
 protected:   
 private:
@@ -44,10 +44,10 @@ private:
 
 //   LBMReal a,b,c;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -57,9 +57,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
index f3a1403e4..e5492f159 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.h
@@ -16,13 +16,13 @@ class CompressibleOffsetMomentsInterpolationProcessor : public InterpolationProc
 public:
    CompressibleOffsetMomentsInterpolationProcessor();
    CompressibleOffsetMomentsInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetMomentsInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetMomentsInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    void setBulkViscosity(LBMReal shearViscosity, LBMReal bulkViscosity);
 protected:   
 private:
@@ -50,10 +50,10 @@ private:
    LBMReal OxxPyyPzzC;
    LBMReal OxxPyyPzzF;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -63,9 +63,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
index 523669719..b00d38395 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h
@@ -16,13 +16,13 @@ class CompressibleOffsetSquarePressureInterpolationProcessor : public Interpolat
 public:
    CompressibleOffsetSquarePressureInterpolationProcessor();
    CompressibleOffsetSquarePressureInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~CompressibleOffsetSquarePressureInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~CompressibleOffsetSquarePressureInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    void setBulkOmegaToOmega(bool value);
 protected:   
 private:
@@ -49,10 +49,10 @@ private:
    LBMReal OxxPyyPzzC;
    LBMReal OxxPyyPzzF;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNodeCF(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -62,9 +62,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
index 96062021a..4444213c0 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h
@@ -52,7 +52,7 @@ class CumulantK17LBMKernel : public LBMKernel
 {
 public:
    CumulantK17LBMKernel();
-   virtual ~CumulantK17LBMKernel() override;
+   ~CumulantK17LBMKernel() override;
    void calculate(int step) override;
    SPtr<LBMKernel> clone() override;
    double getCalculationTime() override { return .0; }
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
index cf4234e00..f614d9453 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h
@@ -20,10 +20,10 @@ public:
    enum Parameter{NORMAL, MAGIC};
 public:
    IncompressibleCumulantLBMKernel();
-   virtual ~IncompressibleCumulantLBMKernel(void);
-   virtual void calculate(int step);
-   virtual SPtr<LBMKernel> clone();
-   double getCalculationTime();
+   ~IncompressibleCumulantLBMKernel(void) override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override;
    void setRelaxationParameter(Parameter p);
 protected:
    virtual void initDataSet();
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
index c3ab71343..ab7ef611e 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
@@ -21,9 +21,9 @@ class IncompressibleCumulantWithSpongeLayerLBMKernel :  public IncompressibleCum
 {
 public:
    IncompressibleCumulantWithSpongeLayerLBMKernel();
-   virtual ~IncompressibleCumulantWithSpongeLayerLBMKernel(void);
-   SPtr<LBMKernel> clone();
-   void calculate(int step);
+   ~IncompressibleCumulantWithSpongeLayerLBMKernel(void) override;
+   SPtr<LBMKernel> clone() override;
+   void calculate(int step) override;
    void initRelaxFactor(int vdir, double vL1, double vdx, double vSP);
    //! \param vdir where the sponge layer is placed
    //! \param vL1 length of simulation domain
@@ -31,7 +31,7 @@ public:
    //! \param vSP length of sponge layer
    void setRelaxFactorParam(int vdir, double vL1, double vdx, double vSP);
 protected:
-  void initDataSet();
+  void initDataSet() override;
   LBMReal OxyyMxzz;
   int direction;
   double L1;
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
index b618660a9..e4017e5b9 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.h
@@ -17,13 +17,13 @@ class IncompressibleOffsetInterpolationProcessor : public InterpolationProcessor
 public:
    IncompressibleOffsetInterpolationProcessor();
    IncompressibleOffsetInterpolationProcessor(LBMReal omegaC, LBMReal omegaF);
-   virtual ~IncompressibleOffsetInterpolationProcessor();
-   InterpolationProcessorPtr clone();
-   void setOmegas(LBMReal omegaC, LBMReal omegaF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF);
-   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff);
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC); 
-   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff); 
+   ~IncompressibleOffsetInterpolationProcessor() override;
+   InterpolationProcessorPtr clone() override;
+   void setOmegas(LBMReal omegaC, LBMReal omegaF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF) override;
+   void interpolateCoarseToFine(D3Q27ICell& icellC, D3Q27ICell& icellF, LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC) override; 
+   void interpolateFineToCoarse(D3Q27ICell& icellF, LBMReal* icellC, LBMReal xoff, LBMReal yoff, LBMReal zoff) override; 
    //LBMReal forcingC, forcingF;
 protected:   
 private:
@@ -45,10 +45,10 @@ private:
 
 //   LBMReal a,b,c;
 
-   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff);
+   void setOffsets(LBMReal xoff, LBMReal yoff, LBMReal zoff) override;
    void calcMoments(const LBMReal* const f, LBMReal omega, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3, 
       LBMReal& kxy, LBMReal& kyz, LBMReal& kxz, LBMReal& kxxMyy, LBMReal& kxxMzz);
-   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new);
+   void calcInterpolatedCoefficiets(const D3Q27ICell& icell, LBMReal omega, LBMReal eps_new) override;
    void calcInterpolatedNode(LBMReal* f, LBMReal omega, LBMReal x, LBMReal y, LBMReal z, LBMReal press, LBMReal xs, LBMReal ys, LBMReal zs);
    LBMReal calcPressBSW();
    LBMReal calcPressTSW();
@@ -58,9 +58,9 @@ private:
    LBMReal calcPressTNW();
    LBMReal calcPressTNE();
    LBMReal calcPressBNE();
-   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega);
-   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3);
-   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz);
+   void calcInterpolatedNodeFC(LBMReal* f, LBMReal omega) override;
+   void calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z,LBMReal& vx1, LBMReal& vx2, LBMReal& vx3) override;
+   void calcInterpolatedShearStress(LBMReal x, LBMReal y, LBMReal z,LBMReal& tauxx, LBMReal& tauyy, LBMReal& tauzz,LBMReal& tauxy, LBMReal& tauxz, LBMReal& tauyz) override;
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
index 465bcea75..71833e246 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h
@@ -11,11 +11,11 @@ class InitDensityLBMKernel :  public LBMKernel
 {
 public:
    InitDensityLBMKernel();
-   ~InitDensityLBMKernel();
-   void calculate(int step);
-   SPtr<LBMKernel> clone();
+   ~InitDensityLBMKernel() override;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
    void setVelocity(int x1, int x2, int x3, LBMReal vvx, LBMReal vvy, LBMReal vvz);
-   double getCalculationTime();
+   double getCalculationTime() override;
 protected:
    void initDataSet();
 private:
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
index 1b2326374..9703bf6c5 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
@@ -55,11 +55,11 @@ public:
 
     virtual SPtr<LBMKernel> clone() = 0;
 
-    virtual void calculate(int step) = 0;
-    virtual double getCalculationTime() = 0;
+    void calculate(int step) override = 0;
+    double getCalculationTime() override = 0;
 
-    void setBCProcessor(SPtr<BCProcessor> bcp);
-    SPtr<BCProcessor> getBCProcessor() const;
+    void setBCProcessor(SPtr<BCProcessor> bcp) override;
+    SPtr<BCProcessor> getBCProcessor() const override;
 
     void setCollisionFactor(double collFactor) override;
     double getCollisionFactor() const override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
index 632a80402..56c5c033a 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h
@@ -11,7 +11,7 @@ class LBMKernelETD3Q27BGK :  public LBMKernel
 {
 public:
    LBMKernelETD3Q27BGK();
-   ~LBMKernelETD3Q27BGK(void);
+   ~LBMKernelETD3Q27BGK(void) override;
    void calculate(int step)override;
    SPtr<LBMKernel> clone()override;
    double getCalculationTime() override;
diff --git a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
index 6d3246006..4ae754cca 100644
--- a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h
@@ -7,10 +7,10 @@ class VoidLBMKernel : public LBMKernel
 {
 public:
    VoidLBMKernel();
-   ~VoidLBMKernel();
-   SPtr<LBMKernel> clone();
-   void calculate(int step);
-   double getCalculationTime();
+   ~VoidLBMKernel() override;
+   SPtr<LBMKernel> clone() override;
+   void calculate(int step) override;
+   double getCalculationTime() override;
    void initDataSet();
 protected:
 
diff --git a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
index e88eb42b3..20b6b85b3 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/MPICommunicator.h
@@ -22,45 +22,45 @@ private:
    MPICommunicator();
    MPICommunicator( const MPICommunicator& ){}
 public:
-   ~MPICommunicator();
+   ~MPICommunicator() override;
    static SPtr<Communicator> getInstance();
-   int getBundleID();
-   int getNumberOfBundles();
-   int getProcessID();
-   int getProcessID(int bundle, int rank);
-   int getNumberOfProcesses();
-   void* getNativeCommunicator();
-   int getRoot();
-   int getBundleRoot();
-   int getProcessRoot();
-   int getNumberOfProcessesInBundle(int bundle);
-   bool isRoot();
-   void abort(int errorcode);
-
-   void sendSerializedObject(std::stringstream& ss, int target);
-   void receiveSerializedObject(std::stringstream& ss, int source);
-
-   void barrier();
-
-   std::vector<std::string> gather(const std::string& str);
-   std::vector<int> gather(std::vector<int>& values);
-   std::vector<float> gather(std::vector<float>& values);
-   std::vector<double> gather(std::vector<double>& values);
-   std::vector<unsigned long long> gather(std::vector<unsigned long long>& values);
-
-   void allGather(std::vector<int>& svalues, std::vector<int>& rvalues);
-   void allGather(std::vector<float>& svalues, std::vector<float>& rvalues);
-   void allGather(std::vector<double>& svalues, std::vector<double>& rvalues);
-   void allGather(std::vector<unsigned long long>& svalues, std::vector<unsigned long long>& rvalues);
-
-   void broadcast(int& value);
-   void broadcast(float& value);
-   void broadcast(double& value);
-   void broadcast(long int& value);
-   void broadcast(std::vector<int>& values);
-   void broadcast(std::vector<float>& values);
-   void broadcast(std::vector<double>& values);
-   void broadcast(std::vector<long int>& values);
+   int getBundleID() override;
+   int getNumberOfBundles() override;
+   int getProcessID() override;
+   int getProcessID(int bundle, int rank) override;
+   int getNumberOfProcesses() override;
+   void* getNativeCommunicator() override;
+   int getRoot() override;
+   int getBundleRoot() override;
+   int getProcessRoot() override;
+   int getNumberOfProcessesInBundle(int bundle) override;
+   bool isRoot() override;
+   void abort(int errorcode) override;
+
+   void sendSerializedObject(std::stringstream& ss, int target) override;
+   void receiveSerializedObject(std::stringstream& ss, int source) override;
+
+   void barrier() override;
+
+   std::vector<std::string> gather(const std::string& str) override;
+   std::vector<int> gather(std::vector<int>& values) override;
+   std::vector<float> gather(std::vector<float>& values) override;
+   std::vector<double> gather(std::vector<double>& values) override;
+   std::vector<unsigned long long> gather(std::vector<unsigned long long>& values) override;
+
+   void allGather(std::vector<int>& svalues, std::vector<int>& rvalues) override;
+   void allGather(std::vector<float>& svalues, std::vector<float>& rvalues) override;
+   void allGather(std::vector<double>& svalues, std::vector<double>& rvalues) override;
+   void allGather(std::vector<unsigned long long>& svalues, std::vector<unsigned long long>& rvalues) override;
+
+   void broadcast(int& value) override;
+   void broadcast(float& value) override;
+   void broadcast(double& value) override;
+   void broadcast(long int& value) override;
+   void broadcast(std::vector<int>& values) override;
+   void broadcast(std::vector<float>& values) override;
+   void broadcast(std::vector<double>& values) override;
+   void broadcast(std::vector<long int>& values) override;
 
    template <class T>
    std::vector<T> gather(std::vector<T>& values);
diff --git a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
index af3ed3520..2495b7766 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
+++ b/src/cpu/VirtualFluidsCore/Parallel/NullCommunicator.h
@@ -44,20 +44,20 @@ class NullCommunicator : public Communicator
 {
 public:
    NullCommunicator();
-   ~NullCommunicator();
-   int getBundleID();
-   int getNumberOfBundles();
-   int getProcessID();
-   int getNumberOfProcesses();
-   void* getNativeCommunicator();
-   int getRoot();
-   int getBundleRoot();
-   int getProcessRoot();
-   std::vector<std::string> gather(const std::string& str);
+   ~NullCommunicator() override;
+   int getBundleID() override;
+   int getNumberOfBundles() override;
+   int getProcessID() override;
+   int getNumberOfProcesses() override;
+   void* getNativeCommunicator() override;
+   int getRoot() override;
+   int getBundleRoot() override;
+   int getProcessRoot() override;
+   std::vector<std::string> gather(const std::string& str) override;
    std::vector<double> gatherDoubles(std::vector<double>& values); 
    void allGatherInts(std::vector<int>& svalues, std::vector<int>& rvalues);
-   void sendSerializedObject(std::stringstream& ss, int target);
-   void receiveSerializedObject(std::stringstream& ss, int source);
+   void sendSerializedObject(std::stringstream& ss, int target) override;
+   void receiveSerializedObject(std::stringstream& ss, int source) override;
 protected:
 private:
 };
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
index b6eac1643..1baefe7ad 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h
@@ -13,7 +13,7 @@ class ChangeBoundaryDensityBlockVisitor : public Block3DVisitor
 {
 public:
    ChangeBoundaryDensityBlockVisitor(float oldBoundaryDensity, float newBoundaryDensity);
-   virtual ~ChangeBoundaryDensityBlockVisitor();
+   ~ChangeBoundaryDensityBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 private:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
index 3b24e6fdf..7f3d59c47 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h
@@ -14,7 +14,7 @@ class CheckRatioBlockVisitor : public Block3DVisitor
 public:
    CheckRatioBlockVisitor(int levelDepth, bool includeNotActiveBlocks = true);
 
-   virtual ~CheckRatioBlockVisitor() {}
+   ~CheckRatioBlockVisitor() override {}
 
    bool getState();
    void resetState();
diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
index 19399d554..905492608 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h
@@ -21,7 +21,7 @@ public:
    //! \param geoObject a smart pointer to bounding box
    //! \param refineLevel an integer for refine on this level
    CoarsenCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int fineLevel, int coarseLevel);
-   virtual ~CoarsenCrossAndInsideGbObjectBlockVisitor();
+   ~CoarsenCrossAndInsideGbObjectBlockVisitor() override;
       void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
    //////////////////////////////////////////////////////////////////////////
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
index fdd79284c..f40083001 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ConnectorBlockVisitor.h
@@ -16,7 +16,7 @@ class ConnectorBlockVisitor : public Block3DVisitor
 {
 public:
    ConnectorBlockVisitor(SPtr<Communicator> comm, LBMReal nu, SPtr<InterpolationProcessor> iProcessor, SPtr<ConnectorFactory> cFactory);
-   virtual ~ConnectorBlockVisitor();
+   ~ConnectorBlockVisitor() override;
       void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
    //////////////////////////////////////////////////////////////////////////
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
index 3e6f13603..bdc373e14 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h
@@ -14,8 +14,8 @@ class InitDistributionsWithInterpolationGridVisitor : public Grid3DVisitor
 {
 public:
    InitDistributionsWithInterpolationGridVisitor(SPtr<Grid3D> oldGrid, SPtr<InterpolationProcessor> iProcessor, LBMReal nu);
-   ~InitDistributionsWithInterpolationGridVisitor();
-   void visit(SPtr<Grid3D> grid);
+   ~InitDistributionsWithInterpolationGridVisitor() override;
+   void visit(SPtr<Grid3D> grid) override;
 private:
    void copyLocalBlock(SPtr<Block3D> oldBlock, SPtr<Block3D> newBlock);
    void copyRemoteBlock(SPtr<Block3D> oldBlock, SPtr<Block3D> newBlock);
diff --git a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
index 0065a41a7..2d241359c 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h
@@ -34,7 +34,7 @@ public:
    //! \param threads - on/off decomposition for threads
    //! \param numberOfThreads - number of threads
    MetisPartitioningGridVisitor(SPtr<Communicator> comm, GraphType graphType, int numOfDirs, MetisPartitioner::PartType partType = MetisPartitioner::KWAY, bool threads = false, int numberOfThreads = 0);
-   virtual ~MetisPartitioningGridVisitor();
+   ~MetisPartitioningGridVisitor() override;
    void visit(SPtr<Grid3D> grid) override;
    void setNumberOfProcesses(int np);
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
index db25eaf71..15af7a41a 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h
@@ -14,7 +14,7 @@ class OverlapBlockVisitor : public Block3DVisitor
 public:
    OverlapBlockVisitor(int levelDepth, bool includeNotActiveBlocks = true);
    
-   virtual ~OverlapBlockVisitor(){}
+   ~OverlapBlockVisitor() override{}
 
    bool isIterative()   { return false; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
index 864108721..21e4daa8f 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h
@@ -14,7 +14,7 @@ class RatioBlockVisitor : public Block3DVisitor
 public:
    RatioBlockVisitor(int levelDepth, bool includeNotActiveBlocks = false);
 
-   virtual ~RatioBlockVisitor() {}
+   ~RatioBlockVisitor() override {}
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
index 25715682d..3b7d095f7 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h
@@ -13,7 +13,7 @@ class RatioSmoothBlockVisitor : public Block3DVisitor
 public:
    RatioSmoothBlockVisitor(int levelDepth, bool includeNotActiveBlocks = false);
 
-   virtual ~RatioSmoothBlockVisitor() {}
+   ~RatioSmoothBlockVisitor() override {}
 
    bool expandsByAdaptation() { return this->expandBlocks; }
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
index 6149eda04..d8b5b1888 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h
@@ -22,7 +22,7 @@ public:
    //! \param geoObject a smart pointer to bounding box
    //! \param refineLevel an integer for refine on this level
    RefineCrossAndInsideGbObjectBlockVisitor(SPtr<GbObject3D> geoObject, int refineLevel);
-   virtual ~RefineCrossAndInsideGbObjectBlockVisitor();
+   ~RefineCrossAndInsideGbObjectBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
index 0980aa954..ff0939e01 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h
@@ -21,7 +21,7 @@ class RenumberBlockVisitor : public Block3DVisitor
 public:
    RenumberBlockVisitor();
 
-   virtual ~RenumberBlockVisitor() {}
+   ~RenumberBlockVisitor() override {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
index b7005579a..b403947d6 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h
@@ -21,7 +21,7 @@ class RenumberGridVisitor : public Grid3DVisitor
 public:
    RenumberGridVisitor(SPtr<Communicator> com);
 
-   virtual ~RenumberGridVisitor() {}
+   ~RenumberGridVisitor() override {}
 
    void visit(SPtr<Grid3D> grid) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
index f8406c31a..d612a5f04 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h
@@ -19,9 +19,9 @@ public:
 
    SetForcingBlockVisitor(const std::string& sForcingX1, const std::string& sForcingX2, const std::string& sForcingX3);
 
-   virtual ~SetForcingBlockVisitor() {}
+   ~SetForcingBlockVisitor() override {}
 
-   virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
+   void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
 private:
    int ftype;
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
index faca2e5fd..8645cf828 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h
@@ -14,7 +14,7 @@ class SetInterpolationDirsBlockVisitor : public Block3DVisitor
 public:
    SetInterpolationDirsBlockVisitor(std::vector<int>& dirs);
 
-   virtual ~SetInterpolationDirsBlockVisitor() {}
+   ~SetInterpolationDirsBlockVisitor() override {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
index 771eb6675..e676d3f7e 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h
@@ -64,7 +64,7 @@ public:
 
     ~SetKernelBlockVisitor() override = default;
 
-    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
     void setNoDataSetFlag(bool flag);
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
index 67d5e2ad0..27d48a1cf 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h
@@ -17,7 +17,7 @@ class SetSpongeLayerBlockVisitor : public Block3DVisitor
 {
 public:
    SetSpongeLayerBlockVisitor(const mu::Parser& spongeLayer);
-   virtual ~SetSpongeLayerBlockVisitor();
+   ~SetSpongeLayerBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
index bf7e9e884..9fe2b4f51 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h
@@ -14,7 +14,7 @@ class SetUndefinedNodesBlockVisitor : public Block3DVisitor
 public:
    SetUndefinedNodesBlockVisitor(bool twoTypeOfConnectorsCheck=true);
 
-   virtual ~SetUndefinedNodesBlockVisitor() {}
+   ~SetUndefinedNodesBlockVisitor() override {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 protected:
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
index 9b7091d2e..43ee4e614 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h
@@ -16,7 +16,7 @@ class SpongeLayerBlockVisitor : public Block3DVisitor
 {
 public:
    SpongeLayerBlockVisitor(SPtr<GbCuboid3D> boundingBox, SPtr<LBMKernel> kernel, double nue, int dir);
-   virtual ~SpongeLayerBlockVisitor();
+   ~SpongeLayerBlockVisitor() override;
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
index 881d01f51..31f5d0316 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
+++ b/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h
@@ -14,7 +14,7 @@ class ViscosityBlockVisitor : public Block3DVisitor
 public:
    ViscosityBlockVisitor(LBMReal nu);
 
-   virtual ~ViscosityBlockVisitor() {}
+   ~ViscosityBlockVisitor() override {}
 
    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
 
-- 
GitLab