@@ -625,62 +625,63 @@ end
625
625
# ==============================================================================
626
626
627
627
import ModelingToolkitStandardLibrary. Mechanical. TranslationalModelica as Translational
628
- @testset " Planar Kinematic loop" begin
629
- @info " Testing Planar Kinematic loop"
630
-
631
- @mtkmodel PlanarKinematicLoop begin
632
- @parameters begin
633
- radius = 0.02
634
- end
635
- @components begin
636
- fixed = Pl. Fixed ()
637
- fixed1D = Translational. Fixed (s0= 0 )
638
- fixedTranslation1 = Pl. FixedTranslation (; r = [0 , - 0.5 ], radius)
639
- fixedTranslation2 = Pl. FixedTranslation (; r = [0 , - 0.5 ], radius)
640
- fixedTranslation3 = Pl. FixedTranslation (; r = [0 , - 0.6 ], radius)
641
- revolute1 = Pl. Revolute (; phi = asin (0.4 / 0.5 / 2 ), state_priority= 100 , radius)
642
- revolute3 = Pl. Revolute (; phi = - asin (0.4 / 0.5 / 2 ), radius)
643
- revolute2 = Pl. Revolute (; radius)
644
- revolute4 = Pl. Revolute (; phi = - 0.69813170079773 , w = 0 , state_priority= 100 , radius)
645
- prismatic1 = Pl. Prismatic (r = [1 , 0 ], s = 0.4 , v = 0 , axisflange= true , state_priority= 10 )
646
- springDamper1D = Translational. SpringDamper (c = 20 , d = 4 , s_rel0 = 0.4 )
647
- body = Pl. Body (m = 1 , I = 0.1 , state_priority= 10 )
648
- end
649
-
650
- @equations begin
651
- connect (fixedTranslation1. frame_a, revolute1. frame_b)
652
- connect (fixedTranslation2. frame_a, revolute3. frame_b)
653
- connect (revolute2. frame_a, fixedTranslation1. frame_b)
654
- connect (revolute2. frame_b, fixedTranslation2. frame_b)
655
- connect (fixedTranslation3. frame_a, revolute4. frame_b)
656
- connect (revolute1. frame_a, fixed. frame)
657
- connect (fixed1D. flange, springDamper1D. flange_a)
658
- connect (revolute4. frame_a, fixedTranslation1. frame_b)
659
- connect (body. frame_a, fixedTranslation3. frame_b)
660
- connect (prismatic1. frame_a, fixed. frame)
661
- connect (springDamper1D. flange_b, prismatic1. flange_a)
662
- connect (prismatic1. frame_b, revolute3. frame_a)
663
- end
664
- end
665
-
666
- @named model = PlanarKinematicLoop ()
667
- model = complete (model)
668
- ssys = structural_simplify (IRSystem (model))
669
- @test length (unknowns (ssys)) <= 6 # ideally 4
670
- display (sort (unknowns (ssys), by= string))
671
-
672
-
673
- guesses = ModelingToolkit. missing_variable_defaults (model)
674
- ps = parameters (model)
675
- fulldefs = defaults (model)
676
- defs = Dict (filter (p-> ! ModelingToolkit. isparameter (p[1 ]), collect (ModelingToolkit. defaults (model))))
677
- u0 = merge (Dict (guesses), defs)
678
- initsys = generate_initializesystem (ssys; guesses= u0)
679
- initprob = NonlinearLeastSquaresProblem (initsys, u0, [[p => fulldefs[p] for p in ps]; t => 0.0 ])
680
- u0sol = solve (initprob)
681
-
682
-
683
- prob = ODEProblem (ssys, unknowns (ssys) .=> u0sol[unknowns (ssys)]* 0.7 , (0.0 , 5.0 ))
684
- sol = solve (prob, Rodas5P (), initializealg = ShampineCollocationInit ())
685
- @test SciMLBase. successful_retcode (sol)
686
- end
628
+ # NOTE: waiting for release of ModelingToolkitStandardLibrary that includes https://github.com/SciML/ModelingToolkitStandardLibrary.jl/pull/327
629
+ # @testset "Planar Kinematic loop" begin
630
+ # @info "Testing Planar Kinematic loop"
631
+
632
+ # @mtkmodel PlanarKinematicLoop begin
633
+ # @parameters begin
634
+ # radius = 0.02
635
+ # end
636
+ # @components begin
637
+ # fixed = Pl.Fixed()
638
+ # fixed1D = Translational.Fixed(s0=0)
639
+ # fixedTranslation1 = Pl.FixedTranslation(; r = [0, -0.5], radius)
640
+ # fixedTranslation2 = Pl.FixedTranslation(; r = [0, -0.5], radius)
641
+ # fixedTranslation3 = Pl.FixedTranslation(; r = [0, -0.6], radius)
642
+ # revolute1 = Pl.Revolute(; phi = asin(0.4/0.5/2), state_priority=100, radius)
643
+ # revolute3 = Pl.Revolute(; phi = -asin(0.4/0.5/2), radius)
644
+ # revolute2 = Pl.Revolute(; radius)
645
+ # revolute4 = Pl.Revolute(; phi = -0.69813170079773, w = 0, state_priority=100, radius)
646
+ # prismatic1 = Pl.Prismatic(r = [1, 0], s = 0.4, v = 0, axisflange=true, state_priority=10)
647
+ # springDamper1D = Translational.SpringDamper(c = 20, d = 4, s_rel0 = 0.4)
648
+ # body = Pl.Body(m = 1, I = 0.1, state_priority=10)
649
+ # end
650
+
651
+ # @equations begin
652
+ # connect(fixedTranslation1.frame_a, revolute1.frame_b)
653
+ # connect(fixedTranslation2.frame_a, revolute3.frame_b)
654
+ # connect(revolute2.frame_a, fixedTranslation1.frame_b)
655
+ # connect(revolute2.frame_b, fixedTranslation2.frame_b)
656
+ # connect(fixedTranslation3.frame_a, revolute4.frame_b)
657
+ # connect(revolute1.frame_a, fixed.frame)
658
+ # connect(fixed1D.flange, springDamper1D.flange_a)
659
+ # connect(revolute4.frame_a, fixedTranslation1.frame_b)
660
+ # connect(body.frame_a, fixedTranslation3.frame_b)
661
+ # connect(prismatic1.frame_a, fixed.frame)
662
+ # connect(springDamper1D.flange_b, prismatic1.flange_a)
663
+ # connect(prismatic1.frame_b, revolute3.frame_a)
664
+ # end
665
+ # end
666
+
667
+ # @named model = PlanarKinematicLoop()
668
+ # model = complete(model)
669
+ # ssys = structural_simplify(IRSystem(model))
670
+ # @test length(unknowns(ssys)) <= 6 # ideally 4
671
+ # display(sort(unknowns(ssys), by=string))
672
+
673
+
674
+ # guesses = ModelingToolkit.missing_variable_defaults(model)
675
+ # ps = parameters(model)
676
+ # fulldefs = defaults(model)
677
+ # defs = Dict(filter(p->!ModelingToolkit.isparameter(p[1]), collect(ModelingToolkit.defaults(model))))
678
+ # u0 = merge(Dict(guesses), defs)
679
+ # initsys = generate_initializesystem(ssys; guesses=u0)
680
+ # initprob = NonlinearLeastSquaresProblem(initsys, u0, [[p => fulldefs[p] for p in ps]; t => 0.0])
681
+ # u0sol = solve(initprob)
682
+
683
+
684
+ # prob = ODEProblem(ssys, unknowns(ssys) .=> u0sol[unknowns(ssys)]*0.7, (0.0, 5.0))
685
+ # sol = solve(prob, Rodas5P(), initializealg = ShampineCollocationInit())
686
+ # @test SciMLBase.successful_retcode(sol)
687
+ # end
0 commit comments