Skip to content

Commit 1f7fb2e

Browse files
feat: allow namespacing statemachine equations
1 parent dea08c6 commit 1f7fb2e

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/ModelingToolkit.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ using Symbolics: _parse_vars, value, @derivatives, get_variables,
6969
NAMESPACE_SEPARATOR, set_scalar_metadata, setdefaultval,
7070
initial_state, transition, activeState, entry, hasnode,
7171
ticksInState, timeInState, fixpoint_sub, fast_substitute,
72-
CallWithMetadata, CallWithParent
72+
CallWithMetadata, CallWithParent, Transition, InitialState
7373
const NAMESPACE_SEPARATOR_SYMBOL = Symbol(NAMESPACE_SEPARATOR)
7474
import Symbolics: rename, get_variables!, _solve, hessian_sparsity,
7575
jacobian_sparsity, isaffine, islinear, _iszero, _isone,

src/systems/abstractsystem.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,26 @@ function namespace_expr(
13901390
O
13911391
end
13921392
end
1393+
1394+
function namespace_expr(
1395+
O::Transition, sys, n = nameof(sys); ivs = independent_variables(sys))
1396+
return Transition(
1397+
O.from === nothing ? O.from : renamespace(sys, O.from),
1398+
O.to === nothing ? O.to : renamespace(sys, O.to),
1399+
O.cond === nothing ? O.cond : namespace_expr(O.cond, sys),
1400+
O.immediate, O.reset, O.synchronize, O.priority
1401+
)
1402+
end
1403+
1404+
function namespace_expr(
1405+
O::InitialState, sys, n = nameof(sys); ivs = independent_variables(sys))
1406+
return InitialState(O.s === nothing ? O.s : renamespace(sys, O.s))
1407+
end
1408+
1409+
function namespace_expr(O::StateMachineOperator, sys, n = nameof(sys); kwargs...)
1410+
error("Unhandled state machine operator")
1411+
end
1412+
13931413
_nonum(@nospecialize x) = x isa Num ? x.val : x
13941414

13951415
"""

0 commit comments

Comments
 (0)