My Project
Loading...
Searching...
No Matches
ILU0Kernels.hpp
1
/*
2
Copyright 2024 SINTEF AS
3
4
This file is part of the Open Porous Media project (OPM).
5
6
OPM is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
OPM is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with OPM. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
#ifndef OPM_ILU0_KERNELS_HPP
20
#define OPM_ILU0_KERNELS_HPP
21
#include <cstddef>
22
#include <vector>
23
#include <opm/simulators/linalg/gpuistl/detail/kernel_enums.hpp>
24
namespace
Opm::gpuistl::detail::ILU0
25
{
26
41
template
<
class
T,
int
blocksize>
42
void
solveUpperLevelSet(T*
reorderedMat
,
43
int
* rowIndices,
44
int
* colIndices,
45
int
*
indexConversion
,
46
int
startIdx
,
47
int
rowsInLevelSet
,
48
T*
v
,
49
int
threadBlockSize
,
50
cudaStream_t
stream);
51
67
template
<
class
T,
int
blocksize>
68
void
solveLowerLevelSet(T*
reorderedMat
,
69
int
* rowIndices,
70
int
* colIndices,
71
int
*
indexConversion
,
72
int
startIdx
,
73
int
rowsInLevelSet
,
74
const
T*
d
,
75
T*
v
,
76
int
threadBlockSize
,
77
cudaStream_t
stream);
78
95
template
<
int
blocksize,
class
LinearSolverScalar,
class
MatrixScalar,
class
DiagonalScalar>
96
void
solveUpperLevelSetSplit(
MatrixScalar
*
reorderedMat
,
97
int
* rowIndices,
98
int
* colIndices,
99
int
*
indexConversion
,
100
int
startIdx
,
101
int
rowsInLevelSet
,
102
const
DiagonalScalar
*
dInv
,
103
LinearSolverScalar*
v
,
104
int
threadBlockSize
,
105
cudaStream_t
stream);
106
124
template
<
int
blocksize,
class
LinearSolverScalar,
class
MatrixScalar>
125
void
solveLowerLevelSetSplit(
MatrixScalar
*
reorderedLowerMat
,
126
int
* rowIndices,
127
int
* colIndices,
128
int
*
indexConversion
,
129
int
startIdx
,
130
int
rowsInLevelSet
,
131
const
LinearSolverScalar*
d
,
132
LinearSolverScalar*
v
,
133
int
threadBlockSize
,
134
cudaStream_t
stream);
135
152
template
<
class
T,
int
blocksize>
153
void
LUFactorization(T*
reorderedMat
,
154
int
* rowIndices,
155
int
*
columnIndices
,
156
int
*
naturalToReordered
,
157
int
*
reorderedToNatual
,
158
size_t
rowsInLevelSet
,
159
int
startIdx
,
160
int
threadBlockSize
);
161
184
template
<
int
blocksize,
class
InputScalar,
class
OutputScalar, MatrixStorageMPScheme mixedPrecisionScheme>
185
void
LUFactorizationSplit(
InputScalar
*
srcReorderedLowerMat
,
186
int
*
lowerRowIndices
,
187
int
*
lowerColIndices
,
188
InputScalar
*
srcReorderedUpperMat
,
189
int
*
upperRowIndices
,
190
int
*
upperColIndices
,
191
InputScalar
*
srcDiagonal
,
192
OutputScalar
*
dstReorderedLowerMat
,
193
OutputScalar
*
dstReorderedUpperMat
,
194
OutputScalar
*
dstDiagonal
,
195
int
*
reorderedToNatural
,
196
int
*
naturalToReordered
,
197
int
startIdx
,
198
int
rowsInLevelSet
,
199
int
threadBlockSize
);
200
201
}
// namespace Opm::gpuistl::detail::ILU0
202
#endif
Opm::getPropValue
constexpr auto getPropValue()
get the value data member of a property
Definition
propertysystem.hh:242
opm
simulators
linalg
gpuistl
detail
preconditionerKernels
ILU0Kernels.hpp
Generated by
1.9.8