Skip to content

Commit 6016d78

Browse files
authored
Merge pull request #212 from SciML/myb/link
Use lowest order differentiated variables to improve state selection
2 parents 5944672 + 4526995 commit 6016d78

File tree

6 files changed

+20
-15
lines changed

6 files changed

+20
-15
lines changed

src/Blocks/math.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Output the product of a gain matrix with the input signal vector.
5050
output = RealOutput(; nout = size(K, 1))
5151
end
5252
@equations begin
53-
[(@info i, j; output.u[i] ~ sum(getdefault(K)[i, j] * input.u[j])) for j in 1:nin
53+
[output.u[i] ~ sum(getdefault(K)[i, j] * input.u[j] for j in 1:nin)
5454
for i in 1:nout]...
5555
end
5656
end

src/Mechanical/MultiBody2D/MultiBody2D.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module MultiBody2D
22

33
using ModelingToolkit, Symbolics, IfElse
4-
using ..Translational
4+
using ..TranslationalPosition
55

66
@parameters t
77
D = Differential(t)

src/Mechanical/MultiBody2D/components.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@
4141
end
4242

4343
@components begin
44-
TX1 = MechanicalPort()
45-
TY1 = MechanicalPort()
44+
TX1 = Flange()
45+
TY1 = Flange()
4646

47-
TX2 = MechanicalPort()
48-
TY2 = MechanicalPort()
47+
TX2 = Flange()
48+
TY2 = Flange()
4949
end
5050

5151
@equations begin
@@ -76,12 +76,12 @@
7676
x_cm ~ l * cos(A) / 2 + x1
7777
y_cm ~ l * sin(A) / 2 + y1
7878
TX1.f ~ fx1
79-
TX1.v ~ dx1
79+
TX1.s ~ x1
8080
TY1.f ~ fy1
81-
TY1.v ~ dy1
81+
TY1.s ~ y1
8282
TX2.f ~ fx2
83-
TX2.v ~ dx2
83+
TX2.s ~ x2
8484
TY2.f ~ fy2
85-
TY2.v ~ dy2
85+
TY2.s ~ y2
8686
end
8787
end

src/Mechanical/TranslationalPosition/components.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Flange fixed in housing at a given position.
1313
"""
1414
@mtkmodel Fixed begin
1515
@parameters begin
16-
s_0
16+
s_0 = 0
1717
end
1818
@components begin
1919
flange = Flange(; s = s_0)

src/Mechanical/TranslationalPosition/sources.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ Input signal acting as external force on a flange
55
"""
66
@mtkmodel Force begin
77
@parameters begin
8-
use_support
8+
use_support = false
9+
s = 0
910
end
10-
@extend (flange,) = partial_element = PartialElementaryOneFlangeAndSupport2(use_support = use_support)
11+
@extend (flange,) = partial_element = PartialElementaryOneFlangeAndSupport2(;
12+
use_support = use_support isa Bool ? use_support :
13+
ModelingToolkit.getdefault(use_support))
1114
@components begin
12-
f = RealInput() # Accelerating force acting at flange (= -flange.tau)
15+
flange = Flange(; s = s)
16+
f = RealInput()
1317
end
1418
@equations begin
1519
flange.f ~ -f.u

test/Mechanical/multibody.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using ModelingToolkit
22
using ModelingToolkitStandardLibrary.Mechanical.MultiBody2D
3-
using ModelingToolkitStandardLibrary.Mechanical.Translational
3+
using ModelingToolkitStandardLibrary.Mechanical.TranslationalPosition
44
using DifferentialEquations
55
# using Setfield
66
using Test
@@ -23,6 +23,7 @@ eqs = [connect(link1.TX1, cart.flange) #, force.flange)
2323
@named model = ODESystem(eqs, t, [], []; systems = [link1, link2, cart, fixed])
2424

2525
sys = structural_simplify(model)
26+
@test length(states(sys)) == 6
2627

2728
# The below code does work...
2829
#=

0 commit comments

Comments
 (0)