opm-simulators
Toggle main menu visibility
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
simulators
linalg
gpuistl
detail
preconditionerKernels
ILU0Kernels.hpp
Generated by
1.17.0