PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
Pardiso_LUSolver.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __Pardiso_LUSolver_H
13#define __Pardiso_LUSolver_H
14
15#include "Eigen/Eigen"
16#include "Gedim_Macro.hpp"
17#include "ILinearSolver.hpp"
18
19#if ENABLE_MKL
20#include <Eigen/PardisoSupport>
21#endif
22
23namespace Gedim
24{
26template <typename Eigen_ArrayType = Eigen::VectorXd, typename Eigen_SparseArrayType = Eigen::SparseMatrix<double>>
28{
29 private:
30#if ENABLE_MKL
31 Eigen::PardisoLU<Eigen_SparseArrayType> linearSolver;
32#endif
33 const IArray *_rightHandSide;
34 IArray *_solution;
35
36 public:
39
40 void Initialize(const ISparseArray &matrix,
41 const IArray &rightHandSide,
42 IArray &solution,
44
46
48
50};
51} // namespace Gedim
52
53#endif // __Pardiso_LUSolver_H
Eigen column vector.
Definition Eigen_Array.hpp:23
Interface used for column double Array.
Definition IArray.hpp:23
Interface used for algebra linear solvers.
Definition ILinearSolver.hpp:22
Interface used for sparse Array of double.
Definition ISparseArray.hpp:25
Pardiso LU Linear solver.
Definition Pardiso_LUSolver.hpp:28
Pardiso_LUSolver()
Definition Pardiso_LUSolver.cpp:27
void Initialize(const ISparseArray &matrix, const IArray &rightHandSide, IArray &solution, const ILinearSolver::Configuration &config=Configuration())
Initialize the linear solver Ax = b.
Definition Pardiso_LUSolver.cpp:40
~Pardiso_LUSolver()
Definition Pardiso_LUSolver.cpp:33
ILinearSolver::SolutionInfo Solve() const
Compute the solution.
Definition Pardiso_LUSolver.cpp:52
Definition Eigen_Array.cpp:22
Definition ILinearSolver.hpp:25
Definition ILinearSolver.hpp:31