Skip to content

Commit 716d99f

Browse files
refactor!: require systems to be completed before creating an XProblemExpr
1 parent 367ebd4 commit 716d99f

File tree

6 files changed

+24
-0
lines changed

6 files changed

+24
-0
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,9 @@ struct ODEProblemExpr{iip} end
12001200
function ODEProblemExpr{iip}(sys::AbstractODESystem, u0map, tspan,
12011201
parammap = DiffEqBase.NullParameters(); check_length = true,
12021202
kwargs...) where {iip}
1203+
if !iscomplete(sys)
1204+
error("A completed system is required. Call `complete` or `structural_simplify` on the system before creating a `ODEProblemExpr`")
1205+
end
12031206
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap; check_length,
12041207
kwargs...)
12051208
linenumbers = get(kwargs, :linenumbers, true)
@@ -1242,6 +1245,9 @@ struct DAEProblemExpr{iip} end
12421245
function DAEProblemExpr{iip}(sys::AbstractODESystem, du0map, u0map, tspan,
12431246
parammap = DiffEqBase.NullParameters(); check_length = true,
12441247
kwargs...) where {iip}
1248+
if !iscomplete(sys)
1249+
error("A completed system is required. Call `complete` or `structural_simplify` on the system before creating a `DAEProblemExpr`")
1250+
end
12451251
f, du0, u0, p = process_DEProblem(DAEFunctionExpr{iip}, sys, u0map, parammap;
12461252
implicit_dae = true, du0map = du0map, check_length,
12471253
kwargs...)
@@ -1322,6 +1328,9 @@ function SteadyStateProblemExpr{iip}(sys::AbstractODESystem, u0map,
13221328
parammap = SciMLBase.NullParameters();
13231329
check_length = true,
13241330
kwargs...) where {iip}
1331+
if !iscomplete(sys)
1332+
error("A completed system is required. Call `complete` or `structural_simplify` on the system before creating a `SteadyStateProblemExpr`")
1333+
end
13251334
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap;
13261335
steady_state = true,
13271336
check_length, kwargs...)

src/systems/diffeqs/sdesystem.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,9 @@ function SDEProblemExpr{iip}(sys::SDESystem, u0map, tspan,
635635
parammap = DiffEqBase.NullParameters();
636636
sparsenoise = nothing, check_length = true,
637637
kwargs...) where {iip}
638+
if !iscomplete(sys)
639+
error("A completed `SDESystem` is required. Call `complete` or `structural_simplify` on the system before creating an `SDEProblemExpr`")
640+
end
638641
f, u0, p = process_DEProblem(SDEFunctionExpr{iip}, sys, u0map, parammap; check_length,
639642
kwargs...)
640643
linenumbers = get(kwargs, :linenumbers, true)

src/systems/discrete_system/discrete_system.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,9 @@ function DiscreteProblemExpr{iip}(sys::DiscreteSystem, u0map, tspan,
452452
parammap = DiffEqBase.NullParameters();
453453
check_length = true,
454454
kwargs...) where {iip}
455+
if !iscomplete(sys)
456+
error("A completed `DiscreteSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `DiscreteProblemExpr`")
457+
end
455458
f, u0, p = process_DiscreteProblem(DiscreteFunctionExpr{iip}, sys, u0map, parammap;
456459
check_length, kwargs...)
457460
linenumbers = get(kwargs, :linenumbers, true)

src/systems/jumps/jumpsystem.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,9 @@ function DiscreteProblemExpr{iip}(sys::JumpSystem, u0map, tspan::Union{Tuple, No
356356
parammap = DiffEqBase.NullParameters();
357357
use_union = false,
358358
kwargs...) where {iip}
359+
if !iscomplete(sys)
360+
error("A completed `JumpSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `DiscreteProblemExpr`")
361+
end
359362
dvs = unknowns(sys)
360363
ps = parameters(sys)
361364
defs = defaults(sys)

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,9 @@ function NonlinearProblemExpr{iip}(sys::NonlinearSystem, u0map,
399399
parammap = DiffEqBase.NullParameters();
400400
check_length = true,
401401
kwargs...) where {iip}
402+
if !iscomplete(sys)
403+
error("A completed `NonlinearSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `NonlinearProblemExpr`")
404+
end
402405
f, u0, p = process_NonlinearProblem(NonlinearFunctionExpr{iip}, sys, u0map, parammap;
403406
check_length, kwargs...)
404407
linenumbers = get(kwargs, :linenumbers, true)

src/systems/optimization/optimizationsystem.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,9 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0map,
422422
linenumbers = false, parallel = SerialForm(),
423423
use_union = false,
424424
kwargs...) where {iip}
425+
if !iscomplete(sys)
426+
error("A completed `OptimizationSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `OptimizationProblemExpr`")
427+
end
425428
if haskey(kwargs, :lcons) || haskey(kwargs, :ucons)
426429
Base.depwarn("`lcons` and `ucons` are deprecated. Specify constraints directly instead.",
427430
:OptimizationProblem, force = true)

0 commit comments

Comments
 (0)