/home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_handle_superlu.hpp Source File

Kynema API: /home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_handle_superlu.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
dss_handle_superlu.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <vector>
5
6#include "dss_algorithm.hpp"
7#include "slu_ddefs.h"
8
9namespace kynema::dss {
10template <>
12 struct superluDssHandleType {
13 superlu_options_t options{};
14 SuperLUStat_t stat{};
15 SuperMatrix L{};
16 SuperMatrix U{};
17 GlobalLU_t Glu{};
18 std::vector<int> perm_r;
19 std::vector<int> perm_c;
20 std::vector<int> etree;
21
22 superluDssHandleType() {
23 set_default_options(&options);
24 StatInit(&stat);
25 }
26
27 superluDssHandleType(superluDssHandleType&) = delete;
28 void operator=(superluDssHandleType&) = delete;
29 superluDssHandleType(superluDssHandleType&&) = delete;
30 void operator=(superluDssHandleType&&) = delete;
31
32 ~superluDssHandleType() { StatFree(&stat); }
33 };
34 std::shared_ptr<superluDssHandleType> superlu_dss_handle;
35
36public:
37 Handle() : superlu_dss_handle(std::make_shared<superluDssHandleType>()) {}
38
39 superlu_options_t& get_options() { return superlu_dss_handle->options; }
40
41 SuperLUStat_t& get_stat() { return superlu_dss_handle->stat; }
42
43 SuperMatrix& get_L() { return superlu_dss_handle->L; }
44
45 SuperMatrix& get_U() { return superlu_dss_handle->U; }
46
47 GlobalLU_t& get_Glu() { return superlu_dss_handle->Glu; }
48
49 std::vector<int>& get_perm_r() { return superlu_dss_handle->perm_r; }
50
51 std::vector<int>& get_perm_c() { return superlu_dss_handle->perm_c; }
52 std::vector<int>& get_etree() { return superlu_dss_handle->etree; }
53};
54
55} // namespace kynema::dss
std::vector< int > & get_perm_c()
Definition dss_handle_superlu.hpp:51
SuperLUStat_t & get_stat()
Definition dss_handle_superlu.hpp:41
GlobalLU_t & get_Glu()
Definition dss_handle_superlu.hpp:47
std::vector< int > & get_perm_r()
Definition dss_handle_superlu.hpp:49
Handle()
Definition dss_handle_superlu.hpp:37
std::vector< int > & get_etree()
Definition dss_handle_superlu.hpp:52
superlu_options_t & get_options()
Definition dss_handle_superlu.hpp:39
SuperMatrix & get_U()
Definition dss_handle_superlu.hpp:45
SuperMatrix & get_L()
Definition dss_handle_superlu.hpp:43
Definition dss_handle.hpp:10
Definition dss_algorithm.hpp:4
Algorithm
Definition dss_algorithm.hpp:6