Skip to content

Commit 731b904

Browse files
committed
Moved TestStateSpace.jl from ModiaLang and adapted it
1 parent 7c34974 commit 731b904

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

examples/StateSpace.jl

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
module StateSpaceSimulation
2+
3+
using Modia, ModiaPlot
4+
5+
6+
# Second order system:
7+
# w = 1.0
8+
# D = 0.1
9+
# k = 2.0
10+
# der(x1) = x2
11+
# der(x2) = -w^2*x1 - 2*D*w*x2 + w^2*u
12+
# y = k*x1
13+
SecondOrder1 = Model(
14+
w = 20.0,
15+
D = 0.1,
16+
k = 2.0,
17+
sys = Modia.StateSpace | Map(A = :([ 0 1;
18+
-w^2 -2*D*w]),
19+
B = :([0; w^2]),
20+
C = :([k 0]),
21+
D = :(zeros(1)),
22+
x = Var(init = zeros(2)) ),
23+
equations = :[sys.u = 1.0]
24+
)
25+
26+
27+
secondOrder1 = @instantiateModel(SecondOrder1, unitless=true)
28+
simulate!(secondOrder1, merge=Map(D=0.3),
29+
requiredFinalStates = [0.9974089572681231, 0.011808652820321723])
30+
plot(secondOrder1, [("sys.u", "sys.y"); "sys.x"], figure = 1)
31+
32+
33+
34+
SecondOrder2 = Model(
35+
sys = Modia.StateSpace | Map( A = [ 0.0 1.0;
36+
-100.0 -12.0],
37+
B = [0; 400.0],
38+
C = [2.0 0],
39+
D = zeros(1,1),
40+
x = Var(init = zeros(2))),
41+
equations = :[sys.u = 1.0]
42+
)
43+
44+
secondOrder2 = @instantiateModel(SecondOrder2, unitless=true)
45+
simulate!(secondOrder2, Tsit5(), merge=Map(sys=Map(A = [0.0 1.0; -400.0 -12.0])),
46+
requiredFinalStates = [0.9974089572681231, 0.011808652820321723])
47+
plot(secondOrder2, [("sys.u", "sys.y"); "sys.x"], figure = 2)
48+
49+
simulate!(secondOrder2, Tsit5(), merge=Map(sys=Map(x=[1.0,1.0])),
50+
logParameters=true, logStates=true,
51+
requiredFinalStates = [1.0000295203337868, 0.0022367686372974493])
52+
plot(secondOrder2, [("sys.u", "sys.y"); "sys.x"], figure = 3)
53+
end

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ using Test
99
include("../examples/MotorControl.jl")
1010
include("../examples/Pendulum.jl")
1111
include("../examples/ServoSystem.jl")
12+
include("../examples/StateSpace.jl")
1213
include("../examples/Tutorial.jl")
1314

1415
end

0 commit comments

Comments
 (0)