Skip to content

Commit 7678c7c

Browse files
committed
Add unit and connect metadata
1 parent e8d2838 commit 7678c7c

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

src/variables.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
struct VariableUnit end
2+
struct VariableConnectType end
3+
Symbolics.option_to_metadata_type(::Val{:unit}) = VariableUnit
4+
Symbolics.option_to_metadata_type(::Val{:connect}) = VariableConnectType
5+
16
"""
27
$(SIGNATURES)
38
Takes a list of pairs of `variables=>values` and an ordered list of variables

test/variable_parsing.jl

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,58 @@ x1 = Num[Variable{FnType{Tuple{Any}, Real}}(:x, 1)(t.val),
6363

6464
@variables a[1:11,1:2]
6565
@variables a()
66+
67+
using Symbolics: value, VariableDefaultValue
68+
using ModelingToolkit: VariableConnectType, VariableUnit, rename
69+
using Unitful
70+
71+
vals = [1,2,3,4]
72+
@variables x=1 xs[1:4]=vals ys[1:5]=1
73+
74+
@test getmetadata(x, VariableDefaultValue) === 1
75+
@test getmetadata.(xs, (VariableDefaultValue,)) == vals
76+
@test getmetadata.(ys, (VariableDefaultValue,)) == ones(Int, 5)
77+
78+
struct Flow end
79+
u = u"m^3/s"
80+
@variables begin
81+
x = [1, 2], [connect=Flow,unit=u]
82+
y = 2
83+
end
84+
85+
@test getmetadata(x, VariableDefaultValue) == [1, 2]
86+
@test getmetadata(x, VariableConnectType) == Flow
87+
@test getmetadata(x, VariableUnit) == u
88+
@test getmetadata(y, VariableDefaultValue) === 2
89+
90+
@variables begin
91+
x, [connect=Flow,unit=u]
92+
y = 2, [connect=Flow]
93+
end
94+
95+
@test !hasmetadata(x, VariableDefaultValue)
96+
@test getmetadata(x, VariableConnectType) == Flow
97+
@test getmetadata(x, VariableUnit) == u
98+
@test getmetadata(y, VariableDefaultValue) === 2
99+
@test getmetadata(y, VariableConnectType) == Flow
100+
101+
a = rename(value(x), :a)
102+
@test !hasmetadata(x, VariableDefaultValue)
103+
@test getmetadata(x, VariableConnectType) == Flow
104+
@test getmetadata(x, VariableUnit) == u
105+
106+
@variables t x(t)=1 [connect=Flow,unit=u]
107+
108+
@test getmetadata(x, VariableDefaultValue) == 1
109+
@test getmetadata(x, VariableConnectType) == Flow
110+
@test getmetadata(x, VariableUnit) == u
111+
112+
a = rename(value(x), :a)
113+
@test getmetadata(a, VariableDefaultValue) == 1
114+
@test getmetadata(a, VariableConnectType) == Flow
115+
@test getmetadata(a, VariableUnit) == u
116+
117+
@parameters p=2 [unit=u"m",]
118+
@test getmetadata(p, VariableDefaultValue) == 2
119+
@test !hasmetadata(p, VariableConnectType)
120+
@test getmetadata(p, VariableUnit) == u"m"

0 commit comments

Comments
 (0)