Skip to content

Commit 0172415

Browse files
Run Runic on the disco-optimizations files
The disco-optimizations merge (#3720) landed three files that Runic rejects, so format-check has been failing on master for every PR since. Whitespace and line wrapping only; `runic --check .` is clean across the repo afterwards. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DKB6v14nZHZPYtKiLsPLDT
1 parent fd3f95b commit 0172415

3 files changed

Lines changed: 38 additions & 34 deletions

File tree

lib/OrdinaryDiffEqCore/src/disco.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ function find_discontinuity(integrator)
5454
if (disco_zero.out_low[j] * disco_zero.out_high[j] < zero(disco_zero.out_low[j]))
5555
if (!addsteps_called)
5656
addsteps_called = true
57-
_ode_addsteps!(disco_zero.k, disco_zero.tprev, disco_zero.uprev, disco_zero.u,
58-
disco_zero.dt, disco_zero.f, disco_zero.p, disco_zero.cache, false, true, false)
57+
_ode_addsteps!(
58+
disco_zero.k, disco_zero.tprev, disco_zero.uprev, disco_zero.u,
59+
disco_zero.dt, disco_zero.f, disco_zero.p, disco_zero.cache, false, true, false
60+
)
5961
end
6062
disco_zero.ind = j
6163
disco_prob.tspan[2] = breakpointθ
@@ -74,8 +76,10 @@ function find_discontinuity(integrator)
7476
if (disco_zero.out_low[1] * disco_zero.out_high[1] < zero(disco_zero.out_low[1]))
7577
if (!addsteps_called)
7678
addsteps_called = true
77-
_ode_addsteps!(disco_zero.k, disco_zero.tprev, disco_zero.uprev, disco_zero.u,
78-
disco_zero.dt, disco_zero.f, disco_zero.p, disco_zero.cache, false, true, false)
79+
_ode_addsteps!(
80+
disco_zero.k, disco_zero.tprev, disco_zero.uprev, disco_zero.u,
81+
disco_zero.dt, disco_zero.f, disco_zero.p, disco_zero.cache, false, true, false
82+
)
7983
end
8084
disco_prob.tspan[2] = breakpointθ
8185
sol = solve(disco_prob)

lib/OrdinaryDiffEqCore/src/integrators/controllers.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ for (accessor, default) in (
571571
end
572572
end
573573

574-
# Discontinuity-detection helpers
574+
# Discontinuity-detection helpers
575575
# Shared logic in every step_accept/reject_controller! below.
576576

577577
function handle_disco_accept!(integrator, controller_basic, t, nominal_new_dt)

test/Integrators_I/disco_tests.jl

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,23 @@ prob = ODEProblem(f, u0, tspan)
1919
condition(u, t, integrator) = u[1] - 1
2020
cb = ContinuousCallback(condition, default_affect!; maybe_discontinuity = true)
2121

22-
sol_disco_radau = solve(prob, RadauIIA5(); callback = cb, reltol = 1e-6, controller = predictive_disco_controller(RadauIIA5()))
22+
sol_disco_radau = solve(prob, RadauIIA5(); callback = cb, reltol = 1.0e-6, controller = predictive_disco_controller(RadauIIA5()))
2323
# 314.500 μs (8909 allocations: 278.73 KiB)
24-
sol_no_disco_radau = solve(prob, RadauIIA5(); callback = cb, reltol = 1e-6)
24+
sol_no_disco_radau = solve(prob, RadauIIA5(); callback = cb, reltol = 1.0e-6)
2525
# 376.125 μs (10628 allocations: 331.61 KiB)
2626
@test sol_disco_radau.retcode == ReturnCode.Success
2727
@test sol_disco_radau.stats.nreject <= sol_no_disco_radau.stats.nreject
2828

29-
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-6, controller = PI_disco_controller(Rodas5P()))
29+
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-6, controller = PI_disco_controller(Rodas5P()))
3030
# 444.500 μs (15596 allocations: 547.62 KiB)
31-
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-6)
31+
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-6)
3232
# 620.709 μs (21830 allocations: 765.77 KiB)
3333
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
3434
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
3535

36-
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-6, controller = PI_disco_controller(Tsit5()))
36+
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-6, controller = PI_disco_controller(Tsit5()))
3737
# 55.625 μs (7576 allocations: 240.67 KiB)
38-
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-6)
38+
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-6)
3939
# 55.083 μs (7570 allocations: 240.58 KiB)
4040
@test sol_disco_tsit5.retcode == ReturnCode.Success
4141
@test sol_disco_tsit5.stats.nreject <= sol_no_disco_tsit5.stats.nreject
@@ -64,16 +64,16 @@ condition2(u, t, integrator) = u[1] - 2
6464
cb2 = ContinuousCallback(condition2, default_affect!; maybe_discontinuity = true)
6565
cb = CallbackSet(cb1, cb2)
6666

67-
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-6, controller = PI_disco_controller(Rodas5P()))
67+
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-6, controller = PI_disco_controller(Rodas5P()))
6868
# 1.224 ms (42698 allocations: 1.46 MiB)
69-
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-6)
69+
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-6)
7070
# 1.551 ms (52905 allocations: 1.80 MiB)
7171
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
7272
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
7373

74-
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-6, controller = PI_disco_controller(Tsit5()))
74+
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-6, controller = PI_disco_controller(Tsit5()))
7575
# 267.167 μs (34737 allocations: 1.07 MiB)
76-
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-6)
76+
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-6)
7777
# 279.416 μs (39645 allocations: 1.22 MiB)
7878
@test sol_disco_tsit5.retcode == ReturnCode.Success
7979
@test sol_disco_tsit5.stats.nreject <= sol_no_disco_tsit5.stats.nreject
@@ -103,31 +103,31 @@ cb_multi_2 = ContinuousCallback(cond_multi_2, default_affect!; maybe_discontinui
103103

104104
cb_multi = CallbackSet(cb_multi_1, cb_multi_2)
105105

106-
sol_disco_radau = solve(prob_multi, RadauIIA5(); callback=cb_multi, reltol=1e-7, abstol=1e-9, controller = PI_disco_controller(RadauIIA5()))
106+
sol_disco_radau = solve(prob_multi, RadauIIA5(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9, controller = PI_disco_controller(RadauIIA5()))
107107
# 148.875 μs (1564 allocations: 64.56 KiB)
108-
sol_no_disco_radau = solve(prob_multi, RadauIIA5(); callback=cb_multi, reltol=1e-7, abstol=1e-9)
108+
sol_no_disco_radau = solve(prob_multi, RadauIIA5(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9)
109109
# 129.875 μs (1073 allocations: 48.44 KiB)
110110
@test sol_disco_radau.retcode == ReturnCode.Success
111111
@test sol_disco_radau.stats.nreject <= sol_no_disco_radau.stats.nreject
112112

113-
sol_disco_rosenbrock = solve(prob_multi, Rodas5P(); callback=cb_multi, reltol=1e-7, abstol=1e-9, controller = PI_disco_controller(Rodas5P()))
113+
sol_disco_rosenbrock = solve(prob_multi, Rodas5P(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9, controller = PI_disco_controller(Rodas5P()))
114114
# 209.000 μs (1474 allocations: 60.94 KiB)
115-
sol_no_disco_rosenbrock = solve(prob_multi, Rodas5P(); callback=cb_multi, reltol=1e-7, abstol=1e-9)
115+
sol_no_disco_rosenbrock = solve(prob_multi, Rodas5P(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9)
116116
# 237.250 μs (969 allocations: 45.44 KiB)
117117
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
118118
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
119119

120-
sol_disco_tsit5 = solve(prob_multi, Tsit5(); callback=cb_multi, reltol=1e-7, abstol=1e-9, controller = PI_disco_controller(Tsit5()))
120+
sol_disco_tsit5 = solve(prob_multi, Tsit5(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9, controller = PI_disco_controller(Tsit5()))
121121
# 105.250 μs (1592 allocations: 60.34 KiB)
122-
sol_no_disco_tsit5 = solve(prob_multi, Tsit5(); callback=cb_multi, reltol = 1e-7, abstol = 1e-9)
122+
sol_no_disco_tsit5 = solve(prob_multi, Tsit5(); callback = cb_multi, reltol = 1.0e-7, abstol = 1.0e-9)
123123
# 88.000 μs (1133 allocations: 46.84 KiB)
124124
@test sol_disco_tsit5.retcode == ReturnCode.Success
125125
@test sol_disco_tsit5.stats.nreject <= sol_no_disco_tsit5.stats.nreject
126126

127127
#TEST 4: STIFF MULTI-COMPONENT DISCONTINUITY
128128
function f_stiff_disc!(du, u, p, t)
129129
λ = p[1]
130-
if u[1] < 0.5
130+
return if u[1] < 0.5
131131
du[1] = -λ * u[1] + λ * exp(-t)
132132
du[2] = -λ * (u[2] - u[1])
133133
du[3] = -(u[3] - u[1]^2)
@@ -145,9 +145,9 @@ prob_stiff = ODEProblem(f_stiff_disc!, u0_stiff, tspan_stiff, [500.0])
145145
cond_stiff(u, t, integrator) = u[1] - 0.5
146146
cb_stiff = ContinuousCallback(cond_stiff, default_affect!; maybe_discontinuity = true)
147147

148-
sol_disco_rosenbrock = solve(prob_stiff, Rodas5P(); callback=cb_stiff, reltol=1e-9, abstol=1e-11, controller = PI_disco_controller(Rodas5P()))
148+
sol_disco_rosenbrock = solve(prob_stiff, Rodas5P(); callback = cb_stiff, reltol = 1.0e-9, abstol = 1.0e-11, controller = PI_disco_controller(Rodas5P()))
149149
# 364.833 μs (2030 allocations: 85.34 KiB)
150-
sol_no_disco_rosenbrock = solve(prob_stiff, Rodas5P(); callback=cb_stiff, reltol=1e-9, abstol=1e-11)
150+
sol_no_disco_rosenbrock = solve(prob_stiff, Rodas5P(); callback = cb_stiff, reltol = 1.0e-9, abstol = 1.0e-11)
151151
# 332.750 μs (1765 allocations: 79.78 KiB)
152152
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
153153
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
@@ -178,9 +178,9 @@ prob_dae = ODEProblem(f_dae_func, u0_dae, tspan_dae)
178178
cond_dae(u, t, integrator) = u[1] - 0.5
179179
cb_dae = ContinuousCallback(cond_dae, default_affect!; maybe_discontinuity = true)
180180

181-
sol_disco_rosenbrock = solve(prob_dae, Rodas5P(); callback=cb_dae, reltol=1e-8, abstol=1e-10, controller = PI_disco_controller(Rodas5P()))
181+
sol_disco_rosenbrock = solve(prob_dae, Rodas5P(); callback = cb_dae, reltol = 1.0e-8, abstol = 1.0e-10, controller = PI_disco_controller(Rodas5P()))
182182
# 127.083 μs (831 allocations: 35.53 KiB)
183-
sol_no_disco_rosenbrock = solve(prob_dae, Rodas5P(); callback=cb_dae, reltol=1e-8, abstol=1e-10)
183+
sol_no_disco_rosenbrock = solve(prob_dae, Rodas5P(); callback = cb_dae, reltol = 1.0e-8, abstol = 1.0e-10)
184184
# 121.625 μs (625 allocations: 31.69 KiB)
185185
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
186186
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
@@ -203,16 +203,16 @@ end
203203
default_affect_vec!(integrator, idx) = nothing
204204
cb_vec = VectorContinuousCallback(condition_vec!, default_affect_vec!, 2; maybe_discontinuity = true)
205205

206-
sol_disco_rosenbrock = solve(prob_vec, Rodas5P(); callback = cb_vec, reltol=1e-7, abstol=1e-9, controller = PI_disco_controller(Rodas5P()))
206+
sol_disco_rosenbrock = solve(prob_vec, Rodas5P(); callback = cb_vec, reltol = 1.0e-7, abstol = 1.0e-9, controller = PI_disco_controller(Rodas5P()))
207207
# 191.250 μs (1212 allocations: 53.62 KiB)
208-
sol_no_disco_rosenbrock = solve(prob_vec, Rodas5P(); callback = cb_vec, reltol=1e-7, abstol=1e-9)
208+
sol_no_disco_rosenbrock = solve(prob_vec, Rodas5P(); callback = cb_vec, reltol = 1.0e-7, abstol = 1.0e-9)
209209
# 202.000 μs (939 allocations: 49.47 KiB)
210210
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
211211
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
212212

213-
sol_disco_tsit5 = solve(prob_vec, Tsit5(); callback = cb_vec, reltol=1e-7, abstol=1e-9, controller = PI_disco_controller(Tsit5()))
213+
sol_disco_tsit5 = solve(prob_vec, Tsit5(); callback = cb_vec, reltol = 1.0e-7, abstol = 1.0e-9, controller = PI_disco_controller(Tsit5()))
214214
# 94.459 μs (1626 allocations: 67.73 KiB)
215-
sol_no_disco_tsit5 = solve(prob_vec, Tsit5(); callback = cb_vec, reltol=1e-7, abstol=1e-9)
215+
sol_no_disco_tsit5 = solve(prob_vec, Tsit5(); callback = cb_vec, reltol = 1.0e-7, abstol = 1.0e-9)
216216
# 93.084 μs (1356 allocations: 63.04 KiB)
217217
@test sol_disco_tsit5.retcode == ReturnCode.Success
218218
@test sol_disco_tsit5.stats.nreject <= sol_no_disco_tsit5.stats.nreject
@@ -235,16 +235,16 @@ prob = ODEProblem(f!, u, tspan)
235235
cond(u, t, integrator) = u[2]
236236
cb = ContinuousCallback(cond, default_affect!; maybe_discontinuity = true)
237237

238-
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-8, abstol = 1e-10, controller = PI_disco_controller(Rodas5P()))
238+
sol_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-8, abstol = 1.0e-10, controller = PI_disco_controller(Rodas5P()))
239239
# 169.208 μs (1190 allocations: 51.78 KiB)
240-
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1e-8, abstol = 1e-10)
240+
sol_no_disco_rosenbrock = solve(prob, Rodas5P(); callback = cb, reltol = 1.0e-8, abstol = 1.0e-10)
241241
# 184.792 μs (877 allocations: 45.72 KiB)
242242
@test sol_disco_rosenbrock.retcode == ReturnCode.Success
243243
@test sol_disco_rosenbrock.stats.nreject <= sol_no_disco_rosenbrock.stats.nreject
244244

245-
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-8, abstol = 1e-10, controller = PI_disco_controller(Tsit5()))
245+
sol_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-8, abstol = 1.0e-10, controller = PI_disco_controller(Tsit5()))
246246
# 59.625 μs (1248 allocations: 53.79 KiB)
247-
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1e-8, abstol = 1e-10)
247+
sol_no_disco_tsit5 = solve(prob, Tsit5(); callback = cb, reltol = 1.0e-8, abstol = 1.0e-10)
248248
# 54.041 μs (1155 allocations: 54.55 KiB)
249249
@test sol_disco_tsit5.retcode == ReturnCode.Success
250250
@test sol_disco_tsit5.stats.nreject <= sol_no_disco_tsit5.stats.nreject

0 commit comments

Comments
 (0)