1
- @connector function Flange (; name)
2
- vars = @variables begin
3
- s (t)
4
- f (t), [connect = Flow]
5
- end
6
- ODESystem (Equation[], t, vars, [], name = name, defaults = Dict (f => 0.0 ))
1
+ @connector Flange begin
2
+ s (t)
3
+ f (t), [connect = Flow]
7
4
end
8
5
Base. @doc """
9
6
Flange(;name)
@@ -15,9 +12,9 @@ Base.@doc """
15
12
- `f`: [N] Cut force into the flange
16
13
""" Flange
17
14
18
- @connector function Support (; name)
19
- @named flange = Flange ( )
20
- extend ( ODESystem (Equation[], t, name = name), flange)
15
+ @connector Support begin
16
+ s (t )
17
+ f (t), [connect = Flow]
21
18
end
22
19
Base. @doc """
23
20
Support(;name)
@@ -29,78 +26,66 @@ Support/housing 1-dim. translational flange.
29
26
- `f`: [N] Cut force into the flange
30
27
""" Support
31
28
32
- function PartialTwoFlanges (; name)
33
- @named flange_a = Flange () # (left) driving flange (flange axis directed into cut plane, e. g. from left to right)
34
- @named flange_b = Flange () # (right) driven flange (flange axis directed out of cut plane)
35
- compose (ODESystem ([], t; name), flange_a, flange_b)
29
+ @mtkmodel PartialTwoFlanges begin
30
+ @components begin
31
+ flange_a = Flange () # (left) driving flange (flange axis directed into cut plane, e. g. from left to right)
32
+ flange_b = Flange () # (right) driven flange (flange axis directed out of cut plane)
33
+ end
36
34
end
37
35
38
36
"""
39
- PartialCompliant(;name, s_rel_start= 0.0, f_start= 0.0)
37
+ PartialCompliant(; name, s_rel = 0.0, f = 0.0)
40
38
41
39
Partial model for the compliant connection of two translational 1-dim. flanges.
42
40
43
- # Parameters:
44
-
45
- - `s_rel_start`: [m] Initial relative distance between the flanges
46
- - `f_start`: [N] Initial force between flanges
47
-
48
41
# States:
49
42
50
- - `s_rel`: [m] Relative distance (= flange_b.s - flange_a.s)
51
- - `f`: [N] Force between flanges (= flange_b.f)
43
+ - `s_rel`: [m] Relative distance (= flange_b.s - flange_a.s). It accepts intial value and defaults to 0.0.
44
+ - `f`: [N] Force between flanges (= flange_b.f). It accepts intial value and defaults to 0.0.
52
45
"""
53
- function PartialCompliant (; name, s_rel_start = 0.0 , f_start = 0.0 )
54
- @named pt = PartialTwoFlanges ()
55
- @unpack flange_a, flange_b = pt
56
- @variables s_rel (t)= s_rel_start [
57
- description = " Relative distance between flanges flange_b.s - flange_a.s" ,
58
- ]
59
- @variables f (t)= f_start [
60
- description = " Force between flanges (positive in direction of flange axis R)" ,
61
- ]
46
+ @mtkmodel PartialCompliant begin
47
+ @extend (flange_a, flange_b) = pt = PartialTwoFlanges ()
48
+ @variables begin
49
+ s_rel (t) = 0.0 , [description = " Relative distance between flanges flange_b.s - flange_a.s" ]
50
+ f (t) = 0.0 , [description = " Force between flanges (positive in direction of flange axis R)" ]
51
+ end
62
52
63
- eqs = [s_rel ~ flange_b. s - flange_a. s
53
+ @equations begin
54
+ s_rel ~ flange_b. s - flange_a. s
64
55
flange_b. f ~ + f
65
- flange_a. f ~ - f]
66
- return extend ( ODESystem (eqs, t; name = name), pt)
56
+ flange_a. f ~ - f
57
+ end
67
58
end
68
59
69
60
"""
70
- PartialCompliantWithRelativeStates(;name, s_rel_start= 0.0, v_rel_start= 0.0, f_start= 0.0)
61
+ PartialCompliantWithRelativeStates(;name, s_rel = 0.0, v_rel = 0.0, f = 0.0)
71
62
72
63
Partial model for the compliant connection of two translational 1-dim. flanges.
73
64
74
- # Parameters:
75
-
76
- - `s_rel_start`: [m] Initial relative distance
77
- - `v_rel_start`: [m/s] Initial relative linear velocity (= der(s_rel))
78
-
79
- # States:
65
+ # States:
80
66
81
- - `s_rel`: [m] Relative distance (= flange_b.phi - flange_a.phi)
82
- - `v_rel`: [m/s] Relative linear velocity (= der(s_rel))
83
- - `f`: [N] Force between flanges (= flange_b.f)
67
+ - `s_rel`: [m] Relative distance (= flange_b.phi - flange_a.phi). It accepts intial value and defaults to 0.0.
68
+ - `v_rel`: [m/s] Relative linear velocity (= der(s_rel)). It accepts intial value and defaults to 0.0.
69
+ - `f`: [N] Force between flanges (= flange_b.f). It accepts intial value and defaults to 0.0.
84
70
"""
85
- function PartialCompliantWithRelativeStates (; name, s_rel_start = 0 , v_rel_start = 0 ,
86
- f_start = 0 )
87
- @named pt = PartialTwoFlanges ()
88
- @unpack flange_a, flange_b = pt
89
- @variables s_rel (t)= s_rel_start [
90
- description = " Relative distance between flanges flange_b.s - flange_a.s" ,
91
- ]
92
- @variables v_rel (t)= v_rel_start [description = " Relative linear velocity (= D(s_rel))" ]
93
- @variables f (t)= f_start [description = " Forces between flanges (= flange_b.f)" ]
71
+ @mtkmodel PartialCompliantWithRelativeStates begin
72
+ @extend flange_a, flange_b = pt = PartialTwoFlanges ()
73
+ @variables begin
74
+ s_rel (t) = 0.0 , [description = " Relative distance between flanges flange_b.s - flange_a.s" ]
75
+ v_rel (t) = 0.0 , [description = " Relative linear velocity (= D(s_rel))" ]
76
+ f (t) = 0.0 , [description = " Forces between flanges (= flange_b.f)" ]
77
+ end
94
78
95
- eqs = [s_rel ~ flange_b. s - flange_a. s
79
+ @equations begin
80
+ s_rel ~ flange_b. s - flange_a. s
96
81
v_rel ~ D (s_rel)
97
82
flange_b. f ~ f
98
- flange_a. f ~ - f]
99
- return extend ( ODESystem (eqs, t; name = name), pt)
83
+ flange_a. f ~ - f
84
+ end
100
85
end
101
86
102
87
"""
103
- PartialElementaryOneFlangeAndSupport2(;name, use_support= false)
88
+ PartialElementaryOneFlangeAndSupport2(; name, use_support = false)
104
89
105
90
Partial model for a component with one translational 1-dim. shaft flange and a support used for textual modeling, i.e., for elementary models
106
91
@@ -130,7 +115,7 @@ function PartialElementaryOneFlangeAndSupport2(; name, use_support = false)
130
115
end
131
116
132
117
"""
133
- PartialElementaryTwoFlangesAndSupport2(;name, use_support= false)
118
+ PartialElementaryTwoFlangesAndSupport2(; name, use_support = false)
134
119
135
120
Partial model for a component with two translational 1-dim. flanges and a support used for textual modeling, i.e., for elementary models
136
121
@@ -161,16 +146,16 @@ function PartialElementaryTwoFlangesAndSupport2(; name, use_support = false)
161
146
end
162
147
end
163
148
164
- function PartialRigid (; name, L = 0 , s0 = 0 )
165
- @named ptf = PartialTwoFlanges ()
166
- @unpack flange_a, flange_b = ptf
167
- @variables s (t)= s0 [
168
- description = " Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2) " ,
169
- ]
170
- @parameters L = L [
171
- description = " Length of component, from left flange to right flange (= flange_b.s - flange_a.s) " ,
172
- ]
173
- eqs = [ flange_a. s ~ s - L / 2
174
- flange_b. s ~ s + L / 2 ]
175
- return extend ( ODESystem (eqs, t; name = name), ptf)
149
+ @mtkmodel PartialRigid begin
150
+ @extend flange_a, flange_b = ptf = PartialTwoFlanges ()
151
+ @variables begin
152
+ s (t) = 0.0 , [description = " Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2) " ]
153
+ end
154
+ @parameters begin
155
+ L = 0.0 , [description = " Length of component, from left flange to right flange (= flange_b.s - flange_a.s) " ]
156
+ end
157
+ @equations begin
158
+ flange_a. s ~ s - L / 2
159
+ flange_b. s ~ s + L / 2
160
+ end
176
161
end
0 commit comments