Skip to content

Commit a216060

Browse files
fix defaults
1 parent 557211c commit a216060

File tree

6 files changed

+43
-39
lines changed

6 files changed

+43
-39
lines changed

src/structural_transformation/codegen.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,8 @@ function ODAEProblem{iip}(
495495
ps = parameters(sys)
496496
defs = defaults(sys)
497497

498+
defs = ModelingToolkit.mergedefaults(defs,parammap,ps)
499+
defs = ModelingToolkit.mergedefaults(defs,u0map,dvs)
498500
u0 = ModelingToolkit.varmap_to_vars(u0map, dvs; defaults=defs)
499501
p = ModelingToolkit.varmap_to_vars(parammap, ps; defaults=defs)
500502

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -557,22 +557,22 @@ function process_DEProblem(constructor, sys::AbstractODESystem,u0map,parammap;
557557
eqs = equations(sys)
558558
dvs = states(sys)
559559
ps = parameters(sys)
560-
defs = defaults(sys)
561560
iv = get_iv(sys)
562-
563-
pdefs = mergedefaults(defs, parammap, ps)
564-
u0defs = mergedefaults(defs, u0map, dvs)
565-
566-
u0 = varmap_to_vars(u0map, dvs; defaults=u0defs)
561+
562+
defs = defaults(sys)
563+
defs = mergedefaults(defs,parammap,ps)
564+
defs = mergedefaults(defs,u0map,dvs)
565+
566+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
567+
p = varmap_to_vars(parammap,ps; defaults=defs)
567568
if implicit_dae && du0map !== nothing
568569
ddvs = map(Differential(iv), dvs)
569-
du0defs = mergedefaults(defs, du0map, ddvs)
570-
du0 = varmap_to_vars(du0map, ddvs; defaults=du0defs, toterm=identity)
570+
defs = mergedefaults(defs,du0map, ddvs)
571+
du0 = varmap_to_vars(du0map,ddvs; defaults=defs, toterm=identity)
571572
else
572573
du0 = nothing
573574
ddvs = nothing
574575
end
575-
p = varmap_to_vars(parammap, ps; defaults=pdefs)
576576

577577
check_eqs_u0(eqs, dvs, u0; kwargs...)
578578

src/systems/discrete_system/discrete_system.jl

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -174,33 +174,17 @@ function DiffEqBase.DiscreteProblem(sys::DiscreteSystem,u0map,tspan,
174174
ps = parameters(sys)
175175
eqs = equations(sys)
176176
eqs = linearize_eqs(sys, eqs)
177-
defs = defaults(sys)
178177
iv = get_iv(sys)
179-
180-
if parammap isa Dict
181-
u0defs = merge(parammap, defs)
182-
elseif eltype(parammap) <: Pair
183-
u0defs = merge(Dict(parammap), defs)
184-
elseif eltype(parammap) <: Number
185-
u0defs = merge(Dict(zip(ps, parammap)), defs)
186-
else
187-
u0defs = defs
188-
end
189-
if u0map isa Dict
190-
pdefs = merge(u0map, defs)
191-
elseif eltype(u0map) <: Pair
192-
pdefs = merge(Dict(u0map), defs)
193-
elseif eltype(u0map) <: Number
194-
pdefs = merge(Dict(zip(dvs, u0map)), defs)
195-
else
196-
pdefs = defs
197-
end
198-
199-
u0 = varmap_to_vars(u0map,dvs; defaults=u0defs)
178+
179+
defs = defaults(sys)
180+
defs = mergedefaults(defs,parammap,ps)
181+
defs = mergedefaults(defs,u0map,dvs)
182+
183+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
184+
p = varmap_to_vars(parammap,ps; defaults=defs)
200185

201186
rhss = [eq.rhs for eq in eqs]
202187
u = dvs
203-
p = varmap_to_vars(parammap,ps; defaults=pdefs)
204188

205189
f_gen = generate_function(sys; expression=Val{eval_expression}, expression_module=eval_module)
206190
f_oop, _ = (@RuntimeGeneratedFunction(eval_module, ex) for ex in f_gen)

src/systems/jumps/jumpsystem.jl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,17 @@ dprob = DiscreteProblem(js, u₀map, tspan, parammap)
220220
"""
221221
function DiffEqBase.DiscreteProblem(sys::JumpSystem, u0map, tspan::Union{Tuple,Nothing},
222222
parammap=DiffEqBase.NullParameters(); checkbounds=false, kwargs...)
223+
224+
dvs = states(sys)
225+
ps = parameters(sys)
226+
223227
defs = defaults(sys)
224-
u0 = varmap_to_vars(u0map, states(sys); defaults=defs)
225-
p = varmap_to_vars(parammap, parameters(sys); defaults=defs)
228+
# defs = mergedefaults(defs,parammap,ps)
229+
# defs = mergedefaults(defs,u0map,dvs) # fill result in wrong type for u0
230+
231+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
232+
p = varmap_to_vars(parammap,ps; defaults=defs)
233+
226234
f = DiffEqBase.DISCRETE_INPLACE_DEFAULT
227235

228236
# just taken from abstractodesystem.jl for ODEFunction def

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,11 @@ function process_NonlinearProblem(constructor, sys::NonlinearSystem,u0map,paramm
264264
eqs = equations(sys)
265265
dvs = states(sys)
266266
ps = parameters(sys)
267+
267268
defs = defaults(sys)
269+
defs = mergedefaults(defs,parammap,ps)
270+
defs = mergedefaults(defs,u0map,dvs)
271+
268272
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
269273
p = varmap_to_vars(parammap,ps; defaults=defs)
270274

src/systems/optimization/optimizationsystem.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ DiffEqBase.OptimizationProblem(sys::OptimizationSystem,args...;kwargs...) =
129129

130130
"""
131131
```julia
132-
function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem,
132+
function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem,u0map,
133133
parammap=DiffEqBase.NullParameters();
134-
u0=nothing, lb=nothing, ub=nothing,
134+
lb=nothing, ub=nothing,
135135
grad = false,
136136
hess = false, sparse = false,
137137
checkbounds = false,
@@ -142,7 +142,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem,
142142
Generates an OptimizationProblem from an OptimizationSystem and allows for automatically
143143
symbolically calculating numerical enhancements.
144144
"""
145-
function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0,
145+
function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
146146
parammap=DiffEqBase.NullParameters();
147147
lb=nothing, ub=nothing,
148148
grad = false,
@@ -177,7 +177,10 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0,
177177
_f = DiffEqBase.OptimizationFunction{iip,AutoModelingToolkit,typeof(f),typeof(_grad),typeof(_hess),Nothing,Nothing,Nothing,Nothing}(f,AutoModelingToolkit(),_grad,_hess,nothing,nothing,nothing,nothing)
178178

179179
defs = defaults(sys)
180-
u0 = varmap_to_vars(u0,dvs; defaults=defs)
180+
defs = mergedefaults(defs,parammap,ps)
181+
defs = mergedefaults(defs,u0map,dvs)
182+
183+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
181184
p = varmap_to_vars(parammap,ps; defaults=defs)
182185
lb = varmap_to_vars(lb,dvs; check=false)
183186
ub = varmap_to_vars(ub,dvs; check=false)
@@ -233,7 +236,10 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
233236
end
234237

235238
defs = defaults(sys)
236-
u0 = varmap_to_vars(u0,dvs; defaults=defs)
239+
defs = mergedefaults(defs,parammap,ps)
240+
defs = mergedefaults(defs,u0map,dvs)
241+
242+
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
237243
p = varmap_to_vars(parammap,ps; defaults=defs)
238244
lb = varmap_to_vars(lb,dvs)
239245
ub = varmap_to_vars(ub,dvs)

0 commit comments

Comments
 (0)