|
| 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 |
1 | 8 | function calculate_tgrad(sys::AbstractODESystem;
|
2 | 9 | simplify = false)
|
3 | 10 | 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,
|
737 | 744 | cb = merge_cb(event_cb, difference_cb)
|
738 | 745 | cb = merge_cb(cb, callback)
|
739 | 746 |
|
| 747 | + kwargs = filter_kwargs(kwargs) |
740 | 748 | if cb === nothing
|
741 | 749 | ODEProblem{iip}(f, u0, tspan, p; kwargs...)
|
742 | 750 | else
|
@@ -774,6 +782,8 @@ function DiffEqBase.DAEProblem{iip}(sys::AbstractODESystem, du0map, u0map, tspan
|
774 | 782 | diffvars = collect_differential_variables(sys)
|
775 | 783 | sts = states(sys)
|
776 | 784 | differential_vars = map(Base.Fix2(in, diffvars), sts)
|
| 785 | + kwargs = filter_kwargs(kwargs) |
| 786 | + |
777 | 787 | if has_difference
|
778 | 788 | DAEProblem{iip}(f, du0, u0, tspan, p;
|
779 | 789 | difference_cb = generate_difference_cb(sys; kwargs...),
|
@@ -809,6 +819,7 @@ function ODEProblemExpr{iip}(sys::AbstractODESystem, u0map, tspan,
|
809 | 819 | f, u0, p = process_DEProblem(ODEFunctionExpr{iip}, sys, u0map, parammap; check_length,
|
810 | 820 | kwargs...)
|
811 | 821 | linenumbers = get(kwargs, :linenumbers, true)
|
| 822 | + kwargs = filter_kwargs(kwargs) |
812 | 823 |
|
813 | 824 | ex = quote
|
814 | 825 | f = $f
|
@@ -853,6 +864,7 @@ function DAEProblemExpr{iip}(sys::AbstractODESystem, du0map, u0map, tspan,
|
853 | 864 | diffvars = collect_differential_variables(sys)
|
854 | 865 | sts = states(sys)
|
855 | 866 | differential_vars = map(Base.Fix2(in, diffvars), sts)
|
| 867 | + kwargs = filter_kwargs(kwargs) |
856 | 868 |
|
857 | 869 | ex = quote
|
858 | 870 | f = $f
|
@@ -895,6 +907,7 @@ function DiffEqBase.SteadyStateProblem{iip}(sys::AbstractODESystem, u0map,
|
895 | 907 | f, u0, p = process_DEProblem(ODEFunction{iip}, sys, u0map, parammap;
|
896 | 908 | steady_state = true,
|
897 | 909 | check_length, kwargs...)
|
| 910 | + kwargs = filter_kwargs(kwargs) |
898 | 911 | SteadyStateProblem{iip}(f, u0, p; kwargs...)
|
899 | 912 | end
|
900 | 913 |
|
@@ -923,6 +936,7 @@ function SteadyStateProblemExpr{iip}(sys::AbstractODESystem, u0map,
|
923 | 936 | steady_state = true,
|
924 | 937 | check_length, kwargs...)
|
925 | 938 | linenumbers = get(kwargs, :linenumbers, true)
|
| 939 | + kwargs = filter_kwargs(kwargs) |
926 | 940 | ex = quote
|
927 | 941 | f = $f
|
928 | 942 | u0 = $u0
|
|
0 commit comments