Skip to content

Commit dcaa0c4

Browse files
committed
avoid freezing test on julia v1.6
1 parent 553a2b8 commit dcaa0c4

File tree

1 file changed

+47
-40
lines changed

1 file changed

+47
-40
lines changed

test/linearize.jl

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -159,44 +159,51 @@ lsys, ssys = linearize(sat, [u], [y]; op = Dict(u => 2))
159159
@test lsys.D[] == 0
160160

161161
## Test that dummy_derivatives can be set to zero
162-
using LinearAlgebra
163-
using ModelingToolkit
164-
using ModelingToolkitStandardLibrary
165-
using ModelingToolkitStandardLibrary.Blocks
166-
using ModelingToolkitStandardLibrary.Mechanical.MultiBody2D
167-
using ModelingToolkitStandardLibrary.Mechanical.Translational
168-
using ControlSystemsMTK
169-
using ControlSystemsMTK.ControlSystemsBase
170-
connect = ModelingToolkit.connect
171-
172-
@parameters t
173-
D = Differential(t)
162+
if VERSION >= v"1.8"
163+
# The call to Link(; m = 0.2, l = 10, I = 1, g = -9.807) hangs forever on Julia v1.6
164+
using LinearAlgebra
165+
using ModelingToolkit
166+
using ModelingToolkitStandardLibrary
167+
using ModelingToolkitStandardLibrary.Blocks
168+
using ModelingToolkitStandardLibrary.Mechanical.MultiBody2D
169+
using ModelingToolkitStandardLibrary.Mechanical.Translational
170+
171+
using ControlSystemsMTK
172+
using ControlSystemsMTK.ControlSystemsBase: sminreal, minreal, poles
173+
connect = ModelingToolkit.connect
174+
175+
@parameters t
176+
D = Differential(t)
174177

175-
@named link1 = Link(; m = 0.2, l = 10, I = 1, g = -9.807)
176-
@named cart = Translational.Mass(; m = 1, s_0 = 0)
177-
@named fixed = Fixed()
178-
@named force = Force()
179-
180-
eqs = [connect(link1.TX1, cart.flange)
181-
connect(cart.flange, force.flange)
182-
connect(link1.TY1, fixed.flange)]
183-
184-
@named model = ODESystem(eqs, t, [], []; systems = [link1, cart, force, fixed])
185-
def = ModelingToolkit.defaults(model)
186-
def[link1.y1] = 0
187-
def[link1.x1] = 10
188-
def[link1.A] = -pi / 2
189-
def[link1.dA] = 0
190-
def[cart.s] = 0
191-
def[force.flange.v] = 0
192-
lin_outputs = [cart.s, cart.v, link1.A, link1.dA]
193-
lin_inputs = [force.f.u]
194-
195-
G = named_ss(model, lin_inputs, lin_outputs, allow_symbolic = true, op = def,
196-
allow_input_derivatives = true, zero_dummy_der = true)
197-
G = sminreal(G)
198-
G = minreal(G)
199-
ps = poles(G)
200-
201-
@test minimum(abs, ps) < 1e-6
202-
@test minimum(abs, complex(0, 1.3777260367206716) .- ps) < 1e-10
178+
@named link1 = Link(; m = 0.2, l = 10, I = 1, g = -9.807)
179+
@named cart = Translational.Mass(; m = 1, s_0 = 0)
180+
@named fixed = Fixed()
181+
@named force = Force()
182+
183+
eqs = [connect(link1.TX1, cart.flange)
184+
connect(cart.flange, force.flange)
185+
connect(link1.TY1, fixed.flange)]
186+
187+
@show @named model = ODESystem(eqs, t, [], []; systems = [link1, cart, force, fixed])
188+
def = ModelingToolkit.defaults(model)
189+
def[link1.y1] = 0
190+
def[link1.x1] = 10
191+
def[link1.A] = -pi / 2
192+
def[link1.dA] = 0
193+
def[cart.s] = 0
194+
def[force.flange.v] = 0
195+
lin_outputs = [cart.s, cart.v, link1.A, link1.dA]
196+
lin_inputs = [force.f.u]
197+
198+
@info "named_ss"
199+
G = named_ss(model, lin_inputs, lin_outputs, allow_symbolic = true, op = def,
200+
allow_input_derivatives = true, zero_dummy_der = true)
201+
G = sminreal(G)
202+
@info "minreal"
203+
G = minreal(G)
204+
@info "poles"
205+
ps = poles(G)
206+
207+
@test minimum(abs, ps) < 1e-6
208+
@test minimum(abs, complex(0, 1.3777260367206716) .- ps) < 1e-10
209+
end

0 commit comments

Comments
 (0)