@@ -1072,3 +1072,47 @@ def test_event_uses_values_from_trigger_time(tempdir):
10721072 )
10731073
10741074 # 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