Skip to content

Commit 73cb4d0

Browse files
test: fix SCCNonlinearProblem indexing test
1 parent 795047e commit 73cb4d0

File tree

1 file changed

+3
-60
lines changed

1 file changed

+3
-60
lines changed

test/downstream/problem_interface.jl

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,6 @@ prob = SteadyStateProblem(osys, u0, ps)
294294
getsym(prob, (:X, :X2))(prob) == (0.1, 0.2)
295295

296296
@testset "SCCNonlinearProblem" begin
297-
# TODO: Rewrite this example when the MTK codegen is merged
298-
299297
function fullf!(du, u, p)
300298
du[1] = cos(u[2]) - u[1]
301299
du[2] = sin(u[1] + u[2]) + u[2]
@@ -311,63 +309,10 @@ prob = SteadyStateProblem(osys, u0, ps)
311309
@parameters p = 1.0
312310
eqs = Any[0 for _ in 1:8]
313311
fullf!(eqs, u, [p])
314-
@named model = NonlinearSystem(0 .~ eqs, [u...], [p])
315-
model = complete(model; split = false)
316-
317-
cache = zeros(4)
318-
cache[1] = 1.0
319-
320-
function f1!(du, u, p)
321-
du[1] = cos(u[2]) - u[1]
322-
du[2] = sin(u[1] + u[2]) + u[2]
323-
end
324-
explicitfun1(cache, sols) = nothing
325-
326-
f1!(eqs, u2[1:2], [p])
327-
@named subsys1 = NonlinearSystem(0 .~ eqs[1:2], [u2[1:2]...], [p])
328-
subsys1 = complete(subsys1; split = false)
329-
prob1 = NonlinearProblem(
330-
NonlinearFunction{true, SciMLBase.NoSpecialize}(f1!; sys = subsys1),
331-
zeros(2), copy(cache))
332-
333-
function f2!(du, u, p)
334-
du[1] = 2u[2] + u[1] + p[1]
335-
du[2] = u[3]^2 + u[2]
336-
du[3] = u[1]^2 + u[3]
337-
end
338-
explicitfun2(cache, sols) = nothing
339-
340-
f2!(eqs, u2[3:5], [p])
341-
@named subsys2 = NonlinearSystem(0 .~ eqs[1:3], [u2[3:5]...], [p])
342-
subsys2 = complete(subsys2; split = false)
343-
prob2 = NonlinearProblem(
344-
NonlinearFunction{true, SciMLBase.NoSpecialize}(f2!; sys = subsys2),
345-
zeros(3), copy(cache))
346-
347-
function f3!(du, u, p)
348-
du[1] = p[2] + 2.0u[1] + 2.5u[2] + 1.5u[3]
349-
du[2] = p[3] + 4.0u[1] - 1.5u[2] + 1.5u[3]
350-
du[3] = p[4] + +u[1] - u[2] - u[3]
351-
end
352-
function explicitfun3(cache, sols)
353-
cache[2] = sols[1][1] + sols[1][2] + sols[2][1] + sols[2][2] + sols[2][3]
354-
cache[3] = sols[1][1] + sols[1][2] + sols[2][1] + 2.0sols[2][2] + sols[2][3]
355-
cache[4] = sols[1][1] + 2.0sols[1][2] + 3.0sols[2][1] + 5.0sols[2][2] +
356-
6.0sols[2][3]
357-
end
358-
359-
@parameters tmpvar[1:3]
360-
f3!(eqs, u2[6:8], [p, tmpvar...])
361-
@named subsys3 = NonlinearSystem(0 .~ eqs[1:3], [u2[6:8]...], [p, tmpvar...])
362-
subsys3 = complete(subsys3; split = false)
363-
prob3 = NonlinearProblem(
364-
NonlinearFunction{true, SciMLBase.NoSpecialize}(f3!; sys = subsys3),
365-
zeros(3), copy(cache))
312+
@mtkbuild model = NonlinearSystem(0 .~ eqs, [u...], [p])
366313

367314
prob = NonlinearProblem(model, [])
368-
sccprob = SciMLBase.SCCNonlinearProblem([prob1, prob2, prob3],
369-
SciMLBase.Void{Any}.([explicitfun1, explicitfun2, explicitfun3]),
370-
copy(cache); sys = model)
315+
sccprob = SCCNonlinearProblem(model, [])
371316

372317
for sym in [u, u..., u[2] + u[3], p * u[1] + u[2]]
373318
@test prob[sym] sccprob[sym]
@@ -380,12 +325,10 @@ prob = SteadyStateProblem(osys, u0, ps)
380325
for (i, sym) in enumerate([u[1], u[3], u[6]])
381326
sccprob[sym] = 0.5i
382327
@test sccprob[sym] 0.5i
383-
@test sccprob.probs[i].u0[1] 0.5i
384328
end
385329
sccprob.ps[p] = 2.5
386330
@test sccprob.ps[p] 2.5
387-
@test sccprob.p[1] 2.5
388331
for scc in sccprob.probs
389-
@test parameter_values(scc)[1] 2.5
332+
@test scc.ps[p] 2.5
390333
end
391334
end

0 commit comments

Comments
 (0)