Skip to content

Commit 132bbce

Browse files
author
Brad Carman
committed
fixed Free connector
1 parent 36a7f13 commit 132bbce

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

src/Hydraulic/IsothermalCompressible/components.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ dm ────► │ │ area
506506

507507
ports = @named begin
508508
port = HydraulicPort(; p_int)
509-
flange = MechanicalPort()
509+
flange = MechanicalPort(; f_int = p_int*area)
510510
damper = ValveBase(; p_a_int = p_int, p_b_int = p_int, area_int = 1, Cd,
511511
Cd_reverse, minimum_area)
512512
end
@@ -528,8 +528,7 @@ dm ────► │ │ area
528528
Δx = ParentScope(x_max) / N
529529
x₀ = ParentScope(x_int)
530530

531-
@named moving_volume = VolumeBase(; p_int, x_int = 0, area, dead_volume = 0, Χ1 = 0,
532-
Χ2 = 1)
531+
@named moving_volume = VolumeBase(; p_int, x_int = 0, area, dead_volume = 0, Χ1 = 0, Χ2 = 1)
533532

534533
volumes = []
535534
for i in 1:N
@@ -582,6 +581,8 @@ dm ────► │ │ area
582581
defaults = [flange.v => 0])
583582
end
584583

584+
585+
585586
@component function SpoolValve(reversible = false; p_a_int, p_b_int, x_int, Cd, d, name)
586587
pars = @parameters begin
587588
p_a_int = p_a_int

src/Mechanical/Translational/components.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
"""
22
Free(; name)
33
4-
Use to close a system that has un-connected `MechanicalPort`'s.
4+
Use to close a system that has un-connected `MechanicalPort`'s where the force should not be zero (i.e. you want to solve for the force to produce the given movement of the port)
55
66
# Connectors:
77
88
- `flange`: 1-dim. translational flange
99
"""
1010
@component function Free(; name)
1111
@named flange = MechanicalPort()
12-
vars = []
12+
vars = @variables f(t) = 0
1313
eqs = [
14-
flange.f ~ 0,
14+
flange.f ~ f
1515
]
1616
return compose(ODESystem(eqs, t, vars, []; name, defaults = [flange.v => 0]),
1717
flange)

src/Mechanical/Translational/sources.jl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Linear 1D position input source
3636
- `flange`: 1-dim. translational flange
3737
- `s`: real input
3838
"""
39-
@component function Position(; s_0 = 0, name)
39+
@component function Position(solves_force=true; s_0 = 0, name)
4040
systems = @named begin
4141
flange = MechanicalPort()
4242
s = RealInput()
@@ -46,16 +46,17 @@ Linear 1D position input source
4646
vars = @variables x(t) = s_0
4747

4848
eqs = [
49-
flange.f ~ 0
5049
D(x) ~ flange.v
5150
s.u ~ x
5251
]
5352

53+
!solves_force && push!(eqs, 0 ~ flange.f)
54+
5455
ODESystem(eqs, t, vars, pars; name, systems, defaults = [flange.v => 0, s.u => s_0])
5556
end
5657

5758

58-
@component function Velocity(; name)
59+
@component function Velocity(solves_force=true; name)
5960
systems = @named begin
6061
flange = MechanicalPort()
6162
v = RealInput()
@@ -65,15 +66,16 @@ end
6566
vars = []
6667

6768
eqs = [
68-
flange.f ~ 0
6969
v.u ~ flange.v
7070
]
7171

72+
!solves_force && push!(eqs, 0 ~ flange.f)
73+
7274
ODESystem(eqs, t, vars, pars; name, systems, defaults = [flange.v => 0])
7375
end
7476

7577

76-
@component function Acceleration(; s_0 = 0, name)
78+
@component function Acceleration(solves_force=true; s_0 = 0, name)
7779
systems = @named begin
7880
flange = MechanicalPort()
7981
a = RealInput()
@@ -83,9 +85,10 @@ end
8385
vars = @variables v(t) = 0
8486

8587
eqs = [
86-
flange.f ~ 0
8788
v ~ flange.v
8889
D(v) ~ a.u]
8990

91+
!solves_force && push!(eqs, 0 ~ flange.f)
92+
9093
ODESystem(eqs, t, vars, pars; name, systems, defaults = [flange.v => 0])
9194
end

src/Mechanical/Translational/utils.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
@connector function MechanicalPort(; name)
2-
pars = []
1+
@connector function MechanicalPort(; name, f_int=0, v_int=0)
2+
pars = @parameters begin
3+
f_int = f_int
4+
v_int = v_int
5+
end
36
vars = @variables begin
4-
v(t)
7+
v(t) = v_int
58
f(t), [connect = Flow]
69
end
7-
ODESystem(Equation[], t, vars, pars, name = name, defaults = [f => 0])
10+
ODESystem(Equation[], t, vars, pars; name, defaults=[f=>f_int])
811
end
912
Base.@doc """
1013
MechanicalPort(;name)

0 commit comments

Comments
 (0)