@@ -1072,3 +1072,47 @@ def test_event_uses_values_from_trigger_time(tempdir):
1072
1072
)
1073
1073
1074
1074
# TODO: test ASA after https://github.com/AMICI-dev/AMICI/pull/1539
1075
+
1076
+
1077
+ def test_simultaneous_events (tempdir ):
1078
+ """Test simultaneously firing events with different trigger functions."""
1079
+ from amici .antimony_import import antimony2amici
1080
+
1081
+ model_name = "test_simultaneous_events"
1082
+ antimony2amici (
1083
+ r"""
1084
+ target1_0 = 1
1085
+ target1 = target1_0
1086
+ one = 1
1087
+ target1' = one
1088
+ two = 2
1089
+ target2_0 = two
1090
+ target2 = target2_0
1091
+ target2' = 1
1092
+ some_time = time
1093
+ some_time' = 1
1094
+ trigger_time = 1000
1095
+
1096
+ E1: at some_time >= trigger_time, priority=10, fromTrigger=false:
1097
+ target1 = target1 + 10;
1098
+ E2: at time >= trigger_time, priority=20, fromTrigger=false:
1099
+ target2 = target2 + 10;
1100
+ """ ,
1101
+ model_name = model_name ,
1102
+ output_dir = tempdir ,
1103
+ )
1104
+
1105
+ model_module = import_model_module (model_name , tempdir )
1106
+
1107
+ model = model_module .get_model ()
1108
+ model .setTimepoints ([0 , 2 ])
1109
+ solver = model .getSolver ()
1110
+ solver .setRelativeTolerance (1e-6 )
1111
+ solver .setAbsoluteTolerance (1e-6 )
1112
+ solver .setSensitivityOrder (SensitivityOrder .first )
1113
+ solver .setSensitivityMethod (SensitivityMethod .forward )
1114
+
1115
+ rdata = amici .runAmiciSimulation (model , solver )
1116
+ assert rdata .status == amici .AMICI_SUCCESS
1117
+ assert_allclose (rdata .by_id ("target1" ), [1.0 , 13.0 ])
1118
+ assert_allclose (rdata .by_id ("target2" ), [2.0 , 14.0 ])
0 commit comments