From 352029bf226229816ab11165febd15046828a5f2 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Mon, 20 Dec 2021 10:44:49 +0100
Subject: [PATCH] [MaL/LA] EigenLisLinearSolver constr. using string
 lis_options.

---
 .../LinAlg/EigenLis/EigenLisLinearSolver.cpp  |  6 ++++++
 .../LinAlg/EigenLis/EigenLisLinearSolver.h    | 20 +++++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
index b671f04fe07..6fa9e83fc53 100644
--- a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
+++ b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.cpp
@@ -29,6 +29,12 @@ EigenLisLinearSolver::EigenLisLinearSolver(
 {
 }
 
+EigenLisLinearSolver::EigenLisLinearSolver(std::string const& /*solver_name*/,
+                                           std::string const& lis_options)
+    : lis_option_(nullptr), lis_options_(lis_options)
+{
+}
+
 bool EigenLisLinearSolver::solve(EigenMatrix& A_, EigenVector& b_,
                                  EigenVector& x_)
 {
diff --git a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
index a29668dede7..cb7daf450af 100644
--- a/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
+++ b/MathLib/LinAlg/EigenLis/EigenLisLinearSolver.h
@@ -10,10 +10,10 @@
 
 #pragma once
 
-#include <vector>
-
 #include <lis.h>
 
+#include <vector>
+
 #include "BaseLib/ConfigTree.h"
 #include "MathLib/LinAlg/Lis/LisOption.h"
 
@@ -40,15 +40,31 @@ public:
     EigenLisLinearSolver(const std::string solver_name,
                          BaseLib::ConfigTree const*const option);
 
+    /**
+     * Constructor
+     * @param solver_name A name used as a prefix for command line options
+     *                    if there are such options available.
+     * @param lis_options string containing the options for LIS library; options
+     * will be applied in the solve method.
+     */
+    EigenLisLinearSolver(std::string const& solver_name,
+                         std::string const& lis_options);
     /**
      * copy linear solvers options
+     * @param lis_options string containing the options for LIS library; options
+     * will be applied in the solve method.
      */
     void setOption(const LisOption& option) { lis_option_ = option; }
+    void setOption(std::string const& lis_options)
+    {
+        lis_options_ = lis_options;
+    }
 
     bool solve(EigenMatrix &A, EigenVector& b, EigenVector &x);
 
 private:
     LisOption lis_option_;
+    std::string lis_options_;
 };
 
 } // MathLib
-- 
GitLab