Skip to content

Commit 5f55fec

Browse files
committed
Filter the kwargs before pass to solvers
1 parent 193906a commit 5f55fec

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
function filter_kwargs(kwargs)
2+
kwargs = Dict(kwargs)
3+
for key in keys(kwargs)
4+
key in DiffEqBase.allowedkeywords || delete!(kwargs, key)
5+
end
6+
pairs(NamedTuple(kwargs))
7+
end
18
function calculate_tgrad(sys::AbstractODESystem;
29
simplify = false)
310
isempty(get_tgrad(sys)[]) || return get_tgrad(sys)[] # use cached tgrad, if possible
@@ -737,6 +744,7 @@ function DiffEqBase.ODEProblem{iip}(sys::AbstractODESystem, u0map, tspan,
737744
cb = merge_cb(event_cb, difference_cb)
738745
cb = merge_cb(cb, callback)
739746

747+
kwargs = filter_kwargs(kwargs)
740748
if cb === nothing
741749
ODEProblem{iip}(f, u0, tspan, p; kwargs...)
742750
else
@@ -774,6 +782,8 @@ function DiffEqBase.DAEProblem{iip}(sys::AbstractODESystem, du0map, u0map, tspan
774782
diffvars = collect_differential_variables(sys)
775783
sts = states(sys)
776784
differential_vars = map(Base.Fix2(in, diffvars), sts)
785+
kwargs = filter_kwargs(kwargs)
786+
777787
if has_difference
778788
DAEProblem{iip}(f, du0, u0, tspan, p;
779789
difference_cb = generate_difference_cb(sys; kwargs...),
@@ -809,6 +819,7 @@ function ODEProblemExpr{iip}(sys::AbstractODESystem, u0map, tspan,
809819
f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap; check_length,
810820
kwargs...)
811821
linenumbers = get(kwargs, :linenumbers, true)
822+
kwargs = filter_kwargs(kwargs)
812823

813824
ex = quote
814825
f = $f
@@ -853,6 +864,7 @@ function DAEProblemExpr{iip}(sys::AbstractODESystem, du0map, u0map, tspan,
853864
diffvars = collect_differential_variables(sys)
854865
sts = states(sys)
855866
differential_vars = map(Base.Fix2(in, diffvars), sts)
867+
kwargs = filter_kwargs(kwargs)
856868

857869
ex = quote
858870
f = $f
@@ -895,6 +907,7 @@ function DiffEqBase.SteadyStateProblem{iip}(sys::AbstractODESystem, u0map,
895907
f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap;
896908
steady_state = true,
897909
check_length, kwargs...)
910+
kwargs = filter_kwargs(kwargs)
898911
SteadyStateProblem{iip}(f, u0, p; kwargs...)
899912
end
900913

@@ -923,6 +936,7 @@ function SteadyStateProblemExpr{iip}(sys::AbstractODESystem, u0map,
923936
steady_state = true,
924937
check_length, kwargs...)
925938
linenumbers = get(kwargs, :linenumbers, true)
939+
kwargs = filter_kwargs(kwargs)
926940
ex = quote
927941
f = $f
928942
u0 = $u0

0 commit comments

Comments
 (0)