@@ -186,10 +186,13 @@ function split_system(ci::ClockInference{S}) where {S}
186
186
end
187
187
tss[id] = ts_i
188
188
end
189
- tss[continuous_id], tss[1 ] = tss[1 ], tss[continuous_id]
190
- inputs[continuous_id], inputs[1 ] = inputs[1 ], inputs[continuous_id]
191
- id_to_clock[continuous_id], id_to_clock[1 ] = id_to_clock[1 ], id_to_clock[continuous_id]
192
- continuous_id = 1
189
+ if continuous_id != = 0
190
+ tss[continuous_id], tss[end ] = tss[end ], tss[continuous_id]
191
+ inputs[continuous_id], inputs[end ] = inputs[end ], inputs[continuous_id]
192
+ id_to_clock[continuous_id], id_to_clock[end ] = id_to_clock[end ],
193
+ id_to_clock[continuous_id]
194
+ continuous_id = lastindex (tss)
195
+ end
193
196
return tss, inputs, continuous_id, id_to_clock
194
197
end
195
198
@@ -267,7 +270,7 @@ function generate_discrete_affect(
267
270
let_block) |> toexpr
268
271
cont_to_disc_idxs = [parameter_index (osys, sym) for sym in input]
269
272
disc_range = [parameter_index (osys, sym) for sym in unknowns (sys)]
270
- save_expr = :($ (SciMLBase. save_discretes!)(integrator, $ (i - 1 ) ))
273
+ save_expr = :($ (SciMLBase. save_discretes!)(integrator, $ i ))
271
274
empty_disc = isempty (disc_range)
272
275
273
276
# @show disc_to_cont_idxs
@@ -290,13 +293,13 @@ function generate_discrete_affect(
290
293
# d2c comes last
291
294
# @show t
292
295
# @show "incoming", p
293
- result = c2d_obs (integrator . u, p... , t)
296
+ result = c2d_obs (u, p... , t)
294
297
for (val, i) in zip (result, $ cont_to_disc_idxs)
295
298
$ (_set_parameter_unchecked!)(p, val, i; update_dependent = false )
296
299
end
297
300
$ (if ! empty_disc
298
301
quote
299
- disc (disc_unknowns, integrator . u, p... , t)
302
+ disc (disc_unknowns, u, p... , t)
300
303
for (val, i) in zip (disc_unknowns, $ disc_range)
301
304
$ (_set_parameter_unchecked!)(p, val, i; update_dependent = false )
302
305
end
@@ -316,6 +319,7 @@ function generate_discrete_affect(
316
319
$ (SciMLStructures. Discrete ()), p)
317
320
repack (discretes)
318
321
end )
322
+
319
323
push! (affect_funs, affect!)
320
324
end
321
325
if eval_expression
0 commit comments