@@ -29,24 +29,24 @@ begin
2929 sqrt (k1 + Y)
3030 ]
3131 jumps = [
32- ConstantRateJump (kp, [X ~ X + 1 ]),
33- ConstantRateJump (kd * X, [X ~ X - 1 ]),
34- ConstantRateJump (k1 * X, [X ~ X - 1 , Y ~ Y + 1 ]),
35- ConstantRateJump (k2 * Y, [X ~ X + 1 , Y ~ Y - 1 ]),
36- ConstantRateJump (1 , [Y ~ Y + 1 ]),
37- ConstantRateJump (Y, [Y ~ Y - 1 ])
32+ ConstantRateJump (kp, [X ~ Pre (X) + 1 ]),
33+ ConstantRateJump (kd * X, [X ~ Pre (X) - 1 ]),
34+ ConstantRateJump (k1 * X, [X ~ Pre (X) - 1 , Y ~ Pre (Y) + 1 ]),
35+ ConstantRateJump (k2 * Y, [X ~ Pre (X) + 1 , Y ~ Pre (Y) - 1 ]),
36+ ConstantRateJump (1 , [Y ~ Pre (Y) + 1 ]),
37+ ConstantRateJump (Y, [Y ~ Pre (Y) - 1 ])
3838 ]
39- observed = [XY ~ X + Y]
39+ obs = [XY ~ X + Y]
4040 loss = kd * (k1 - X)^ 2 + k2 * (kp * Y - X^ 2 )^ 2
4141
4242 # Create systems (without structural_simplify, since that might modify systems to affect intended tests).
43- osys = complete (System (diff_eqs, t; observed, name = :osys ))
43+ osys = complete (System (diff_eqs, t; observed = obs , name = :osys ))
4444 ssys = complete (System (
45- diff_eqs, t, [X, Y], [kp, kd, k1, k2]; noise_eqs, observed, name = :ssys ))
46- jsys = complete (JumpSystem (jumps, t, [X, Y], [kp, kd, k1, k2]; observed, name = :jsys ))
47- nsys = complete (System (alg_eqs; observed, name = :nsys ))
45+ diff_eqs, t, [X, Y], [kp, kd, k1, k2]; noise_eqs, observed = obs , name = :ssys ))
46+ jsys = complete (JumpSystem (jumps, t, [X, Y], [kp, kd, k1, k2]; observed = obs , name = :jsys ))
47+ nsys = complete (System (alg_eqs; observed = obs , name = :nsys ))
4848 optsys = complete (OptimizationSystem (
49- loss, [X, Y], [kp, kd, k1, k2]; observed, name = :optsys ))
49+ loss, [X, Y], [kp, kd, k1, k2]; observed = obs , name = :optsys ))
5050end
5151
5252# Prepares problems, integrators, and solutions.
@@ -59,25 +59,23 @@ begin
5959 # Creates problems.
6060 oprob = ODEProblem (osys, [u0_vals; p_vals], tspan)
6161 sprob = SDEProblem (ssys, [u0_vals; p_vals], tspan)
62- dprob = DiscreteProblem (jsys, )
6362 jprob = JumpProblem (jsys, [u0_vals; p_vals], tspan; aggregator = Direct (), rng)
6463 nprob = NonlinearProblem (nsys, [u0_vals; p_vals])
6564 hcprob = NonlinearProblem (HomotopyNonlinearFunction (nprob. f), nprob. u0, nprob. p)
6665 ssprob = SteadyStateProblem (osys, [u0_vals; p_vals])
6766 optprob = OptimizationProblem (optsys, [u0_vals; p_vals], grad = true , hess = true )
68- problems = [oprob, sprob, dprob, jprob, nprob, hcprob, ssprob, optprob]
69- systems = [osys, ssys, jsys, jsys, nsys, nsys, osys, optsys]
67+ problems = [oprob, sprob, jprob, nprob, hcprob, ssprob, optprob]
68+ systems = [osys, ssys, jsys, nsys, nsys, osys, optsys]
7069
7170 # Creates an `EnsembleProblem` for each problem.
7271 eoprob = EnsembleProblem (oprob)
7372 esprob = EnsembleProblem (sprob)
74- edprob = EnsembleProblem (dprob)
7573 ejprob = EnsembleProblem (jprob)
7674 enprob = EnsembleProblem (nprob)
7775 essprob = EnsembleProblem (ssprob)
7876 eoptprob = EnsembleProblem (optprob)
79- eproblems = [eoprob, esprob, edprob, ejprob, enprob, essprob, optprob]
80- esystems = [osys, ssys, jsys, jsys, nsys, osys, optsys]
77+ eproblems = [eoprob, esprob, ejprob, enprob, essprob, optprob]
78+ esystems = [osys, ssys, jsys, nsys, osys, optsys]
8179
8280 # Creates integrators.
8381 oint = init (oprob, Tsit5 (); save_everystep = false )
912910@testset " Continuous interpolation before discrete save" begin
913911 @variables x (t)
914912 @parameters c (t)
913+ devt = ModelingToolkit. SymbolicDiscreteCallback (1.0 , [c ~ Pre (c) + 1 ]; discrete_parameters = [c], iv = t)
915914 @mtkcompile sys = System (
916- D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [1.0 => [c ~ Pre (c) + 1 ] ])
915+ D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [devt ])
917916 prob = ODEProblem (sys, [x => 0.0 , c => 1.0 ], (0.0 , 2pi ))
918917 sol = solve (prob, Tsit5 ())
919918 @test_nowarn sol (- 0.1 ; idxs = sys. x)
925924@testset " DDEs" begin
926925 function oscillator (; name, k = 1.0 , τ = 0.01 )
927926 @parameters k= k τ= τ
928- @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t)= 0.0 + t delx (t)
927+ @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t) delx (t)
929928 eqs = [D (x (t)) ~ y,
930929 D (y) ~ - k * x (t - τ) + jcn,
931930 delx ~ x (t - τ)]
956955 function oscillator (; name, k = 1.0 , τ = 0.01 )
957956 @parameters k= k τ= τ
958957 @brownian a
959- @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t)= 0.0 + t delx (t)
958+ @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t) delx (t)
960959 eqs = [D (x (t)) ~ y + a,
961960 D (y) ~ - k * x (t - τ) + jcn,
962961 delx ~ x (t - τ)]
988987 end
989988 db = 1.0 => ModelingToolkit. ImperativeAffect (affect2!; modified = (; k))
990989
991- @named ssys = System (D (A) ~ k * A, t, [A], [k]; noise_eqs = [0.0 ] discrete_events = db)
990+ @named ssys = System (D (A) ~ k * A, t, [A], [k]; noise_eqs = [0.0 ], discrete_events = db)
992991 ssys = complete (ssys)
993992 prob = SDEProblem (ssys, [A => 1.0 , k => 1.0 ], (0.0 , 4.0 ))
994993 sol = solve (prob, RI5 ())
0 commit comments