Skip to content

Commit 5af1717

Browse files
Merge pull request #1641 from chriselrod/fixkwargs
fix kwarg expressions
2 parents 42b4b31 + d8b4a15 commit 5af1717

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ function filter_kwargs(kwargs)
55
end
66
pairs(NamedTuple(kwargs))
77
end
8+
function gen_quoted_kwargs(kwargs)
9+
kwargparam = Expr(:parameters)
10+
for kw in kwargs
11+
push!(kwargparam.args, Expr(:kw, kw[1], kw[2]))
12+
end
13+
kwargparam
14+
end
15+
816
function calculate_tgrad(sys::AbstractODESystem;
917
simplify = false)
1018
isempty(get_tgrad(sys)[]) || return get_tgrad(sys)[] # use cached tgrad, if possible
@@ -829,13 +837,14 @@ function ODEProblemExpr{iip}(sys::AbstractODESystem, u0map, tspan,
829837
kwargs...)
830838
linenumbers = get(kwargs, :linenumbers, true)
831839
kwargs = filter_kwargs(kwargs)
832-
840+
kwarg_params = gen_quoted_kwargs(kwargs)
841+
odep = Expr(:call, :ODEProblem, kwarg_params, :f, :u0, :tspan, :p)
833842
ex = quote
834843
f = $f
835844
u0 = $u0
836845
tspan = $tspan
837846
p = $p
838-
ODEProblem(f, u0, tspan, p; $(kwargs...))
847+
$odep
839848
end
840849
!linenumbers ? striplines(ex) : ex
841850
end
@@ -874,16 +883,17 @@ function DAEProblemExpr{iip}(sys::AbstractODESystem, du0map, u0map, tspan,
874883
sts = states(sys)
875884
differential_vars = map(Base.Fix2(in, diffvars), sts)
876885
kwargs = filter_kwargs(kwargs)
877-
886+
kwarg_params = gen_quoted_kwargs(kwargs)
887+
push!(kwarg_params.args, Expr(:kw, :differential_vars, :differential_vars))
888+
prob = Expr(:call, :(DAEProblem{$iip}), kwarg_params, :f, :du0, :u0, :tspan, :p)
878889
ex = quote
879890
f = $f
880891
u0 = $u0
881892
du0 = $du0
882893
tspan = $tspan
883894
p = $p
884895
differential_vars = $differential_vars
885-
DAEProblem{$iip}(f, du0, u0, tspan, p; differential_vars = differential_vars,
886-
$(kwargs...))
896+
$prob
887897
end
888898
!linenumbers ? striplines(ex) : ex
889899
end
@@ -946,11 +956,13 @@ function SteadyStateProblemExpr{iip}(sys::AbstractODESystem, u0map,
946956
check_length, kwargs...)
947957
linenumbers = get(kwargs, :linenumbers, true)
948958
kwargs = filter_kwargs(kwargs)
959+
kwarg_params = gen_quoted_kwargs(kwargs)
960+
prob = Expr(:call, :SteadyStateProblem, kwarg_params, :f, :u0, :p)
949961
ex = quote
950962
f = $f
951963
u0 = $u0
952964
p = $p
953-
SteadyStateProblem(f, u0, p; $(kwargs...))
965+
$prob
954966
end
955967
!linenumbers ? striplines(ex) : ex
956968
end

0 commit comments

Comments
 (0)