Skip to content

Commit 7ba257f

Browse files
fix detiming
1 parent 2e31d7a commit 7ba257f

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

src/systems/diffeqs/diffeqsystem.jl

+2
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ function calculate_tgrad(sys::ODESystem)
144144
rhs = [detime_dvs(eq.rhs) for eq sys.eqs]
145145
iv = sys.iv()
146146
notime_tgrad = [expand_derivatives(ModelingToolkit.Differential(iv)(r)) for r in rhs]
147+
@show notime_tgrad
147148
tgrad = retime_dvs.(notime_tgrad,(sys.dvs,),iv)
149+
@show tgrad
148150
sys.tgrad[] = tgrad
149151
return tgrad
150152
end

src/utils.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ end
3737

3838
function detime_dvs(op::Operation)
3939
if op.op isa Variable
40-
Operation(Variable(op.op.name),Expression[])
40+
Operation(Variable(op.op.name,known=op.op.known),Expression[])
4141
else
4242
Operation(op.op,detime_dvs.(op.args))
4343
end

test/system_construction.jl

+12
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ sol = Sfw_t \ @SArray ones(3)
7474
@test sol isa SArray
7575
@test sol -(I/0.2 - J)\ones(3)
7676

77+
eqs = [D(x) ~ σ*(y-x),
78+
D(y) ~ x*-z)-y*t,
79+
D(z) ~ x*y - β*z]
80+
de = ODESystem(eqs)
81+
ModelingToolkit.calculate_tgrad(de)
82+
83+
tgrad_oop, tgrad_iip = eval.(ModelingToolkit.generate_tgrad(de))
84+
@test tgrad_oop(u,p,t) == [0.0,-u[2],0.0]
85+
du = zeros(3)
86+
tgrad_iip(du,u,p,t)
87+
@test du == [0.0,-u[2],0.0]
88+
7789
@testset "time-varying parameters" begin
7890
@parameters σ′(t-1)
7991
eqs = [D(x) ~ σ′*(y-x),

0 commit comments

Comments
 (0)