diff --git a/FileIO/GMSHInterface.cpp b/FileIO/GMSHInterface.cpp
index b6ab8e5ffb4fb441d93225dfe7769a52b97d0f5d..35218aadf0c34f2b926c66a5c7f8da22608da4eb 100644
--- a/FileIO/GMSHInterface.cpp
+++ b/FileIO/GMSHInterface.cpp
@@ -54,14 +54,13 @@
 namespace FileIO
 {
 GMSHInterface::GMSHInterface(GeoLib::GEOObjects & geo_objs,
-                             bool include_stations_as_constraints,
+                             bool /*include_stations_as_constraints*/,
                              GMSH::MeshDensityAlgorithm mesh_density_algorithm,
                              double param1,
                              double param2,
                              size_t param3,
                              std::vector<std::string>& selected_geometries) :
-	_n_lines(0), _n_plane_sfc(0), _geo_objs(geo_objs), _selected_geometries(selected_geometries),
-	_include_stations_as_constraints(include_stations_as_constraints)
+	_n_lines(0), _n_plane_sfc(0), _geo_objs(geo_objs), _selected_geometries(selected_geometries)
 {
 	switch (mesh_density_algorithm) {
 	case GMSH::MeshDensityAlgorithm::NoMeshDensity:
diff --git a/FileIO/GMSHInterface.h b/FileIO/GMSHInterface.h
index 9af1184d37cf274c370a71dc347d24fc60e7cacf..51b20dab8eba52f0078d39514c68613a9711c6a4 100644
--- a/FileIO/GMSHInterface.h
+++ b/FileIO/GMSHInterface.h
@@ -106,8 +106,6 @@ private:
 	std::string _gmsh_geo_name;
 	std::list<GMSH::GMSHPolygonTree*> _polygon_tree_list;
 
-	bool _include_stations_as_constraints;
-
 	std::vector<FileIO::GMSH::GMSHPoint*> _gmsh_pnts;
 
 	GMSH::GMSHMeshDensityStrategy *_mesh_density_strategy;
diff --git a/FileIO/Legacy/MeshIO.h b/FileIO/Legacy/MeshIO.h
index 7901396dfec3d78b7d6bf068fc4fa2f7798bdded..53f6c7c3ba538f594342f26100befc0179a7699b 100644
--- a/FileIO/Legacy/MeshIO.h
+++ b/FileIO/Legacy/MeshIO.h
@@ -60,7 +60,6 @@ private:
 	MeshLib::Element* readElement(const std::string& line, const std::vector<MeshLib::Node*> &nodes);
 	std::string ElemType2StringOutput(const MeshElemType t) const;
 
-	double* _edge_length[2];
 	const MeshLib::Mesh* _mesh;
 
 };  /* class */
diff --git a/MathLib/LinAlg/Dense/DenseMatrix-impl.h b/MathLib/LinAlg/Dense/DenseMatrix-impl.h
index 0d871635b057c9adee7f85dc4c63b5127e02d12b..725f8a81aed1778d43f9cfc61d2d062b875e4092 100644
--- a/MathLib/LinAlg/Dense/DenseMatrix-impl.h
+++ b/MathLib/LinAlg/Dense/DenseMatrix-impl.h
@@ -56,7 +56,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::~DenseMatrix ()
 template <typename FP_TYPE, typename IDX_TYPE>
 DenseMatrix<FP_TYPE, IDX_TYPE>&
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator=(DenseMatrix<FP_TYPE, IDX_TYPE> const& rhs)
-	throw (std::range_error)
+	noexcept(false)
 {
 	if (this == &rhs)
 		return *this;
@@ -140,7 +140,7 @@ V DenseMatrix<FP_TYPE, IDX_TYPE>::operator* (V const& x) const
 template<typename FP_TYPE, typename IDX_TYPE>
 DenseMatrix<FP_TYPE, IDX_TYPE>*
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator+(const DenseMatrix<FP_TYPE, IDX_TYPE>& mat) const
-		throw (std::range_error)
+		noexcept(false)
 {
 	// make sure the two matrices have the same dimension.
 	if (_n_rows != mat.getNRows() || _n_cols != mat.getNCols())
@@ -159,7 +159,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::operator+(const DenseMatrix<FP_TYPE, IDX_TYPE>&
 template<typename FP_TYPE, typename IDX_TYPE>
 DenseMatrix<FP_TYPE, IDX_TYPE>*
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator-(const DenseMatrix<FP_TYPE, IDX_TYPE>& mat) const
-		throw (std::range_error)
+		noexcept(false)
 {
 	// make sure the two matrices have the same dimension.
 	if (_n_rows != mat.getNRows() || _n_cols != mat.getNCols())
@@ -178,7 +178,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::operator-(const DenseMatrix<FP_TYPE, IDX_TYPE>&
 template<typename FP_TYPE, typename IDX_TYPE>
 DenseMatrix<FP_TYPE, IDX_TYPE>*
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator*(const DenseMatrix<FP_TYPE, IDX_TYPE>& mat) const
-		throw (std::range_error)
+		noexcept(false)
 {
 	// make sure the two matrices have the same dimension.
 	if (_n_cols != mat.getNRows())
@@ -218,7 +218,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>*
 DenseMatrix<FP_TYPE, IDX_TYPE>::getSubMatrix(
 		IDX_TYPE b_row, IDX_TYPE b_col,
 		IDX_TYPE e_row, IDX_TYPE e_col) const
-		throw (std::range_error)
+		noexcept(false)
 {
 	if (b_row >= e_row | b_col >= e_col)
 		throw std::range_error("DenseMatrix::getSubMatrix() illegal sub matrix");
@@ -239,7 +239,7 @@ template<typename FP_TYPE, typename IDX_TYPE>
 void
 DenseMatrix<FP_TYPE, IDX_TYPE>::setSubMatrix(IDX_TYPE b_row, IDX_TYPE b_col,
 		const DenseMatrix<FP_TYPE, IDX_TYPE>& sub_mat)
-		throw (std::range_error)
+		noexcept(false)
 {
 	if (b_row + sub_mat.getNRows() > _n_rows | b_col + sub_mat.getNCols() > _n_cols)
 		throw std::range_error("DenseMatrix::setSubMatrix() sub matrix to big");
@@ -254,7 +254,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::setSubMatrix(IDX_TYPE b_row, IDX_TYPE b_col,
 template<typename FP_TYPE, typename IDX_TYPE>
 FP_TYPE&
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator() (IDX_TYPE row, IDX_TYPE col)
-	throw (std::range_error)
+	noexcept(false)
 {
 	if ((row >= _n_rows) | (col >= _n_cols))
 		throw std::range_error("DenseMatrix: op() const range error");
@@ -265,7 +265,7 @@ DenseMatrix<FP_TYPE, IDX_TYPE>::operator() (IDX_TYPE row, IDX_TYPE col)
 template<typename FP_TYPE, typename IDX_TYPE>
 FP_TYPE const&
 DenseMatrix<FP_TYPE, IDX_TYPE>::operator() (IDX_TYPE row, IDX_TYPE col) const
-	throw (std::range_error)
+	noexcept(false)
 {
 	if ((row >= _n_rows) | (col >= _n_cols))
 		throw std::range_error("DenseMatrix: op() const range error");
diff --git a/MathLib/LinAlg/Dense/DenseMatrix.h b/MathLib/LinAlg/Dense/DenseMatrix.h
index 73754ddb2972805c8faf04d6bef7348a1c995018..b98e3568c4d9f233d2f152d032c9890a75060828 100644
--- a/MathLib/LinAlg/Dense/DenseMatrix.h
+++ b/MathLib/LinAlg/Dense/DenseMatrix.h
@@ -36,7 +36,7 @@ public:
 
 public:
    /// Dense square matrix constructor.
-   DenseMatrix (IDX_TYPE rows) : DenseMatrix(rows, rows) {};
+   DenseMatrix (IDX_TYPE rows) : DenseMatrix(rows, rows) {}
 
    /// Dense rectangular matrix constructor.
    DenseMatrix (IDX_TYPE rows, IDX_TYPE cols);
@@ -64,7 +64,7 @@ public:
     * Assignment operator, makes a copy of the internal data of the object.
     * @param rhs The DenseMatrix object to the right side of the assignment symbol.
     */
-   DenseMatrix& operator=(DenseMatrix const& rhs) throw (std::range_error);
+   DenseMatrix& operator=(DenseMatrix const& rhs) noexcept(false);
 
    /**
     * This is the move assignment operator.
@@ -88,18 +88,18 @@ public:
    /**
     * DenseMatrix matrix addition.
     */
-   DenseMatrix* operator+ (const DenseMatrix& mat) const throw (std::range_error);
+   DenseMatrix* operator+ (const DenseMatrix& mat) const noexcept(false);
    /**
     * DenseMatrix matrix subtraction
     */
-   DenseMatrix* operator- (const DenseMatrix& mat) const throw (std::range_error);
+   DenseMatrix* operator- (const DenseMatrix& mat) const noexcept(false);
 
    /**
     * DenseMatrix matrix multiplication \f$ C = A \cdot B\f$
     * @param mat the matrix \f$ B \f$
     * @return the matrix \f$ C \f$
     */
-   DenseMatrix* operator* (const DenseMatrix& mat) const throw (std::range_error);
+   DenseMatrix* operator* (const DenseMatrix& mat) const noexcept(false);
 
    /**
     * matrix transpose
@@ -107,7 +107,7 @@ public:
     */
    DenseMatrix* transpose() const; // HB & ZC
 
-   DenseMatrix* getSubMatrix (IDX_TYPE b_row, IDX_TYPE b_col, IDX_TYPE e_row, IDX_TYPE e_col) const throw (std::range_error);
+   DenseMatrix* getSubMatrix (IDX_TYPE b_row, IDX_TYPE b_col, IDX_TYPE e_row, IDX_TYPE e_col) const noexcept(false);
 
    /**
     * overwrites values of the matrix with the given sub matrix
@@ -115,10 +115,10 @@ public:
     * @param b_col the first column
     * @param sub_mat the sub matrix
     */
-   void setSubMatrix (IDX_TYPE b_row, IDX_TYPE b_col, const DenseMatrix& sub_mat) throw (std::range_error);
+   void setSubMatrix (IDX_TYPE b_row, IDX_TYPE b_col, const DenseMatrix& sub_mat) noexcept(false);
 
-   inline FP_TYPE & operator() (IDX_TYPE row, IDX_TYPE col) throw (std::range_error);
-   inline FP_TYPE const& operator() (IDX_TYPE row, IDX_TYPE col) const throw (std::range_error);
+   inline FP_TYPE & operator() (IDX_TYPE row, IDX_TYPE col) noexcept(false);
+   inline FP_TYPE const& operator() (IDX_TYPE row, IDX_TYPE col) const noexcept(false);
 
    /**
     * writes the matrix entries into the output stream
diff --git a/MathLib/LinAlg/Lis/LisOption.h b/MathLib/LinAlg/Lis/LisOption.h
index b45e1d9a47c58c77222230453599e803583bd27e..017375aaebc63296597389b22f397a162201185c 100644
--- a/MathLib/LinAlg/Lis/LisOption.h
+++ b/MathLib/LinAlg/Lis/LisOption.h
@@ -109,7 +109,7 @@ struct LisOption
     LisOption();
 
     /// Destructor
-    ~LisOption() {};
+    ~LisOption() {}
 
     /**
      * return a linear solver type from the solver name
diff --git a/MathLib/LinAlg/Lis/LisTools.h b/MathLib/LinAlg/Lis/LisTools.h
index c5c542f8871c728c0562aad55c549b362391d500..1c5d2f8f3553ee856c1baa6063b3358e64d23f48 100644
--- a/MathLib/LinAlg/Lis/LisTools.h
+++ b/MathLib/LinAlg/Lis/LisTools.h
@@ -29,8 +29,8 @@ class LisVector;
  *
  * @param A                 Coefficient matrix
  * @param b                 RHS vector
- * @param vec_knownX_id    a vector of known solution entry IDs
- * @param vec_knownX_x     a vector of known solutions
+ * @param _vec_knownX_id    a vector of known solution entry IDs
+ * @param _vec_knownX_x     a vector of known solutions
  * @param penalty_scaling value for scaling some matrix and right hand side
  * entries to enforce some conditions
  */
diff --git a/MeshLib/MeshGenerators/LayeredVolume.cpp b/MeshLib/MeshGenerators/LayeredVolume.cpp
index 30d764226bd0b7ba191a63e3c03f80527e2ed908..dc08105b4cdcc9194f7ce17c0249f795fbd9a0ac 100644
--- a/MeshLib/MeshGenerators/LayeredVolume.cpp
+++ b/MeshLib/MeshGenerators/LayeredVolume.cpp
@@ -42,7 +42,7 @@ bool LayeredVolume::createGeoVolumes(const MeshLib::Mesh &mesh, const std::vecto
 {
 	if (mesh.getDimension() != 2 || !allRastersExist(raster_paths))
 		return false;
-	
+
 	std::vector<GeoLib::Raster const*> rasters;
 	rasters.reserve(raster_paths.size());
 	for (auto path = raster_paths.begin(); path != raster_paths.end(); ++path)
@@ -69,7 +69,7 @@ bool LayeredVolume::createGeoVolumes(const MeshLib::Mesh &mesh, const std::vecto
 	MeshLib::Mesh* mesh_layer (ex.removeMeshElements("MeshLayer"));
 	if (mesh_layer==nullptr)
 		mesh_layer = new MeshLib::Mesh(mesh);
-	
+
 	// map each layer and attach to subsurface mesh
 	const std::size_t nRasters (rasters.size());
 	for (size_t i=0; i<nRasters; ++i)
@@ -97,14 +97,14 @@ void LayeredVolume::addLayerToMesh(const MeshLib::Mesh &mesh_layer, unsigned lay
 	const std::size_t nNodes (layer_nodes.size());
 	const std::size_t node_id_offset (_nodes.size());
 	const std::size_t last_layer_offset (node_id_offset-nNodes);
-	
+
 	for (std::size_t i=0; i<nNodes; ++i)
 	{
 		if (layer_id > 0 &&
-		   ((*layer_nodes[i])[2] == _invalid_value || 
+		   ((*layer_nodes[i])[2] == _invalid_value ||
 		    (*_nodes[last_layer_offset+i])[2]-(*layer_nodes[i])[2] < _elevation_epsilon))
 			_nodes.push_back(new MeshLib::Node(*_nodes[last_layer_offset+i]));
-		else 
+		else
 			_nodes.push_back(new MeshLib::Node(layer_nodes[i]->getCoords(), _nodes.size()));
 	}
 
@@ -113,17 +113,17 @@ void LayeredVolume::addLayerToMesh(const MeshLib::Mesh &mesh_layer, unsigned lay
 	{
 		if (elem->getGeomType() == MeshElemType::TRIANGLE)
 		{
-			std::array<MeshLib::Node*,3> tri_nodes = { _nodes[node_id_offset+elem->getNodeIndex(0)],
+			std::array<MeshLib::Node*,3> tri_nodes = {{ _nodes[node_id_offset+elem->getNodeIndex(0)],
 			                                           _nodes[node_id_offset+elem->getNodeIndex(1)],
-			                                           _nodes[node_id_offset+elem->getNodeIndex(2)] };
+			                                           _nodes[node_id_offset+elem->getNodeIndex(2)] }};
 			_elements.push_back(new MeshLib::Tri(tri_nodes, layer_id+1));
 		}
 		else if (elem->getGeomType() == MeshElemType::QUAD)
-		{			
-			std::array<MeshLib::Node*,4> quad_nodes = { _nodes[node_id_offset+elem->getNodeIndex(0)],
+		{
+			std::array<MeshLib::Node*,4> quad_nodes = {{ _nodes[node_id_offset+elem->getNodeIndex(0)],
 			                                            _nodes[node_id_offset+elem->getNodeIndex(1)],
 			                                            _nodes[node_id_offset+elem->getNodeIndex(2)],
-			                                            _nodes[node_id_offset+elem->getNodeIndex(3)] };
+			                                            _nodes[node_id_offset+elem->getNodeIndex(3)] }};
 			_elements.push_back(new MeshLib::Quad(quad_nodes, layer_id+1));
 		}
 	}
@@ -146,15 +146,15 @@ void LayeredVolume::addLayerBoundaries(const MeshLib::Mesh &layer, std::size_t n
 					MeshLib::Node* n1 = _nodes[offset + elem->getNodeIndex((i+1)%nElemNodes)];
 					MeshLib::Node* n2 = _nodes[offset + nNodes + elem->getNodeIndex((i+1)%nElemNodes)];
 					MeshLib::Node* n3 = _nodes[offset + nNodes + elem->getNodeIndex(i)];
-					
+
 					if (MathLib::Vector3(*n1, *n2).getLength() > std::numeric_limits<double>::epsilon())
 					{
-						const std::array<MeshLib::Node*,3> tri_nodes = { n0, n2, n1 };
+						const std::array<MeshLib::Node*,3> tri_nodes = {{ n0, n2, n1 }};
 						_elements.push_back(new MeshLib::Tri(tri_nodes, nLayers+1+j));
 					}
 					if (MathLib::Vector3(*n0, *n3).getLength() > std::numeric_limits<double>::epsilon())
 					{
-						const std::array<MeshLib::Node*,3> tri_nodes = { n0, n3, n2 };
+						const std::array<MeshLib::Node*,3> tri_nodes = {{ n0, n3, n2 }};
 						_elements.push_back(new MeshLib::Tri(tri_nodes, nLayers+1+j));
 					}
 				}
diff --git a/MeshLib/MeshGenerators/MeshLayerMapper.cpp b/MeshLib/MeshGenerators/MeshLayerMapper.cpp
index 8385a40c3838f2f6d8eeb5ff1acccf7264814cf6..cb44b44ba84e82f60f8665e1798f013df2827527 100644
--- a/MeshLib/MeshGenerators/MeshLayerMapper.cpp
+++ b/MeshLib/MeshGenerators/MeshLayerMapper.cpp
@@ -168,16 +168,16 @@ bool MeshLayerMapper::LayerMapping(MeshLib::Mesh &new_mesh, const GeoLib::Raster
 		const size_t xIdx (static_cast<size_t>(floor(xPos)));
 		const size_t yIdx (static_cast<size_t>(floor(yPos)));
 
-		// weights for bilinear interpolation		
+		// weights for bilinear interpolation
 		const double xShift = fabs(xPos-(xIdx+half_delta))/delta;
 		const double yShift = fabs(yPos-(yIdx+half_delta))/delta;
-		std::array<double,4> weight = { (1-xShift)*(1-xShift), xShift*(1-yShift), xShift*yShift, (1-xShift)*yShift };
+		std::array<double,4> weight = {{ (1-xShift)*(1-xShift), xShift*(1-yShift), xShift*yShift, (1-xShift)*yShift }};
 
 		// neightbors to include in interpolation
 		const int xShiftIdx = (xPos-xIdx-half_delta>=0) ? 1 : -1;
 		const int yShiftIdx = (yPos-yIdx-half_delta>=0) ? 1 : -1;
-		const std::array<int,4> x_nb = { 0, xShiftIdx, xShiftIdx, 0 };
-		const std::array<int,4> y_nb = { 0, 0, yShiftIdx, yShiftIdx };
+		const std::array<int,4> x_nb = {{ 0, xShiftIdx, xShiftIdx, 0 }};
+		const std::array<int,4> y_nb = {{ 0, 0, yShiftIdx, yShiftIdx }};
 
 		// get pixel values
 		std::array<double,4>  pix_val;