@@ -7,6 +7,7 @@ tspan = (0.0, 3.0)
77g = - 9.807
88
99@testset " Free body" begin
10+ # https://github.com/dzimmer/PlanarMechanics/blob/743462f58858a808202be93b708391461cbe2523/PlanarMechanics/Examples/FreeBody.mo
1011 m = 2
1112 j = 1
1213 @named body = Body (; m, j)
@@ -30,6 +31,7 @@ g = -9.807
3031end
3132
3233@testset " Pendulum" begin
34+ # https://github.com/dzimmer/PlanarMechanics/blob/743462f58858a808202be93b708391461cbe2523/PlanarMechanics/Examples/Pendulum.mo
3335 @named ceiling = Fixed ()
3436 @named rod = FixedTranslation (rx = 1.0 , ry = 0.0 )
3537 @named body = Body (m = 1 , j = 0.1 )
205207 @test sol[rel_a_sensor2. rel_a_y. u][end ] == 0
206208end
207209
208- @testset " Measure Demo" begin end
210+ @testset " Measure Demo" begin
211+ # https://github.com/dzimmer/PlanarMechanics/blob/743462f58858a808202be93b708391461cbe2523/PlanarMechanics/Examples/MeasureDemo.mo
212+ @named body = Body (; m = 1 , j = 0.1 )
213+ @named fixed_translation = FixedTranslation (; rx = 1 , ry = 0 )
214+ @named fixed = Fixed ()
215+ @named body1 = Body (; m = 0.4 , j = 0.02 )
216+ @named fixed_translation1 = FixedTranslation (; rx = 0.4 , ry = 0 )
217+ @named abs_pos_sensor = AbsolutePosition (; resolve_in_frame = :world )
218+ @named rel_pos_sensor = RelativePosition (; resolve_in_frame = :world )
219+ @named revolute1 = Revolute ()
220+ @named abs_v_sensor = AbsoluteVelocity (; resolve_in_frame = :frame_a )
221+ @named rel_v_sensor = RelativeVelocity (; resolve_in_frame = :frame_b )
222+ @named abs_a_sensor = AbsoluteAcceleration (; resolve_in_frame = :world )
223+ @named rel_a_sensor = RelativeAcceleration (; resolve_in_frame = :frame_b )
224+ @named revolute2 = Revolute ()
225+
226+ connections = [
227+ connect (fixed_translation. frame_b, body. frame),
228+ connect (fixed_translation1. frame_b, body1. frame),
229+ connect (fixed. frame, revolute1. frame_a),
230+ connect (revolute1. frame_b, fixed_translation. frame_a),
231+ # connect(abs_a_sensor.frame_resolve, abs_a_sensor.frame_a),
232+ connect (revolute2. frame_b, fixed_translation1. frame_a),
233+ connect (revolute2. frame_a, fixed_translation. frame_b),
234+ # connect_sensor(fixed_translation.frame_b, rel_a_sensor.frame_a)...,
235+ # connect(fixed_translation.frame_b, rel_v_sensor.frame_a),
236+ # connect(fixed_translation.frame_b, rel_v_sensor.frame_a),
237+ # connect(rel_a_sensor.frame_b, body1.frame_a),
238+ # connect(rel_v_sensor.frame_b, body1.frame_a),
239+ # connect(rel_v_sensor.frame_b, body1.frame_a),
240+ connect_sensor (body1. frame, abs_a_sensor. frame_a)... ,
241+ # connect_sensor(body1.frame, abs_v_sensor.frame_a)...,
242+ # connect_sensor(body1.frame, abs_pos_sensor.frame_a)...,
243+ ]
244+
245+ @named model = ODESystem (connections,
246+ t,
247+ [],
248+ [],
249+ systems = [
250+ fixed_translation,
251+ body,
252+ fixed,
253+ body1,
254+ fixed_translation1,
255+ revolute1,
256+ revolute2,
257+ abs_pos_sensor,
258+ ])
259+ sys = structural_simplify (model)
260+ unset_vars = setdiff (states (sys), keys (ModelingToolkit. defaults (sys)))
261+ prob = ODEProblem (sys, unset_vars .=> 0.0 , (0 , 5 ), []; jac = true )
262+ sol = solve (prob, Rodas5P ())
263+ @test_broken SciMLBase. successful_retcode (sol)
264+ end
209265
210266@testset " SpringDamper" begin
211267 # https://github.com/dzimmer/PlanarMechanics/blob/master/PlanarMechanics/Examples/SpringDamperDemo.mo
0 commit comments