Skip to content

Commit fe7f6be

Browse files
More reasonable transformation variable names
1 parent 797a915 commit fe7f6be

File tree

3 files changed

+47
-47
lines changed

3 files changed

+47
-47
lines changed

src/systems/abstractsystem.jl

Lines changed: 7 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(string(namespace)*""*string(name))
2929

3030
function namespace_variables(sys::AbstractSystem)
3131
[rename(x,renamespace(sys.name,x.name)) for x in states(sys)]
@@ -62,22 +62,22 @@ 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+
Variable(Symbol(string(sys.name)*""*string(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+
Variable(Symbol(string(sys.name)*""*string(x.name)))(sys.iv())
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(*,["$(x.name)" for x in args[1:end-1]])
76+
Variable(Symbol(string(sys.name)*extra_names*""*string(name)))(sys.iv())
7777
end
7878

7979
function parameters(sys::AbstractSystem,args...)
8080
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())
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())
8383
end

src/systems/diffeqs/first_order_transform.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
function lower_varname(var::Variable, idv, order)
22
order == 0 && return var
3-
name = Symbol(var.name, :_, string(idv.name)^order)
3+
name = Symbol(var.name, :ˍ, string(idv.name)^order)
44
return Variable{vartype(var)}(name)
55
end
66

test/components.jl

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ prob = ODEProblem(connected1,u0map,(0.0,100.0),parammap,jac=true)
4242
@test prob.p == [7.0,1.0,2.0,3.0,4.0,5.0,6.0]
4343
@test prob.u0 isa Vector
4444
@test prob.p isa SVector
45-
@test prob.f.syms == [:a,:lorenz1x,:lorenz1y,:lorenz1z,:lorenz2x,:lorenz2y,:lorenz2z]
45+
@test prob.f.syms == [:a,:lorenz1x,:lorenz1y,:lorenz1z,:lorenz2x,:lorenz2y,:lorenz2z]
4646

4747
eqs_flat = [D(a) ~ a*lorenz1.x,
4848
D(lorenz1.x) ~ lorenz1.σ*(lorenz1.y-lorenz1.x),
@@ -56,19 +56,19 @@ eqs_flat = [D(a) ~ a*lorenz1.x,
5656
@test parameters(connected1) == convert.(Variable,[α,lorenz1.σ,lorenz1.ρ,lorenz1.β,lorenz2.σ,lorenz2.ρ,lorenz2.β])
5757
@test eqs_flat == equations(connected1)
5858

59-
@variables lorenz1x(t) lorenz1y(t) lorenz1z(t) lorenz2x(t) lorenz2y(t) lorenz2z(t)
60-
@parameters lorenz1σ lorenz1ρ lorenz1β lorenz2σ lorenz2ρ lorenz2β
59+
@variables lorenz1x(t) lorenz1y(t) lorenz1z(t) lorenz2x(t) lorenz2y(t) lorenz2z(t)
60+
@parameters lorenz1σ lorenz1ρ lorenz1β lorenz2σ lorenz2ρ lorenz2β
6161

62-
eqs_flat2 = [D(a) ~ a*lorenz1x,
63-
D(lorenz1x) ~ lorenz1σ*(lorenz1y-lorenz1x),
64-
D(lorenz1y) ~ lorenz1x*(lorenz1ρ-lorenz1z)-lorenz1y,
65-
0 ~ lorenz1x + lorenz1y + lorenz1β*lorenz1z,
66-
D(lorenz2x) ~ lorenz2σ*(lorenz2y-lorenz2x),
67-
D(lorenz2y) ~ lorenz2x*(lorenz2ρ-lorenz2z)-lorenz2y,
68-
0 ~ lorenz2x + lorenz2y + lorenz2β*lorenz2z]
62+
eqs_flat2 = [D(a) ~ a*lorenz1x,
63+
D(lorenz1x) ~ lorenz1σ*(lorenz1y-lorenz1x),
64+
D(lorenz1y) ~ lorenz1x*(lorenz1ρ-lorenz1z)-lorenz1y,
65+
0 ~ lorenz1x + lorenz1y + lorenz1β*lorenz1z,
66+
D(lorenz2x) ~ lorenz2σ*(lorenz2y-lorenz2x),
67+
D(lorenz2y) ~ lorenz2x*(lorenz2ρ-lorenz2z)-lorenz2y,
68+
0 ~ lorenz2x + lorenz2y + lorenz2β*lorenz2z]
6969

70-
@test [x.name for x in states(connected1)] == [:a,:lorenz1x,:lorenz1y,:lorenz1z,:lorenz2x,:lorenz2y,:lorenz2z]
71-
@test [x.name for x in parameters(connected1)] == [,:lorenz1σ,:lorenz1ρ,:lorenz1β,:lorenz2σ,:lorenz2ρ,:lorenz2β]
70+
@test [x.name for x in states(connected1)] == [:a,:lorenz1x,:lorenz1y,:lorenz1z,:lorenz2x,:lorenz2y,:lorenz2z]
71+
@test [x.name for x in parameters(connected1)] == [,:lorenz1σ,:lorenz1ρ,:lorenz1β,:lorenz2σ,:lorenz2ρ,:lorenz2β]
7272
@test eqs_flat == equations(connected1)
7373

7474
connected2 = ODESystem(connnectedeqs,t,[a],[α],systems=[lorenz1,lorenz2],name=:connected2)
@@ -104,32 +104,32 @@ eqs_flat = [D(g) ~ g*connected1.lorenz1.x,
104104
@test eqs_flat == equations(doublelevel)
105105

106106
@test [x.name for x in states(doublelevel)] == [:g,
107-
:connected1a,:connected1lorenz1x,:connected1lorenz1y,:connected1lorenz1z,:connected1lorenz2x,:connected1lorenz2y,:connected1lorenz2z,
108-
:connected2a,:connected2lorenz1x,:connected2lorenz1y,:connected2lorenz1z,:connected2lorenz2x,:connected2lorenz2y,:connected2lorenz2z]
107+
:connected1a,:connected1lorenz1x,:connected1lorenz1y,:connected1lorenz1z,:connected1lorenz2x,:connected1lorenz2y,:connected1lorenz2z,
108+
:connected2a,:connected2lorenz1x,:connected2lorenz1y,:connected2lorenz1z,:connected2lorenz2x,:connected2lorenz2y,:connected2lorenz2z]
109109
@test [x.name for x in parameters(doublelevel)] == [,
110-
:connected1α,:connected1lorenz1σ,:connected1lorenz1ρ,:connected1lorenz1β,:connected1lorenz2σ,:connected1lorenz2ρ,:connected1lorenz2β,
111-
:connected2α,:connected2lorenz1σ,:connected2lorenz1ρ,:connected2lorenz1β,:connected2lorenz2σ,:connected2lorenz2ρ,:connected2lorenz2β]
112-
113-
@variables connected1a(t) connected1lorenz1x(t) connected1lorenz1y(t) connected1lorenz1z(t) connected1lorenz2x(t) connected1lorenz2y(t) connected1lorenz2z(t)
114-
@variables connected2a(t) connected2lorenz1x(t) connected2lorenz1y(t) connected2lorenz1z(t) connected2lorenz2x(t) connected2lorenz2y(t) connected2lorenz2z(t)
115-
@parameters connected1α connected1lorenz1σ connected1lorenz1ρ connected1lorenz1β connected1lorenz2σ connected1lorenz2ρ connected1lorenz2β
116-
@parameters connected2α connected2lorenz1σ connected2lorenz1ρ connected2lorenz1β connected2lorenz2σ connected2lorenz2ρ connected2lorenz2β
117-
118-
eqs_flat2 = [D(g) ~ g*connected1lorenz1x,
119-
D(connected1a) ~ connected1a*connected1lorenz1x,
120-
D(connected1lorenz1x) ~ connected1lorenz1σ*(connected1lorenz1y-connected1lorenz1x),
121-
D(connected1lorenz1y) ~ connected1lorenz1x*(connected1lorenz1ρ-connected1lorenz1z)-connected1lorenz1y,
122-
0 ~ connected1lorenz1x + connected1lorenz1y + connected1lorenz1β*connected1lorenz1z,
123-
D(connected1lorenz2x) ~ connected1lorenz2σ*(connected1lorenz2y-connected1lorenz2x),
124-
D(connected1lorenz2y) ~ connected1lorenz2x*(connected1lorenz2ρ-connected1lorenz2z)-connected1lorenz2y,
125-
0 ~ connected1lorenz2x + connected1lorenz2y + connected1lorenz2β*connected1lorenz2z,
126-
D(connected2a) ~ connected2a*connected2lorenz1x,
127-
D(connected2lorenz1x) ~ connected2lorenz1σ*(connected2lorenz1y-connected2lorenz1x),
128-
D(connected2lorenz1y) ~ connected2lorenz1x*(connected2lorenz1ρ-connected2lorenz1z)-connected2lorenz1y,
129-
0 ~ connected2lorenz1x + connected2lorenz1y + connected2lorenz1β*connected2lorenz1z,
130-
D(connected2lorenz2x) ~ connected2lorenz2σ*(connected2lorenz2y-connected2lorenz2x),
131-
D(connected2lorenz2y) ~ connected2lorenz2x*(connected2lorenz2ρ-connected2lorenz2z)-connected2lorenz2y,
132-
0 ~ connected2lorenz2x + connected2lorenz2y + connected2lorenz2β*connected2lorenz2z]
110+
:connected1α,:connected1lorenz1σ,:connected1lorenz1ρ,:connected1lorenz1β,:connected1lorenz2σ,:connected1lorenz2ρ,:connected1lorenz2β,
111+
:connected2α,:connected2lorenz1σ,:connected2lorenz1ρ,:connected2lorenz1β,:connected2lorenz2σ,:connected2lorenz2ρ,:connected2lorenz2β]
112+
113+
@variables connected1a(t) connected1lorenz1x(t) connected1lorenz1y(t) connected1lorenz1z(t) connected1lorenz2x(t) connected1lorenz2y(t) connected1lorenz2z(t)
114+
@variables connected2a(t) connected2lorenz1x(t) connected2lorenz1y(t) connected2lorenz1z(t) connected2lorenz2x(t) connected2lorenz2y(t) connected2lorenz2z(t)
115+
@parameters connected1α connected1lorenz1σ connected1lorenz1ρ connected1lorenz1β connected1lorenz2σ connected1lorenz2ρ connected1lorenz2β
116+
@parameters connected2α connected2lorenz1σ connected2lorenz1ρ connected2lorenz1β connected2lorenz2σ connected2lorenz2ρ connected2lorenz2β
117+
118+
eqs_flat2 = [D(g) ~ g*connected1lorenz1x,
119+
D(connected1a) ~ connected1a*connected1lorenz1x,
120+
D(connected1lorenz1x) ~ connected1lorenz1σ*(connected1lorenz1y-connected1lorenz1x),
121+
D(connected1lorenz1y) ~ connected1lorenz1x*(connected1lorenz1ρ-connected1lorenz1z)-connected1lorenz1y,
122+
0 ~ connected1lorenz1x + connected1lorenz1y + connected1lorenz1β*connected1lorenz1z,
123+
D(connected1lorenz2x) ~ connected1lorenz2σ*(connected1lorenz2y-connected1lorenz2x),
124+
D(connected1lorenz2y) ~ connected1lorenz2x*(connected1lorenz2ρ-connected1lorenz2z)-connected1lorenz2y,
125+
0 ~ connected1lorenz2x + connected1lorenz2y + connected1lorenz2β*connected1lorenz2z,
126+
D(connected2a) ~ connected2a*connected2lorenz1x,
127+
D(connected2lorenz1x) ~ connected2lorenz1σ*(connected2lorenz1y-connected2lorenz1x),
128+
D(connected2lorenz1y) ~ connected2lorenz1x*(connected2lorenz1ρ-connected2lorenz1z)-connected2lorenz1y,
129+
0 ~ connected2lorenz1x + connected2lorenz1y + connected2lorenz1β*connected2lorenz1z,
130+
D(connected2lorenz2x) ~ connected2lorenz2σ*(connected2lorenz2y-connected2lorenz2x),
131+
D(connected2lorenz2y) ~ connected2lorenz2x*(connected2lorenz2ρ-connected2lorenz2z)-connected2lorenz2y,
132+
0 ~ connected2lorenz2x + connected2lorenz2y + connected2lorenz2β*connected2lorenz2z]
133133

134134
@test eqs_flat2 == equations(doublelevel)
135135

@@ -140,11 +140,11 @@ M[12,12] = false
140140
M[15,15] = false
141141
@test calculate_massmatrix(doublelevel) == M
142142

143-
jac = [connected1lorenz1x 0 g zeros(1,12)
143+
jac = [connected1lorenz1x 0 g zeros(1,12)
144144
zeros(7,1) calculate_jacobian(connected1) zeros(Expression,7,7)
145145
zeros(Expression,7,8) calculate_jacobian(connected2)]
146146

147-
jac2 = [connected1lorenz1x 0 g zeros(1,12)
147+
jac2 = [connected1lorenz1x 0 g zeros(1,12)
148148
zeros(7,1) ModelingToolkit.namespace_operation.(calculate_jacobian(connected1),connected1.name,:t) zeros(Expression,7,7)
149149
zeros(Expression,7,8) ModelingToolkit.namespace_operation.(calculate_jacobian(connected2),connected2.name,:t)]
150150

0 commit comments

Comments
 (0)