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
namespace
Opm::gpuistl::detail::ILU0
24
{
25
40
template
<
class
T,
int
blocksize>
41
void
solveUpperLevelSet(T*
reorderedMat
,
42
int
* rowIndices,
43
int
* colIndices,
44
int
*
indexConversion
,
45
int
startIdx
,
46
int
rowsInLevelSet
,
47
T*
v
,
48
int
threadBlockSize
);
49
65
template
<
class
T,
int
blocksize>
66
void
solveLowerLevelSet(T*
reorderedMat
,
67
int
* rowIndices,
68
int
* colIndices,
69
int
*
indexConversion
,
70
int
startIdx
,
71
int
rowsInLevelSet
,
72
const
T*
d
,
73
T*
v
,
74
int
threadBlockSize
);
75
92
template
<
int
blocksize,
class
LinearSolverScalar,
class
MatrixScalar>
93
void
solveUpperLevelSetSplit(
MatrixScalar
*
reorderedMat
,
94
int
* rowIndices,
95
int
* colIndices,
96
int
*
indexConversion
,
97
int
startIdx
,
98
int
rowsInLevelSet
,
99
const
MatrixScalar
*
dInv
,
100
LinearSolverScalar*
v
,
101
int
threadBlockSize
);
102
120
template
<
int
blocksize,
class
LinearSolverScalar,
class
MatrixScalar>
121
void
solveLowerLevelSetSplit(
MatrixScalar
*
reorderedLowerMat
,
122
int
* rowIndices,
123
int
* colIndices,
124
int
*
indexConversion
,
125
int
startIdx
,
126
int
rowsInLevelSet
,
127
const
LinearSolverScalar*
d
,
128
LinearSolverScalar*
v
,
129
int
threadBlockSize
);
130
147
template
<
class
T,
int
blocksize>
148
void
LUFactorization(T*
reorderedMat
,
149
int
* rowIndices,
150
int
*
columnIndices
,
151
int
*
naturalToReordered
,
152
int
*
reorderedToNatual
,
153
size_t
rowsInLevelSet
,
154
int
startIdx
,
155
int
threadBlockSize
);
156
179
template
<
int
blocksize,
class
InputScalar,
class
OutputScalar,
bool
copyResultToOtherMatrix>
180
void
LUFactorizationSplit(
InputScalar
*
srcReorderedLowerMat
,
181
int
*
lowerRowIndices
,
182
int
*
lowerColIndices
,
183
InputScalar
*
srcReorderedUpperMat
,
184
int
*
upperRowIndices
,
185
int
*
upperColIndices
,
186
InputScalar
*
srcDiagonal
,
187
OutputScalar
*
dstReorderedLowerMat
,
188
OutputScalar
*
dstReorderedUpperMat
,
189
OutputScalar
*
dstDiagonal
,
190
int
*
reorderedToNatural
,
191
int
*
naturalToReordered
,
192
int
startIdx
,
193
int
rowsInLevelSet
,
194
int
threadBlockSize
);
195
196
}
// namespace Opm::gpuistl::detail::ILU0
197
#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