Skip to content

Commit e00ca0c

Browse files
finish rename
1 parent fe7f6be commit e00ca0c

File tree

4 files changed

+29
-18
lines changed

4 files changed

+29
-18
lines changed

src/ModelingToolkit.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@ include("variables.jl")
8181
include("context_dsl.jl")
8282
include("operations.jl")
8383
include("differentials.jl")
84+
85+
function Base.convert(::Type{Variable},x::Operation)
86+
if x.op isa Variable
87+
x.op
88+
elseif x.op isa Differential
89+
var = x.args[1].op
90+
rename(var,Symbol(var.name,,x.args[1].args[1].op.name))
91+
else
92+
throw(error("This Operation is not a Variable"))
93+
end
94+
end
95+
8496
include("equations.jl")
8597
include("function_registration.jl")
8698
include("simplify.jl")

src/operations.jl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,6 @@ Operation(x) = convert(Operation, x)
6666
#convert to Expr
6767
Base.Expr(op::Operation) = simplified_expr(op)
6868
Base.convert(::Type{Expr},x::Operation) = Expr(x)
69-
function Base.convert(::Type{Variable},x::Operation)
70-
x.op isa Variable ? x.op : throw(error("This Operation is not a Variable"))
71-
end
7269

7370
# promotion
7471
Base.promote_rule(::Type{<:Constant}, ::Type{<:Operation}) = Operation

src/systems/abstractsystem.jl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function Base.getproperty(sys::AbstractSystem, name::Symbol)
2525
throw(error("Variable $name does not exist"))
2626
end
2727

28-
renamespace(namespace,name) = Symbol(string(namespace)*""*string(name))
28+
renamespace(namespace,name) = Symbol(namespace,:₊,name)
2929

3030
function namespace_variables(sys::AbstractSystem)
3131
[rename(x,renamespace(sys.name,x.name)) for x in states(sys)]
@@ -62,22 +62,24 @@ end
6262

6363
function states(sys::AbstractSystem,name::Symbol)
6464
x = sys.states[findfirst(x->x.name==name,sys.states)]
65-
Variable(Symbol(string(sys.name)*""*string(x.name)))(sys.iv())
65+
rename(x,renamespace(sys.name,x.name))(sys.iv())
6666
end
6767

6868
function parameters(sys::AbstractSystem,name::Symbol)
6969
x = sys.ps[findfirst(x->x.name==name,sys.ps)]
70-
Variable(Symbol(string(sys.name)*""*string(x.name)))(sys.iv())
70+
rename(x,renamespace(sys.name,x.name))()
7171
end
7272

7373
function states(sys::AbstractSystem,args...)
7474
name = last(args)
75-
extra_names = reduce(*,["$(x.name)" for x in args[1:end-1]])
76-
Variable(Symbol(string(sys.name)*extra_names*""*string(name)))(sys.iv())
75+
extra_names = reduce(Symbol,[Symbol(:₊,x.name) for x in args[1:end-1]])
76+
newname = renamespace(extra_names,name)
77+
rename(x,renamespace(sys.name,newname))(sys.iv())
7778
end
7879

7980
function parameters(sys::AbstractSystem,args...)
8081
name = last(args)
81-
extra_names = reduce(*,["$(x.name)" for x in args[1:end-1]])
82-
Variable(Symbol(string(sys.name)*extra_names*""*string(name)))(sys.iv())
82+
extra_names = reduce(Symbol,[Symbol(:₊,x.name) for x in args[1:end-1]])
83+
newname = renamespace(extra_names,name)
84+
rename(x,renamespace(sys.name,newname))()
8385
end

test/odesystem.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,25 +123,25 @@ end
123123
# Conversion to first-order ODEs #17
124124
@derivatives D3'''~t
125125
@derivatives D2''~t
126-
@variables u(t) u_tt(t) u_t(t) x_t(t)
126+
@variables u(t) uˍtt(t) uˍt(t) xˍt(t)
127127
eqs = [D3(u) ~ 2(D2(u)) + D(u) + D(x) + 1
128128
D2(x) ~ D(x) + 2]
129129
de = ODESystem(eqs)
130130
de1 = ode_order_lowering(de)
131-
lowered_eqs = [D(u_tt) ~ 2u_tt + u_t + x_t + 1
132-
D(x_t) ~ x_t + 2
133-
D(u_t) ~ u_tt
134-
D(u) ~ u_t
135-
D(x) ~ x_t]
131+
lowered_eqs = [D(uˍtt) ~ 2uˍtt + uˍt + xˍt + 1
132+
D(xˍt) ~ xˍt + 2
133+
D(uˍt) ~ uˍtt
134+
D(u) ~ uˍt
135+
D(x) ~ xˍt]
136136

137137
@test de1 == ODESystem(lowered_eqs)
138138

139139
# issue #219
140140
@test de1.states == [ModelingToolkit.var_from_nested_derivative(eq.lhs)[1] for eq in de1.eqs] == ODESystem(lowered_eqs).states
141141

142-
test_diffeq_inference("first-order transform", de1, t, [u_tt, x_t, u_t, u, x], [])
142+
test_diffeq_inference("first-order transform", de1, t, [uˍtt, xˍt, uˍt, u, x], [])
143143
du = zeros(5)
144-
ODEFunction(de1, [u_tt, x_t, u_t, u, x], [])(du, ones(5), nothing, 0.1)
144+
ODEFunction(de1, [uˍtt, xˍt, uˍt, u, x], [])(du, ones(5), nothing, 0.1)
145145
@test du == [5.0, 3.0, 1.0, 1.0, 1.0]
146146

147147
# Internal calculations

0 commit comments

Comments
 (0)