From b748162ab8979bbada191b9920e58a921cfa3e7f Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Tue, 17 Jan 2017 16:40:10 +0100
Subject: [PATCH] Introduce LinearSolver interface class

A LinearSolver is a solver for a linear system of equations.
In particular, LinearSolver objects can be given a matrix
and a right-hand-side vector.
---
 dune/solvers/solvers/CMakeLists.txt  |  1 +
 dune/solvers/solvers/linearsolver.hh | 37 ++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 dune/solvers/solvers/linearsolver.hh

diff --git a/dune/solvers/solvers/CMakeLists.txt b/dune/solvers/solvers/CMakeLists.txt
index 652164b..8946f69 100644
--- a/dune/solvers/solvers/CMakeLists.txt
+++ b/dune/solvers/solvers/CMakeLists.txt
@@ -3,6 +3,7 @@ install(FILES
     iterativesolver.cc
     iterativesolver.hh
     linearipopt.hh
+    linearsolver.hh
     loopsolver.cc
     loopsolver.hh
     quadraticipopt.hh
diff --git a/dune/solvers/solvers/linearsolver.hh b/dune/solvers/solvers/linearsolver.hh
new file mode 100644
index 0000000..299b559
--- /dev/null
+++ b/dune/solvers/solvers/linearsolver.hh
@@ -0,0 +1,37 @@
+// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=8 sw=4 sts=4:
+#ifndef DUNE_SOLVERS_SOLVERS_LINEARSOLVER_HH
+#define DUNE_SOLVERS_SOLVERS_LINEARSOLVER_HH
+
+#include <dune/solvers/solvers/solver.hh>
+
+namespace Dune {
+
+namespace Solvers {
+
+/** \brief Abstract base class for solvers that solve linear problems
+ *
+ * Linear problems are problems that involve a fixed matrix and a right-hand-side
+ * vector.  Additional constraints are allowed.
+ */
+template <class Matrix, class Vector>
+class LinearSolver : public Solver
+{
+public:
+  /** \brief Constructor taking all relevant data */
+  LinearSolver(VerbosityMode verbosity)
+  : Solver(verbosity)
+  {}
+
+  /** \brief Set up the linear problem to solve */
+  virtual void setProblem(const Matrix& matrix,
+                          Vector& x,
+                          const Vector& rhs) = 0;
+
+};
+
+}   // namespace Solvers
+
+}   // namespace Dune
+
+#endif
-- 
GitLab