Skip to content

Commit 6b26bd7

Browse files
author
Brad Carman
committed
format and cleanup
1 parent 20462b1 commit 6b26bd7

File tree

6 files changed

+121
-117
lines changed

6 files changed

+121
-117
lines changed

src/Hydraulic/IsothermalCompressible/components.jl

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ Caps a hydraulic port to prevent mass flow in or out.
1111
- `port`: hydraulic port
1212
"""
1313
@component function Cap(; name)
14-
15-
vars = @variables p(t), [guess=0]
14+
vars = @variables p(t), [guess = 0]
1615

1716
systems = @named begin
1817
port = HydraulicPort()
@@ -39,8 +38,8 @@ Provides an "open" boundary condition for a hydraulic port such that mass flow `
3938
pars = []
4039

4140
vars = @variables begin
42-
p(t), [guess=0]
43-
dm(t), [guess=0]
41+
p(t), [guess = 0]
42+
dm(t), [guess = 0]
4443
end
4544

4645
systems = @named begin
@@ -73,12 +72,12 @@ Variable length internal flow model of the fully developed incompressible flow f
7372
- `port_a`: hydraulic port
7473
- `port_b`: hydraulic port
7574
"""
76-
@component function TubeBase(add_inertia = true, variable_length = true;
75+
@component function TubeBase(add_inertia = true, variable_length = true;
7776
area,
78-
length_int,
77+
length_int,
7978
head_factor = 1,
8079
perimeter = 2 * sqrt(area * pi),
81-
shape_factor = 64,
80+
shape_factor = 64,
8281
name)
8382
pars = @parameters begin
8483
area = area
@@ -89,8 +88,8 @@ Variable length internal flow model of the fully developed incompressible flow f
8988
end
9089

9190
@variables begin
92-
x(t), [guess=length_int]
93-
ddm(t), [guess=0]
91+
x(t), [guess = length_int]
92+
ddm(t), [guess = 0]
9493
end
9594

9695
vars = []
@@ -248,8 +247,8 @@ Reduces the flow from `port_a` to `port_b` by `n`. Useful for modeling parallel
248247
end
249248

250249
vars = @variables begin
251-
dm_a(t), [guess=0]
252-
dm_b(t), [guess=0]
250+
dm_a(t), [guess = 0]
251+
dm_b(t), [guess = 0]
253252
end
254253

255254
systems = @named begin
@@ -268,7 +267,8 @@ Reduces the flow from `port_a` to `port_b` by `n`. Useful for modeling parallel
268267
ODESystem(eqs, t, vars, pars; name, systems)
269268
end
270269

271-
@component function ValveBase(reversible = false; minimum_area = 0, Cd, Cd_reverse = Cd, name)
270+
@component function ValveBase(
271+
reversible = false; minimum_area = 0, Cd, Cd_reverse = Cd, name)
272272
pars = @parameters begin
273273
Cd = Cd
274274
Cd_reverse = Cd_reverse
@@ -281,7 +281,7 @@ end
281281
end
282282

283283
vars = @variables begin
284-
area(t)
284+
area(t)
285285
y(t)
286286
end
287287

@@ -369,10 +369,10 @@ end
369369
end
370370

371371
vars = @variables begin
372-
x(t)
373-
dx(t), [guess=0]
372+
x(t)
373+
dx(t), [guess = 0]
374374
rho(t), [guess = liquid_density(port)]
375-
drho(t), [guess=0]
375+
drho(t), [guess = 0]
376376
vol(t) # = dead_volume + area * x_int
377377
end
378378

@@ -551,7 +551,7 @@ dm ────► │ │ area
551551
- `flange`: mechanical translational port
552552
"""
553553
@component function DynamicVolume(N, add_inertia = true, reversible = false;
554-
# p_int,
554+
# p_int,
555555
area,
556556
x_int = 0,
557557
x_max,
@@ -575,7 +575,7 @@ dm ────► │ │ area
575575

576576
#TODO: How to set an assert effective_length >= length ??
577577
pars = @parameters begin
578-
# p_int = p_int
578+
# p_int = p_int
579579
area = area
580580

581581
x_int = x_int
@@ -619,7 +619,7 @@ dm ────► │ │ area
619619
#TODO: How to handle x_int?
620620
#TODO: Handle direction
621621
@named moving_volume = VolumeBase(;
622-
# x_int = 0,
622+
# x_int = 0,
623623
area,
624624
dead_volume = N == 0 ? area * x_int : 0,
625625
Χ1 = N == 0 ? 1 : 0,
@@ -651,7 +651,7 @@ dm ────► │ │ area
651651
zero(Δx)))
652652

653653
comp = VolumeBase(; name = Symbol("v$i"),
654-
# x_int = 0,
654+
# x_int = 0,
655655
area = ParentScope(area),
656656
dead_volume = ParentScope(area) * length, Χ1 = 1, Χ2 = 0)
657657

@@ -711,14 +711,14 @@ See [`Valve`](@ref) for more information.
711711
end
712712

713713
systems = @named begin
714-
port_a = HydraulicPort(; )
715-
port_b = HydraulicPort(; )
714+
port_a = HydraulicPort(;)
715+
port_b = HydraulicPort(;)
716716
flange = MechanicalPort()
717717
valve = ValveBase(reversible; Cd)
718718
end
719719

720720
vars = @variables begin
721-
x(t)
721+
x(t)
722722
dx(t)
723723
end
724724

@@ -759,7 +759,6 @@ See [`SpoolValve`](@ref) for more information.
759759
"""
760760
@component function SpoolValve2Way(reversible = false; m, g, Cd, d, name)
761761
pars = @parameters begin
762-
763762
m = m
764763
g = g
765764

@@ -774,10 +773,10 @@ See [`SpoolValve`](@ref) for more information.
774773
vSA = SpoolValve(reversible; Cd, d)
775774
vBR = SpoolValve(reversible; Cd, d)
776775

777-
port_s = HydraulicPort(; )
778-
port_a = HydraulicPort(; )
779-
port_b = HydraulicPort(; )
780-
port_r = HydraulicPort(; )
776+
port_s = HydraulicPort(;)
777+
port_a = HydraulicPort(;)
778+
port_b = HydraulicPort(;)
779+
port_r = HydraulicPort(;)
781780

782781
mass = Mass(; m = m, g = g)
783782

@@ -942,10 +941,10 @@ Actuator made of two DynamicVolumes connected in opposite direction with body ma
942941
end
943942

944943
eqs = [connect(vol_a.port, port_a)
945-
connect(vol_b.port, port_b)
946-
connect(vol_a.flange, vol_b.flange, mass.flange, flange)
947-
D(x) ~ dx
948-
dx ~ vol_a.flange.v]
944+
connect(vol_b.port, port_b)
945+
connect(vol_a.flange, vol_b.flange, mass.flange, flange)
946+
D(x) ~ dx
947+
dx ~ vol_a.flange.v]
949948

950949
ODESystem(eqs, t, vars, pars; name, systems)
951950
end

src/Hydraulic/IsothermalCompressible/utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import ChainRulesCore
22

3-
regPow(x, a, delta = 0.01) = x * (x * x + delta * delta)^((a - 1) / 2);
3+
regPow(x, a, delta = 0.01) = x * (x * x + delta * delta)^((a - 1) / 2);
44
regRoot(x, delta = 0.01) = regPow(x, 0.5, delta)
55

66
"""

src/Mechanical/Translational/components.jl

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,10 @@ Sliding mass with inertia
7070
f(t)
7171
end
7272

73-
eqs = [
74-
flange.v ~ v
75-
flange.f ~ f
76-
77-
D(s) ~ v
78-
D(v) ~ f / m + g
79-
]
73+
eqs = [flange.v ~ v
74+
flange.f ~ f
75+
D(s) ~ v
76+
D(v) ~ f / m + g]
8077

8178
return compose(ODESystem(eqs, t, vars, pars; name = name),
8279
flange)

test/Hydraulic/debugging.jl

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,66 +7,75 @@ import ModelingToolkitStandardLibrary.Mechanical.Translational as T
77
using ModelingToolkitStandardLibrary.Blocks: Parameter
88

99
@component function Step(;
10-
name, height = 1.0, offset = 0.0, start_time = 0.0, duration = Inf,
11-
smooth = 1e-5)
12-
@named output = B.RealOutput()
13-
duration_numeric = duration
14-
pars = @parameters offset=offset start_time=start_time height=height duration=duration step_val(t) :: Bool = true
15-
equation = if smooth == false # use comparison in case smooth is a float
16-
offset +
17-
ifelse((step_val) & (t < start_time + duration), height, zero(height))
18-
# ifelse((start_time <= t) & (t < start_time + duration), height, zero(height))
19-
else
20-
smooth === true && (smooth = 1e-5)
21-
if duration_numeric == Inf
22-
smooth_step(t, smooth, height, offset, start_time)
10+
name, height = 1.0, offset = 0.0, start_time = 0.0, duration = Inf,
11+
smooth = 1e-5)
12+
@named output = B.RealOutput()
13+
duration_numeric = duration
14+
pars = @parameters offset=offset start_time=start_time height=height duration=duration step_val(t)::Bool=true
15+
equation = if smooth == false # use comparison in case smooth is a float
16+
offset +
17+
ifelse((step_val) & (t < start_time + duration), height, zero(height))
18+
# ifelse((start_time <= t) & (t < start_time + duration), height, zero(height))
2319
else
24-
smooth_step(t, smooth, height, offset, start_time) -
25-
smooth_step(t, smooth, height, zero(start_time), start_time + duration)
20+
smooth === true && (smooth = 1e-5)
21+
if duration_numeric == Inf
22+
smooth_step(t, smooth, height, offset, start_time)
23+
else
24+
smooth_step(t, smooth, height, offset, start_time) -
25+
smooth_step(t, smooth, height, zero(start_time), start_time + duration)
26+
end
2627
end
27-
end
28-
29-
eqs = [
30-
output.u ~ equation
31-
]
3228

33-
compose(ODESystem(eqs, t, [], pars; name = name, continuous_events = [[t ~ start_time, t ~ start_time + duration] => ((i,u,p,c) -> i.ps[p.step_val]=false, [], [step_val], [step_val], nothing)]), [output])
29+
eqs = [
30+
output.u ~ equation
31+
]
3432

33+
compose(
34+
ODESystem(eqs,
35+
t,
36+
[],
37+
pars;
38+
name = name,
39+
continuous_events = [[t ~ start_time, t ~ start_time + duration] => (
40+
(i, u, p, c) -> i.ps[p.step_val] = false,
41+
[], [step_val], [step_val], nothing)]),
42+
[output])
3543
end
3644

3745
#@testset "Fluid Domain and Tube" begin
38-
function System(N; bulk_modulus, name)
39-
pars = @parameters begin
40-
bulk_modulus = bulk_modulus
41-
end
46+
function System(N; bulk_modulus, name)
47+
pars = @parameters begin
48+
bulk_modulus = bulk_modulus
49+
end
4250

43-
systems = @named begin
44-
fluid = IC.HydraulicFluid(; bulk_modulus)
45-
stp = Step(; height = 2*101325, offset = 101325, start_time = 0.05, duration = Inf,
46-
smooth = false)
47-
src = IC.Pressure(;)
48-
vol = IC.FixedVolume(; vol = 10.0)
49-
res = IC.Tube(N; area = 0.01, length = 50.0)
50-
end
51+
systems = @named begin
52+
fluid = IC.HydraulicFluid(; bulk_modulus)
53+
stp = Step(;
54+
height = 2 * 101325, offset = 101325, start_time = 0.05, duration = Inf,
55+
smooth = false)
56+
src = IC.Pressure(;)
57+
vol = IC.FixedVolume(; vol = 10.0)
58+
res = IC.Tube(N; area = 0.01, length = 50.0)
59+
end
5160

52-
eqs = [connect(stp.output, src.p)
53-
connect(fluid, src.port)
54-
connect(src.port, res.port_a)
55-
connect(res.port_b, vol.port)]
61+
eqs = [connect(stp.output, src.p)
62+
connect(fluid, src.port)
63+
connect(src.port, res.port_a)
64+
connect(res.port_b, vol.port)]
5665

57-
ODESystem(eqs, t, [], pars; name, systems)
58-
end
66+
ODESystem(eqs, t, [], pars; name, systems)
67+
end
5968

60-
@named sys5_1 = System(2; bulk_modulus = 1e9)
69+
@named sys5_1 = System(2; bulk_modulus = 1e9)
6170

62-
sys5_1 = structural_simplify(sys5_1)
71+
sys5_1 = structural_simplify(sys5_1)
6372

64-
initialization_eqs = [sys5_1.vol.port.p ~ 101325,sys5_1.res.p1.port_a.dm ~ 0]
65-
initsys5_1 = ModelingToolkit.generate_initializesystem(sys5_1;initialization_eqs)
73+
initialization_eqs = [sys5_1.vol.port.p ~ 101325, sys5_1.res.p1.port_a.dm ~ 0]
74+
initsys5_1 = ModelingToolkit.generate_initializesystem(sys5_1; initialization_eqs)
6675

67-
initsys5_1 = structural_simplify(initsys5_1)
68-
initprob5_1 = NonlinearProblem(initsys5_1, [t=>0])
69-
initsol5_1 = solve(initprob5_1)
76+
initsys5_1 = structural_simplify(initsys5_1)
77+
initprob5_1 = NonlinearProblem(initsys5_1, [t => 0])
78+
initsol5_1 = solve(initprob5_1)
7079

71-
prob5_1 = ODEProblem(sys5_1, [], (0, 50); initialization_eqs)
72-
sol5_1 = solve(prob5_1) # ERROR: UndefRefError: access to undefined reference
80+
prob5_1 = ODEProblem(sys5_1, [], (0, 50); initialization_eqs)
81+
sol5_1 = solve(prob5_1) # ERROR: UndefRefError: access to undefined reference

0 commit comments

Comments
 (0)