Skip to content

Commit 0efd202

Browse files
fix test
1 parent 1e4aea4 commit 0efd202

File tree

4 files changed

+45
-37
lines changed

4 files changed

+45
-37
lines changed

src/Hydraulic/components.jl

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@ Infinite reservoir; set BC for hydraulic system
1212
function Reservoir(; name, p)
1313
@parameters p = p
1414
@named a = HydraulicPort()
15-
eqs = [
16-
a.p ~ p
17-
]
18-
return ODESystem(eqs, t, [], [p]; systems=[a], name=name)
15+
eqs = [a.p ~ p]
16+
return ODESystem(eqs, t, [], [p]; systems = [a], name = name)
1917
end
2018

2119
"""
@@ -32,13 +30,13 @@ end
3230
- `Cd`: [] Discharge coefficient
3331
- `Re_crit=150`: [] Critical Reynolds number
3432
"""
35-
function LocalRestriction(; name, A, Cd, Re_crit=150)
33+
function LocalRestriction(; name, A, Cd, Re_crit = 150)
3634
@named a = HydraulicPort()
3735
@named b = HydraulicPort()
3836

3937
pars = @parameters begin
40-
A=A
41-
Cd=Cd
38+
A = A
39+
Cd = Cd
4240
p_atm# , [scope=:parent]
4341
nu_atm# , [scope=:parent]
4442
beta_atm# , [scope=:parent]
@@ -55,15 +53,15 @@ function LocalRestriction(; name, A, Cd, Re_crit=150)
5553
rho = calc_density((b.p + a.p) / 2, rho_atm, p_atm, beta_atm)
5654

5755
Δp = b.p - a.p
58-
p_cr = pi/4 * rho / (2 * A) * (Re_crit * nu_atm / Cd)^2
56+
p_cr = pi / 4 * rho / (2 * A) * (Re_crit * nu_atm / Cd)^2
5957

6058
eqs = [
6159
# Momentum balance
6260
b.m_flow ~ Cd * A * sqrt(2 * rho) * regRoot(Δp, p_cr)
6361
# Mass balance
6462
a.m_flow + b.m_flow ~ 0
6563
]
66-
return ODESystem(eqs, t, [], pars; name=name, systems=[a, b])
64+
return ODESystem(eqs, t, [], pars; name = name, systems = [a, b])
6765
end
6866

6967
"""
@@ -81,11 +79,11 @@ Constant volume chamber.
8179
- `V`: [`m^3`] Constant volume
8280
- `p_start=0.0`: [`Pa`] Initial pressure inside the volume
8381
"""
84-
function ConstantVolume(; name, V, p_start=0.0)
82+
function ConstantVolume(; name, V, p_start = 0.0)
8583
@named a = HydraulicPort()
86-
@variables p(t)=p_start # pressure inside the volume
84+
@variables p(t) = p_start # pressure inside the volume
8785
pars = @parameters begin
88-
V=V
86+
V = V
8987
p_atm# , [scope=:parent]
9088
nu_atm# , [scope=:parent]
9189
beta_atm# , [scope=:parent]
@@ -100,12 +98,12 @@ function ConstantVolume(; name, V, p_start=0.0)
10098
pars = [V, p_atm, nu_atm, beta_atm, rho_atm]
10199

102100
rho = calc_density(p, rho_atm, p_atm, beta_atm)
103-
101+
104102
eqs = [
105103
# Mass conservation
106104
D(p) ~ 1 / (Symbolics.derivative(rho, p) * V) * a.m_flow
107105
a.p ~ p # no pressure loss from inlet to volume
108106
]
109107

110-
return ODESystem(eqs, t, [p], pars; name=name, systems=[a])
111-
end
108+
return ODESystem(eqs, t, [p], pars; name = name, systems = [a])
109+
end

src/Hydraulic/sources.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ function PressureSource(; name, dp)
1818
a.p ~ b.p + dp
1919
a.m_flow + b.m_flow ~ 0
2020
]
21-
return ODESystem(eqs, t, [], [dp]; systems=[a, b], name=name)
21+
return ODESystem(eqs, t, [], [dp]; systems = [a, b], name = name)
2222
end
2323

2424
"""
@@ -41,5 +41,5 @@ function MassFlowRateSource(; name, m_flow)
4141
a.m_flow + b.m_flow ~ 0
4242
a.m_flow ~ m_flow
4343
]
44-
return ODESystem(eqs, t, [], [m_flow]; systems=[a, b], name=name)
45-
end
44+
return ODESystem(eqs, t, [], [m_flow]; systems = [a, b], name = name)
45+
end

src/Hydraulic/utils.jl

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
@connector function HydraulicPort(; name, p_start=1e5, m_flow_start=0.0)
1+
@connector function HydraulicPort(; name, p_start = 1e5, m_flow_start = 0.0)
22
@variables p(t) = p_start
33
@variables m_flow(t) = m_flow_start [connect = Flow]
4-
return ODESystem(Equation[], t, [p, m_flow], []; name=name)
4+
return ODESystem(Equation[], t, [p, m_flow], []; name = name)
55
end
66
@doc """
77
HydraulicPort(; name, p_start=1e5, m_flow_start=0.0)
@@ -18,10 +18,10 @@ Port for hydraulic systems.
1818
""" HydraulicPort
1919

2020
# smooth approximation of x * abs(x)
21-
regAbs(x, delta=0.01) = x * sqrt(x^2 + delta^2)
21+
regAbs(x, delta = 0.01) = x * sqrt(x^2 + delta^2)
2222

2323
# Smoothed version of sign(x)*sqrt(abs(x)), which has a finite derivative at x=0
24-
regRoot(x, delta=0.01) = x / (x^2 + delta^2)^0.25
24+
regRoot(x, delta = 0.01) = x / (x^2 + delta^2)^0.25
2525

2626
"""
2727
FluidProperties(;name, p_atm=101325.0, nu_atm=1.0034e-6, beta_atm=2.1791e9, rho_atm=998.21)
@@ -40,9 +40,15 @@ model = extend(model, fluid_props)
4040
- `beta_atm = 2.1791e9`: [Pa] Isothermal bulk modulus at atmospheric pressure
4141
- `rho_atm = 998.21`: [kg/m^3] Liquid density at atmospheric pressure
4242
"""
43-
function FluidProperties(;name, p_atm=101325.0, nu_atm=1.0034e-6, beta_atm=2.1791e9, rho_atm=998.21)
44-
pars = @parameters p_atm=p_atm nu_atm=nu_atm beta_atm=beta_atm rho_atm=rho_atm
45-
ODESystem(Equation[], t, [], pars; name=name)
43+
function FluidProperties(;
44+
name,
45+
p_atm = 101325.0,
46+
nu_atm = 1.0034e-6,
47+
beta_atm = 2.1791e9,
48+
rho_atm = 998.21,
49+
)
50+
pars = @parameters p_atm = p_atm nu_atm = nu_atm beta_atm = beta_atm rho_atm = rho_atm
51+
ODESystem(Equation[], t, [], pars; name = name)
4652
end
4753

4854
"""
@@ -65,4 +71,4 @@ Assumptions:
6571
"""
6672
function calc_density(p, rho_atm, p_atm, beta_atm)
6773
return rho_atm * exp((p - p_atm) / beta_atm)
68-
end
74+
end

test/Hydraulic/hydraulic.jl

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,33 @@ using ModelingToolkit, OrdinaryDiffEq, Test
66
D = Differential(t)
77

88
@testset "restriction and volume (shows dynamic compressibility)" begin
9-
@named reservoir_left = Reservoir(; p=2e5)
10-
@named valve = LocalRestriction(; A=1e-4, Cd=0.64)
11-
@named volume = ConstantVolume(; V=0.001)
9+
@named reservoir_left = Reservoir(; p = 2e5)
10+
@named valve = LocalRestriction(; A = 1e-4, Cd = 0.64)
11+
@named volume = ConstantVolume(; V = 0.001)
1212
connections = [
1313
connect(reservoir_left.a, valve.a)
1414
connect(valve.b, volume.a)
1515
]
16-
@named model =
17-
ODESystem(connections, t; systems=[reservoir_left, valve, volume])
18-
16+
@named model = ODESystem(connections, t; systems = [reservoir_left, valve, volume])
17+
1918
# Water
20-
@named fluid_props =
21-
FluidProperties(;p_atm=101325.0, nu_atm=1.0034e-6, beta_atm=2.1791e9, rho_atm=998.21)
19+
@named fluid_props = FluidProperties(;
20+
p_atm = 101325.0,
21+
nu_atm = 1.0034e-6,
22+
beta_atm = 2.1791e9,
23+
rho_atm = 998.21,
24+
)
2225
model = extend(model, fluid_props)
2326

2427
sys = structural_simplify(model)
2528
prob = ODEProblem(sys, [volume.p => 1e5], (0.0, 0.5e-3))
26-
sol = solve(prob, Rodas4())
29+
sol = solve(prob, Tsit5(), reltol = 1e-6)
2730

2831
@test sol.retcode == :Success
29-
@test sol[volume.p][end] 2e5
32+
@test sol[volume.p][end] 2e5 atol = 1
33+
@test sol[volume.a.m_flow][end] 0 atol = 1e-2
3034

3135
# p1=plot(sol; vars=[volume.p / 1e6], ylabel="p in MPa", label="Pressure of Volume")
32-
# p2=plot(sol; vars=[volume.a.m_flow], ylabel="m_flow in kg/s", label="Massflow rate into the volume")
36+
# p2=plot(sol; vars=[volume.a.m_flow], ylabel="m_flow in kg/s", label="Mass Flow Rate into the volume")
3337
# plot(p1, p2, layout=(2,1))
3438
end

0 commit comments

Comments
 (0)