1+ struct Schedule
2+ var_eq_matching
3+ dummy_sub
4+ end
5+
16function filter_kwargs (kwargs)
27 kwargs = Dict (kwargs)
38 for key in keys (kwargs)
@@ -326,7 +331,7 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem,
326331 expression_module = eval_module, checkbounds = checkbounds,
327332 kwargs... )
328333 f_oop, f_iip = eval_expression ?
329- (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen) :
334+ ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen) :
330335 f_gen
331336 f (u, p, t) = f_oop (u, p, t)
332337 f (du, u, p, t) = f_iip (du, u, p, t)
@@ -351,7 +356,7 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem,
351356 expression_module = eval_module,
352357 checkbounds = checkbounds, kwargs... )
353358 tgrad_oop, tgrad_iip = eval_expression ?
354- (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in tgrad_gen) :
359+ ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in tgrad_gen) :
355360 tgrad_gen
356361 if p isa Tuple
357362 __tgrad (u, p, t) = tgrad_oop (u, p... , t)
@@ -373,7 +378,7 @@ function DiffEqBase.ODEFunction{iip, specialize}(sys::AbstractODESystem,
373378 expression_module = eval_module,
374379 checkbounds = checkbounds, kwargs... )
375380 jac_oop, jac_iip = eval_expression ?
376- (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in jac_gen) :
381+ ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in jac_gen) :
377382 jac_gen
378383 _jac (u, p, t) = jac_oop (u, p, t)
379384 _jac (J, u, p, t) = jac_iip (J, u, p, t)
@@ -541,7 +546,7 @@ function DiffEqBase.DAEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
541546 expression_module = eval_module, checkbounds = checkbounds,
542547 kwargs... )
543548 f_oop, f_iip = eval_expression ?
544- (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen) :
549+ ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen) :
545550 f_gen
546551 f (du, u, p, t) = f_oop (du, u, p, t)
547552 f (du, u, p:: MTKParameters , t) = f_oop (du, u, p... , t)
@@ -555,7 +560,7 @@ function DiffEqBase.DAEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
555560 expression_module = eval_module,
556561 checkbounds = checkbounds, kwargs... )
557562 jac_oop, jac_iip = eval_expression ?
558- (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in jac_gen) :
563+ ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in jac_gen) :
559564 jac_gen
560565 _jac (du, u, p, ˍ₋gamma, t) = jac_oop (du, u, p, ˍ₋gamma, t)
561566 _jac (du, u, p:: MTKParameters , ˍ₋gamma, t) = jac_oop (du, u, p... , ˍ₋gamma, t)
@@ -624,7 +629,7 @@ function DiffEqBase.DDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
624629 expression = Val{true },
625630 expression_module = eval_module, checkbounds = checkbounds,
626631 kwargs... )
627- f_oop, f_iip = (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen)
632+ f_oop, f_iip = ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen)
628633 f (u, h, p, t) = f_oop (u, h, p, t)
629634 f (u, h, p:: MTKParameters , t) = f_oop (u, h, p... , t)
630635 f (du, u, h, p, t) = f_iip (du, u, h, p, t)
@@ -649,10 +654,10 @@ function DiffEqBase.SDDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys
649654 expression = Val{true },
650655 expression_module = eval_module, checkbounds = checkbounds,
651656 kwargs... )
652- f_oop, f_iip = (drop_expr (@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen)
657+ f_oop, f_iip = ((@RuntimeGeneratedFunction (eval_module, ex)) for ex in f_gen)
653658 g_gen = generate_diffusion_function (sys, dvs, ps; expression = Val{true },
654659 isdde = true , kwargs... )
655- g_oop, g_iip = (drop_expr (@RuntimeGeneratedFunction (ex)) for ex in g_gen)
660+ g_oop, g_iip = ((@RuntimeGeneratedFunction (ex)) for ex in g_gen)
656661 f (u, h, p, t) = f_oop (u, h, p, t)
657662 f (u, h, p:: MTKParameters , t) = f_oop (u, h, p... , t)
658663 f (du, u, h, p, t) = f_iip (du, u, h, p, t)
@@ -849,6 +854,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
849854 symbolic_u0 = false ,
850855 u0_constructor = identity,
851856 guesses = Dict (),
857+ t = nothing ,
852858 warn_initialize_determined = true ,
853859 kwargs... )
854860 eqs = equations (sys)
@@ -870,7 +876,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
870876 u0map = unknowns (sys) .=> u0map
871877 end
872878 initializeprob = ModelingToolkit. InitializationProblem (
873- sys, u0map, parammap; guesses, warn_initialize_determined)
879+ sys, t, u0map, parammap; guesses, warn_initialize_determined)
874880 initializeprobmap = getu (initializeprob, unknowns (sys))
875881
876882 zerovars = setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0
@@ -1101,6 +1107,7 @@ function DiffEqBase.DAEProblem{iip}(sys::AbstractODESystem, du0map, u0map, tspan
11011107 end
11021108 f, du0, u0, p = process_DEProblem (DAEFunction{iip}, sys, u0map, parammap;
11031109 implicit_dae = true , du0map = du0map, check_length,
1110+ t = tspan != = nothing ? tspan[1 ] : tspan,
11041111 warn_initialize_determined, kwargs... )
11051112 diffvars = collect_differential_variables (sys)
11061113 sts = unknowns (sys)
@@ -1277,6 +1284,7 @@ function ODEProblemExpr{iip}(sys::AbstractODESystem, u0map, tspan,
12771284 error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating a `ODEProblemExpr`" )
12781285 end
12791286 f, u0, p = process_DEProblem (ODEFunctionExpr{iip}, sys, u0map, parammap; check_length,
1287+ t = tspan != = nothing ? tspan[1 ] : tspan,
12801288 kwargs... )
12811289 linenumbers = get (kwargs, :linenumbers , true )
12821290 kwargs = filter_kwargs (kwargs)
@@ -1322,6 +1330,7 @@ function DAEProblemExpr{iip}(sys::AbstractODESystem, du0map, u0map, tspan,
13221330 error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating a `DAEProblemExpr`" )
13231331 end
13241332 f, du0, u0, p = process_DEProblem (DAEFunctionExpr{iip}, sys, u0map, parammap;
1333+ t = tspan != = nothing ? tspan[1 ] : tspan,
13251334 implicit_dae = true , du0map = du0map, check_length,
13261335 kwargs... )
13271336 linenumbers = get (kwargs, :linenumbers , true )
@@ -1505,11 +1514,11 @@ function InitializationProblem(sys::AbstractODESystem, args...; kwargs...)
15051514 InitializationProblem {true} (sys, args... ; kwargs... )
15061515end
15071516
1508- function InitializationProblem (sys:: AbstractODESystem ,
1517+ function InitializationProblem (sys:: AbstractODESystem , t,
15091518 u0map:: StaticArray ,
15101519 args... ;
15111520 kwargs... )
1512- InitializationProblem {false, SciMLBase.FullSpecialize} (sys, u0map, args... ; kwargs... )
1521+ InitializationProblem {false, SciMLBase.FullSpecialize} (sys, t, u0map, args... ; kwargs... )
15131522end
15141523
15151524function InitializationProblem {true} (sys:: AbstractODESystem , args... ; kwargs... )
@@ -1520,7 +1529,8 @@ function InitializationProblem{false}(sys::AbstractODESystem, args...; kwargs...
15201529 InitializationProblem {false, SciMLBase.FullSpecialize} (sys, args... ; kwargs... )
15211530end
15221531
1523- function InitializationProblem {iip, specialize} (sys:: AbstractODESystem , u0map = [],
1532+ function InitializationProblem {iip, specialize} (sys:: AbstractODESystem ,
1533+ t, u0map = [],
15241534 parammap = DiffEqBase. NullParameters ();
15251535 guesses = [],
15261536 check_length = true ,
@@ -1530,6 +1540,8 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem, u0map =
15301540 error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating an `ODEProblem`" )
15311541 end
15321542
1543+ @show u0map
1544+
15331545 if isempty (u0map) && get_initializesystem (sys) != = nothing
15341546 isys = get_initializesystem (sys)
15351547 elseif isempty (u0map) && get_initializesystem (sys) === nothing
@@ -1548,6 +1560,8 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem, u0map =
15481560 if warn_initialize_determined && neqs < nunknown
15491561 @warn " Initialization system is underdetermined. $neqs equations for $nunknown unknowns. Initialization will default to using least squares. To suppress this warning pass warn_initialize_determined = false."
15501562 end
1563+
1564+ parammap isa DiffEqBase. NullParameters ? [independent_variable (sys) => t] : merge (todict (parammap), Dict (independent_variable (sys) => t))
15511565
15521566 if neqs == nunknown
15531567 NonlinearProblem (isys, guesses, parammap)
0 commit comments