Skip to content

Commit 069dbcc

Browse files
authored
Merge pull request #207 from JuliaDynamics/hw/fixmtk
use parameters instead of full_parameters
2 parents f37b82b + 3debb0f commit 069dbcc

File tree

2 files changed

+65
-3
lines changed

2 files changed

+65
-3
lines changed

ext/MTKExt.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module MTKExt
33
using ModelingToolkit: Symbolic, iscall, operation, arguments, build_function
44
using ModelingToolkit: ModelingToolkit, Equation, ODESystem, Differential
55
using ModelingToolkit: full_equations, get_variables, structural_simplify, getname, unwrap
6-
using ModelingToolkit: full_parameters, unknowns, independent_variables, observed, defaults
6+
using ModelingToolkit: parameters, unknowns, independent_variables, observed, defaults
77
using Symbolics: Symbolics, fixpoint_sub, substitute
88
using RecursiveArrayTools: RecursiveArrayTools
99
using ArgCheck: @argcheck
@@ -277,7 +277,7 @@ function generate_io_function(_sys, inputss::Tuple, outputss::Tuple;
277277
sys = if ModelingToolkit.iscomplete(_sys)
278278
deepcopy(_sys)
279279
else
280-
_openinputs = setdiff(allinputs, Set(full_parameters(_sys)))
280+
_openinputs = setdiff(allinputs, Set(parameters(_sys)))
281281
all_eq_vars = mapreduce(get_variables, union, full_equations(_sys), init=Set{Symbolic}())
282282
if !(_openinputs all_eq_vars)
283283
missing_inputs = setdiff(_openinputs, all_eq_vars)
@@ -288,7 +288,7 @@ function generate_io_function(_sys, inputss::Tuple, outputss::Tuple;
288288
end
289289

290290
states = unknowns(sys)
291-
allparams = full_parameters(sys) # contains inputs!
291+
allparams = parameters(sys) # contains inputs!
292292
@argcheck allinputs Set(allparams) missing_inputs
293293
params = setdiff(allparams, Set(allinputs))
294294

test/MTK_test.jl

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,65 @@ end
171171

172172
@named piline = DQPiLine()
173173
l = EdgeModel(piline, [:src_u_r, :src_u_i], [:dst_u_r, :dst_u_i], [:src_i_r, :src_i_i], [:dst_i_r, :dst_i_i])
174+
175+
## test nested model
176+
@mtkmodel Shaft begin
177+
@variables begin
178+
θ(t), [description = "Shaft angle"]
179+
ω(t), [description = "Shaft speed"]
180+
Pmech(t), [description = "Mechanical Power"]
181+
Pel(t), [description = "Electrical Power"]
182+
end
183+
@parameters begin
184+
M = 1, [description = "Inertia"]
185+
D = 0.1, [description = "Friction Damping"]
186+
end
187+
@equations begin
188+
Dt(θ) ~ ω
189+
Dt(ω) ~ 1/M * (Pmech - D*ω + Pel)
190+
end
191+
end
192+
193+
@mtkmodel Gov begin
194+
@variables begin
195+
Pmech(t), [description = "Mechanical Power"]
196+
ω_meas(t),[description = "Measured Rotor Frequency"]
197+
end
198+
@parameters begin
199+
D = 0.1, [description = "Governor Droop"]
200+
Pref = 1.0, [description = "Reference Power"]
201+
end
202+
@equations begin
203+
Pmech ~ Pref - D*ω_meas
204+
end
205+
end
206+
207+
@mtkmodel NestedSwing begin
208+
@components begin
209+
shaft = Shaft()
210+
gov = Gov()
211+
end
212+
@variables begin
213+
u_r(t), [description = "d-voltage", output=true]
214+
u_i(t), [description = "q-voltage", output=true]
215+
i_r(t), [description = "d-current", input=true]
216+
i_i(t), [description = "d-current", input=true]
217+
end
218+
@parameters begin
219+
V = 1.0, [description = "Voltage magnitude"]
220+
end
221+
@equations begin
222+
shaft.Pel ~ real((u_r + im*u_i) * (i_r - im*i_i))
223+
gov.ω_meas ~ shaft.ω
224+
gov.Pmech ~ shaft.Pmech
225+
u_r ~ V*cos(shaft.θ)
226+
u_i ~ V*sin(shaft.θ)
227+
end
228+
end
229+
230+
@named nestedswing = NestedSwing()
231+
v = VertexModel(nestedswing, [:i_r, :i_i], [:u_r, :u_i])
232+
@test v.mass_matrix == Diagonal([1,1])
233+
data = NetworkDynamics.rand_inputs_fg(v)
234+
b = @b $(NetworkDynamics.compfg(v))($data...)
235+
@test b.allocs == 0

0 commit comments

Comments
 (0)