В [1] приведён алгоритм балансировки гидравлической сети, целью которой является обеспечение в линии каждого потребителя требуемого для этого потребителя расхода. Балансировка гидравлической сети выполняется посредством добавления в линии потребителей дополнительных гидравлических сопротивлений. В [1] описано как найти значения этих сопротивлений. В данной статье приведён пример использования класса Orifice
(скачать), методы которого позволяют по заданной геометрии дроссельной шайбы определить значение коэффициента гидравлического сопротивления или по значению коэффициента гидравлического сопротивления найти диаметр отверстия шайбы, при котором коэффициент гидравлического сопротивления шайбы будет равен заданному.
Методика расчёта, иллюстрация, формулы и таблица взяты из [2], стр. 170.
$l$ - ширина шайбы, $D_0$ - диаметр отверстия в шайбе (для круглой трубы $D_0 \equiv D_г$), $\bar{l} = l / D_г$ - относительная ширина шайбы, $F_0$ - площадь отверстия, $F_1 = F_2$ - площадь внутреннего сечения трубы до и после шайбы, $w_1 = w_2$ - скорость потока в трубе, м/с; $w_0$ - скорость потока в отверстии шайбы, м/с; $\zeta_1$ - коэффициент гидравлического сопротивления (индекс 1 означает приведение коэффициента сопротивления к скорости $w_1$), $\lambda$ - коэффициент сопротивления трения единицы относительной длины (по умолчанию принят равным 0,02). $\lambda$ учитывает потери от трения при движении потока по каналу внутри шайбы. Чем меньше ширина шайбы и меньше отношение $F_0/F_1$ (чем больше коэффициент местного сопротивления), тем меньше вклад коэффициента потерь от трения в величину коэффициента гидравлического сопротивления (см. последний раздел статьи).
Выше даны формулы для аппроксимации эксперементальных данных. В таблице приведены результаты экспериментов.
Orifice
¶from orifice import Orifice
#Все размеры даны в мм
D = 108. #внешний диаметр трубы
h = 4. #толщина стенки трубы
D1 = D - 2 * h #внутренний диаметр трубы
l = 10 #ширина шайбы
D0 = 50. #диаметр отверстия
orif = Orifice(D1,l) #создаём объект класса Orifice
#определение коэффициента гидравлического сопротивления по значению диаметра отверстия
grc = orif.calc_grc(D0)
grc
#коэффициент гидравлического сопротивления
28.838177719657814
#Решаем обратную задачу - по заданному коэффициенту гидравлического сопротивления
#находим значение диаметра отверстия
orif.calc_d0(grc)
50.0
from math import pi, sqrt
import numpy as np
#l/D0
lD0s = np.array([0, 0.2, 0.4, 0.6, 0.8, 1., 1.4, 2., 3., 4., 5., 6., 7., 8., 9., 10.])
#F0/F1
F0F1s = np.array([0.02, 0.04, 0.06, 0.08, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.])
#Массив результатов расчётов (sol - solution)
sols = np.zeros((lD0s.shape[0], F0F1s.shape[0]), dtype = float)
D0 = 10 #диаметр отверстия в шайбе, мм
F0 = pi * D0 * D0 / 4 #площадь отверстия, мм2
for i, lD0 in enumerate(lD0s):
l = lD0 * D0
for j, F0F1 in enumerate(F0F1s):
F1 = F0 / F0F1
D1 = sqrt(4 * F1 / pi)
оrif = Orifice(D1, l)
sols[i,j] = оrif.calc_grc(D0)
import pandas as pd
pd.DataFrame(sols.round(2), index=lD0s, columns=F0F1s)
#Результаты расчёта по аппроксимирующим экспериментальные данные формулам
#Заголовки строк l/D0, заголовки столбцов F0/F1
0.02 | 0.04 | 0.06 | 0.08 | 0.10 | 0.15 | 0.20 | 0.25 | 0.30 | 0.40 | 0.50 | 0.60 | 0.70 | 0.80 | 0.90 | 1.00 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.0 | 6913.81 | 1676.55 | 722.35 | 393.67 | 243.96 | 99.75 | 51.40 | 29.99 | 18.88 | 8.56 | 4.27 | 2.21 | 1.12 | 0.53 | 0.19 | 0.00 |
0.2 | 6650.16 | 1612.55 | 694.75 | 378.62 | 234.62 | 95.93 | 49.43 | 28.84 | 18.16 | 8.24 | 4.11 | 2.13 | 1.09 | 0.51 | 0.19 | 0.00 |
0.4 | 6344.46 | 1538.33 | 662.74 | 361.15 | 223.79 | 91.49 | 47.14 | 27.50 | 17.32 | 7.86 | 3.93 | 2.04 | 1.05 | 0.50 | 0.19 | 0.01 |
0.6 | 5549.91 | 1345.31 | 579.43 | 315.68 | 195.57 | 79.91 | 41.15 | 24.00 | 15.11 | 6.86 | 3.43 | 1.79 | 0.92 | 0.45 | 0.18 | 0.01 |
0.8 | 4659.38 | 1128.97 | 486.06 | 264.70 | 163.92 | 66.93 | 34.44 | 20.08 | 12.64 | 5.74 | 2.88 | 1.51 | 0.79 | 0.39 | 0.16 | 0.02 |
1.0 | 4274.42 | 1035.49 | 445.73 | 242.70 | 150.27 | 61.33 | 31.55 | 18.39 | 11.58 | 5.26 | 2.64 | 1.39 | 0.73 | 0.37 | 0.16 | 0.02 |
1.4 | 3947.91 | 956.29 | 411.59 | 224.09 | 138.74 | 56.62 | 29.13 | 16.98 | 10.69 | 4.87 | 2.46 | 1.30 | 0.69 | 0.36 | 0.16 | 0.03 |
2.0 | 3778.80 | 915.40 | 394.04 | 214.56 | 132.86 | 54.24 | 27.93 | 16.29 | 10.27 | 4.69 | 2.38 | 1.27 | 0.69 | 0.36 | 0.17 | 0.04 |
3.0 | 3761.83 | 911.63 | 392.56 | 213.85 | 132.48 | 54.15 | 27.92 | 16.32 | 10.31 | 4.73 | 2.42 | 1.30 | 0.72 | 0.39 | 0.20 | 0.06 |
4.0 | 3816.35 | 925.23 | 398.59 | 217.23 | 134.64 | 55.11 | 28.45 | 16.66 | 10.54 | 4.86 | 2.50 | 1.36 | 0.76 | 0.42 | 0.22 | 0.08 |
5.0 | 3874.69 | 939.75 | 405.02 | 220.83 | 136.93 | 56.12 | 29.02 | 17.01 | 10.79 | 5.00 | 2.58 | 1.42 | 0.80 | 0.45 | 0.25 | 0.10 |
6.0 | 3929.17 | 953.34 | 411.05 | 224.22 | 139.09 | 57.07 | 29.55 | 17.35 | 11.02 | 5.13 | 2.67 | 1.48 | 0.84 | 0.48 | 0.27 | 0.12 |
7.0 | 3981.07 | 966.30 | 416.81 | 227.45 | 141.16 | 57.99 | 30.07 | 17.68 | 11.25 | 5.25 | 2.75 | 1.53 | 0.88 | 0.51 | 0.29 | 0.14 |
8.0 | 4031.80 | 978.98 | 422.44 | 230.62 | 143.19 | 58.89 | 30.57 | 18.01 | 11.47 | 5.38 | 2.83 | 1.59 | 0.92 | 0.55 | 0.32 | 0.16 |
9.0 | 4082.06 | 991.54 | 428.02 | 233.76 | 145.20 | 59.78 | 31.07 | 18.33 | 11.70 | 5.51 | 2.91 | 1.64 | 0.96 | 0.58 | 0.34 | 0.18 |
10.0 | 4132.16 | 1004.07 | 433.59 | 236.89 | 147.20 | 60.67 | 31.57 | 18.65 | 11.92 | 5.63 | 2.99 | 1.70 | 1.01 | 0.61 | 0.37 | 0.20 |
Отличие найденых по формулам аппроксимации значений от экспериментальных значений в некоторых случаях достигает 5%.
Данный метод позволяет по заданному значению коэффициента гидравлического сопротивления определить требуемый диаметр отверстия шайбы
D0s = np.zeros((lD0s.shape[0], F0F1s.shape[0]), dtype = float)
for i, lD0 in enumerate(lD0s):
l = lD0 * D0
for j, F0F1 in enumerate(F0F1s):
F1 = F0 / F0F1
D1 = sqrt(4 * F1 / pi)
оrif = Orifice(D1, l)
d0 = оrif.calc_d0(sols[i,j])
D0s[i,j] = d0 #(D0 - d0) / D0
pd.DataFrame(D0s, index=lD0s, columns=F0F1s)
#везде должно быть 10.0 - значение, заданное для D0
#Заголовки строк l/D0, заголовки столбцов F0/F1
0.02 | 0.04 | 0.06 | 0.08 | 0.10 | 0.15 | 0.20 | 0.25 | 0.30 | 0.40 | 0.50 | 0.60 | 0.70 | 0.80 | 0.90 | 1.00 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
0.2 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
0.4 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
0.6 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
0.8 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
1.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
1.4 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
2.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
3.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
4.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
5.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
6.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
7.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
8.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
9.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
#Для случая F0/F1 = 1 и l/D0 = 0 при вычислении погрешности будет происходить
#деление ноля на ноль, о чём будет выдано предупреждение.
#Отключение выдачи предупреждений
import warnings
warnings.filterwarnings('ignore')
errs = np.zeros((lD0s.shape[0], F0F1s.shape[0]), dtype = float)
for i, lD0 in enumerate(lD0s):
l = lD0 * D0
for j, F0F1 in enumerate(F0F1s):
F1 = F0 / F0F1
D1 = sqrt(4 * F1 / pi)
#Шайба с lamb = 0 (отсутствуют потери от трения)
orif_no_friction = Orifice(D1, l, 0.)
sols_no_friction = orif_no_friction.calc_grc(D0)
errs[i,j] = (1 - sols_no_friction / sols[i,j]) * 100
pd.DataFrame(errs.round(2), index=lD0s, columns=F0F1s)
#Значения погрешностей от игнорирования потерь от трения, %
#Заголовки строк l/D0, заголовки столбцов F0/F1
0.02 | 0.04 | 0.06 | 0.08 | 0.10 | 0.15 | 0.20 | 0.25 | 0.30 | 0.40 | 0.50 | 0.60 | 0.70 | 0.80 | 0.90 | 1.00 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NaN |
0.2 | 0.15 | 0.16 | 0.16 | 0.17 | 0.17 | 0.19 | 0.20 | 0.22 | 0.24 | 0.30 | 0.39 | 0.52 | 0.75 | 1.22 | 2.58 | 100.0 |
0.4 | 0.32 | 0.33 | 0.34 | 0.35 | 0.36 | 0.39 | 0.42 | 0.47 | 0.51 | 0.64 | 0.81 | 1.09 | 1.56 | 2.51 | 5.21 | 100.0 |
0.6 | 0.54 | 0.56 | 0.58 | 0.59 | 0.61 | 0.67 | 0.73 | 0.80 | 0.88 | 1.09 | 1.40 | 1.86 | 2.65 | 4.19 | 8.35 | 100.0 |
0.8 | 0.86 | 0.89 | 0.91 | 0.94 | 0.98 | 1.06 | 1.16 | 1.28 | 1.41 | 1.74 | 2.22 | 2.95 | 4.14 | 6.40 | 12.12 | 100.0 |
1.0 | 1.17 | 1.21 | 1.25 | 1.29 | 1.33 | 1.45 | 1.58 | 1.74 | 1.92 | 2.38 | 3.02 | 4.00 | 5.57 | 8.47 | 15.48 | 100.0 |
1.4 | 1.77 | 1.83 | 1.89 | 1.95 | 2.02 | 2.20 | 2.40 | 2.64 | 2.91 | 3.59 | 4.56 | 5.98 | 8.24 | 12.25 | 21.35 | 100.0 |
2.0 | 2.65 | 2.73 | 2.82 | 2.91 | 3.01 | 3.28 | 3.58 | 3.93 | 4.33 | 5.33 | 6.73 | 8.75 | 11.89 | 17.27 | 28.63 | 100.0 |
3.0 | 3.99 | 4.11 | 4.25 | 4.38 | 4.53 | 4.92 | 5.37 | 5.88 | 6.47 | 7.93 | 9.93 | 12.79 | 17.09 | 24.13 | 37.84 | 100.0 |
4.0 | 5.24 | 5.40 | 5.58 | 5.75 | 5.94 | 6.45 | 7.03 | 7.68 | 8.43 | 10.29 | 12.80 | 16.34 | 21.54 | 29.76 | 44.78 | 100.0 |
5.0 | 6.45 | 6.65 | 6.86 | 7.08 | 7.30 | 7.92 | 8.62 | 9.40 | 10.30 | 12.51 | 15.48 | 19.58 | 25.50 | 34.58 | 50.31 | 100.0 |
6.0 | 7.64 | 7.87 | 8.11 | 8.36 | 8.63 | 9.34 | 10.15 | 11.06 | 12.10 | 14.63 | 18.00 | 22.59 | 29.10 | 38.78 | 54.83 | 100.0 |
7.0 | 8.79 | 9.06 | 9.33 | 9.62 | 9.92 | 10.73 | 11.64 | 12.67 | 13.83 | 16.65 | 20.37 | 25.39 | 32.36 | 42.49 | 58.60 | 100.0 |
8.0 | 9.92 | 10.21 | 10.52 | 10.84 | 11.17 | 12.08 | 13.08 | 14.22 | 15.50 | 18.59 | 22.62 | 28.00 | 35.35 | 45.78 | 61.80 | 100.0 |
9.0 | 11.02 | 11.35 | 11.68 | 12.03 | 12.40 | 13.38 | 14.48 | 15.71 | 17.10 | 20.44 | 24.75 | 30.43 | 38.08 | 48.71 | 64.54 | 100.0 |
10.0 | 12.10 | 12.45 | 12.81 | 13.19 | 13.59 | 14.65 | 15.84 | 17.16 | 18.65 | 22.20 | 26.76 | 32.71 | 40.59 | 51.34 | 66.91 | 100.0 |
Чем меньше ширина шайбы и меньше отношение $F_0/F_1$ (чем больше коэффициент местного сопротивления), тем меньше вклад коэффициента потерь от трения в величину коэффициента гидравлического сопротивления. При $F_0/F_1 = 1$ коэффициент местных потерь равень нулю и потери давления определяются только потерями от трения, поэтому при отбрасывании потерь от трения значение гидравлического сопротивления становится равным нулю.
Вклад потерь от трения в величину коэффициента гидравлического сопротивления можно определить аналитически, взяв производную от $\zeta_1$ (формула в начале статьи) по $\lambda$, тогда: $$\mathrm{d}\zeta_1 = \frac{l}{D_0}\left(\frac{F_1}{F_0}\right)^2 \, \mathrm{d}\lambda = \bar{l}\left(\frac{F_0}{F_1}\right)^{-2} \, \mathrm{d}\lambda$$
dlambda = 0.02
for i, lD0 in enumerate(lD0s):
l = lD0 * D0
for j, F0F1 in enumerate(F0F1s):
F1 = F0 / F0F1
D1 = sqrt(4 * F1 / pi)
sols_no_friction = sols[i,j] - lD0 * F0F1 ** -2 * dlambda
errs[i,j] = (1 - sols_no_friction / sols[i,j]) * 100
pd.DataFrame(errs.round(2), index=lD0s, columns=F0F1s)
#Значения погрешностей от игнорирования потерь от трения, %
#Заголовки строк l/D0, заголовки столбцов F0/F1
0.02 | 0.04 | 0.06 | 0.08 | 0.10 | 0.15 | 0.20 | 0.25 | 0.30 | 0.40 | 0.50 | 0.60 | 0.70 | 0.80 | 0.90 | 1.00 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NaN |
0.2 | 0.15 | 0.16 | 0.16 | 0.17 | 0.17 | 0.19 | 0.20 | 0.22 | 0.24 | 0.30 | 0.39 | 0.52 | 0.75 | 1.22 | 2.58 | 100.0 |
0.4 | 0.32 | 0.33 | 0.34 | 0.35 | 0.36 | 0.39 | 0.42 | 0.47 | 0.51 | 0.64 | 0.81 | 1.09 | 1.56 | 2.51 | 5.21 | 100.0 |
0.6 | 0.54 | 0.56 | 0.58 | 0.59 | 0.61 | 0.67 | 0.73 | 0.80 | 0.88 | 1.09 | 1.40 | 1.86 | 2.65 | 4.19 | 8.35 | 100.0 |
0.8 | 0.86 | 0.89 | 0.91 | 0.94 | 0.98 | 1.06 | 1.16 | 1.28 | 1.41 | 1.74 | 2.22 | 2.95 | 4.14 | 6.40 | 12.12 | 100.0 |
1.0 | 1.17 | 1.21 | 1.25 | 1.29 | 1.33 | 1.45 | 1.58 | 1.74 | 1.92 | 2.38 | 3.02 | 4.00 | 5.57 | 8.47 | 15.48 | 100.0 |
1.4 | 1.77 | 1.83 | 1.89 | 1.95 | 2.02 | 2.20 | 2.40 | 2.64 | 2.91 | 3.59 | 4.56 | 5.98 | 8.24 | 12.25 | 21.35 | 100.0 |
2.0 | 2.65 | 2.73 | 2.82 | 2.91 | 3.01 | 3.28 | 3.58 | 3.93 | 4.33 | 5.33 | 6.73 | 8.75 | 11.89 | 17.27 | 28.63 | 100.0 |
3.0 | 3.99 | 4.11 | 4.25 | 4.38 | 4.53 | 4.92 | 5.37 | 5.88 | 6.47 | 7.93 | 9.93 | 12.79 | 17.09 | 24.13 | 37.84 | 100.0 |
4.0 | 5.24 | 5.40 | 5.58 | 5.75 | 5.94 | 6.45 | 7.03 | 7.68 | 8.43 | 10.29 | 12.80 | 16.34 | 21.54 | 29.76 | 44.78 | 100.0 |
5.0 | 6.45 | 6.65 | 6.86 | 7.08 | 7.30 | 7.92 | 8.62 | 9.40 | 10.30 | 12.51 | 15.48 | 19.58 | 25.50 | 34.58 | 50.31 | 100.0 |
6.0 | 7.64 | 7.87 | 8.11 | 8.36 | 8.63 | 9.34 | 10.15 | 11.06 | 12.10 | 14.63 | 18.00 | 22.59 | 29.10 | 38.78 | 54.83 | 100.0 |
7.0 | 8.79 | 9.06 | 9.33 | 9.62 | 9.92 | 10.73 | 11.64 | 12.67 | 13.83 | 16.65 | 20.37 | 25.39 | 32.36 | 42.49 | 58.60 | 100.0 |
8.0 | 9.92 | 10.21 | 10.52 | 10.84 | 11.17 | 12.08 | 13.08 | 14.22 | 15.50 | 18.59 | 22.62 | 28.00 | 35.35 | 45.78 | 61.80 | 100.0 |
9.0 | 11.02 | 11.35 | 11.68 | 12.03 | 12.40 | 13.38 | 14.48 | 15.71 | 17.10 | 20.44 | 24.75 | 30.43 | 38.08 | 48.71 | 64.54 | 100.0 |
10.0 | 12.10 | 12.45 | 12.81 | 13.19 | 13.59 | 14.65 | 15.84 | 17.16 | 18.65 | 22.20 | 26.76 | 32.71 | 40.59 | 51.34 | 66.91 | 100.0 |
Продолжение см. здесь
Инженерные расчёты на Python, С.В. Медведев, 2020
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020