Skip to content

Commit f30586a

Browse files
Merge pull request #91 from SciML/prob_choice
fix prob_choice filtering and add a better test
2 parents 31fac8c + 7887b82 commit f30586a

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1717

1818
[compat]
1919
DelayDiffEq = "5.20"
20-
DiffEqBase = "6.40"
20+
DiffEqBase = "6.94.4"
2121
DiffEqNoiseProcess = "5.0"
2222
DiffEqProblemLibrary = "4.5"
2323
NLsolve = "4.2"

test/benchmark_tests.jl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,39 @@ wp = WorkPrecisionSet(probs, abstols, reltols, setups; appxsol = [test_sol, noth
115115
wp = WorkPrecisionSet(probs, abstols, reltols, setups; appxsol = [test_sol, test_sol1],
116116
save_everystep = false, numruns = 20, maxiters = 10000)
117117

118+
# Dual DAE Problems
119+
function rober(du, u, p, t)
120+
y₁, y₂, y₃ = u
121+
k₁, k₂, k₃ = p
122+
du[1] = -k₁ * y₁ + k₃ * y₂ * y₃
123+
du[2] = k₁ * y₁ - k₂ * y₂^2 - k₃ * y₂ * y₃
124+
du[3] = k₂ * y₂^2
125+
nothing
126+
end
127+
prob1 = ODEProblem(rober, [1.0, 0.0, 0.0], (0.0, 1e5), [0.04, 3e7, 1e4])
128+
129+
ode_ref_sol = solve(prob1, Rodas5(), abstol = 1 / 10^14, reltol = 1 / 10^14);
130+
131+
function dae_rober(out, du, u, p, t)
132+
out[1] = -0.04u[1] + 1e4 * u[2] * u[3] - du[1]
133+
out[2] = +0.04u[1] - 3e7 * u[2]^2 - 1e4 * u[2] * u[3] - du[2]
134+
out[3] = u[1] + u[2] + u[3] - 1.0
135+
end
136+
u₀ = [1.0, 0, 0]
137+
du₀ = [-0.04, 0.04, 0.0]
138+
tspan = (0.0, 100000.0)
139+
140+
differential_vars = [true, true, false]
141+
prob2 = DAEProblem(dae_rober, du₀, u₀, tspan, differential_vars = differential_vars)
142+
143+
dae_ref_sol = solve(prob2, DFBDF(), abstol = 1 / 10^14, reltol = 1 / 10^14);
144+
145+
probs = [prob1, prob2]
146+
setups = [Dict(:alg => Rodas5())
147+
Dict(:alg => DFBDF(), :prob_choice => 2)]
148+
wp = WorkPrecisionSet(probs, abstols, reltols, setups; appxsol = [ode_ref_sol, dae_ref_sol],
149+
save_everystep = false, numruns = 20, maxiters = 10000)
150+
118151
# DDE problem
119152
prob = prob_dde_constant_1delay_ip
120153

0 commit comments

Comments
 (0)