11using ModelingToolkitStandardLibrary. Electrical
22using ModelingToolkitStandardLibrary. Blocks: Constant
3-
3+ using SymbolicIndexingInterface
44@testset " Block Modeling" begin
5- @testset " RC Explicit " begin
5+ @testset " RC Functional " begin
66 R = 1.0
77 C = 1.0
88 V = 1.0
@@ -23,42 +23,6 @@ using ModelingToolkitStandardLibrary.Blocks: Constant
2323 connect (sensor. p, capacitor. p)
2424 sensor. phi ~ key_parameter. value]
2525
26- @named rc_model = ODESystem (rc_eqs, t,
27- systems = [resistor, capacitor, constant, source, ground, sensor, key_parameter])
28- sys = structural_simplify (rc_model)
29- prob1 = ODEProblem (sys, Pair[], (0 , 10.0 ))
30- sol1 = solve (prob1, Tsit5 ())
31- prob2 = ODEProblem (sys, Pair[capacitor. C => 0.9 ], (0 , 10.0 ))
32- sol2 = solve (prob2, Tsit5 ())
33- prob3 = ODEProblem (sys, Pair[capacitor. C => 5.0 ], (0 , 10.0 ))
34- sol3 = solve (prob3, Tsit5 ())
35-
36- d1 = discretize_solution (sol1, sol1)
37- d2 = discretize_solution (sol2, sol1)
38- d3 = discretize_solution (sol3, sol1)
39- results_good = compare_discrete (sys, d1, d2)
40- results_bad = compare_discrete (sys, d1, d3)
41- end
42- @testset " RC Functional" begin
43- R = 1.0
44- C = 1.0
45- V = 1.0
46- @variables t
47- @named resistor = Resistor (R = R)
48- @named capacitor = Capacitor (C = C)
49- @named source = Voltage ()
50- @named constant = Constant (k = V)
51- @named ground = Ground ()
52-
53- @named sensor = PotentialSensor ()
54- @named key_parameter = Measurement (sensor)
55-
56- rc_eqs = [connect (constant. output, source. V)
57- connect (source. p, resistor. p)
58- connect (resistor. n, capacitor. p)
59- connect (capacitor. n, source. n, ground. g)
60- connect (sensor. p, capacitor. p)]
61-
6226 @named rc_model = ODESystem (rc_eqs, t,
6327 systems = [resistor, capacitor, constant, source, ground, sensor, key_parameter])
6428 sys = structural_simplify (rc_model)
@@ -78,7 +42,7 @@ using ModelingToolkitStandardLibrary.Blocks: Constant
7842
7943 d1 = discretize_solution (sol1, sol1)
8044
81- ds1 = discretize_solution (sol1, sol1; measured= states (sys))
45+ ds1 = discretize_solution (sol1, sol1; measured= SymbolicIndexingInterface . all_variable_symbols (sys))
8246 println (compare (sol3, ds1))
8347 println (compare (sol2, ds1))
8448 println (compare (sol1, ds1))
0 commit comments