33struct QSS{T} <: Integrator
44 order :: UInt8
55 model :: Model
6+ p :: Vector{Float64}
67 q :: Vector{Taylor1}
78 t :: Vector{Float64}
89 Δrel :: Float64
910 Δabs :: Float64
10- function QSS {T} (model:: Model , t:: Float64 , x₀:: Vector{Float64} ;
11+ function QSS {T} (model:: Model , t:: Float64 , x₀:: Vector{Float64} , p :: Vector{Float64} ;
1112 order:: Number = 4 , Δrel:: Float64 = 1e-6 , Δabs:: Float64 = 1e-6 ) where T
12- qss = new (UInt8 (order), model, Vector {Taylor1} (), Vector {Float64} (), Δrel, Δabs)
13+ qss = new (UInt8 (order), model, p, Vector {Taylor1} (), Vector {Float64} (), Δrel, Δabs)
1314 t₀ = t + Taylor1 (Float64, qss. order+ 1 )
1415 for q₀ in x₀
1516 push! (qss. t, t)
1617 push! (qss. q, q₀ + Taylor1 (zeros (Float64, qss. order+ 1 )))
1718 end
1819 for i in 1 : qss. order- 1
1920 for (j, q₀) in enumerate (x₀)
20- qss. q[j] = integrate (model. f[j](t₀, qss. q, model . p), q₀)
21+ qss. q[j] = integrate (model. f[j](t₀, qss. q, p), q₀)
2122 end
2223 end
2324 qss
@@ -34,7 +35,7 @@ function initial_values(qss::QSS, t::Float64)
3435 t₀ = t + Taylor1 (Float64, qss. order+ 1 )
3536 x₀ = Vector {Taylor1} ()
3637 for (i, f) in enumerate (qss. model. f)
37- push! (x₀, integrate (f (t₀, qss. q, qss. model . p), qss. q[i]. coeffs[1 ]))
38+ push! (x₀, integrate (f (t₀, qss. q, qss. p), qss. q[i]. coeffs[1 ]))
3839 end
3940 x₀
4041end
@@ -56,7 +57,7 @@ function step(var::Variable, cont::Continuous, qss::QSS)
5657 for k in filter (k-> qss. model. deps[j,k], 1 : n)
5758 advance_time (qss, k, t)
5859 end
59- dep. x = integrate (qss. model. f[j](t₀, qss. q, qss. model . p), x₀)
60+ dep. x = integrate (qss. model. f[j](t₀, qss. q, qss. p), x₀)
6061 Δt = recompute_next_time (qss, var. x, qss. q[j], max (qss. Δrel* x₀, qss. Δabs))
6162 schedule (dep, cont, qss, Δt)
6263 end
0 commit comments