@@ -154,7 +154,7 @@ function time_varying_as_func(x, sys)
154
154
end
155
155
156
156
function calculate_massmatrix (sys:: AbstractODESystem ; simplify= false )
157
- eqs = equations (sys)
157
+ eqs = [eq for eq in equations (sys) if ! isdifferenceeq (eq)]
158
158
dvs = states (sys)
159
159
M = zeros (length (eqs),length (eqs))
160
160
state2idx = Dict (s => i for (i, s) in enumerate (dvs))
@@ -566,7 +566,12 @@ symbolically calculating numerical enhancements.
566
566
function DiffEqBase. ODEProblem {iip} (sys:: AbstractODESystem ,u0map,tspan,
567
567
parammap= DiffEqBase. NullParameters ();kwargs... ) where iip
568
568
f, u0, p = process_DEProblem (ODEFunction{iip}, sys, u0map, parammap; kwargs... )
569
- ODEProblem {iip} (f,u0,tspan,p;kwargs... )
569
+ if any (isdifferenceeq .(equations (sys)))
570
+ ODEProblem {iip} (f,u0,tspan,p;difference_cb= generate_difference_cb (sys),kwargs... )
571
+ else
572
+ ODEProblem {iip} (f,u0,tspan,p;kwargs... )
573
+ end
574
+
570
575
end
571
576
572
577
"""
@@ -593,7 +598,12 @@ function DiffEqBase.DAEProblem{iip}(sys::AbstractODESystem,du0map,u0map,tspan,
593
598
diffvars = collect_differential_variables (sys)
594
599
sts = states (sys)
595
600
differential_vars = map (Base. Fix2 (in, diffvars), sts)
596
- DAEProblem {iip} (f,du0,u0,tspan,p;differential_vars= differential_vars,kwargs... )
601
+ if any (isdifferenceeq .(equations (sys)))
602
+ DAEProblem {iip} (f,du0,u0,tspan,p;differential_vars= differential_vars,kwargs... )
603
+ else
604
+ DAEProblem {iip} (f,du0,u0,tspan,p;difference_cb= generate_difference_cb (sys),differential_vars= differential_vars,kwargs... )
605
+ end
606
+
597
607
end
598
608
599
609
"""
0 commit comments