We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents f594030 + 54ccca4 commit 6311360Copy full SHA for 6311360
src/systems/diffeqs/odesystem.jl
@@ -238,7 +238,8 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
238
:ODESystem, force = true)
239
end
240
defaults = todict(defaults)
241
- defaults = Dict{Any, Any}(value(k) => value(v) for (k, v) in pairs(defaults))
+ defaults = Dict{Any, Any}(value(k) => value(v)
242
+ for (k, v) in pairs(defaults) if value(v) !== nothing)
243
var_to_name = Dict()
244
process_variables!(var_to_name, defaults, dvs′)
245
process_variables!(var_to_name, defaults, ps′)
src/systems/diffeqs/sdesystem.jl
@@ -203,7 +203,8 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs::AbstractArray, iv, dv
203
:SDESystem, force = true)
204
205
206
- defaults = Dict(value(k) => value(v) for (k, v) in pairs(defaults))
+ defaults = Dict(value(k) => value(v)
207
208
209
210
src/systems/discrete_system/discrete_system.jl
@@ -149,7 +149,8 @@ function DiscreteSystem(eqs::AbstractVector{<:Equation}, iv, dvs, ps;
149
:DiscreteSystem, force = true)
150
151
152
153
154
155
156
src/systems/jumps/jumpsystem.jl
@@ -176,7 +176,8 @@ function JumpSystem(eqs, iv, unknowns, ps;
176
:JumpSystem, force = true)
177
178
179
180
181
182
unknowns, ps = value.(unknowns), value.(ps)
183
src/systems/nonlinear/nonlinearsystem.jl
@@ -146,7 +146,8 @@ function NonlinearSystem(eqs, unknowns, ps;
146
147
jac = RefValue{Any}(EMPTY_JAC)
148
src/systems/optimization/constraints_system.jl
@@ -133,7 +133,8 @@ function ConstraintsSystem(constraints, unknowns, ps;
133
134
135
136
137
138
139
140
process_variables!(var_to_name, defaults, unknowns′)
src/systems/optimization/optimizationsystem.jl
@@ -111,7 +111,8 @@ function OptimizationSystem(op, unknowns, ps;
111
throw(ArgumentError("System names must be unique."))
112
113
114
115
116
117
118
src/utils.jl
@@ -252,7 +252,9 @@ end
252
253
function collect_defaults!(defs, vars)
254
for v in vars
255
- (haskey(defs, v) || !hasdefault(unwrap(v))) && continue
+ if haskey(defs, v) || !hasdefault(unwrap(v)) || (def = getdefault(v)) === nothing
256
+ continue
257
+ end
258
defs[v] = getdefault(v)
259
260
return defs
test/initial_values.jl
@@ -91,3 +91,20 @@ eqs = [D(D(z)) ~ ones(2, 2)]
91
prob = ODEProblem(sys, [], (0.0, 1.0), [A1 => 0.3])
92
@test prob.ps[B1] == 0.3
93
@test prob.ps[B2] == 0.7
94
+
95
+@testset "default=nothing is skipped" begin
96
+ @parameters p = nothing
97
+ @variables x(t)=nothing y(t)
98
+ for sys in [
99
+ ODESystem(Equation[], t, [x, y], [p]; defaults = [y => nothing], name = :osys),
100
+ SDESystem(Equation[], [], t, [x, y], [p]; defaults = [y => nothing], name = :ssys),
101
+ JumpSystem(Equation[], t, [x, y], [p]; defaults = [y => nothing], name = :jsys),
102
+ NonlinearSystem(Equation[], [x, y], [p]; defaults = [y => nothing], name = :nsys),
103
+ OptimizationSystem(
104
+ Equation[], [x, y], [p]; defaults = [y => nothing], name = :optsys),
105
+ ConstraintsSystem(
106
+ Equation[], [x, y], [p]; defaults = [y => nothing], name = :conssys)
107
+ ]
108
+ @test isempty(ModelingToolkit.defaults(sys))
109
110
+end
0 commit comments