diff --git a/Makefile.am b/Makefile.am
index 8fdd1e779419a8179e7b65717153726e5023152b..6c644f1c3e049175af479deb7b1d3c160a325953 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,7 @@ staticrod_SOURCES = staticrod.cc
 staticrod2_SOURCES = staticrod2.cc
 rod3d_SOURCES = rod3d.cc
 
-dirneucoupling_SOURCES  = dirneucoupling.cc linearsolver.cc
+dirneucoupling_SOURCES  = dirneucoupling.cc
 dirneucoupling_CXXFLAGS = $(UG_CPPFLAGS) $(AMIRAMESH_CPPFLAGS) $(MPI_CPPFLAGS) -I$(IPOPT_DIR)/IPOPT/include \
                           $(LAPACKPP_CPPFLAGS)
 dirneucoupling_LDADD    = $(UG_LDFLAGS) $(AMIRAMESH_LDFLAGS) $(UG_LIBS) $(AMIRAMESH_LIBS) $(MPI_LDFLAGS) \
diff --git a/linearsolver.cc b/linearsolver.cc
deleted file mode 100644
index 2c84d9ab321c4c07f6e3dadd18d30280d4a7095c..0000000000000000000000000000000000000000
--- a/linearsolver.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// The following line switches of the f2c.h in UG.  Boy, is this disgusting!
-#define F2C_INCLUDE
-
-#include "linearsolver.hh"
-#include "lapackpp.h"
-
-using namespace Dune;
-
-// Solve a small linear system using lapack++
-void linearSolver(const Dune::Matrix<Dune::FieldMatrix<double,1,1> >& A,
-                  Dune::BlockVector<Dune::FieldVector<double,1> >& x,
-                  const FieldVector<double,6>& b)
-{
-    assert(A.N()==6);
-    assert(A.M()%3 == 0);
-
-    LaGenMatDouble matrix(A.N(),A.M());
-
-    for (int i=0; i<A.N(); i++)
-        for (int j=0; j<A.M(); j++)
-            matrix(i,j) = A[i][j];
-
-    LaVectorDouble X(A.M());
-    for (int i=0; i<A.M(); i++)
-        X(i) = x[i];
-
-    LaVectorDouble B(A.N());
-    for (int i=0; i<A.N(); i++)
-        B(i) = b[i];
-
-    LaLinearSolve(matrix, X, B);
-
-    for (int i=0; i<A.M(); i++)
-        x[i] = X(i);
-}
-
-// Compute the svd using lapack++
-void lapackSVD(const FieldMatrix<double,3,3>& A,
-               FieldMatrix<double,3,3>& U,
-               FieldVector<double,3>& sigma,
-               FieldMatrix<double,3,3>& VT)
-{
-    LaGenMatDouble lpA(3,3), lpU(3,3), lpVT(3,3);
-    LaVectorDouble lpSigma(3);
-
-    for (int i=0; i<3; i++)
-        for (int j=0; j<3; j++)
-            lpA(i,j) = A[i][j];
-
-    LaSVD_IP(lpA, lpSigma, lpU, lpVT);
-
-    for (int i=0; i<3; i++) {
-
-        sigma[i] = lpSigma(i);
-
-        for (int j=0; j<3; j++) {
-            U[i][j]  = lpU(i,j);
-            VT[i][j] = lpVT(i,j);
-        }
-
-    }
-}
diff --git a/linearsolver.hh b/linearsolver.hh
deleted file mode 100644
index bf6ecea6d9fb391bda424335687835dd82771ee7..0000000000000000000000000000000000000000
--- a/linearsolver.hh
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef LINEAR_SOLVER_HH
-#define LINEAR_SOLVER_HH
-
-#include <dune/common/fmatrix.hh>
-#include <dune/istl/matrix.hh>
-
-void linearSolver(const Dune::Matrix<Dune::FieldMatrix<double,1,1> >& A,
-                  Dune::BlockVector<Dune::FieldVector<double,1> >& x,
-                  const Dune::FieldVector<double,6>& b);
-
-void lapackSVD(const Dune::FieldMatrix<double,3,3>& A,
-               Dune::FieldMatrix<double,3,3>& U,
-               Dune::FieldVector<double,3>& sigma,
-              Dune::FieldMatrix<double,3,3>& VT);
-
-#endif