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