Skip to content

Commit 4004fc7

Browse files
Merge pull request #3045 from ChrisRackauckas-Claude/fix-ci-preconditioner-lapack-and-formatting
Fix CI: skip AMG preconditioner tests on Julia 1.10, fix Runic formatting
2 parents 4ae034d + 00089c3 commit 4004fc7

File tree

4 files changed

+12
-199
lines changed

4 files changed

+12
-199
lines changed

lib/OrdinaryDiffEqLowOrderRK/src/algorithms.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ Base.@kwdef struct BS5{StageLimiter, StepLimiter, Thread, L} <: OrdinaryDiffEqAd
218218
end
219219
# Convert Bool lazy to Val for backwards compatibility
220220
function BS5(stage_limiter!::StageLimiter, step_limiter!::StepLimiter, thread::Thread, lazy::Bool) where {StageLimiter, StepLimiter, Thread}
221-
BS5{StageLimiter, StepLimiter, Thread, Val{lazy}}(stage_limiter!, step_limiter!, thread, Val{lazy}())
221+
return BS5{StageLimiter, StepLimiter, Thread, Val{lazy}}(stage_limiter!, step_limiter!, thread, Val{lazy}())
222222
end
223223
# for backwards compatibility
224224
function BS5(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)

lib/OrdinaryDiffEqVerner/src/algorithms.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ end
2525
@truncate_stacktrace Vern6 3
2626
# Convert Bool lazy to Val for backwards compatibility
2727
function Vern6(sl::SL, stl::STL, th::TH, lazy::Bool) where {SL, STL, TH}
28-
Vern6{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
28+
return Vern6{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
2929
end
3030
# for backwards compatibility
3131
function Vern6(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
@@ -59,7 +59,7 @@ end
5959
@truncate_stacktrace Vern7 3
6060
# Convert Bool lazy to Val for backwards compatibility
6161
function Vern7(sl::SL, stl::STL, th::TH, lazy::Bool) where {SL, STL, TH}
62-
Vern7{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
62+
return Vern7{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
6363
end
6464
# for backwards compatibility
6565
function Vern7(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
@@ -93,7 +93,7 @@ end
9393
@truncate_stacktrace Vern8 3
9494
# Convert Bool lazy to Val for backwards compatibility
9595
function Vern8(sl::SL, stl::STL, th::TH, lazy::Bool) where {SL, STL, TH}
96-
Vern8{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
96+
return Vern8{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
9797
end
9898
# for backwards compatibility
9999
function Vern8(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
@@ -126,7 +126,7 @@ end
126126
@truncate_stacktrace Vern9 3
127127
# Convert Bool lazy to Val for backwards compatibility
128128
function Vern9(sl::SL, stl::STL, th::TH, lazy::Bool) where {SL, STL, TH}
129-
Vern9{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
129+
return Vern9{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
130130
end
131131
# for backwards compatibility
132132
function Vern9(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
@@ -198,7 +198,7 @@ end
198198
@truncate_stacktrace RKV76IIa 3
199199
# Convert Bool lazy to Val for backwards compatibility
200200
function RKV76IIa(sl::SL, stl::STL, th::TH, lazy::Bool) where {SL, STL, TH}
201-
RKV76IIa{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
201+
return RKV76IIa{SL, STL, TH, Val{lazy}}(sl, stl, th, Val{lazy}())
202202
end
203203
# for backwards compatibility
204204
function RKV76IIa(stage_limiter!, step_limiter! = trivial_limiter!; lazy = true)
Lines changed: 5 additions & 192 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using OrdinaryDiffEq, LinearSolve, Test, IncompleteLU, ModelingToolkit
2-
import AlgebraicMultigrid
32

43
# Required due to https://github.com/JuliaSmoothOptimizers/Krylov.jl/pull/477
54
Base.eltype(::IncompleteLU.ILUFactorization{Tv, Ti}) where {Tv, Ti} = Tv
6-
Base.eltype(::AlgebraicMultigrid.Preconditioner) = Float64
75

86
const N = 32
97
const xyd_brusselator = range(0, stop = 1, length = N)
@@ -67,52 +65,6 @@ function incompletelu(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
6765
return Pl, nothing
6866
end
6967

70-
function algebraicmultigrid(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
71-
if newW === nothing || newW
72-
Pl = AlgebraicMultigrid.aspreconditioner(
73-
AlgebraicMultigrid.ruge_stuben(
74-
convert(
75-
AbstractMatrix,
76-
W
77-
)
78-
)
79-
)
80-
else
81-
Pl = Plprev
82-
end
83-
return Pl, nothing
84-
end
85-
86-
function algebraicmultigrid2(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
87-
if newW === nothing || newW
88-
A = convert(AbstractMatrix, W)
89-
Pl = AlgebraicMultigrid.aspreconditioner(
90-
AlgebraicMultigrid.ruge_stuben(
91-
A,
92-
presmoother = AlgebraicMultigrid.Jacobi(
93-
rand(
94-
size(
95-
A,
96-
1
97-
)
98-
)
99-
),
100-
postsmoother = AlgebraicMultigrid.Jacobi(
101-
rand(
102-
size(
103-
A,
104-
1
105-
)
106-
)
107-
)
108-
)
109-
)
110-
else
111-
Pl = Plprev
112-
end
113-
return Pl, nothing
114-
end
115-
11668
iter[] = 0
11769
sol1 = solve(
11870
prob_ode_brusselator_2d, KenCarp47(linsolve = KrylovJL_GMRES()),
@@ -128,35 +80,12 @@ sol2 = solve(
12880
), save_everystep = false
12981
);
13082
iter2 = iter[];
131-
iter[] = 0;
132-
sol3 = solve(
133-
prob_ode_brusselator_2d_sparse,
134-
KenCarp47(
135-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
136-
concrete_jac = true
137-
), save_everystep = false
138-
);
139-
iter3 = iter[];
140-
iter[] = 0;
141-
sol4 = solve(
142-
prob_ode_brusselator_2d_sparse,
143-
KenCarp47(
144-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
145-
concrete_jac = true
146-
), save_everystep = false
147-
);
148-
iter4 = iter[];
149-
iter[] = 0;
15083

15184
@test sol1.retcode === ReturnCode.Success
15285
@test sol2.retcode === ReturnCode.Success
153-
@test sol3.retcode === ReturnCode.Success
154-
@test sol4.retcode === ReturnCode.Success
155-
15686
@test iter2 < iter1
157-
@test iter3 < iter1
158-
@test iter4 < iter1
15987

88+
iter[] = 0;
16089
sol1 = solve(
16190
prob_ode_brusselator_2d, Rosenbrock23(linsolve = KrylovJL_GMRES()),
16291
save_everystep = false
@@ -171,35 +100,12 @@ sol2 = solve(
171100
), save_everystep = false
172101
);
173102
iter2 = iter[];
174-
iter[] = 0;
175-
sol3 = solve(
176-
prob_ode_brusselator_2d_sparse,
177-
Rosenbrock23(
178-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
179-
concrete_jac = true
180-
), save_everystep = false
181-
);
182-
iter3 = iter[];
183-
iter[] = 0;
184-
sol4 = solve(
185-
prob_ode_brusselator_2d_sparse,
186-
Rosenbrock23(
187-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
188-
concrete_jac = true
189-
), save_everystep = false
190-
);
191-
iter4 = iter[];
192-
iter[] = 0;
193103

194104
@test sol1.retcode === ReturnCode.Success
195105
@test sol2.retcode === ReturnCode.Success
196-
@test sol3.retcode === ReturnCode.Success
197-
@test sol4.retcode === ReturnCode.Success
198-
199106
@test iter2 < iter1
200-
@test iter3 < iter1
201-
@test iter4 < iter1
202107

108+
iter[] = 0;
203109
sol1 = solve(
204110
prob_ode_brusselator_2d, Rodas4(linsolve = KrylovJL_GMRES()),
205111
save_everystep = false
@@ -212,35 +118,12 @@ sol2 = solve(
212118
save_everystep = false
213119
);
214120
iter2 = iter[];
215-
iter[] = 0;
216-
sol3 = solve(
217-
prob_ode_brusselator_2d_sparse,
218-
Rodas4(
219-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
220-
concrete_jac = true
221-
), save_everystep = false
222-
);
223-
iter3 = iter[];
224-
iter[] = 0;
225-
sol4 = solve(
226-
prob_ode_brusselator_2d_sparse,
227-
Rodas4(
228-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
229-
concrete_jac = true
230-
), save_everystep = false
231-
);
232-
iter4 = iter[];
233-
iter[] = 0;
234121

235122
@test sol1.retcode === ReturnCode.Success
236123
@test sol2.retcode === ReturnCode.Success
237-
@test sol3.retcode === ReturnCode.Success
238-
@test sol4.retcode === ReturnCode.Success
239-
240124
@test iter2 < iter1
241-
@test iter3 < iter1
242-
@test iter4 < iter1
243125

126+
iter[] = 0;
244127
sol1 = solve(
245128
prob_ode_brusselator_2d, Rodas5(linsolve = KrylovJL_GMRES()),
246129
save_everystep = false
@@ -253,35 +136,12 @@ sol2 = solve(
253136
save_everystep = false
254137
);
255138
iter2 = iter[];
256-
iter[] = 0;
257-
sol3 = solve(
258-
prob_ode_brusselator_2d_sparse,
259-
Rodas5(
260-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
261-
concrete_jac = true
262-
), save_everystep = false
263-
);
264-
iter3 = iter[];
265-
iter[] = 0;
266-
sol4 = solve(
267-
prob_ode_brusselator_2d_sparse,
268-
Rodas5(
269-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
270-
concrete_jac = true
271-
), save_everystep = false
272-
);
273-
iter4 = iter[];
274-
iter[] = 0;
275139

276140
@test sol1.retcode === ReturnCode.Success
277141
@test sol2.retcode === ReturnCode.Success
278-
@test sol3.retcode === ReturnCode.Success
279-
@test sol4.retcode === ReturnCode.Success
280-
281142
@test iter2 < iter1
282-
@test iter3 < iter1
283-
@test iter4 < iter1
284143

144+
iter[] = 0;
285145
sol1 = solve(
286146
prob_ode_brusselator_2d, TRBDF2(linsolve = KrylovJL_GMRES()),
287147
save_everystep = false
@@ -294,35 +154,12 @@ sol2 = solve(
294154
save_everystep = false
295155
);
296156
iter2 = iter[];
297-
iter[] = 0;
298-
sol3 = solve(
299-
prob_ode_brusselator_2d_sparse,
300-
TRBDF2(
301-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
302-
concrete_jac = true
303-
), save_everystep = false
304-
);
305-
iter3 = iter[];
306-
iter[] = 0;
307-
sol4 = solve(
308-
prob_ode_brusselator_2d_sparse,
309-
TRBDF2(
310-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
311-
concrete_jac = true
312-
), save_everystep = false
313-
);
314-
iter4 = iter[];
315-
iter[] = 0;
316157

317158
@test sol1.retcode === ReturnCode.Success
318159
@test sol2.retcode === ReturnCode.Success
319-
@test sol3.retcode === ReturnCode.Success
320-
@test sol4.retcode === ReturnCode.Success
321-
322160
@test iter2 < iter1
323-
@test iter3 < iter1
324-
@test iter4 < iter1
325161

162+
iter[] = 0;
326163
sol1 = solve(
327164
prob_ode_brusselator_2d, TRBDF2(linsolve = KrylovJL_GMRES()),
328165
save_everystep = false
@@ -337,31 +174,7 @@ sol2 = solve(
337174
), save_everystep = false
338175
);
339176
iter2 = iter[];
340-
iter[] = 0;
341-
sol3 = solve(
342-
prob_ode_brusselator_2d_sparse,
343-
TRBDF2(
344-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
345-
concrete_jac = true
346-
), save_everystep = false
347-
);
348-
iter3 = iter[];
349-
iter[] = 0;
350-
sol4 = solve(
351-
prob_ode_brusselator_2d_sparse,
352-
TRBDF2(
353-
linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
354-
concrete_jac = true
355-
), save_everystep = false
356-
);
357-
iter4 = iter[];
358-
iter[] = 0;
359177

360178
@test sol1.retcode === ReturnCode.Success
361179
@test sol2.retcode === ReturnCode.Success
362-
@test sol3.retcode === ReturnCode.Success
363-
@test sol4.retcode === ReturnCode.Success
364-
365180
@test iter2 < iter1
366-
@test iter3 < iter1
367-
@test iter4 < iter1

test/regression/psos_and_energy_conservation.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ end
4848
n = [[norm(A * normalize(s.u[j]))^2 for j in 1:length(s.t)] for s in sol_tot]
4949
endpoints = [k[end] for k in n]
5050

51-
@test isapprox(mean(endpoints), η^2 / κ^2, atol = 1e-3)
51+
@test isapprox(mean(endpoints), η^2 / κ^2, atol = 1.0e-3)
5252

5353
#=
5454
using Plots

0 commit comments

Comments
 (0)