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

Kynema API: /home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_numeric_cusolversp.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
dss_numeric_cusolversp.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cusolverSp.h>
4#include <cusolverSp_LOWLEVEL_PREVIEW.h>
5
6#include "dss_algorithm.hpp"
8
9namespace kynema::dss {
10template <typename CrsMatrixType>
11struct NumericFunction<Handle<Algorithm::CUSOLVER_SP>, CrsMatrixType> {
12 static void numeric(Handle<Algorithm::CUSOLVER_SP>& dss_handle, CrsMatrixType& A) {
13 const auto num_rows = A.numRows();
14 const auto num_cols = A.numCols();
15 const auto num_non_zero = A.nnz();
16
17 auto* values = A.values.data();
18 auto* row_ptrs = A.graph.row_map.data();
19 auto* col_inds = A.graph.entries.data();
20
21 auto& handle = dss_handle.get_handle();
22 auto& description = dss_handle.get_description();
23 auto& info = dss_handle.get_info();
24 auto& buffer = dss_handle.get_buffer();
25
26 auto size_internal = 0UL;
27 auto size_chol = 0UL;
28
29 const auto tol = 1.e-14;
30 auto singularity = 0;
31
32 cusolverSpDcsrqrBufferInfo(
33 handle, num_rows, num_cols, num_non_zero, description, values, row_ptrs, col_inds, info,
34 &size_internal, &size_chol
35 );
36 if (size_chol > buffer.extent(0)) {
37 Kokkos::realloc(buffer, size_chol);
38 }
39 cusolverSpDcsrqrSetup(
40 handle, num_rows, num_cols, num_non_zero, description, values, row_ptrs, col_inds, 0.,
41 info
42 );
43 cusolverSpDcsrqrFactor(
44 handle, num_rows, num_cols, num_non_zero, NULL, NULL, info, buffer.data()
45 );
46 cusolverSpDcsrqrZeroPivot(handle, info, tol, &singularity);
47 }
48};
49
50} // namespace kynema::dss
Definition dss_handle.hpp:10
Definition dss_algorithm.hpp:4
Algorithm
Definition dss_algorithm.hpp:6
static void numeric(Handle< Algorithm::CUSOLVER_SP > &dss_handle, CrsMatrixType &A)
Definition dss_numeric_cusolversp.hpp:12
Definition dss_numeric.hpp:8