Skip to content

Commit

Permalink
Documentation of Tainter Gate implementation after Bollrich2019
Browse files Browse the repository at this point in the history
  • Loading branch information
dietmarw committed Jun 28, 2024
1 parent e2d2a77 commit 19fe6e3
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 0 deletions.
Binary file added OpenHPL/Resources/Images/TainterGate-backedup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added OpenHPL/Resources/Images/TainterGate-freeflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions OpenHPL/UsersGuide/References.mo
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ model References "References"
extends Modelica.Icons.References;
annotation (Documentation(info="<html>
<dl>
<dt>[Bollrich2019]</dt>
<dd><p>Gerhard Bollrich: &quot;Technische Hydromechanik 1 (eBook)&quot;,
Book, Beuth Verlag GmbH, 2019,
8th Edition, ISBN 978-3-410-29170-1.</p>
</dd>
<dt>[Hinna2021]</dt>
<dd><p>Jonas Tveit Hinna:
&quot;Modelica model of transient pipe flow in hydraulic laboratory systems using the method of characteristics&quot;,
Expand Down
126 changes: 126 additions & 0 deletions OpenHPL/Waterway/TainterGate3.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
within OpenHPL.Waterway;
model TainterGate3 "Model of a tainter gate based on [Bollrich2019]"
outer Data data "Using standard class with system parameters";
extends Icons.TainterGate;
extends OpenHPL.Interfaces.ContactPort;

// parameter SI.Height b_max "Maxium opening of the gate";
// parameter SI.Height b_min = 0 "Minimum opening of the gate";
parameter SI.Length r "Radius of the gate arm";
parameter SI.Height a "Height of the hinge above gate bottom";
parameter SI.Height b "Width of the gate";
parameter Real Cc_[3] = {1,2,3} "Polinomial factors of contraction coefficient Cc {linear,quadratic,cube}";
SI.Height h_i "Inlet water level";
SI.Height h_o "Outlet water level";
Real alpha = h_o/(Cc*u);
Real beta = h_i/h_o;
Real gamma = (h_o/(Cc*u))^2 - (h_o/h_i)^2 "Loss factor";
Real psi = (1/beta)^2 - 1 + (gamma^2*(beta-1))/(psi_x1 + psi_x2) "Head-loss parameter";
Real psi_ = (1/beta)^2 - 1 + (gamma^2*(beta-1))/(psi_x1 - psi_x2) "Neg Head-loss parameter";
Real psi_x1 = gamma*beta-2*(alpha-1);
Real psi_x2 = sqrt((2*(alpha-1)-gamma*beta)^2 - gamma^2*(beta^2-1));

SI.Angle theta = C.pi/2 - asin((a-u)/r) "Flow angle of the gate";
Real Cc = Cc_[3]*theta^3 + Cc_[2]*theta^2 + Cc_[1]*theta + 1.002282138151680 "Contraction coefficient";
SI.VolumeFlowRate Vdot,Vdot_gamma "Volume flow rate through the gate";

Modelica.Blocks.Interfaces.RealInput u "Opening of the gate [m]" annotation (Placement(transformation(
extent={{-20,-20},{20,20}},
rotation=270,
origin={0,120})));
equation
Vdot = b*h_o * sqrt((2*data.g*max(0,(h_i - h_o)))/(psi + 1 - (h_o/h_i)^2)) "Calculated flow";
Vdot_gamma = b*h_o * sqrt((2*data.g*max(0,(h_i - h_o)))/(gamma + 1 - (h_o/h_i)^2)) "Calculated flow";
mdot = Vdot * data.rho "Mass flow rate through the gate";
i.p = h_i * data.g * data.rho + data.p_a "Inlet water pressure";
o.p = h_o * data.g * data.rho + data.p_a "Outlet water pressure";
annotation (Documentation(info="<html>
<h4>Implementation</h4>
<p>
The calculation of the flow through the gate is approximated for two different regions and is based
on <a href=\"modelica://OpenHPL.UsersGuide.References\">[Bollrich2019]</a>.
Equation numbers oand figure numbers given below are in sync with the numbers of <a href=\"modelica://OpenHPL.UsersGuide.References\">[Bollrich2019]</a>.
</p>
<h5>Free flowing</h5>
<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td>
<img src=\"modelica://OpenHPL/Resources/Images/TainterGate-freeflow.png\"
alt=\"TainterGate free flow\">
</td>
</tr>
<caption align=\"bottom\"><strong>Fig. 8.13:</strong> Free flow through the tainter gate (source:
<a href=\"modelica://OpenHPL.UsersGuide.References\">[Bollrich2019]</a>, page 376)<caption>
</table>
<p>
The free flow can be calulate with:
$$Q_A = \\mu_A \\cdot A \\cdot \\sqrt{2g\\cdot h _0} \\tag{8.24} $$
(valid for gate opening higher than the downstream water level)
With
<dl><dd>Opening area</dd>
<dt> $$ A = a\\cdot b $$ </dt>
<dd>Discharge coefficient</dd>
<dt> $$ \\mu_A = \\frac{\\psi}{\\sqrt{1+\\frac{\\psi\\cdot a}{h_0}}} \\tag{8.23}$$ </dt>
<dd>Contraction coefficient (for \\(a/h_0 \\rightarrow 0\\))</dd>
<dt> $$ \\psi_0(\\alpha)= 1.3 -0.8\\cdot\\sqrt{1-\\left(\\frac{\\alpha -205^\\circ}{220^\\circ}\\right)^2} \\tag{8.25a}$$ </dt>
</dl>
</p>
</p>
<h5>Backed-up discharge</h5>
<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td>
<img src=\"modelica://OpenHPL/Resources/Images/TainterGate-backedup.png\"
alt=\"TainterGate backed-up flow\">
</td>
</tr>
<caption align=\"bottom\"><strong>Fig. 8.16:</strong> Backed-up flow through the tainter gate (source:
<a href=\"modelica://OpenHPL.UsersGuide.References\">[Bollrich2019]</a>, page 379)<caption>
</table>
<p>
$$Q_A = \\chi \\cdot \\mu_A \\cdot A \\cdot \\sqrt{2g\\cdot h_0} \\tag{8.29} $$
With
<dl>
<dd>Back-up factor</dd>
<dt> $$ \\chi = \\sqrt{
\\left(
1 + \\frac{\\psi\\cdot a}{h_0}
\\right) \\cdot
\\left\\{
\\left[
1 - 2\\cdot\\frac{\\psi\\cdot a}{h_0} \\cdot
\\left(
1-\\frac{\\psi\\cdot a}{h_2}
\\right)
\\right]
- \\sqrt{
\\left[
1 - 2 \\cdot \\frac{\\psi\\cdot a}{h_0} \\cdot
\\left(
1-\\frac{\\psi\\cdot a}{h_2}
\\right)
\\right]^2
+
\\left(
\\frac{h_2}{h_0}
\\right)^2
- 1
}
\\right\\}
} \\tag{8.28}$$ </dt>
</dl>
</p>
<h5>Boundary between free and backed-up flow</h5>
<p>
The boundary of the height of the water level \\(h_2\\) behind the gate from which on the calculation switches to the backed-up flow (8.29) can be derived from:
$$ \\frac{h_2^*}{a} = \\frac{\\psi}{2} \\cdot \\left( \\sqrt{ 1 + \\frac{16}{\\psi\\cdot\\left(1+\\frac{\\psi\\cdot a}{h_0}\\right)}\\cdot\\frac{h_0}{a}} - 1 \\right) \\tag{8.26}$$
So when \\(\\frac{h_2}{a} \\geq \\frac{h_2^*}{a}\\) then we have back-up flow.
</p>
</html>"));
end TainterGate3;
1 change: 1 addition & 0 deletions OpenHPL/Waterway/package.order
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ SurgeTank
Reservoir
TainterGate
TainterGate_old
TainterGate3
RunOff_zones
RunOff_zones_input
VolumeFlowSource
Expand Down

0 comments on commit 19fe6e3

Please sign in to comment.