Skip to content

Commit f8279d8

Browse files
shashiYingboMa
andcommitted
.op -> operation; .args -> arguments
Co-authored-by: "Yingbo Ma" <[email protected]>
1 parent 2b6317c commit f8279d8

14 files changed

+90
-90
lines changed

src/build_function.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -479,25 +479,25 @@ get_varnumber(varop, vars::Vector) = findfirst(x->isequal(x,varop),vars)
479479
function numbered_expr(O::Union{Term,Sym},args...;varordering = args[1],offset = 0,
480480
lhsname=gensym("du"),rhsnames=[gensym("MTK") for i in 1:length(args)])
481481
O = value(O)
482-
if O isa Sym || isa(O.op, Sym)
482+
if O isa Sym || isa(operation(O), Sym)
483483
for j in 1:length(args)
484484
i = get_varnumber(O,args[j])
485485
if i !== nothing
486486
return :($(rhsnames[j])[$(i+offset)])
487487
end
488488
end
489489
end
490-
return Expr(:call, O isa Sym ? tosymbol(O, escape=false) : Symbol(O.op),
490+
return Expr(:call, O isa Sym ? tosymbol(O, escape=false) : Symbol(operation(O)),
491491
[numbered_expr(x,args...;offset=offset,lhsname=lhsname,
492-
rhsnames=rhsnames,varordering=varordering) for x in O.args]...)
492+
rhsnames=rhsnames,varordering=varordering) for x in arguments(O)]...)
493493
end
494494

495495
function numbered_expr(de::ModelingToolkit.Equation,args...;varordering = args[1],
496496
lhsname=gensym("du"),rhsnames=[gensym("MTK") for i in 1:length(args)],offset=0)
497497

498498
varordering = value.(args[1])
499499
var = var_from_nested_derivative(de.lhs)[1]
500-
i = findfirst(x->isequal(tosymbol(x isa Sym ? x : x.op, escape=false), tosymbol(var, escape=false)),varordering)
500+
i = findfirst(x->isequal(tosymbol(x isa Sym ? x : operation(x), escape=false), tosymbol(var, escape=false)),varordering)
501501
:($lhsname[$(i+offset)] = $(numbered_expr(de.rhs,args...;offset=offset,
502502
varordering = varordering,
503503
lhsname = lhsname,

src/differentials.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ Base.show(io::IO, D::Differential) = print(io, "(D'~", D.x, ")")
3535
Base.:(==)(D1::Differential, D2::Differential) = isequal(D1.x, D2.x)
3636

3737
_isfalse(occ::Bool) = occ === false
38-
_isfalse(occ::Term) = _isfalse(occ.op)
38+
_isfalse(occ::Term) = _isfalse(operation(occ))
3939

4040
function occursin_info(x, expr::Term)
4141
if isequal(x, expr)
4242
true
4343
else
44-
args = map(a->occursin_info(x, a), expr.args)
44+
args = map(a->occursin_info(x, a), arguments(expr))
4545
if all(_isfalse, args)
4646
return false
4747
end
@@ -52,7 +52,7 @@ function occursin_info(x, expr::Sym)
5252
isequal(x, expr)
5353
end
5454

55-
hasderiv(O::Term) = O.op isa Differential || any(hasderiv, O.args)
55+
hasderiv(O::Term) = operation(O) isa Differential || any(hasderiv, arguments(O))
5656
hasderiv(O) = false
5757

5858
occursin_info(x, y) = false
@@ -64,16 +64,16 @@ TODO
6464
function expand_derivatives(O::Symbolic, simplify=true; occurances=nothing)
6565
if istree(O) && isa(operation(O), Differential)
6666
@assert length(arguments(O)) == 1
67-
arg = expand_derivatives(O.args[1], false)
67+
arg = expand_derivatives(arguments(O)[1], false)
6868

6969
if occurances == nothing
70-
occurances = occursin_info(O.op.x, arg)
70+
occurances = occursin_info(operation(O).x, arg)
7171
end
7272

7373
_isfalse(occurances) && return 0
7474
occurances isa Bool && return 1 # means it's a `true`
7575

76-
(D, o) = (O.op, arg)
76+
(D, o) = (operation(O), arg)
7777

7878
if !istree(o)
7979
return O # Cannot expand
@@ -84,25 +84,25 @@ function expand_derivatives(O::Symbolic, simplify=true; occurances=nothing)
8484
# a nested Differential. We can attempt to differentiate the
8585
# inner expression wrt to the outer iv. And leave the
8686
# unexpandable Differential outside.
87-
if isequal(o.op.x, D.x)
87+
if isequal(operation(o).x, D.x)
8888
return O
8989
else
9090
inner = expand_derivatives(D(arguments(o)[1]), false)
9191
# if the inner expression is not expandable either, return
9292
if istree(inner) && operation(inner) isa Differential
9393
return O
9494
else
95-
return expand_derivatives(o.op(inner), simplify)
95+
return expand_derivatives(operation(o)(inner), simplify)
9696
end
9797
end
9898
end
9999

100-
l = length(o.args)
100+
l = length(arguments(o))
101101
exprs = []
102102
c = 0
103103

104104
for i in 1:l
105-
t2 = expand_derivatives(D(o.args[i]),false, occurances=occurances.args[i])
105+
t2 = expand_derivatives(D(arguments(o)[i]),false, occurances=arguments(occurances)[i])
106106

107107
x = if _iszero(t2)
108108
t2
@@ -136,8 +136,8 @@ function expand_derivatives(O::Symbolic, simplify=true; occurances=nothing)
136136
elseif !hasderiv(O)
137137
return O
138138
else
139-
args = map(a->expand_derivatives(a, false), O.args)
140-
O1 = make_operation(O.op, args)
139+
args = map(a->expand_derivatives(a, false), arguments(O))
140+
O1 = make_operation(operation(O), args)
141141
return simplify ? SymbolicUtils.simplify(O1) : O1
142142
end
143143
end
@@ -176,7 +176,7 @@ chain rule is not applied:
176176
julia> myop = sin(x) * y^2
177177
sin(x()) * y() ^ 2
178178
179-
julia> typeof(myop.op) # Op is multiplication function
179+
julia> typeof(operation(myop)) # Op is multiplication function
180180
typeof(*)
181181
182182
julia> ModelingToolkit.derivative_idx(myop, 1) # wrt. sin(x)

src/direct.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -214,18 +214,18 @@ function sparsehessian(O, vars::AbstractVector; simplify = true)
214214
end
215215

216216
function toexpr(O::Term)
217-
if isa(O.op, Differential)
218-
return :(derivative($(toexpr(O.args[1])),$(toexpr(O.op.x))))
219-
elseif isa(O.op, Sym)
220-
isempty(O.args) && return O.op.name
221-
return Expr(:call, toexpr(O.op), toexpr.(O.args)...)
217+
if isa(operation(O), Differential)
218+
return :(derivative($(toexpr(arguments(O)[1])),$(toexpr(operation(O).x))))
219+
elseif isa(operation(O), Sym)
220+
isempty(arguments(O)) && return operation(O).name
221+
return Expr(:call, toexpr(operation(O)), toexpr.(arguments(O))...)
222222
end
223-
if O.op === (^)
224-
if length(O.args) > 1 && O.args[2] isa Number && O.args[2] < 0
225-
return Expr(:call, ^, Expr(:call, inv, toexpr(O.args[1])), -(O.args[2]))
223+
if operation(O) === (^)
224+
if length(arguments(O)) > 1 && arguments(O)[2] isa Number && arguments(O)[2] < 0
225+
return Expr(:call, ^, Expr(:call, inv, toexpr(arguments(O)[1])), -(arguments(O)[2]))
226226
end
227227
end
228-
return Expr(:call, O.op, toexpr.(O.args)...)
228+
return Expr(:call, operation(O), toexpr.(arguments(O))...)
229229
end
230230
toexpr(s::Sym) = nameof(s)
231231
toexpr(s) = s

src/latexify_recipes.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ prettify_expr(expr::Expr) = Expr(expr.head, prettify_expr.(expr.args)...)
1212

1313
rhs = getfield.(eqs, :rhs)
1414
rhs = prettify_expr.(toexpr.(rhs))
15-
rhs = [postwalk(x -> x isa Expr && length(x.args) == 1 ? x.args[1] : x, eq) for eq in rhs]
16-
rhs = [postwalk(x -> x isa Expr && x.args[1] == :derivative && length(x.args[2].args) == 2 ? :($(Symbol(:d, x.args[2]))/($(Symbol(:d, x.args[2].args[2])))) : x, eq) for eq in rhs]
17-
rhs = [postwalk(x -> x isa Expr && x.args[1] == :derivative ? "\\frac{d\\left($(Latexify.latexraw(x.args[2]))\\right)}{d$(Latexify.latexraw(x.args[3]))}" : x, eq) for eq in rhs]
15+
rhs = [postwalk(x -> x isa Expr && length(arguments(x)) == 1 ? arguments(x)[1] : x, eq) for eq in rhs]
16+
rhs = [postwalk(x -> x isa Expr && arguments(x)[1] == :derivative && length(arguments(x)[2].args) == 2 ? :($(Symbol(:d, arguments(x)[2]))/($(Symbol(:d, arguments(x)[2].args[2])))) : x, eq) for eq in rhs]
17+
rhs = [postwalk(x -> x isa Expr && arguments(x)[1] == :derivative ? "\\frac{d\\left($(Latexify.latexraw(arguments(x)[2]))\\right)}{d$(Latexify.latexraw(arguments(x)[3]))}" : x, eq) for eq in rhs]
1818

1919
lhs = getfield.(eqs, :lhs)
2020
lhs = prettify_expr.(toexpr.(lhs))
21-
lhs = [postwalk(x -> x isa Expr && length(x.args) == 1 ? x.args[1] : x, eq) for eq in lhs]
22-
lhs = [postwalk(x -> x isa Expr && x.args[1] == :derivative && length(x.args[2].args) == 2 ? :($(Symbol(:d, x.args[2]))/($(Symbol(:d, x.args[2].args[2])))) : x, eq) for eq in lhs]
23-
lhs = [postwalk(x -> x isa Expr && x.args[1] == :derivative ? "\\frac{d\\left($(Latexify.latexraw(x.args[2]))\\right)}{d$(Latexify.latexraw(x.args[3]))}" : x, eq) for eq in lhs]
21+
lhs = [postwalk(x -> x isa Expr && length(arguments(x)) == 1 ? arguments(x)[1] : x, eq) for eq in lhs]
22+
lhs = [postwalk(x -> x isa Expr && arguments(x)[1] == :derivative && length(arguments(x)[2].args) == 2 ? :($(Symbol(:d, arguments(x)[2]))/($(Symbol(:d, arguments(x)[2].args[2])))) : x, eq) for eq in lhs]
23+
lhs = [postwalk(x -> x isa Expr && arguments(x)[1] == :derivative ? "\\frac{d\\left($(Latexify.latexraw(arguments(x)[2]))\\right)}{d$(Latexify.latexraw(arguments(x)[3]))}" : x, eq) for eq in lhs]
2424

2525
return lhs, rhs
2626
end

src/systems/abstractsystem.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Generate a function to evaluate the system's equations.
118118
function generate_function end
119119

120120
getname(x::Sym) = nameof(x)
121-
getname(t::Term) = t.op isa Sym ? getname(t.op) : error("Cannot get name of $t")
121+
getname(t::Term) = operation(t) isa Sym ? getname(operation(t)) : error("Cannot get name of $t")
122122

123123
function Base.getproperty(sys::AbstractSystem, name::Symbol)
124124

@@ -161,7 +161,7 @@ function renamespace(namespace, x::Sym)
161161
end
162162

163163
function renamespace(namespace, x::Term)
164-
renamespace(namespace, x.op)(x.args...)
164+
renamespace(namespace, operation(x))(arguments(x)...)
165165
end
166166

167167
function namespace_variables(sys::AbstractSystem)
@@ -189,10 +189,10 @@ function namespace_expr(O::Sym,name,ivname)
189189
end
190190

191191
function namespace_expr(O::Term{T},name,ivname) where {T}
192-
if O.op isa Sym
193-
Term{T}(rename(O.op,renamespace(name,O.op.name)),namespace_expr.(O.args,name,ivname))
192+
if operation(O) isa Sym
193+
Term{T}(rename(operation(O),renamespace(name,operation(O).name)),namespace_expr.(arguments(O),name,ivname))
194194
else
195-
Term{T}(O.op,namespace_expr.(O.args,name,ivname))
195+
Term{T}(operation(O),namespace_expr.(arguments(O),name,ivname))
196196
end
197197
end
198198
namespace_expr(O,name,ivname) = O
@@ -278,11 +278,11 @@ struct AbstractSysToExpr
278278
end
279279
AbstractSysToExpr(sys) = AbstractSysToExpr(sys,states(sys))
280280
function (f::AbstractSysToExpr)(O::Term)
281-
any(isequal(O), f.states) && return O.op.name # variables
282-
if isa(O.op, Sym)
283-
return build_expr(:call, Any[O.op.name; f.(O.args)])
281+
any(isequal(O), f.states) && return operation(O).name # variables
282+
if isa(operation(O), Sym)
283+
return build_expr(:call, Any[operation(O).name; f.(arguments(O))])
284284
end
285-
return build_expr(:call, Any[O.op; f.(O.args)])
285+
return build_expr(:call, Any[operation(O); f.(arguments(O))])
286286
end
287287
(f::AbstractSysToExpr)(x) = toexpr(x)
288288

src/systems/control/controlsystem.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ struct ControlToExpr
9090
end
9191
ControlToExpr(@nospecialize(sys)) = ControlToExpr(sys,states(sys),controls(sys))
9292
function (f::ControlToExpr)(O::Term)
93-
res = if isa(O.op, Sym)
93+
res = if isa(operation(O), Sym)
9494
# normal variables and control variables
9595
(any(isequal(O), f.states) || any(isequal(O), f.controls)) && return tosymbol(O)
96-
build_expr(:call, Any[O.op.name; f.(O.args)])
96+
build_expr(:call, Any[operation(O).name; f.(arguments(O))])
9797
else
98-
build_expr(:call, Any[Symbol(O.op); f.(O.args)])
98+
build_expr(:call, Any[Symbol(operation(O)); f.(arguments(O))])
9999
end
100100
end
101101
(f::ControlToExpr)(x::Sym) = x.name
@@ -138,11 +138,11 @@ function runge_kutta_discretize(sys::ControlSystem,dt,tspan;
138138
var(n, i...) = var(nameof(n), i...)
139139
var(n::Symbol, i...) = Sym{FnType{Tuple{symtype(sys.iv)}, Real}}(nameof(Variable(n, i...)))
140140
# Expand out all of the variables in time and by stages
141-
timed_vars = [[var(x.op,i)(sys.iv) for i in 1:n+1] for x in states(sys)]
142-
k_vars = [[var(Symbol(:ᵏ,nameof(x.op)),i,j)(sys.iv) for i in 1:m, j in 1:n] for x in states(sys)]
141+
timed_vars = [[var(operation(x),i)(sys.iv) for i in 1:n+1] for x in states(sys)]
142+
k_vars = [[var(Symbol(:ᵏ,nameof(operation(x))),i,j)(sys.iv) for i in 1:m, j in 1:n] for x in states(sys)]
143143
states_timeseries = [getindex.(timed_vars,j) for j in 1:n+1]
144144
k_timeseries = [[Num.(getindex.(k_vars,i,j)) for i in 1:m] for j in 1:n]
145-
control_timeseries = [[[var(x.op,i,j)(sys.iv) for x in controls(sys)] for i in 1:m] for j in 1:n]
145+
control_timeseries = [[[var(operation(x),i,j)(sys.iv) for x in controls(sys)] for i in 1:m] for j in 1:n]
146146
ps = parameters(sys)
147147
iv = sys.iv
148148

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ end
4343
ODEToExpr(@nospecialize(sys)) = ODEToExpr(sys,states(sys))
4444
(f::ODEToExpr)(O::Num) = f(value(O))
4545
function (f::ODEToExpr)(O::Term)
46-
if isa(O.op, Sym)
46+
if isa(operation(O), Sym)
4747
any(isequal(O), f.states) && return tosymbol(O)
4848
# dependent variables
49-
return build_expr(:call, Any[O.op.name; f.(O.args)])
49+
return build_expr(:call, Any[operation(O).name; f.(arguments(O))])
5050
end
51-
return build_expr(:call, Any[O.op; f.(O.args)])
51+
return build_expr(:call, Any[operation(O); f.(arguments(O))])
5252
end
5353
(f::ODEToExpr)(x) = toexpr(x)
5454

@@ -85,7 +85,7 @@ function calculate_massmatrix(sys::AbstractODESystem; simplify=true)
8585
dvs = states(sys)
8686
M = zeros(length(eqs),length(eqs))
8787
for (i,eq) in enumerate(eqs)
88-
if eq.lhs isa Term && eq.lhs.op isa Differential
88+
if eq.lhs isa Term && operation(eq.lhs) isa Differential
8989
j = findfirst(x->isequal(tosymbol(x),tosymbol(var_from_nested_derivative(eq.lhs)[1])),dvs)
9090
M[i,j] = 1
9191
else

src/systems/diffeqs/odesystem.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
7979
end
8080

8181
var_from_nested_derivative(x, i=0) = (missing, missing)
82-
var_from_nested_derivative(x::Term,i=0) = x.op isa Differential ? var_from_nested_derivative(x.args[1],i+1) : (x,i)
82+
var_from_nested_derivative(x::Term,i=0) = operation(x) isa Differential ? var_from_nested_derivative(arguments(x)[1],i+1) : (x,i)
8383
var_from_nested_derivative(x::Sym,i=0) = (x,i)
8484

85-
iv_from_nested_derivative(x::Term) = x.op isa Differential ? iv_from_nested_derivative(x.args[1]) : x.args[1]
85+
iv_from_nested_derivative(x::Term) = operation(x) isa Differential ? iv_from_nested_derivative(arguments(x)[1]) : arguments(x)[1]
8686
iv_from_nested_derivative(x::Sym) = x
8787
iv_from_nested_derivative(x) = missing
8888

@@ -92,8 +92,8 @@ function vars!(vars, O)
9292
isa(O, Sym) && return push!(vars, O)
9393
!isa(O, Term) && return vars
9494

95-
O.op isa Sym && push!(vars, O)
96-
for arg O.args
95+
operation(O) isa Sym && push!(vars, O)
96+
for arg arguments(O)
9797
vars!(vars, arg)
9898
end
9999

@@ -148,7 +148,7 @@ function collect_vars!(states, parameters, expr, iv)
148148
end
149149

150150
function collect_var!(states, parameters, var, iv)
151-
if isparameter(var) || isparameter(var.op)
151+
if isparameter(var) || isparameter(operation(var))
152152
isequal(var, iv) || push!(parameters, var)
153153
else
154154
push!(states, var)

src/systems/diffeqs/validation.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ instantiate(x::ModelingToolkit.Variable{Real}) = 1.0
44
instantiate(x::ModelingToolkit.Variable) = oneunit(1*ModelingToolkit.vartype(x))
55
function instantiate(x::Num)
66
x = value(x)
7-
if x.op isa Sym
8-
return instantiate(x.op)
9-
elseif x.op isa Differential
10-
instantiate(x.args[1])/instantiate(x.args[1].args[1])
7+
if operation(x) isa Sym
8+
return instantiate(operation(x))
9+
elseif operation(x) isa Differential
10+
instantiate(arguments(x)[1])/instantiate(arguments(x)[1].args[1])
1111
else
12-
x.op(instantiate.(x.args)...)
12+
operation(x)(instantiate.(arguments(x))...)
1313
end
1414
end
1515

src/systems/optimization/optimizationsystem.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ function generate_function(sys::OptimizationSystem, vs = states(sys), ps = param
7777
conv = AbstractSysToExpr(sys),kwargs...)
7878
end
7979

80-
equations(sys::OptimizationSystem) = isempty(sys.systems) ? sys.op : sys.op + reduce(+,namespace_expr.(sys.systems))
81-
namespace_expr(sys::OptimizationSystem) = namespace_expr(sys.op,sys.name,nothing)
80+
equations(sys::OptimizationSystem) = isempty(sys.systems) ? operation(sys) : operation(sys) + reduce(+,namespace_expr.(sys.systems))
81+
namespace_expr(sys::OptimizationSystem) = namespace_expr(operation(sys),sys.name,nothing)
8282

8383
hessian_sparsity(sys::OptimizationSystem) =
84-
hessian_sparsity(sys.op, states(sys))
84+
hessian_sparsity(operation(sys), states(sys))
8585

8686
struct AutoModelingToolkit <: DiffEqBase.AbstractADType end
8787

0 commit comments

Comments
 (0)