@@ -275,6 +275,51 @@ for prob in deepcopy(probs)
275275 end
276276end
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 ] = 2 u[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.0 u[1 ] + 2.5 u[2 ] + 1.5 u[3 ]
300+ du[2 ] = p[2 ] + 4.0 u[1 ] - 1.5 u[2 ] + 1.5 u[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.0 sols[2 ][2 ] + sols[2 ][3 ]
308+ p[3 ] = sols[1 ][1 ] + 2.0 sols[1 ][2 ] + 3.0 sols[2 ][1 ] + 5.0 sols[2 ][2 ] +
309+ 6.0 sols[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
279324function lorenz! (du, u, _, t)
280325 du[1 ] = 1 * (u[2 ] - u[1 ])
0 commit comments