Skip to content

Commit 9d2b9e7

Browse files
committed
add remake tests for SCCNonlinearProblem
1 parent d52c034 commit 9d2b9e7

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/remake_tests.jl

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,51 @@ for prob in deepcopy(probs)
275275
end
276276
end
277277

278+
u0 = zeros(2)
279+
p = zeros(3)
280+
281+
function f1(du, u, p)
282+
du[1] = cos(u[2]) - u[1]
283+
du[2] = sin(u[1] + u[2]) + u[2]
284+
end
285+
explicitfun1(p, sols) = nothing
286+
prob1 = NonlinearProblem(
287+
NonlinearFunction{true, SciMLBase.NoSpecialize}(f1), zeros(2), p)
288+
289+
function f2(du, u, p)
290+
du[1] = 2u[2] + u[1] + 1.0
291+
du[2] = u[3]^2 + u[2]
292+
du[3] = u[1]^2 + u[3]
293+
end
294+
explicitfun2(p, sols) = nothing
295+
prob2 = NonlinearProblem(
296+
NonlinearFunction{true, SciMLBase.NoSpecialize}(f2), zeros(3), p)
297+
298+
function f3(du, u, p)
299+
du[1] = p[1] + 2.0u[1] + 2.5u[2] + 1.5u[3]
300+
du[2] = p[2] + 4.0u[1] - 1.5u[2] + 1.5u[3]
301+
du[3] = p[3] + +u[1] - u[2] - u[3]
302+
end
303+
prob3 = NonlinearProblem(
304+
NonlinearFunction{true, SciMLBase.NoSpecialize}(f3), zeros(3), p)
305+
function explicitfun3(p, sols)
306+
p[1] = sols[1][1] + sols[1][2] + sols[2][1] + sols[2][2] + sols[2][3]
307+
p[2] = sols[1][1] + sols[1][2] + sols[2][1] + 2.0sols[2][2] + sols[2][3]
308+
p[3] = sols[1][1] + 2.0sols[1][2] + 3.0sols[2][1] + 5.0sols[2][2] +
309+
6.0sols[2][3]
310+
end
311+
312+
sccprob = SciMLBase.SCCNonlinearProblem([prob1, prob2, prob3],
313+
SciMLBase.Void{Any}.([explicitfun1, explicitfun2, explicitfun3]))
314+
315+
new_sccprob = @inferred remake(sccprob)
316+
317+
@test new_sccprob.probs !== missing
318+
@test new_sccprob.explicitfuns! !== missing
319+
320+
new_sccprob = remake(sccprob, p=[1,2,3], parameters_alias=true)
321+
@test new_sccprob.p == [1, 2, 3]
322+
278323
# eltype(()) <: Pair, so ensure that this doesn't error
279324
function lorenz!(du, u, _, t)
280325
du[1] = 1 * (u[2] - u[1])

0 commit comments

Comments
 (0)