@@ -23,35 +23,36 @@ import ModelingToolkitStandardLibrary.Mechanical.TranslationalPosition as TP
2323 @named system = System ()
2424 s = complete (system)
2525 sys = structural_simplify (system)
26- prob = ODEProblem (sys, [], (0 , 0.1 ))
26+ prob = ODEProblem (sys, [s . mass . s => 0 ], (0 , 0.1 ))
2727 sol = solve (prob, Rosenbrock23 ())
2828
2929 @test sol[s. mass. flange. v][end ]≈ - 0.1 * 10 atol= 1e-3
3030 @test sol[s. free. f][end ] ≈ 100 * 10
3131end
3232
3333@testset " Spring, Damper, Mass, Fixed" begin
34- @named dv = TV. Damper (d = 1 , flange_a . v = 1 )
34+ @named dv = TV. Damper (d = 1 )
3535 @named dp = TP. Damper (d = 1 , va = 1 , vb = 0.0 , flange_a. s = 3 , flange_b. s = 1 )
3636
3737 @named sv = TV. Spring (k = 1 , flange_a__v = 1 , delta_s = 1 )
3838 @named sp = TP. Spring (k = 1 , flange_a__s = 3 , flange_b__s = 1 , l = 1 )
3939
40- @named bv = TV. Mass (m = 1 , v = 1 )
40+ @named bv = TV. Mass (m = 1 )
4141 @named bp = TP. Mass (m = 1 , v = 1 , s = 3 )
4242
4343 @named gv = TV. Fixed ()
4444 @named gp = TP. Fixed (s_0 = 1 )
4545
4646 function simplify_and_solve (damping, spring, body, ground)
47+
4748 eqs = [connect (spring. flange_a, body. flange, damping. flange_a)
4849 connect (spring. flange_b, damping. flange_b, ground. flange)]
4950
5051 @named model = ODESystem (eqs, t; systems = [ground, body, spring, damping])
5152
5253 sys = structural_simplify (model)
5354
54- prob = ODEProblem (sys, [], (0 , 20.0 ), [])
55+ prob = ODEProblem (sys, [body . s => 0 ], (0 , 20.0 ), [])
5556 sol = solve (prob, ImplicitMidpoint (), dt = 0.01 )
5657
5758 return sol
6869end
6970
7071@testset " driven spring damper mass" begin
71- @named dv = TV. Damper (d = 1 , flange_a . v = 1 )
72+ @named dv = TV. Damper (d = 1 )
7273 @named dp = TP. Damper (d = 1 , va = 1.0 , vb = 0.0 , flange_a. s = 3 , flange_b. s = 1 )
7374
74- @named sv = TV. Spring (k = 1 , flange_a__v = 1 , delta_s = 1 )
75+ @named sv = TV. Spring (k = 1 )
7576 @named sp = TP. Spring (k = 1 , flange_a__s = 3 , flange_b__s = 1 , l = 1 )
7677
77- @named bv = TV. Mass (m = 1 , v = 1 )
78+ @named bv = TV. Mass (m = 1 )
7879 @named bp = TP. Mass (m = 1 , v = 1 , s = 3 )
7980
8081 @named gv = TV. Fixed ()
99100
100101 model = System (dv, sv, bv, gv, fv, source)
101102 sys = structural_simplify (model)
102- prob = ODEProblem (sys, [], (0 , 20.0 ), [])
103+ prob = ODEProblem (sys, [bv . s => 0 ], (0 , 20.0 ), [])
103104 solv = solve (prob, Rodas4 ())
104105
105106 model = System (dp, sp, bp, gp, fp, source)
173174 @named sys = ODESystem (
174175 eqs, t, [], []; systems = [force, source, mass, acc, acc_output])
175176 s = complete (structural_simplify (sys))
176- prob = ODEProblem (s, [], (0.0 , pi ))
177+ prob = ODEProblem (s, [mass . s => 0 ], (0.0 , pi ))
177178 sol = solve (prob, Tsit5 ())
178179 @test sol[sys. acc_output. u] ≈ (sol[sys. mass. f] ./ m)
179180 end
228229 @named sys = ODESystem (
229230 eqs, t, [], []; systems = [force, source, mass, acc, acc_output])
230231 s = complete (structural_simplify (sys))
231- prob = ODEProblem (s, [], (0.0 , pi ))
232+ prob = ODEProblem (s, [mass . s => 0 ], (0.0 , pi ))
232233 sol = solve (prob, Tsit5 ())
233234 @test sol[sys. acc_output. u] ≈ (sol[sys. mass. f] ./ m)
234235 end
0 commit comments