@@ -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,16 @@ 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+ function record_crossings (mod, obs, ctx, integ)
650+ push! (ctx, integ. t => obs. v)
651+ return (;)
652+ end
653653 cr1 = []
654654 cr2 = []
655655 evt1 = ModelingToolkit. SymbolicContinuousCallback (
656- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1))
656+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1))
657657 evt2 = ModelingToolkit. SymbolicContinuousCallback (
658- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2))
658+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2))
659659 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
660660 trigsys_ss = structural_simplify (trigsys)
661661 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -673,11 +673,11 @@ end
673673 cr1n = []
674674 cr2n = []
675675 evt1 = ModelingToolkit. SymbolicContinuousCallback (
676- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p);
677- affect_neg = (record_crossings, [c1 => :v ], [], [], cr1n))
676+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p);
677+ affect_neg = (f = record_crossings, observed = (; v = c1), ctx = cr1n))
678678 evt2 = ModelingToolkit. SymbolicContinuousCallback (
679- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p);
680- affect_neg = (record_crossings, [c2 => :v ], [], [], cr2n))
679+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p);
680+ affect_neg = (f = record_crossings, observed = (; v = c2), ctx = cr2n))
681681 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
682682 trigsys_ss = structural_simplify (trigsys)
683683 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
699699 cr1p = []
700700 cr2p = []
701701 evt1 = ModelingToolkit. SymbolicContinuousCallback (
702- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p); affect_neg = nothing )
702+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p); affect_neg = nothing )
703703 evt2 = ModelingToolkit. SymbolicContinuousCallback (
704- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p); affect_neg = nothing )
704+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p); affect_neg = nothing )
705705 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
706706 trigsys_ss = structural_simplify (trigsys)
707707 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -717,10 +717,10 @@ end
717717 cr1n = []
718718 cr2n = []
719719 evt1 = ModelingToolkit. SymbolicContinuousCallback (
720- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1p); affect_neg = nothing )
720+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1p); affect_neg = nothing )
721721 evt2 = ModelingToolkit. SymbolicContinuousCallback (
722- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2p);
723- affect_neg = (record_crossings, [c2 => :v ], [], [], cr2n))
722+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2p);
723+ affect_neg = (f = record_crossings, observed = (; v = c2), ctx = cr2n))
724724 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
725725 trigsys_ss = structural_simplify (trigsys)
726726 prob = ODEProblem (trigsys_ss, [], (0.0 , 2 π))
@@ -740,10 +740,10 @@ end
740740 cr1 = []
741741 cr2 = []
742742 evt1 = ModelingToolkit. SymbolicContinuousCallback (
743- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
743+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
744744 rootfind = SciMLBase. RightRootFind)
745745 evt2 = ModelingToolkit. SymbolicContinuousCallback (
746- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
746+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
747747 rootfind = SciMLBase. RightRootFind)
748748 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
749749 trigsys_ss = structural_simplify (trigsys)
@@ -760,10 +760,10 @@ end
760760 cr1 = []
761761 cr2 = []
762762 evt1 = ModelingToolkit. SymbolicContinuousCallback (
763- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
763+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
764764 rootfind = SciMLBase. LeftRootFind)
765765 evt2 = ModelingToolkit. SymbolicContinuousCallback (
766- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
766+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
767767 rootfind = SciMLBase. RightRootFind)
768768 @named trigsys = System (eqs, t; continuous_events = [evt1, evt2])
769769 trigsys_ss = structural_simplify (trigsys)
@@ -778,10 +778,10 @@ end
778778 cr1 = []
779779 cr2 = []
780780 evt1 = ModelingToolkit. SymbolicContinuousCallback (
781- [c1 ~ 0 ], (record_crossings, [c1 => :v ], [], [], cr1);
781+ [c1 ~ 0 ], (f = record_crossings, observed = (; v = c1), ctx = cr1);
782782 rootfind = SciMLBase. LeftRootFind)
783783 evt2 = ModelingToolkit. SymbolicContinuousCallback (
784- [c2 ~ 0 ], (record_crossings, [c2 => :v ], [], [], cr2);
784+ [c2 ~ 0 ], (f = record_crossings, observed = (; v = c2), ctx = cr2);
785785 rootfind = SciMLBase. RightRootFind)
786786 @named trigsys = System (eqs, t; continuous_events = [evt2, evt1])
787787 trigsys_ss = structural_simplify (trigsys)
@@ -879,10 +879,10 @@ end
879879 @variables x (t)
880880 @parameters a (t) b (t) c (t)
881881 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
882+ function save_affect! (mod, obs, ctx, integ )
883+ return (; b = 5.0 )
884884 end
885- cb2 = [x ~ 0.5 ] => (save_affect!, [], [b], [b], nothing )
885+ cb2 = [x ~ 0.5 ] => (f = save_affect!, modified = (; b) )
886886 cb3 = SymbolicDiscreteCallback (1.0 => [c ~ t], discrete_parameters = [c])
887887
888888 @mtkbuild sys = System (D (x) ~ cos (t), t, [x], [a, b, c];
@@ -1067,8 +1067,7 @@ end
10671067@testset " Initialization" begin
10681068 @variables x (t)
10691069 seen = false
1070- f = ModelingToolkit. FunctionalAffect (
1071- f = (i, u, p, c) -> seen = true , sts = [], pars = [], discretes = [])
1070+ f = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (seen = true ; return (;)))
10721071 cb1 = ModelingToolkit. SymbolicContinuousCallback (
10731072 [x ~ 0 ], nothing , initialize = [x ~ 1.5 ], finalize = f)
10741073 @mtkbuild sys = System (D (x) ~ - 1 , t, [x], []; continuous_events = [cb1])
@@ -1080,16 +1079,13 @@ end
10801079
10811080 @variables x (t)
10821081 seen = false
1083- f = ModelingToolkit. FunctionalAffect (
1084- f = (i, u, p, c) -> seen = true , sts = [], pars = [], discretes = [])
1082+ f = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (seen = true ; return (;)))
10851083 cb1 = ModelingToolkit. SymbolicContinuousCallback (
10861084 [x ~ 0 ], nothing , initialize = [x ~ 1.5 ], finalize = f)
10871085 inited = false
10881086 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 = [])
1087+ a = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (inited = true ; return (;)))
1088+ b = ModelingToolkit. ImperativeAffect (f = (m, o, ctx, int) -> (finaled = true ; return (;)))
10931089 cb2 = ModelingToolkit. SymbolicContinuousCallback (
10941090 [x ~ 0.1 ], nothing , initialize = a, finalize = b)
10951091 @mtkbuild sys = System (D (x) ~ - 1 , t, [x], []; continuous_events = [cb1, cb2])
0 commit comments