@@ -11,18 +11,17 @@ Caps a hydraulic port to prevent mass flow in or out.
1111- `port`: hydraulic port
1212"""
1313@component function Cap (; p_int, name)
14- pars = @parameters p_int = p_int
15-
16- vars = @variables p (t) = p_int
14+
15+ vars = @variables p (t), [guess= 0 ]
1716
1817 systems = @named begin
19- port = HydraulicPort (; p_int = p_int )
18+ port = HydraulicPort ()
2019 end
2120
2221 eqs = [port. p ~ p
2322 port. dm ~ 0 ]
2423
25- ODESystem (eqs, t, vars, pars ; name, systems)
24+ ODESystem (eqs, t, vars, [] ; name, systems)
2625end
2726
2827"""
@@ -36,16 +35,16 @@ Provides an "open" boundary condition for a hydraulic port such that mass flow `
3635# Connectors:
3736- `port`: hydraulic port
3837"""
39- @component function Open (; p_int, name)
40- pars = @parameters p_int = p_int
38+ @component function Open (; name)
39+ pars = []
4140
4241 vars = @variables begin
43- p (t) = p_int
44- dm (t)
42+ p (t), [guess = 0 ]
43+ dm (t), [guess = 0 ]
4544 end
4645
4746 systems = @named begin
48- port = HydraulicPort (; p_int = p_int )
47+ port = HydraulicPort ()
4948 end
5049
5150 eqs = [port. p ~ p
@@ -75,12 +74,14 @@ Variable length internal flow model of the fully developed incompressible flow f
7574- `port_a`: hydraulic port
7675- `port_b`: hydraulic port
7776"""
78- @component function TubeBase (add_inertia = true , variable_length = true ; p_int, area,
79- length_int, head_factor = 1 ,
77+ @component function TubeBase (add_inertia = true , variable_length = true ;
78+ area,
79+ length_int,
80+ head_factor = 1 ,
8081 perimeter = 2 * sqrt (area * pi ),
81- shape_factor = 64 , name)
82+ shape_factor = 64 ,
83+ name)
8284 pars = @parameters begin
83- p_int = p_int
8485 area = area
8586 length_int = length_int
8687 perimeter = perimeter
@@ -89,8 +90,8 @@ Variable length internal flow model of the fully developed incompressible flow f
8990 end
9091
9192 @variables begin
92- x (t) = length_int
93- ddm (t)
93+ x (t), [guess = length_int]
94+ ddm (t), [guess = 0 ]
9495 end
9596
9697 vars = []
@@ -103,8 +104,8 @@ Variable length internal flow model of the fully developed incompressible flow f
103104 add_inertia && push! (vars, ddm)
104105
105106 systems = @named begin
106- port_a = HydraulicPort (; p_int )
107- port_b = HydraulicPort (; p_int )
107+ port_a = HydraulicPort ()
108+ port_b = HydraulicPort ()
108109 end
109110
110111 # let ----------------------
@@ -120,7 +121,7 @@ Variable length internal flow model of the fully developed incompressible flow f
120121 f = friction_factor (dm, area, d_h, μ, shape_factor)
121122 u = dm / (ρ * area)
122123
123- shear = (1 / 2 ) * ρ * regPow (u, 2 ) * f * head_factor * (c / d_h)
124+ shear = (1 / 2 ) * ρ * u * abs (u ) * f * head_factor * (c / d_h)
124125 inertia = if add_inertia
125126 (c / area) * ddm
126127 else
@@ -160,7 +161,7 @@ Constant length internal flow model discretized by `N` (`FixedVolume`: `N`, `Tub
160161- `port_a`: hydraulic port
161162- `port_b`: hydraulic port
162163"""
163- @component function Tube (N, add_inertia = true ; p_int, area, length, head_factor = 1 ,
164+ @component function Tube (N, add_inertia = true ; area, length, head_factor = 1 ,
164165 perimeter = 2 * sqrt (area * pi ),
165166 shape_factor = 64 , name)
166167 @assert (N> 0 ,
@@ -170,7 +171,6 @@ Constant length internal flow model discretized by `N` (`FixedVolume`: `N`, `Tub
170171 return TubeBase (add_inertia,
171172 false ;
172173 shape_factor,
173- p_int,
174174 area,
175175 length_int = length,
176176 head_factor,
@@ -180,7 +180,6 @@ Constant length internal flow model discretized by `N` (`FixedVolume`: `N`, `Tub
180180
181181 # TODO : How to set an assert effective_length >= length ??
182182 pars = @parameters begin
183- p_int = p_int
184183 area = area
185184 length = length
186185 head_factor = head_factor
@@ -191,8 +190,8 @@ Constant length internal flow model discretized by `N` (`FixedVolume`: `N`, `Tub
191190 vars = []
192191
193192 ports = @named begin
194- port_a = HydraulicPort (; p_int )
195- port_b = HydraulicPort (; p_int )
193+ port_a = HydraulicPort ()
194+ port_b = HydraulicPort ()
196195 end
197196
198197 pipe_bases = []
@@ -243,24 +242,23 @@ Reduces the flow from `port_a` to `port_b` by `n`. Useful for modeling parallel
243242- `port_a`: full flow hydraulic port
244243- `port_b`: part flow hydraulic port
245244"""
246- @component function FlowDivider (; p_int, n, name)
245+ @component function FlowDivider (; n, name)
247246
248247 # TODO : assert n >= 1
249248
250249 pars = @parameters begin
251250 n = n
252- p_int = p_int
253251 end
254252
255253 vars = @variables begin
256- dm_a (t)
257- dm_b (t)
254+ dm_a (t), [guess = 0 ]
255+ dm_b (t), [guess = 0 ]
258256 end
259257
260258 systems = @named begin
261- port_a = HydraulicPort (; p_int )
262- port_b = HydraulicPort (; p_int )
263- open = Open (; p_int )
259+ port_a = HydraulicPort ()
260+ port_b = HydraulicPort ()
261+ open = Open ()
264262 end
265263
266264 eqs = [connect (port_a, port_b, open. port)
@@ -273,20 +271,18 @@ Reduces the flow from `port_a` to `port_b` by `n`. Useful for modeling parallel
273271 ODESystem (eqs, t, vars, pars; name, systems)
274272end
275273
276- @component function ValveBase (reversible = false ; p_a_int, p_b_int, minimum_area = 0 ,
274+ @component function ValveBase (reversible = false ; minimum_area = 0 ,
277275 area_int, Cd, Cd_reverse = Cd, name)
278276 pars = @parameters begin
279- p_a_int = p_a_int
280- p_b_int = p_b_int
281277 area_int = area_int
282278 Cd = Cd
283279 Cd_reverse = Cd_reverse
284280 minimum_area = minimum_area
285281 end
286282
287283 systems = @named begin
288- port_a = HydraulicPort (; p_int = p_a_int )
289- port_b = HydraulicPort (; p_int = p_b_int )
284+ port_a = HydraulicPort ()
285+ port_b = HydraulicPort ()
290286 end
291287
292288 vars = @variables begin
@@ -339,24 +335,22 @@ Valve with `area` input and discharge coefficient `Cd` defined by https://en.wik
339335- `port_b`: hydraulic port
340336- `area`: real input setting the valve `area`. When `reversible = true`, negative input reverses flow direction, otherwise a floor of `minimum_area` is enforced.
341337"""
342- @component function Valve (reversible = false ; p_a_int, p_b_int,
338+ @component function Valve (reversible = false ;
343339 area_int, Cd, Cd_reverse = Cd,
344340 minimum_area = 0 ,
345341 name)
346342 pars = @parameters begin
347- p_a_int = p_a_int
348- p_b_int = p_b_int
349343 area_int = area_int
350344 Cd = Cd
351345 Cd_reverse = Cd_reverse
352346 minimum_area = minimum_area
353347 end
354348
355349 systems = @named begin
356- port_a = HydraulicPort (; p_int = p_a_int )
357- port_b = HydraulicPort (; p_int = p_b_int )
350+ port_a = HydraulicPort ()
351+ port_b = HydraulicPort ()
358352 area = RealInput ()
359- base = ValveBase (reversible; p_a_int, p_b_int, area_int, Cd, Cd_reverse,
353+ base = ValveBase (reversible; area_int, Cd, Cd_reverse,
360354 minimum_area)
361355 end
362356
@@ -366,27 +360,26 @@ Valve with `area` input and discharge coefficient `Cd` defined by https://en.wik
366360 connect (base. port_b, port_b)
367361 base. area ~ area. u]
368362
369- ODESystem (eqs, t, vars, pars; name, systems, defaults = [area . u => area_int] )
363+ ODESystem (eqs, t, vars, pars; name, systems)
370364end
371365
372- @component function VolumeBase (; p_int, x_int = 0 , area, dead_volume = 0 , Χ1 = 1 , Χ2 = 1 ,
366+ @component function VolumeBase (; x_int = 0 , area, dead_volume = 0 , Χ1 = 1 , Χ2 = 1 ,
373367 name)
374368 pars = @parameters begin
375- p_int = p_int
376369 x_int = x_int
377370 area = area
378371 dead_volume = dead_volume
379372 end
380373
381374 systems = @named begin
382- port = HydraulicPort (; p_int )
375+ port = HydraulicPort ()
383376 end
384377
385378 vars = @variables begin
386379 x (t) = x_int
387- dx (t)
388- rho (t) = liquid_density (port)
389- drho (t)
380+ dx (t), [guess = 0 ]
381+ rho (t), [guess = liquid_density (port)]
382+ drho (t), [guess = 0 ]
390383 vol (t) = dead_volume + area * x_int
391384 end
392385
@@ -426,8 +419,8 @@ Fixed fluid volume.
426419 end
427420
428421 vars = @variables begin
429- rho (t) = liquid_density (port)
430- drho (t)
422+ rho (t), [guess = liquid_density (port)]
423+ drho (t), [guess = 0 ]
431424 end
432425
433426 # let
@@ -505,8 +498,8 @@ See also [`FixedVolume`](@ref), [`DynamicVolume`](@ref)
505498 end
506499
507500 systems = @named begin
508- port = HydraulicPort (; p_int = p )
509- flange = MechanicalPort (; f, v = dx )
501+ port = HydraulicPort ()
502+ flange = MechanicalPort ()
510503 end
511504
512505 eqs = [
0 commit comments