1
- using LinearSolve, SparseArrays, Random
1
+ using LinearSolve, SparseArrays, Random, LinearAlgebra
2
2
import Pardiso
3
3
4
4
A1 = sparse ([1.0 0 - 2 3
@@ -14,19 +14,22 @@ e = ones(n)
14
14
e2 = ones (n - 1 )
15
15
A2 = spdiagm (- 1 => im * e2, 0 => lambda * e, 1 => - im * e2)
16
16
b2 = rand (n) + im * zeros (n)
17
- cache_kwargs = (; verbose = true , abstol = 1e-8 , reltol = 1e-8 , maxiter = 30 )
18
-
19
17
prob2 = LinearProblem (A2, b2)
20
18
19
+ cache_kwargs = (; abstol = 1e-8 , reltol = 1e-8 , maxiter = 30 )
20
+
21
21
for alg in (PardisoJL (), MKLPardisoFactorize (), MKLPardisoIterate ())
22
- u = solve (prob1, alg; cache_kwargs... ). u
23
- @test A1 * u ≈ b1
22
+ u = solve (prob1, alg; cache_kwargs... ). u
23
+ @test A1 * u ≈ b1
24
24
25
- u = solve (prob2, alg; cache_kwargs... ). u
26
- @test eltype (u) <: Complex
27
- @test_broken A2 * u ≈ b2
25
+ u = solve (prob2, alg; cache_kwargs... ). u
26
+ @test eltype (u) <: Complex
27
+ @test A2 * u ≈ b2
28
28
end
29
29
30
+ return
31
+
32
+
30
33
Random. seed! (10 )
31
34
A = sprand (n, n, 0.8 );
32
35
A2 = 2.0 .* A;
@@ -53,6 +56,25 @@ sol33 = solve(linsolve)
53
56
@test sol12. u ≈ sol32. u
54
57
@test sol13. u ≈ sol33. u
55
58
59
+
60
+ # Test for problem from #497
61
+ function makeA ()
62
+ n = 60
63
+ colptr = [1 , 4 , 7 , 11 , 15 , 17 , 22 , 26 , 30 , 34 , 38 , 40 , 46 , 50 , 54 , 58 , 62 , 64 , 70 , 74 , 78 , 82 , 86 , 88 , 94 , 98 , 102 , 106 , 110 , 112 , 118 , 122 , 126 , 130 , 134 , 136 , 142 , 146 , 150 , 154 , 158 , 160 , 166 , 170 , 174 , 178 , 182 , 184 , 190 , 194 , 198 , 202 , 206 , 208 , 214 , 218 , 222 , 224 , 226 , 228 , 232 ]
64
+ rowval = [1 , 3 , 4 , 1 , 2 , 4 , 2 , 4 , 9 , 10 , 3 , 5 , 11 , 12 , 1 , 3 , 2 , 4 , 6 , 11 , 12 , 2 , 7 , 9 , 10 , 2 , 7 , 8 , 10 , 8 , 10 , 15 , 16 , 9 , 11 , 17 , 18 , 7 , 9 , 2 , 8 , 10 , 12 , 17 , 18 , 8 , 13 , 15 , 16 , 8 , 13 , 14 , 16 , 14 , 16 , 21 , 22 , 15 , 17 , 23 , 24 , 13 , 15 , 8 , 14 , 16 , 18 , 23 , 24 , 14 , 19 , 21 , 22 , 14 , 19 , 20 , 22 , 20 , 22 , 27 , 28 , 21 , 23 , 29 , 30 , 19 , 21 , 14 , 20 , 22 , 24 , 29 , 30 , 20 , 25 , 27 , 28 , 20 , 25 , 26 , 28 , 26 , 28 , 33 , 34 , 27 , 29 , 35 , 36 , 25 , 27 , 20 , 26 , 28 , 30 , 35 , 36 , 26 , 31 , 33 , 34 , 26 , 31 , 32 , 34 , 32 , 34 , 39 , 40 , 33 , 35 , 41 , 42 , 31 , 33 , 26 , 32 , 34 , 36 , 41 , 42 , 32 , 37 , 39 , 40 , 32 , 37 , 38 , 40 , 38 , 40 , 45 , 46 , 39 , 41 , 47 , 48 , 37 , 39 , 32 , 38 , 40 , 42 , 47 , 48 , 38 , 43 , 45 , 46 , 38 , 43 , 44 , 46 , 44 , 46 , 51 , 52 , 45 , 47 , 53 , 54 , 43 , 45 , 38 , 44 , 46 , 48 , 53 , 54 , 44 , 49 , 51 , 52 , 44 , 49 , 50 , 52 , 50 , 52 , 57 , 58 , 51 , 53 , 59 , 60 , 49 , 51 , 44 , 50 , 52 , 54 , 59 , 60 , 50 , 55 , 57 , 58 , 50 , 55 , 56 , 58 , 56 , 58 , 57 , 59 , 55 , 57 , 50 , 56 , 58 , 60 ]
65
+ nzval = [-0.64, 1.0, -1.0, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -0.03510101010101016, -0.975, -1.0806825309567203, 1.0, -0.95, -0.025, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0, -0.025, -0.95, -0.3564, -0.64, 1.0, -1.0, 13.792569659442691, 0.8606811145510832, -13.792569659442691, 1.0, 0.03475000000000006, 1.0, -1.0806825309567203, 1.0, 2.370597639417811, -2.3705976394178108, 10.698449178570607, -11.083604432603583, -0.2770901108150896, 1.0]
66
+ A = SparseMatrixCSC (n, n, colptr, rowval, nzval)
67
+ return (A)
68
+ end
69
+
70
+ A= makeA ()
71
+ u0= fill (0.1 ,size (A,2 ))
72
+ linprob = LinearProblem (A, A* u0)
73
+ u = LinearSolve. solve (linprob, PardisoJL ())
74
+ @test norm (u- u0) < 1.0e-14
75
+
76
+
77
+
56
78
# Testing and demonstrating Pardiso.set_iparm! for MKLPardisoSolver
57
79
solver = Pardiso. MKLPardisoSolver ()
58
80
iparm = [
0 commit comments