|
34 | 34 | @named dv = TV.Damper(d = 1) |
35 | 35 | @named dp = TP.Damper(d = 1, va = 1, vb = 0.0, flange_a.s = 3, flange_b.s = 1) |
36 | 36 |
|
37 | | - @named sv = TV.Spring(k = 1, flange_a__v = 1, delta_s = 1) |
| 37 | + @named sv = TV.Spring(k = 1) |
38 | 38 | @named sp = TP.Spring(k = 1, flange_a__s = 3, flange_b__s = 1, l = 1) |
39 | 39 |
|
40 | 40 | @named bv = TV.Mass(m = 1) |
|
43 | 43 | @named gv = TV.Fixed() |
44 | 44 | @named gp = TP.Fixed(s_0 = 1) |
45 | 45 |
|
46 | | - function simplify_and_solve(damping, spring, body, ground) |
| 46 | + function simplify_and_solve(damping, spring, body, ground; initialization_eqs=Equation[]) |
47 | 47 | eqs = [connect(spring.flange_a, body.flange, damping.flange_a) |
48 | 48 | connect(spring.flange_b, damping.flange_b, ground.flange)] |
49 | 49 |
|
50 | 50 | @named model = ODESystem(eqs, t; systems = [ground, body, spring, damping]) |
51 | 51 |
|
52 | 52 | sys = structural_simplify(model) |
53 | 53 |
|
54 | | - prob = ODEProblem(sys, [body.s => 0], (0, 20.0), []) |
55 | | - sol = solve(prob, ImplicitMidpoint(), dt = 0.01) |
| 54 | + prob = ODEProblem(sys, [], (0, 20.0), []; initialization_eqs) |
| 55 | + sol = solve(prob; abstol = 1e-9, reltol = 1e-9) |
56 | 56 |
|
57 | 57 | return sol |
58 | 58 | end |
59 | 59 |
|
60 | | - solv = simplify_and_solve(dv, sv, bv, gv) |
| 60 | + solv = simplify_and_solve(dv, sv, bv, gv; initialization_eqs=[bv.s ~ 3, bv.v ~ 1, sv.delta_s ~ 1]) |
61 | 61 | solp = simplify_and_solve(dp, sp, bp, gp) |
62 | 62 |
|
63 | 63 | @test solv[bv.v][1] == 1.0 |
|
0 commit comments