KratosLinearSolversApplication 10.4.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- KratosMultiphysics/.libs/KratosLinearSolversApplication.cpython-314-darwin.so +0 -0
- KratosMultiphysics/.libs/libKratosLinearSolversCore.dylib +0 -0
- KratosMultiphysics/LinearSolversApplication/__init__.py +16 -0
- KratosMultiphysics/LinearSolversApplication/__init__.pyi +500 -0
- KratosMultiphysics/LinearSolversApplication/dense_linear_solver_factory.py +19 -0
- kratoslinearsolversapplication-10.4.4.dist-info/METADATA +258 -0
- kratoslinearsolversapplication-10.4.4.dist-info/RECORD +12 -0
- kratoslinearsolversapplication-10.4.4.dist-info/WHEEL +6 -0
- kratoslinearsolversapplication.dylibs/libKratosCore.dylib +4 -0
- kratoslinearsolversapplication.dylibs/libgcc_s.1.1.dylib +0 -0
- kratoslinearsolversapplication.dylibs/libgomp.1.dylib +0 -0
- kratoslinearsolversapplication.dylibs/libstdc++.6.dylib +0 -0
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# KRATOS _ _ ____ _
|
|
2
|
+
# | | (_)_ __ ___ __ _ _ __/ ___| ___ | |_ _____ _ __ ___
|
|
3
|
+
# | | | | '_ \ / _ \/ _` | '__\___ \ / _ \| \ \ / / _ \ '__/ __|
|
|
4
|
+
# | |___| | | | | __/ (_| | | ___) | (_) | |\ V / __/ | \__ |
|
|
5
|
+
# |_____|_|_| |_|\___|\__,_|_| |____/ \___/|_| \_/ \___|_| |___/ Application
|
|
6
|
+
#
|
|
7
|
+
# Author: Thomas Oberbichler
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
# Application dependent names and paths
|
|
11
|
+
from KratosMultiphysics import _ImportApplication
|
|
12
|
+
from KratosLinearSolversApplication import *
|
|
13
|
+
application = KratosLinearSolversApplication()
|
|
14
|
+
application_name = "LinearSolversApplication"
|
|
15
|
+
|
|
16
|
+
_ImportApplication(application, application_name)
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
import KratosMultiphysics as Kratos
|
|
2
|
+
import KratosMultiphysics as Kratos
|
|
3
|
+
import typing
|
|
4
|
+
from typing import overload
|
|
5
|
+
|
|
6
|
+
class ComplexDenseColPivHouseholderQRSolver(ComplexDirectSolver):
|
|
7
|
+
@overload
|
|
8
|
+
def __init__(self) -> None:
|
|
9
|
+
"""__init__(*args, **kwargs)
|
|
10
|
+
Overloaded function.
|
|
11
|
+
|
|
12
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDenseColPivHouseholderQRSolver) -> None
|
|
13
|
+
|
|
14
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDenseColPivHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
15
|
+
"""
|
|
16
|
+
@overload
|
|
17
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
18
|
+
"""__init__(*args, **kwargs)
|
|
19
|
+
Overloaded function.
|
|
20
|
+
|
|
21
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDenseColPivHouseholderQRSolver) -> None
|
|
22
|
+
|
|
23
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDenseColPivHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
class ComplexDenseHouseholderQRSolver(ComplexDirectSolver):
|
|
27
|
+
@overload
|
|
28
|
+
def __init__(self) -> None:
|
|
29
|
+
"""__init__(*args, **kwargs)
|
|
30
|
+
Overloaded function.
|
|
31
|
+
|
|
32
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDenseHouseholderQRSolver) -> None
|
|
33
|
+
|
|
34
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDenseHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
35
|
+
"""
|
|
36
|
+
@overload
|
|
37
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
38
|
+
"""__init__(*args, **kwargs)
|
|
39
|
+
Overloaded function.
|
|
40
|
+
|
|
41
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDenseHouseholderQRSolver) -> None
|
|
42
|
+
|
|
43
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDenseHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
class ComplexDenseLinearSolver:
|
|
47
|
+
def __init__(self) -> None:
|
|
48
|
+
"""__init__(self: KratosLinearSolversApplication.ComplexDenseLinearSolver) -> None"""
|
|
49
|
+
def Clear(self) -> None:
|
|
50
|
+
"""Clear(self: KratosLinearSolversApplication.ComplexDenseLinearSolver) -> None"""
|
|
51
|
+
def Initialize(self, arg0: Kratos.ComplexMatrix, arg1: Kratos.ComplexVector, arg2: Kratos.ComplexVector) -> None:
|
|
52
|
+
"""Initialize(self: KratosLinearSolversApplication.ComplexDenseLinearSolver, arg0: Kratos.ComplexMatrix, arg1: Kratos.ComplexVector, arg2: Kratos.ComplexVector) -> None"""
|
|
53
|
+
def Solve(self, arg0: Kratos.ComplexMatrix, arg1: Kratos.ComplexVector, arg2: Kratos.ComplexVector) -> bool:
|
|
54
|
+
"""Solve(self: KratosLinearSolversApplication.ComplexDenseLinearSolver, arg0: Kratos.ComplexMatrix, arg1: Kratos.ComplexVector, arg2: Kratos.ComplexVector) -> bool"""
|
|
55
|
+
|
|
56
|
+
class ComplexDenseLinearSolverFactory:
|
|
57
|
+
def __init__(self) -> None:
|
|
58
|
+
"""__init__(self: KratosLinearSolversApplication.ComplexDenseLinearSolverFactory) -> None"""
|
|
59
|
+
def Create(self, arg0: Kratos.Parameters) -> ComplexDenseLinearSolver:
|
|
60
|
+
"""Create(self: KratosLinearSolversApplication.ComplexDenseLinearSolverFactory, arg0: Kratos.Parameters) -> KratosLinearSolversApplication.ComplexDenseLinearSolver"""
|
|
61
|
+
def Has(self, arg0: str) -> bool:
|
|
62
|
+
"""Has(self: KratosLinearSolversApplication.ComplexDenseLinearSolverFactory, arg0: str) -> bool"""
|
|
63
|
+
|
|
64
|
+
class ComplexDensePartialPivLUSolver(ComplexDirectSolver):
|
|
65
|
+
@overload
|
|
66
|
+
def __init__(self) -> None:
|
|
67
|
+
"""__init__(*args, **kwargs)
|
|
68
|
+
Overloaded function.
|
|
69
|
+
|
|
70
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDensePartialPivLUSolver) -> None
|
|
71
|
+
|
|
72
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDensePartialPivLUSolver, arg0: Kratos.Parameters) -> None
|
|
73
|
+
"""
|
|
74
|
+
@overload
|
|
75
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
76
|
+
"""__init__(*args, **kwargs)
|
|
77
|
+
Overloaded function.
|
|
78
|
+
|
|
79
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDensePartialPivLUSolver) -> None
|
|
80
|
+
|
|
81
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDensePartialPivLUSolver, arg0: Kratos.Parameters) -> None
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
class ComplexDirectSolver(ComplexDenseLinearSolver):
|
|
85
|
+
@overload
|
|
86
|
+
def __init__(self) -> None:
|
|
87
|
+
"""__init__(*args, **kwargs)
|
|
88
|
+
Overloaded function.
|
|
89
|
+
|
|
90
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDirectSolver) -> None
|
|
91
|
+
|
|
92
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDirectSolver, arg0: Kratos.Parameters) -> None
|
|
93
|
+
"""
|
|
94
|
+
@overload
|
|
95
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
96
|
+
"""__init__(*args, **kwargs)
|
|
97
|
+
Overloaded function.
|
|
98
|
+
|
|
99
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexDirectSolver) -> None
|
|
100
|
+
|
|
101
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexDirectSolver, arg0: Kratos.Parameters) -> None
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
class ComplexSparseLUSolver(Kratos.ComplexDirectSolver):
|
|
105
|
+
@overload
|
|
106
|
+
def __init__(self) -> None:
|
|
107
|
+
"""__init__(*args, **kwargs)
|
|
108
|
+
Overloaded function.
|
|
109
|
+
|
|
110
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexSparseLUSolver) -> None
|
|
111
|
+
|
|
112
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexSparseLUSolver, arg0: Kratos.Parameters) -> None
|
|
113
|
+
"""
|
|
114
|
+
@overload
|
|
115
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
116
|
+
"""__init__(*args, **kwargs)
|
|
117
|
+
Overloaded function.
|
|
118
|
+
|
|
119
|
+
1. __init__(self: KratosLinearSolversApplication.ComplexSparseLUSolver) -> None
|
|
120
|
+
|
|
121
|
+
2. __init__(self: KratosLinearSolversApplication.ComplexSparseLUSolver, arg0: Kratos.Parameters) -> None
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
class DenseColPivHouseholderQRSolver(DirectSolver):
|
|
125
|
+
@overload
|
|
126
|
+
def __init__(self) -> None:
|
|
127
|
+
"""__init__(*args, **kwargs)
|
|
128
|
+
Overloaded function.
|
|
129
|
+
|
|
130
|
+
1. __init__(self: KratosLinearSolversApplication.DenseColPivHouseholderQRSolver) -> None
|
|
131
|
+
|
|
132
|
+
2. __init__(self: KratosLinearSolversApplication.DenseColPivHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
133
|
+
"""
|
|
134
|
+
@overload
|
|
135
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
136
|
+
"""__init__(*args, **kwargs)
|
|
137
|
+
Overloaded function.
|
|
138
|
+
|
|
139
|
+
1. __init__(self: KratosLinearSolversApplication.DenseColPivHouseholderQRSolver) -> None
|
|
140
|
+
|
|
141
|
+
2. __init__(self: KratosLinearSolversApplication.DenseColPivHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
class DenseEigenvalueSolver(DenseLinearSolver):
|
|
145
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
146
|
+
"""__init__(self: KratosLinearSolversApplication.DenseEigenvalueSolver, arg0: Kratos.Parameters) -> None"""
|
|
147
|
+
def Solve(self, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Vector, arg3: Kratos.Matrix) -> None:
|
|
148
|
+
"""Solve(self: KratosLinearSolversApplication.DenseEigenvalueSolver, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Vector, arg3: Kratos.Matrix) -> None"""
|
|
149
|
+
|
|
150
|
+
class DenseHouseholderQRSolver(DirectSolver):
|
|
151
|
+
@overload
|
|
152
|
+
def __init__(self) -> None:
|
|
153
|
+
"""__init__(*args, **kwargs)
|
|
154
|
+
Overloaded function.
|
|
155
|
+
|
|
156
|
+
1. __init__(self: KratosLinearSolversApplication.DenseHouseholderQRSolver) -> None
|
|
157
|
+
|
|
158
|
+
2. __init__(self: KratosLinearSolversApplication.DenseHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
159
|
+
"""
|
|
160
|
+
@overload
|
|
161
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
162
|
+
"""__init__(*args, **kwargs)
|
|
163
|
+
Overloaded function.
|
|
164
|
+
|
|
165
|
+
1. __init__(self: KratosLinearSolversApplication.DenseHouseholderQRSolver) -> None
|
|
166
|
+
|
|
167
|
+
2. __init__(self: KratosLinearSolversApplication.DenseHouseholderQRSolver, arg0: Kratos.Parameters) -> None
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
class DenseLLTSolver(DirectSolver):
|
|
171
|
+
@overload
|
|
172
|
+
def __init__(self) -> None:
|
|
173
|
+
"""__init__(*args, **kwargs)
|
|
174
|
+
Overloaded function.
|
|
175
|
+
|
|
176
|
+
1. __init__(self: KratosLinearSolversApplication.DenseLLTSolver) -> None
|
|
177
|
+
|
|
178
|
+
2. __init__(self: KratosLinearSolversApplication.DenseLLTSolver, arg0: Kratos.Parameters) -> None
|
|
179
|
+
"""
|
|
180
|
+
@overload
|
|
181
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
182
|
+
"""__init__(*args, **kwargs)
|
|
183
|
+
Overloaded function.
|
|
184
|
+
|
|
185
|
+
1. __init__(self: KratosLinearSolversApplication.DenseLLTSolver) -> None
|
|
186
|
+
|
|
187
|
+
2. __init__(self: KratosLinearSolversApplication.DenseLLTSolver, arg0: Kratos.Parameters) -> None
|
|
188
|
+
"""
|
|
189
|
+
|
|
190
|
+
class DenseLinearSolver:
|
|
191
|
+
def __init__(self) -> None:
|
|
192
|
+
"""__init__(self: KratosLinearSolversApplication.DenseLinearSolver) -> None"""
|
|
193
|
+
def Clear(self) -> None:
|
|
194
|
+
"""Clear(self: KratosLinearSolversApplication.DenseLinearSolver) -> None"""
|
|
195
|
+
def Initialize(self, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Vector) -> None:
|
|
196
|
+
"""Initialize(self: KratosLinearSolversApplication.DenseLinearSolver, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Vector) -> None"""
|
|
197
|
+
@overload
|
|
198
|
+
def Solve(self, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Vector) -> bool:
|
|
199
|
+
"""Solve(*args, **kwargs)
|
|
200
|
+
Overloaded function.
|
|
201
|
+
|
|
202
|
+
1. Solve(self: KratosLinearSolversApplication.DenseLinearSolver, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Vector) -> bool
|
|
203
|
+
|
|
204
|
+
2. Solve(self: KratosLinearSolversApplication.DenseLinearSolver, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> bool
|
|
205
|
+
"""
|
|
206
|
+
@overload
|
|
207
|
+
def Solve(self, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> bool:
|
|
208
|
+
"""Solve(*args, **kwargs)
|
|
209
|
+
Overloaded function.
|
|
210
|
+
|
|
211
|
+
1. Solve(self: KratosLinearSolversApplication.DenseLinearSolver, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Vector) -> bool
|
|
212
|
+
|
|
213
|
+
2. Solve(self: KratosLinearSolversApplication.DenseLinearSolver, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> bool
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
class DenseLinearSolverFactory:
|
|
217
|
+
def __init__(self) -> None:
|
|
218
|
+
"""__init__(self: KratosLinearSolversApplication.DenseLinearSolverFactory) -> None"""
|
|
219
|
+
def Create(self, arg0: Kratos.Parameters) -> DenseLinearSolver:
|
|
220
|
+
"""Create(self: KratosLinearSolversApplication.DenseLinearSolverFactory, arg0: Kratos.Parameters) -> KratosLinearSolversApplication.DenseLinearSolver"""
|
|
221
|
+
def Has(self, arg0: str) -> bool:
|
|
222
|
+
"""Has(self: KratosLinearSolversApplication.DenseLinearSolverFactory, arg0: str) -> bool"""
|
|
223
|
+
|
|
224
|
+
class DensePartialPivLUSolver(DirectSolver):
|
|
225
|
+
@overload
|
|
226
|
+
def __init__(self) -> None:
|
|
227
|
+
"""__init__(*args, **kwargs)
|
|
228
|
+
Overloaded function.
|
|
229
|
+
|
|
230
|
+
1. __init__(self: KratosLinearSolversApplication.DensePartialPivLUSolver) -> None
|
|
231
|
+
|
|
232
|
+
2. __init__(self: KratosLinearSolversApplication.DensePartialPivLUSolver, arg0: Kratos.Parameters) -> None
|
|
233
|
+
"""
|
|
234
|
+
@overload
|
|
235
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
236
|
+
"""__init__(*args, **kwargs)
|
|
237
|
+
Overloaded function.
|
|
238
|
+
|
|
239
|
+
1. __init__(self: KratosLinearSolversApplication.DensePartialPivLUSolver) -> None
|
|
240
|
+
|
|
241
|
+
2. __init__(self: KratosLinearSolversApplication.DensePartialPivLUSolver, arg0: Kratos.Parameters) -> None
|
|
242
|
+
"""
|
|
243
|
+
|
|
244
|
+
class DirectSolver(DenseLinearSolver):
|
|
245
|
+
@overload
|
|
246
|
+
def __init__(self) -> None:
|
|
247
|
+
"""__init__(*args, **kwargs)
|
|
248
|
+
Overloaded function.
|
|
249
|
+
|
|
250
|
+
1. __init__(self: KratosLinearSolversApplication.DirectSolver) -> None
|
|
251
|
+
|
|
252
|
+
2. __init__(self: KratosLinearSolversApplication.DirectSolver, arg0: Kratos.Parameters) -> None
|
|
253
|
+
"""
|
|
254
|
+
@overload
|
|
255
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
256
|
+
"""__init__(*args, **kwargs)
|
|
257
|
+
Overloaded function.
|
|
258
|
+
|
|
259
|
+
1. __init__(self: KratosLinearSolversApplication.DirectSolver) -> None
|
|
260
|
+
|
|
261
|
+
2. __init__(self: KratosLinearSolversApplication.DirectSolver, arg0: Kratos.Parameters) -> None
|
|
262
|
+
"""
|
|
263
|
+
|
|
264
|
+
class EigenDenseBDCSVD(Kratos.DenseSingularValueDecomposition):
|
|
265
|
+
def __init__(self) -> None:
|
|
266
|
+
"""__init__(self: KratosLinearSolversApplication.EigenDenseBDCSVD) -> None"""
|
|
267
|
+
@overload
|
|
268
|
+
def Compute(self, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None:
|
|
269
|
+
"""Compute(*args, **kwargs)
|
|
270
|
+
Overloaded function.
|
|
271
|
+
|
|
272
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None
|
|
273
|
+
|
|
274
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None
|
|
275
|
+
"""
|
|
276
|
+
@overload
|
|
277
|
+
def Compute(self, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None:
|
|
278
|
+
"""Compute(*args, **kwargs)
|
|
279
|
+
Overloaded function.
|
|
280
|
+
|
|
281
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None
|
|
282
|
+
|
|
283
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None
|
|
284
|
+
"""
|
|
285
|
+
def MatrixU(self, arg0: Kratos.Matrix) -> None:
|
|
286
|
+
"""MatrixU(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix) -> None"""
|
|
287
|
+
def MatrixV(self, arg0: Kratos.Matrix) -> None:
|
|
288
|
+
"""MatrixV(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Matrix) -> None"""
|
|
289
|
+
def NonZeroSingularValues(self) -> int:
|
|
290
|
+
"""NonZeroSingularValues(self: KratosLinearSolversApplication.EigenDenseBDCSVD) -> int"""
|
|
291
|
+
def Rank(self) -> int:
|
|
292
|
+
"""Rank(self: KratosLinearSolversApplication.EigenDenseBDCSVD) -> int"""
|
|
293
|
+
def SetThreshold(self, arg0: typing.SupportsFloat) -> None:
|
|
294
|
+
"""SetThreshold(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: typing.SupportsFloat) -> None"""
|
|
295
|
+
def SingularValues(self, arg0: Kratos.Vector) -> None:
|
|
296
|
+
"""SingularValues(self: KratosLinearSolversApplication.EigenDenseBDCSVD, arg0: Kratos.Vector) -> None"""
|
|
297
|
+
|
|
298
|
+
class EigenDenseColumnPivotingHouseholderQRDecomposition(Kratos.DenseQRDecompositionType):
|
|
299
|
+
def __init__(self) -> None:
|
|
300
|
+
"""__init__(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition) -> None"""
|
|
301
|
+
@overload
|
|
302
|
+
def Compute(self, arg0: Kratos.Matrix) -> None:
|
|
303
|
+
"""Compute(*args, **kwargs)
|
|
304
|
+
Overloaded function.
|
|
305
|
+
|
|
306
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None
|
|
307
|
+
|
|
308
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> None
|
|
309
|
+
"""
|
|
310
|
+
@overload
|
|
311
|
+
def Compute(self, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> None:
|
|
312
|
+
"""Compute(*args, **kwargs)
|
|
313
|
+
Overloaded function.
|
|
314
|
+
|
|
315
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None
|
|
316
|
+
|
|
317
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix, arg2: Kratos.Matrix) -> None
|
|
318
|
+
"""
|
|
319
|
+
def MatrixP(self, arg0: Kratos.Matrix) -> None:
|
|
320
|
+
"""MatrixP(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
321
|
+
def MatrixQ(self, arg0: Kratos.Matrix) -> None:
|
|
322
|
+
"""MatrixQ(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
323
|
+
def MatrixR(self, arg0: Kratos.Matrix) -> None:
|
|
324
|
+
"""MatrixR(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
325
|
+
def Rank(self) -> int:
|
|
326
|
+
"""Rank(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition) -> int"""
|
|
327
|
+
@overload
|
|
328
|
+
def Solve(self, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None:
|
|
329
|
+
"""Solve(*args, **kwargs)
|
|
330
|
+
Overloaded function.
|
|
331
|
+
|
|
332
|
+
1. Solve(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None
|
|
333
|
+
|
|
334
|
+
2. Solve(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None
|
|
335
|
+
"""
|
|
336
|
+
@overload
|
|
337
|
+
def Solve(self, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None:
|
|
338
|
+
"""Solve(*args, **kwargs)
|
|
339
|
+
Overloaded function.
|
|
340
|
+
|
|
341
|
+
1. Solve(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None
|
|
342
|
+
|
|
343
|
+
2. Solve(self: KratosLinearSolversApplication.EigenDenseColumnPivotingHouseholderQRDecomposition, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None
|
|
344
|
+
"""
|
|
345
|
+
|
|
346
|
+
class EigenDenseHouseholderQRDecomposition(Kratos.DenseQRDecompositionType):
|
|
347
|
+
def __init__(self) -> None:
|
|
348
|
+
"""__init__(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition) -> None"""
|
|
349
|
+
def Compute(self, arg0: Kratos.Matrix) -> None:
|
|
350
|
+
"""Compute(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
351
|
+
def MatrixQ(self, arg0: Kratos.Matrix) -> None:
|
|
352
|
+
"""MatrixQ(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
353
|
+
def MatrixR(self, arg0: Kratos.Matrix) -> None:
|
|
354
|
+
"""MatrixR(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Matrix) -> None"""
|
|
355
|
+
@overload
|
|
356
|
+
def Solve(self, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None:
|
|
357
|
+
"""Solve(*args, **kwargs)
|
|
358
|
+
Overloaded function.
|
|
359
|
+
|
|
360
|
+
1. Solve(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None
|
|
361
|
+
|
|
362
|
+
2. Solve(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None
|
|
363
|
+
"""
|
|
364
|
+
@overload
|
|
365
|
+
def Solve(self, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None:
|
|
366
|
+
"""Solve(*args, **kwargs)
|
|
367
|
+
Overloaded function.
|
|
368
|
+
|
|
369
|
+
1. Solve(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Matrix, arg1: Kratos.Matrix) -> None
|
|
370
|
+
|
|
371
|
+
2. Solve(self: KratosLinearSolversApplication.EigenDenseHouseholderQRDecomposition, arg0: Kratos.Vector, arg1: Kratos.Vector) -> None
|
|
372
|
+
"""
|
|
373
|
+
|
|
374
|
+
class EigenDenseJacobiSVD(Kratos.DenseSingularValueDecomposition):
|
|
375
|
+
def __init__(self) -> None:
|
|
376
|
+
"""__init__(self: KratosLinearSolversApplication.EigenDenseJacobiSVD) -> None"""
|
|
377
|
+
@overload
|
|
378
|
+
def Compute(self, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None:
|
|
379
|
+
"""Compute(*args, **kwargs)
|
|
380
|
+
Overloaded function.
|
|
381
|
+
|
|
382
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None
|
|
383
|
+
|
|
384
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None
|
|
385
|
+
"""
|
|
386
|
+
@overload
|
|
387
|
+
def Compute(self, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None:
|
|
388
|
+
"""Compute(*args, **kwargs)
|
|
389
|
+
Overloaded function.
|
|
390
|
+
|
|
391
|
+
1. Compute(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix, arg1: Kratos.Parameters) -> None
|
|
392
|
+
|
|
393
|
+
2. Compute(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix, arg1: Kratos.Vector, arg2: Kratos.Matrix, arg3: Kratos.Matrix, arg4: Kratos.Parameters) -> None
|
|
394
|
+
"""
|
|
395
|
+
def MatrixU(self, arg0: Kratos.Matrix) -> None:
|
|
396
|
+
"""MatrixU(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix) -> None"""
|
|
397
|
+
def MatrixV(self, arg0: Kratos.Matrix) -> None:
|
|
398
|
+
"""MatrixV(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Matrix) -> None"""
|
|
399
|
+
def NonZeroSingularValues(self) -> int:
|
|
400
|
+
"""NonZeroSingularValues(self: KratosLinearSolversApplication.EigenDenseJacobiSVD) -> int"""
|
|
401
|
+
def Rank(self) -> int:
|
|
402
|
+
"""Rank(self: KratosLinearSolversApplication.EigenDenseJacobiSVD) -> int"""
|
|
403
|
+
def SetThreshold(self, arg0: typing.SupportsFloat) -> None:
|
|
404
|
+
"""SetThreshold(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: typing.SupportsFloat) -> None"""
|
|
405
|
+
def SingularValues(self, arg0: Kratos.Vector) -> None:
|
|
406
|
+
"""SingularValues(self: KratosLinearSolversApplication.EigenDenseJacobiSVD, arg0: Kratos.Vector) -> None"""
|
|
407
|
+
|
|
408
|
+
class EigensystemSolver(Kratos.LinearSolver):
|
|
409
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
410
|
+
"""__init__(self: KratosLinearSolversApplication.EigensystemSolver, arg0: Kratos.Parameters) -> None"""
|
|
411
|
+
|
|
412
|
+
class FEASTConditionNumberUtility:
|
|
413
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
414
|
+
"""Initialize self. See help(type(self)) for accurate signature."""
|
|
415
|
+
def GetConditionNumber(self) -> float:
|
|
416
|
+
"""GetConditionNumber(self: Kratos.CompressedMatrix) -> float"""
|
|
417
|
+
|
|
418
|
+
class KratosLinearSolversApplication(Kratos.KratosApplication):
|
|
419
|
+
def __init__(self) -> None:
|
|
420
|
+
"""__init__(self: KratosLinearSolversApplication.KratosLinearSolversApplication) -> None"""
|
|
421
|
+
|
|
422
|
+
class SparseCGSolver(Kratos.DirectSolver):
|
|
423
|
+
@overload
|
|
424
|
+
def __init__(self) -> None:
|
|
425
|
+
"""__init__(*args, **kwargs)
|
|
426
|
+
Overloaded function.
|
|
427
|
+
|
|
428
|
+
1. __init__(self: KratosLinearSolversApplication.SparseCGSolver) -> None
|
|
429
|
+
|
|
430
|
+
2. __init__(self: KratosLinearSolversApplication.SparseCGSolver, arg0: Kratos.Parameters) -> None
|
|
431
|
+
"""
|
|
432
|
+
@overload
|
|
433
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
434
|
+
"""__init__(*args, **kwargs)
|
|
435
|
+
Overloaded function.
|
|
436
|
+
|
|
437
|
+
1. __init__(self: KratosLinearSolversApplication.SparseCGSolver) -> None
|
|
438
|
+
|
|
439
|
+
2. __init__(self: KratosLinearSolversApplication.SparseCGSolver, arg0: Kratos.Parameters) -> None
|
|
440
|
+
"""
|
|
441
|
+
|
|
442
|
+
class SparseLUSolver(Kratos.DirectSolver):
|
|
443
|
+
@overload
|
|
444
|
+
def __init__(self) -> None:
|
|
445
|
+
"""__init__(*args, **kwargs)
|
|
446
|
+
Overloaded function.
|
|
447
|
+
|
|
448
|
+
1. __init__(self: KratosLinearSolversApplication.SparseLUSolver) -> None
|
|
449
|
+
|
|
450
|
+
2. __init__(self: KratosLinearSolversApplication.SparseLUSolver, arg0: Kratos.Parameters) -> None
|
|
451
|
+
"""
|
|
452
|
+
@overload
|
|
453
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
454
|
+
"""__init__(*args, **kwargs)
|
|
455
|
+
Overloaded function.
|
|
456
|
+
|
|
457
|
+
1. __init__(self: KratosLinearSolversApplication.SparseLUSolver) -> None
|
|
458
|
+
|
|
459
|
+
2. __init__(self: KratosLinearSolversApplication.SparseLUSolver, arg0: Kratos.Parameters) -> None
|
|
460
|
+
"""
|
|
461
|
+
|
|
462
|
+
class SparseQRSolver(Kratos.DirectSolver):
|
|
463
|
+
@overload
|
|
464
|
+
def __init__(self) -> None:
|
|
465
|
+
"""__init__(*args, **kwargs)
|
|
466
|
+
Overloaded function.
|
|
467
|
+
|
|
468
|
+
1. __init__(self: KratosLinearSolversApplication.SparseQRSolver) -> None
|
|
469
|
+
|
|
470
|
+
2. __init__(self: KratosLinearSolversApplication.SparseQRSolver, arg0: Kratos.Parameters) -> None
|
|
471
|
+
"""
|
|
472
|
+
@overload
|
|
473
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
474
|
+
"""__init__(*args, **kwargs)
|
|
475
|
+
Overloaded function.
|
|
476
|
+
|
|
477
|
+
1. __init__(self: KratosLinearSolversApplication.SparseQRSolver) -> None
|
|
478
|
+
|
|
479
|
+
2. __init__(self: KratosLinearSolversApplication.SparseQRSolver, arg0: Kratos.Parameters) -> None
|
|
480
|
+
"""
|
|
481
|
+
|
|
482
|
+
class SpectraSymGEigsShiftSolver(Kratos.LinearSolver):
|
|
483
|
+
def __init__(self, arg0: Kratos.Parameters) -> None:
|
|
484
|
+
"""__init__(self: KratosLinearSolversApplication.SpectraSymGEigsShiftSolver, arg0: Kratos.Parameters) -> None"""
|
|
485
|
+
|
|
486
|
+
def HasFEAST() -> bool:
|
|
487
|
+
"""HasFEAST() -> bool
|
|
488
|
+
|
|
489
|
+
Return true if Kratos was compiled with FEAST support. False otherwise.
|
|
490
|
+
"""
|
|
491
|
+
def HasMKL() -> bool:
|
|
492
|
+
"""HasMKL() -> bool
|
|
493
|
+
|
|
494
|
+
Return true if Kratos was compiled with MKL support. False otherwise.
|
|
495
|
+
"""
|
|
496
|
+
def HasSuiteSparse() -> bool:
|
|
497
|
+
"""HasSuiteSparse() -> bool
|
|
498
|
+
|
|
499
|
+
Return true if Kratos was compiled with SuiteSparse support. False otherwise.
|
|
500
|
+
"""
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import KratosMultiphysics as KM
|
|
3
|
+
import KratosMultiphysics.LinearSolversApplication as KratosSolvers
|
|
4
|
+
|
|
5
|
+
def ConstructSolver(configuration):
|
|
6
|
+
if not isinstance(configuration, KM.Parameters):
|
|
7
|
+
raise Exception("input is expected to be provided as a Kratos Parameters object")
|
|
8
|
+
|
|
9
|
+
solver_type = configuration["solver_type"].GetString()
|
|
10
|
+
if "Application." in solver_type: # the module in which the solver is implemented was specified
|
|
11
|
+
split_name = solver_type.split(".")
|
|
12
|
+
solver_type = split_name[1]
|
|
13
|
+
|
|
14
|
+
if KratosSolvers.ComplexDenseLinearSolverFactory().Has(solver_type):
|
|
15
|
+
KM.Logger.PrintInfo("Eigen-Linear-Solver-Factory", "Constructing a complex dense linear-solver")
|
|
16
|
+
return KratosSolvers.ComplexDenseLinearSolverFactory().Create(configuration)
|
|
17
|
+
else:
|
|
18
|
+
KM.Logger.PrintInfo("Eigen-Linear-Solver-Factory", "Constructing a dense linear-solver")
|
|
19
|
+
return KratosSolvers.DenseLinearSolverFactory().Create(configuration)
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: KratosLinearSolversApplication
|
|
3
|
+
Version: 10.4.4
|
|
4
|
+
Summary: KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
|
5
|
+
Author-email: Kratos Team <kratos@listas.cimne.upc.edu>
|
|
6
|
+
License: BSD-4-Clause
|
|
7
|
+
Classifier: Programming Language :: C++
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Topic :: Scientific/Engineering
|
|
10
|
+
Requires-Python: >=3.8
|
|
11
|
+
Requires-Dist: kratosmultiphysics==10.4.4
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
@anchor LinearSolversApplicationMainPage
|
|
15
|
+
|
|
16
|
+
# LinearSolversApplication
|
|
17
|
+
|
|
18
|
+
The *LinearSolversApplication* is a thin wrapper for the [Eigen linear algebra library](http://eigen.tuxfamily.org/index.php?title=Main_Page).
|
|
19
|
+
|
|
20
|
+
## Direct sparse solvers
|
|
21
|
+
|
|
22
|
+
The application provides the following direct sparse solvers:
|
|
23
|
+
|
|
24
|
+
| Python class | solver_type | Matrix kind | Domain | Dependencies |
|
|
25
|
+
|--------------------------|------------------------|:-----------:|:--------:|:------------:|
|
|
26
|
+
| SparseLUSolver | `sparse_lu` | Square | Real | None |
|
|
27
|
+
| SparseQRSolver | `sparse_qr` | Rectangular | Real | None |
|
|
28
|
+
| SparseCGSolver | `sparse_cg` | SPD* | Real | None |
|
|
29
|
+
| PardisoLLTSolver | `pardiso_llt` | SPD* | Real | Intel® MKL |
|
|
30
|
+
| PardisoLDLTSolver | `pardiso_ldlt` | SPD* | Real | Intel® MKL |
|
|
31
|
+
| PardisoLUSolver | `pardiso_lu` | Square | Real | Intel® MKL |
|
|
32
|
+
| ComplexSparseLUSolver | `sparse_lu_complex` | Square | Complex | None |
|
|
33
|
+
| ComplexPardisoLLTSolver | `pardiso_llt_complex` | SPD* | Complex | Intel® MKL |
|
|
34
|
+
| ComplexPardisoLDLTSolver | `pardiso_ldlt_complex` | SPD* | Complex | Intel® MKL |
|
|
35
|
+
| ComplexPardisoLUSolver | `pardiso_lu_complex` | Square | Complex | Intel® MKL |
|
|
36
|
+
| CholmodSolver | `cholmod` | SPD* | Real | SuiteSparse |
|
|
37
|
+
| UmfPackSolver | `umfpack` | Square | Real | SuiteSparse |
|
|
38
|
+
| ComplexUmfPackSolver | `umfpack_complex` | Square | Complex | SuiteSparse |
|
|
39
|
+
| SPQRSolver | `spqr` | Rectangular | Real | SuiteSparse |
|
|
40
|
+
| ComplexSPQRSolver | `spqr_complex` | Rectangular | Complex | SuiteSparse |
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
*SPD = Symmetric Positive Definite
|
|
44
|
+
|
|
45
|
+
**Example**:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"solver_type": "eigen_sparse_lu"
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Direct dense solvers
|
|
54
|
+
|
|
55
|
+
The application provides the following direct solvers for dense systems of equations:
|
|
56
|
+
|
|
57
|
+
| Python class | solver_type | Matrix requirements | Domain | Dependencies |
|
|
58
|
+
| --------------------------------------- | -------------------------------------- | :-----------------: | :-----: | :----------: |
|
|
59
|
+
| DenseColPivHouseholderQRSolver** | `dense_col_piv_householder_qr` | None | Real | None |
|
|
60
|
+
| DenseHouseholderQRSolver** | `dense_householder_qr` | None | Real | None |
|
|
61
|
+
| DenseLLTSolver** | `dense_llt` | SPD* | Real | None |
|
|
62
|
+
| DensePartialPivLUSolver** | `dense_partial_piv_lu` | Invertible | Real | None |
|
|
63
|
+
| ComplexDenseColPivHouseholderQRSolver | `complex_dense_col_piv_householder_qr` | None | Complex | None |
|
|
64
|
+
| ComplexDenseHouseholderQRSolver | `complex_dense_householder_qr` | None | Complex | None |
|
|
65
|
+
| ComplexDensePartialPivLUSolver | `complex_dense_partial_piv_lu` | Invertible | Complex | None |
|
|
66
|
+
|
|
67
|
+
*SPD = Symmetric Positive Definite
|
|
68
|
+
|
|
69
|
+
**Can also be used to solve equation systems with multiple right hand sides.
|
|
70
|
+
|
|
71
|
+
## Generalized eigensystem solvers
|
|
72
|
+
|
|
73
|
+
The application provides the following generalized eigensystem `Ax=λBx` solver for sparse matrices.
|
|
74
|
+
|
|
75
|
+
| Python class | solver_type | Matrix kind A | Matrix kind B | Domain | Dependencies |
|
|
76
|
+
|----------------------------------------|----------------------------|:-------------:|:-------------:|:--------:|:------------:|
|
|
77
|
+
| EigensystemSolver | `eigen_eigensystem` | Symmetric | SPD* | Real | None |
|
|
78
|
+
| SpectraSymGEigsShiftSolver | `spectra_sym_g_eigs_shift` | Symmetric | SPD* | Real | None |
|
|
79
|
+
| FEASTGeneralEigensystemSolver** | `feast` | General | General | Real | Intel® MKL |
|
|
80
|
+
| ComplexFEASTGeneralEigensystemSolver** | `feast_complex` | General | General | Complex | Intel® MKL |
|
|
81
|
+
|
|
82
|
+
*SPD = Symmetric Positive Definite
|
|
83
|
+
**A special version for symmetric matrices can be triggered in the solver settings.
|
|
84
|
+
|
|
85
|
+
`EigensystemSolver` and `SpectraSymGEigsShiftSolver` compute the smallest eigenvalues and corresponding eigenvectors of the system. MKL routines are used automatically if they are available.
|
|
86
|
+
|
|
87
|
+
`SpectraSymGEigsShiftSolver` interfaces a solver from the [Spectra library](https://spectralib.org/), and has a shift mode that can be used to compute the smallest eigenvalues > `shift`.
|
|
88
|
+
|
|
89
|
+
**Example:**
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"solver_type": "spectra_sym_g_eigs_shift",
|
|
94
|
+
"number_of_eigenvalues": 3,
|
|
95
|
+
"max_iteration": 1000,
|
|
96
|
+
"echo_level": 1
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
If the application is compiled with MKL, [FEAST 4.0](http://www.ecs.umass.edu/~polizzi/feast/) can be used to solve the generalized eigenvalue problem for real and complex systems (symmetric or unsymmetric). The cmake switch `USE_EIGEN_FEAST` must be set to `ON` with
|
|
101
|
+
```batch
|
|
102
|
+
-DUSE_EIGEN_FEAST=ON \
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Example:**
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"solver_type": "feast",
|
|
109
|
+
"symmetric": true,
|
|
110
|
+
"number_of_eigenvalues": 3,
|
|
111
|
+
"search_lowest_eigenvalues": true,
|
|
112
|
+
"e_min" : 0.0,
|
|
113
|
+
"e_max" : 0.2
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Build instructions
|
|
118
|
+
|
|
119
|
+
1. Set the required definitions for cmake
|
|
120
|
+
|
|
121
|
+
As any other app:
|
|
122
|
+
|
|
123
|
+
**Windows:** in `configure.bat`
|
|
124
|
+
|
|
125
|
+
```batch
|
|
126
|
+
set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\LinearSolversApplication;
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Linux:** in `configure.sh`
|
|
130
|
+
|
|
131
|
+
```console
|
|
132
|
+
add_app ${KRATOS_APP_DIR}/LinearSolversApplication
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
2. Build Kratos
|
|
136
|
+
|
|
137
|
+
3. Setup the `ProjectParameters.json`
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
"linear_solver_settings": {
|
|
141
|
+
"solver_type" : "LinearSolversApplication.sparse_lu"
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
4. Run the simulation
|
|
146
|
+
|
|
147
|
+
## Enable MKL (optional)
|
|
148
|
+
|
|
149
|
+
In case you have installed [MKL](https://software.intel.com/en-us/mkl) (see below), you can also use the Pardiso solvers.
|
|
150
|
+
|
|
151
|
+
1. Run the MKL setup script before building Kratos:
|
|
152
|
+
|
|
153
|
+
**Windows:**
|
|
154
|
+
|
|
155
|
+
```batch
|
|
156
|
+
call "C:\Program Files (x86)\Intel\oneAPI\mkl\latest\env\vars.bat" intel64 lp64
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Linux:**
|
|
160
|
+
|
|
161
|
+
```console
|
|
162
|
+
source /opt/intel/oneapi/setvars.sh intel64
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
2. Add the following flag to CMake to your configure script:
|
|
166
|
+
|
|
167
|
+
**Windows:**
|
|
168
|
+
|
|
169
|
+
```batch
|
|
170
|
+
-DUSE_EIGEN_MKL=ON ^
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Linux:**
|
|
174
|
+
|
|
175
|
+
```console
|
|
176
|
+
-DUSE_EIGEN_MKL=ON \
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
3. Build Kratos
|
|
180
|
+
|
|
181
|
+
4. Usage:
|
|
182
|
+
|
|
183
|
+
**Windows:**
|
|
184
|
+
|
|
185
|
+
```batch
|
|
186
|
+
call "C:\Program Files (x86)\Intel\oneAPI\mkl\latest\env\vars.bat" intel64 lp64
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Linux:**
|
|
190
|
+
|
|
191
|
+
Set the environment before using MKL
|
|
192
|
+
|
|
193
|
+
```console
|
|
194
|
+
source /opt/intel/oneapi/setvars.sh intel64
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Install MKL on Ubuntu with apt
|
|
198
|
+
|
|
199
|
+
Intel MKL can be installed with apt on Ubuntu. A guide can be found in [here](https://neelravi.com/post/intel-oneapi-install/).
|
|
200
|
+
For example to install the MKL 2022 version
|
|
201
|
+
|
|
202
|
+
```console
|
|
203
|
+
sudo bash
|
|
204
|
+
# <type your user password when prompted. this will put you in a root shell>
|
|
205
|
+
# If they are not installed, you can install using the following command:
|
|
206
|
+
sudo apt update
|
|
207
|
+
sudo apt -y install cmake pkg-config build-essential
|
|
208
|
+
# use wget to fetch the Intel repository public key
|
|
209
|
+
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
210
|
+
# add to your apt sources keyring so that archives signed with this key will be trusted.
|
|
211
|
+
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
212
|
+
# remove the public key
|
|
213
|
+
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
214
|
+
# Configure apt client to use Intel repository
|
|
215
|
+
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
|
216
|
+
# Install all MKL related dependencies. You can install full HPC with: sudo apt install intel-hpckit
|
|
217
|
+
sudo apt install intel-oneapi-mkl-devel
|
|
218
|
+
# Exit
|
|
219
|
+
exit
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
To enable the MKL environment (needs to be done before build/run) use
|
|
223
|
+
|
|
224
|
+
```console
|
|
225
|
+
source /opt/intel/oneapi/setvars.sh intel64
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Enable *SuiteSparse* (optional)
|
|
229
|
+
|
|
230
|
+
[*SuiteSparse*](https://github.com/DrTimothyAldenDavis/SuiteSparse) is a collection of open-source sparse matrix algorithms, including efficient implementations of various factorizations. *Kratos* currently provides wrappers for *CHOLMOD*, *UMFPACK*, and *SPQR*.
|
|
231
|
+
|
|
232
|
+
Install the *SuiteSparse* package on your system, and set the `USE_EIGEN_SUITESPARSE` flag in your *CMake* configuration to `ON`. One way of doing this is appending the list of arguments you pass to *CMake* in your configure script with:
|
|
233
|
+
```bash
|
|
234
|
+
-DUSE_EIGEN_SUITESPARSE:BOOL=ON
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Installing *SuiteSparse*
|
|
238
|
+
|
|
239
|
+
- Arch Linux
|
|
240
|
+
- *SuiteSparse* is [available](https://archlinux.org/packages/extra/x86_64/suitesparse/) through your package manager.
|
|
241
|
+
- `sudo pacman -S suitesparse`
|
|
242
|
+
|
|
243
|
+
- Debian (and derivatives, including Ubuntu)
|
|
244
|
+
- *SuiteSparse* is [available](https://packages.debian.org/sid/libsuitesparse-dev) through your package manager.
|
|
245
|
+
- `sudo apt install libsuitesparse-dev`
|
|
246
|
+
|
|
247
|
+
- Fedora (and derivatives, including RHEL)
|
|
248
|
+
- *SuiteSparse* is [available](https://packages.fedoraproject.org/pkgs/suitesparse/suitesparse-devel/) through your package manager.
|
|
249
|
+
- `sudo dnf install suitesparse-devel`
|
|
250
|
+
|
|
251
|
+
- MacOS
|
|
252
|
+
- *SuiteSparse* is [available](https://formulae.brew.sh/formula/suite-sparse) on *Homebrew* for both Intel and Apple Silicon machines.
|
|
253
|
+
- `brew install suite-sparse`
|
|
254
|
+
|
|
255
|
+
- Windows
|
|
256
|
+
- *SuiteSparse* is available through [*vcpkg*](https://vcpkg.io/en/package/suitesparse) and [*MSYS2*](https://packages.msys2.org/packages/mingw-w64-x86_64-suitesparse) package managers.
|
|
257
|
+
- `vcpkg install suitesparse suitesparse-spqr suitesparse-umfpack` (remember to add to build script `-DCMAKE_TOOLCHAIN_FILE="vcpkg_path\vcpkg\scripts\buildsystems\vcpkg.cmake"`)
|
|
258
|
+
- `pacman -S mingw-w64-x86_64-suitesparse`
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
kratoslinearsolversapplication.dylibs/libstdc++.6.dylib,sha256=Kn8_f_ys0FOLn05ZpGsAtBoM6VALOnfpUYRKi442nIY,3403264
|
|
2
|
+
kratoslinearsolversapplication.dylibs/libKratosCore.dylib,sha256=9OwVDQfFlNUWom6rOAMLSio6pVToR4uStQbhuwEUcRA,63629792
|
|
3
|
+
kratoslinearsolversapplication.dylibs/libgcc_s.1.1.dylib,sha256=zOC119wyFvffgkh5OMkG335NfllPk96dq_L7NbVmczg,219232
|
|
4
|
+
kratoslinearsolversapplication.dylibs/libgomp.1.dylib,sha256=vdOYKNYj-jfBqKdeVfCj7kylvyKMVExHbXvHAqxQLQ8,438880
|
|
5
|
+
KratosMultiphysics/LinearSolversApplication/__init__.pyi,sha256=soCWCQyA9hR_dylqPdZycWxcAyJxz20pImw2bcui5LE,23734
|
|
6
|
+
KratosMultiphysics/LinearSolversApplication/__init__.py,sha256=ocNWOV6PkKUmatHCaM6Zn-tIM0IJ41CKXJ-8LDC1ub0,676
|
|
7
|
+
KratosMultiphysics/LinearSolversApplication/dense_linear_solver_factory.py,sha256=OC4F_vKzCSlEjUO5GfEOBoS4xIANerJdPZFbrDY_rQE,970
|
|
8
|
+
KratosMultiphysics/.libs/KratosLinearSolversApplication.cpython-314-darwin.so,sha256=aTw8mQTHWmgtU7mPwLOzWzBJZvihwKWe9rtoS4NQyGk,3819648
|
|
9
|
+
KratosMultiphysics/.libs/libKratosLinearSolversCore.dylib,sha256=cLutJE9MetI8OmKxM1tPOAE-7Ocd8ZNEmNpGq57gVsU,3377648
|
|
10
|
+
kratoslinearsolversapplication-10.4.4.dist-info/RECORD,,
|
|
11
|
+
kratoslinearsolversapplication-10.4.4.dist-info/WHEEL,sha256=QX0UaoWXQIAv8vp5R3do793urekDoJdJRoGCk8nXIBY,115
|
|
12
|
+
kratoslinearsolversapplication-10.4.4.dist-info/METADATA,sha256=t68UXeiKMY6LPXmpGZbNH11LAQ1o9XpZGUOvppVqcFI,10629
|
|
Binary file
|
|
Binary file
|
|
Binary file
|