Skip to content

Commit 57f96fc

Browse files
feat: add descend_lower_shift_varname and _with_unit variant
1 parent d584eab commit 57f96fc

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/structural_transformation/utils.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,11 +482,29 @@ function lower_shift_varname(var, iv)
482482
end
483483
end
484484

485+
function descend_lower_shift_varname_with_unit(var, iv)
486+
symbolic_type(var) == NotSymbolic() && return var
487+
ModelingToolkit._with_unit(descend_lower_shift_varname, var, iv, iv)
488+
end
489+
function descend_lower_shift_varname(var, iv)
490+
iscall(var) || return var
491+
op = operation(var)
492+
if op isa Shift
493+
return shift2term(var)
494+
else
495+
args = arguments(var)
496+
args = map(Base.Fix2(descend_lower_shift_varname, iv), args)
497+
return maketerm(typeof(var), op, args, Symbolics.metadata(var))
498+
end
499+
end
500+
485501
"""
486502
Rename a Shift variable with negative shift, Shift(t, k)(x(t)) to xₜ₋ₖ(t).
487503
"""
488504
function shift2term(var)
505+
iscall(var) || return var
489506
op = operation(var)
507+
op isa Shift || return var
490508
iv = op.t
491509
arg = only(arguments(var))
492510
if operation(arg) === getindex

0 commit comments

Comments
 (0)