@@ -514,11 +514,10 @@ end
514514 testsol (ssys3, SDEProblem, RI5, u0, p, tspan; tstops = [1.0 ], paramtotest = k)
515515
516516 # mixing with a func affect
517- function affect! (integrator, u, p, ctx)
518- integrator. ps[p. k] = 1.0
519- nothing
517+ function affect! (mod, obs, ctx, integ)
518+ return (; k = 1.0 )
520519 end
521- cb2‵‵ = [2.0 ] => (affect!, [], [k], [k], nothing )
520+ cb2‵‵ = [2.0 ] => (f = affect!, modified = (; k) )
522521 @named osys4 = System (eqs, t, [A], [k, t1], discrete_events = [cb1, cb2‵‵])
523522 @named ssys4 = SDESystem (eqs, [0.0 ], t, [A], [k, t1],
524523 discrete_events = [cb1, cb2‵‵])
527526 testsol (ssys4, SDEProblem, RI5, u0, p, tspan; tstops = [1.0 ], paramtotest = k)
528527
529528 # mixing with symbolic condition in the func affect
530- cb2‵‵‵ = (t == t2) => (affect!, [], [k], [k], nothing )
529+ cb2‵‵‵ = (t == t2) => (f = affect!, modified = (; k) )
531530 @named osys5 = System (eqs, t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵‵‵])
532531 @named ssys5 = SDESystem (eqs, [0.0 ], t, [A], [k, t1, t2],
533532 discrete_events = [cb1, cb2‵‵‵])
@@ -605,17 +604,15 @@ end
605604 testsol (jsys3, u0, p, tspan; tstops = [1.0 ], rng, paramtotest = k)
606605
607606 # mixing with a func affect
608- function affect! (integrator, u, p, ctx)
609- integrator. ps[p. k] = 1.0
610- reset_aggregated_jumps! (integrator)
611- nothing
607+ function affect! (mod, obs, ctx, integrator)
608+ return (; k = 1.0 )
612609 end
613- cb2‵‵ = [2.0 ] => (affect!, [], [k], [k], nothing )
610+ cb2‵‵ = [2.0 ] => (f = affect!, modified = (; k) )
614611 @named jsys4 = JumpSystem (eqs, t, [A], [k, t1], discrete_events = [cb1, cb2‵‵])
615612 testsol (jsys4, u0, p, tspan; tstops = [1.0 ], rng, paramtotest = k)
616613
617614 # mixing with symbolic condition in the func affect
618- cb2‵‵‵ = (t == t2) => (affect!, [], [k], [k], nothing )
615+ cb2‵‵‵ = (t == t2) => (f = affect!, modified = (; k) )
619616 @named jsys5 = JumpSystem (eqs, t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵‵‵])
620617 testsol (jsys5, u0, p, tspan; tstops = [1.0 , 2.0 ], rng, paramtotest = k)
621618 @named jsys6 = JumpSystem (eqs, t, [A], [k, t1, t2], discrete_events = [cb2‵‵‵, cb1])
@@ -649,13 +646,13 @@ end
649646 # baseline affect (pos + neg + left root find)
650647 @variables c1 (t)= 1.0 c2 (t)= 1.0 # c1 = cos(t), c2 = cos(3t)
651648 eqs = [D (c1) ~ - sin (t); D (c2) ~ - 3 * sin (3 * t)]
652- record_crossings (i, u, _, c ) = push! (c, i . t => i . u[u . v] )
649+ record_crossings (mod, obs, ctx, integ ) = push! (ctx, integ . t => obs . v )
653650 cr1 = []
654651 cr2 = []
655652 evt1 = ModelingToolkit. SymbolicContinuousCallback (
656- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1))
653+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1))
657654 evt2 = ModelingToolkit. SymbolicContinuousCallback (
658- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2))
655+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2))
659656 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
660657 trigsys_ss = structural_simplify (trigsys)
661658 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -673,11 +670,11 @@ end
673670 cr1n = []
674671 cr2n = []
675672 evt1 = ModelingToolkit. SymbolicContinuousCallback (
676- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p);
677- affect_neg = (record_crossings, [c1 => :v ], [], [], cr1n))
673+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p);
674+ affect_neg = (f = record_crossings, observed = (; v = c1), ctx = cr1n))
678675 evt2 = ModelingToolkit. SymbolicContinuousCallback (
679- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p);
680- affect_neg = (record_crossings, [c2 => :v ], [], [], cr2n))
676+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p);
677+ affect_neg = (f = record_crossings, observed = (; v = c2), ctx = cr2n))
681678 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
682679 trigsys_ss = structural_simplify (trigsys)
683680 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
699696 cr1p = []
700697 cr2p = []
701698 evt1 = ModelingToolkit. SymbolicContinuousCallback (
702- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p); affect_neg = nothing )
699+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p); affect_neg = nothing )
703700 evt2 = ModelingToolkit. SymbolicContinuousCallback (
704- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p); affect_neg = nothing )
701+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p); affect_neg = nothing )
705702 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
706703 trigsys_ss = structural_simplify (trigsys)
707704 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -717,10 +714,10 @@ end
717714 cr1n = []
718715 cr2n = []
719716 evt1 = ModelingToolkit. SymbolicContinuousCallback (
720- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p); affect_neg = nothing )
717+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p); affect_neg = nothing )
721718 evt2 = ModelingToolkit. SymbolicContinuousCallback (
722- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p);
723- affect_neg = (record_crossings, [c2 => :v ], [], [], cr2n))
719+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p);
720+ affect_neg = (f = record_crossings, observed = (; v = c2), ctx = cr2n))
724721 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
725722 trigsys_ss = structural_simplify (trigsys)
726723 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -740,10 +737,10 @@ end
740737 cr1 = []
741738 cr2 = []
742739 evt1 = ModelingToolkit. SymbolicContinuousCallback (
743- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
740+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
744741 rootfind = SciMLBase. RightRootFind)
745742 evt2 = ModelingToolkit. SymbolicContinuousCallback (
746- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
743+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
747744 rootfind = SciMLBase. RightRootFind)
748745 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
749746 trigsys_ss = structural_simplify (trigsys)
@@ -760,10 +757,10 @@ end
760757 cr1 = []
761758 cr2 = []
762759 evt1 = ModelingToolkit. SymbolicContinuousCallback (
763- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
760+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
764761 rootfind = SciMLBase. LeftRootFind)
765762 evt2 = ModelingToolkit. SymbolicContinuousCallback (
766- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
763+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
767764 rootfind = SciMLBase. RightRootFind)
768765 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
769766 trigsys_ss = structural_simplify (trigsys)
@@ -778,10 +775,10 @@ end
778775 cr1 = []
779776 cr2 = []
780777 evt1 = ModelingToolkit. SymbolicContinuousCallback (
781- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
778+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
782779 rootfind = SciMLBase. LeftRootFind)
783780 evt2 = ModelingToolkit. SymbolicContinuousCallback (
784- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
781+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
785782 rootfind = SciMLBase. RightRootFind)
786783 @named trigsys = System (eqs, t; continuous_events = [evt2, evt1])
787784 trigsys_ss = structural_simplify (trigsys)
@@ -879,10 +876,10 @@ end
879876 @variables x (t)
880877 @parameters a (t) b (t) c (t)
881878 cb1 = SymbolicContinuousCallback ([x ~ 1.0 ] => [a ~ - Pre (a)], discrete_parameters = [a])
882- function save_affect! (integ, u, p, ctx )
883- integ . ps[p . b] = 5.0
879+ function save_affect! (mod, obs, ctx, integ )
880+ return (; b = 5.0 )
884881 end
885- cb2 = [x ~ 0.5 ] => (save_affect!, [], [b], [b], nothing )
882+ cb2 = [x ~ 0.5 ] => (f = save_affect!, modified = (; b) )
886883 cb3 = SymbolicDiscreteCallback (1.0 => [c ~ t], discrete_parameters = [c])
887884
888885 @mtkbuild sys = System (D (x) ~ cos (t), t, [x], [a, b, c];
@@ -1067,8 +1064,7 @@ end
10671064@testset " Initialization" begin
10681065 @variables x (t)
10691066 seen = false
1070- f = ModelingToolkit. FunctionalAffect (
1071- f = (i, u, p, c) -> seen = true , sts = [], pars = [], discretes = [])
1067+ f = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (seen = true ; return (;)))
10721068 cb1 = ModelingToolkit. SymbolicContinuousCallback (
10731069 [x ~ 0 ], nothing , initialize = [x ~ 1.5 ], finalize = f)
10741070 @mtkbuild sys = System (D (x) ~ - 1 , t, [x], []; continuous_events = [cb1])
@@ -1080,16 +1076,13 @@ end
10801076
10811077 @variables x (t)
10821078 seen = false
1083- f = ModelingToolkit. FunctionalAffect (
1084- f = (i, u, p, c) -> seen = true , sts = [], pars = [], discretes = [])
1079+ f = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (seen = true ; return (;)))
10851080 cb1 = ModelingToolkit. SymbolicContinuousCallback (
10861081 [x ~ 0 ], nothing , initialize = [x ~ 1.5 ], finalize = f)
10871082 inited = false
10881083 finaled = false
1089- a = ModelingToolkit. FunctionalAffect (
1090- f = (i, u, p, c) -> inited = true , sts = [], pars = [], discretes = [])
1091- b = ModelingToolkit. FunctionalAffect (
1092- f = (i, u, p, c) -> finaled = true , sts = [], pars = [], discretes = [])
1084+ a = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (inited = true ; return (;)))
1085+ b = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (finaled = true ; return (;)))
10931086 cb2 = ModelingToolkit. SymbolicContinuousCallback (
10941087 [x ~ 0.1 ], nothing , initialize = a, finalize = b)
10951088 @mtkbuild sys = System (D (x) ~ - 1 , t, [x], []; continuous_events = [cb1, cb2])
0 commit comments