@@ -40,11 +40,11 @@ begin
40
40
loss = kd * (k1 - X)^ 2 + k2 * (kp * Y - X^ 2 )^ 2
41
41
42
42
# Create systems (without structural_simplify, since that might modify systems to affect intended tests).
43
- osys = complete (ODESystem (diff_eqs, t; observed, name = :osys ))
44
- ssys = complete (SDESystem (
45
- diff_eqs, noise_eqs, t, [X, Y], [kp, kd, k1, k2]; observed, name = :ssys ))
43
+ osys = complete (System (diff_eqs, t; observed, name = :osys ))
44
+ ssys = complete (System (
45
+ diff_eqs, t, [X, Y], [kp, kd, k1, k2]; noise_eqs, observed, name = :ssys ))
46
46
jsys = complete (JumpSystem (jumps, t, [X, Y], [kp, kd, k1, k2]; observed, name = :jsys ))
47
- nsys = complete (NonlinearSystem (alg_eqs; observed, name = :nsys ))
47
+ nsys = complete (System (alg_eqs; observed, name = :nsys ))
48
48
optsys = complete (OptimizationSystem (
49
49
loss, [X, Y], [kp, kd, k1, k2]; observed, name = :optsys ))
50
50
end
@@ -57,14 +57,14 @@ begin
57
57
p_vals = [kp => 1.0 , kd => 0.1 , k1 => 0.25 , k2 => 0.5 ]
58
58
59
59
# Creates problems.
60
- oprob = ODEProblem (osys, u0_vals, tspan, p_vals )
61
- sprob = SDEProblem (ssys, u0_vals, tspan, p_vals )
62
- dprob = DiscreteProblem (jsys, u0_vals, tspan, p_vals )
63
- jprob = JumpProblem (jsys, deepcopy (dprob), Direct (); rng)
64
- nprob = NonlinearProblem (nsys, u0_vals, p_vals)
60
+ oprob = ODEProblem (osys, [ u0_vals; p_vals], tspan )
61
+ sprob = SDEProblem (ssys, [ u0_vals; p_vals], tspan )
62
+ dprob = DiscreteProblem (jsys, )
63
+ jprob = JumpProblem (jsys, [u0_vals; p_vals], tspan; aggregator = Direct (), rng)
64
+ nprob = NonlinearProblem (nsys, [ u0_vals; p_vals] )
65
65
hcprob = NonlinearProblem (HomotopyNonlinearFunction (nprob. f), nprob. u0, nprob. p)
66
- ssprob = SteadyStateProblem (osys, u0_vals, p_vals)
67
- optprob = OptimizationProblem (optsys, u0_vals, p_vals, grad = true , hess = true )
66
+ ssprob = SteadyStateProblem (osys, [ u0_vals; p_vals] )
67
+ optprob = OptimizationProblem (optsys, [ u0_vals; p_vals] , grad = true , hess = true )
68
68
problems = [oprob, sprob, dprob, jprob, nprob, hcprob, ssprob, optprob]
69
69
systems = [osys, ssys, jsys, jsys, nsys, nsys, osys, optsys]
70
70
358
358
ps = @parameters p[1 : 3 ] = [1 , 2 , 3 ]
359
359
eqs = [collect (D .(x) .~ x)
360
360
D (y) ~ norm (x) * y - x[1 ]]
361
- @named sys = ODESystem (eqs, t, [sts... ;], ps)
361
+ @named sys = System (eqs, t, [sts... ;], ps)
362
362
sys = complete (sys)
363
363
prob = ODEProblem (sys, [], (0 , 1.0 ))
364
364
sol = solve (prob, Tsit5 ())
510
510
# Issue https://github.com/SciML/ModelingToolkit.jl/issues/2697
511
511
@testset " Interpolation of derivative of observed variables" begin
512
512
@variables x (t) y (t) z (t) w (t)[1 : 2 ]
513
- @named sys = ODESystem (
513
+ @named sys = System (
514
514
[D (x) ~ 1 , y ~ x^ 2 , z ~ 2 y^ 2 + 3 x, w[1 ] ~ x + y + z, w[2 ] ~ z * x * y], t)
515
- sys = structural_simplify (sys)
515
+ sys = mtkcompile (sys)
516
516
prob = ODEProblem (sys, [x => 0.0 ], (0.0 , 1.0 ))
517
517
sol = solve (prob, Tsit5 ())
518
518
@test_throws ErrorException sol (1.0 , Val{1 }, idxs = y)
912
912
@testset " Continuous interpolation before discrete save" begin
913
913
@variables x (t)
914
914
@parameters c (t)
915
- @mtkbuild sys = ODESystem (
916
- D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [1.0 => [c ~ c + 1 ]])
917
- prob = ODEProblem (sys, [x => 0.0 ], ( 0.0 , 2pi ), [ c => 1.0 ])
915
+ @mtkcompile sys = System (
916
+ D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [1.0 => [c ~ Pre (c) + 1 ]])
917
+ prob = ODEProblem (sys, [x => 0.0 , c => 1.0 ], ( 0.0 , 2pi ) )
918
918
sol = solve (prob, Tsit5 ())
919
919
@test_nowarn sol (- 0.1 ; idxs = sys. x)
920
920
@test_nowarn sol (- 0.1 ; idxs = [sys. x, 2 sys. x])
939
939
osc2. jcn ~ osc1. delx]
940
940
@named coupledOsc = System (eqs, t)
941
941
@named coupledOsc = compose (coupledOsc, systems)
942
- sys = structural_simplify (coupledOsc)
942
+ sys = mtkcompile (coupledOsc)
943
943
prob = DDEProblem (sys, [], (0.0 , 10.0 ); constant_lags = [sys. osc1. τ, sys. osc2. τ])
944
944
sym = sys. osc1. delx
945
945
delay = sys. osc1. τ
970
970
osc2. jcn ~ osc1. delx]
971
971
@named coupledOsc = System (eqs, t)
972
972
@named coupledOsc = compose (coupledOsc, systems)
973
- sys = structural_simplify (coupledOsc)
973
+ sys = mtkcompile (coupledOsc)
974
974
prob = SDDEProblem (sys, [], (0.0 , 10.0 ); constant_lags = [sys. osc1. τ, sys. osc2. τ])
975
975
sym = sys. osc1. delx
976
976
delay = sys. osc1. τ
@@ -983,14 +983,14 @@ end
983
983
@testset " RODESolutions save discretes" begin
984
984
@parameters k (t)
985
985
@variables A (t)
986
- function affect2! (integ, u, p, ctx )
987
- integ . ps[p . k] += 1.0
986
+ function affect2! (m, o, ctx, integ )
987
+ return (; k = m . k + 1.0 )
988
988
end
989
- db = 1.0 => (affect2!, [], [k], [k], nothing )
989
+ db = 1.0 => ModelingToolkit . ImperativeAffect (affect2!; modified = (; k) )
990
990
991
- @named ssys = SDESystem (D (A) ~ k * A, [ 0.0 ], t, [A], [k], discrete_events = db)
991
+ @named ssys = System (D (A) ~ k * A, t, [A], [k]; noise_eqs = [ 0.0 ] discrete_events = db)
992
992
ssys = complete (ssys)
993
- prob = SDEProblem (ssys, [A => 1.0 ], (0.0 , 4.0 ), [k => 1.0 ] )
993
+ prob = SDEProblem (ssys, [A => 1.0 , k => 1.0 ], (0.0 , 4.0 ))
994
994
sol = solve (prob, RI5 ())
995
995
@test sol[k] isa AbstractVector
996
996
@test sol[k] == [1.0 , 2.0 , 3.0 , 4.0 ]
0 commit comments