-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Currently, there is no direct way to access inputs from within a discrete event condition. @MasonProtter suggested the following workaround. Incorporating something like this into GraphDynamics could be useful.
using GraphDynamics: SubsystemStatesView, partitioned, calculate_inputs
# To be used inside apply_discrete_event!
function get_inputs(integrator, sview::SubsystemStatesView{States}) where {States}
(; params_partitioned, partition_plan, connection_matrices) = integrator.p
(; u, t) = integrator
states_partitioned = partitioned(u, partition_plan)
i = findfirst(v -> eltype(v) <: States, states_partitioned)
if isnothing(i)
error("No states found.")
end
j = sview.idx
calculate_inputs(Val(i), j, states_partitioned, params_partitioned, connection_matrices, t)
endMetadata
Metadata
Assignees
Labels
No labels