Колебания водной массы на гидроэлектростанции (ГЭС) при закрытии клапана - PullRequest
0 голосов
/ 12 сентября 2018

Мне удается решить задачу, так что вот объяснение.Спасибо всем за усилия.

Итак, мне нужно было решить два зависимых дифференциальных уравнения, которые представляют изменение потока жидкости (1) и изменение разницы высот между верхним уровнем воды и уровнем воды внутри расширительного бака (2) во времени.

Этот конкретный пример относится к одной гидроэлектростанции (ГЭС).Если они закроют клапан, который находится на конце подачи, и начнется напорный трубопровод, масса воды внутри подающего трубопровода начнет колебаться.Из-за этого на конце подающего трубопровода находится уравнительный резервуар, который имеет функцию забирать массу воды внутрь себя, когда колебания продолжаются, поэтому не будет никаких серьезных последствий, таких как гидравлический удар.

А затем ГЭСможно разделить на три части.Первая часть - это верхняя вода, вторая часть - трубопровод подачи (который соединен с верхней водой плотиной), а третья часть - уравнительный резервуар (который подключен к верхней стороне трубопровода подачи).И когда колебания продолжаются, масса воды перемещается из верхней воды в расширительный бак, и наоборот.

Итак, у вас есть некоторые пояснения к тому, что здесь рассчитывается ...

Все переменные определены в коде, кроме эквивалентного диаметра, эквивалентного трения и длины трубопровода подачи, которые рассчитаны нарука.Если вы хотите, я могу написать уравнения для них тоже в коде ...

Это уравнение представляет: уравнение движения (1) и уравнение неразрывности (2).

  dQt/dt = (g*At/Lt) * (yt - c*Qt*np.abs(Qt)/At**2) #(1)

  dy/dt = -Qt/As #(2)

Начальное условие потока:

  Qt = 18 m^3/s

, а высота:

  y = 30 m

и изменение времени: с 0 to 1000 s

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# Variables for calculation:
g = 9.81 # gravity acceleration [m/s**2]
Dt = 2.776 # equivalent diameter of supply pipeline, from upper water to surge tank [m]
Ds = 3 # diameter of surge tank [m]
At = np.pi*Dt**2/4. # equivalent cross section of supply pipeline [m**2]
As = np.pi*Ds**2/4. # cross section of surge tank [m**2]

f_l = 0.011155 # equivalent friction coefficient of supply pipeline [/]
Lt = 9276 # lenght of supply pipeline, from upper water to surge tank  [m]

c = (1+f_l*Lt/Dt)/(2*g) # loss coefficient [s**2/m]

# Function si defined as:
def f(Qy, t):
    Qt = Qy[0]
    yt = Qy[1]

    dQdt = (g*At/Lt) * (yt - c*Qt*np.abs(Qt)/At**2)
    dydt = -Qt/As 

    return [dQdt, dydt]

# Where are:
# Qt - volumetric flow of fluid [m**3/s]
# yt - height difference between upper water and water level inside surge tank [m]

# Time interval:
t = np.linspace(0, 1000, 2000)

# Initial condition of volumetric flow, Qt and height difference between upper water and water level inside surge tank, yt:
Qy0 = [18, 30]

# Calling the function for time interval, t:
Q = odeint(f, Qy0, t)

# Graph drawing:
fig = plt.figure()
fig.set_facecolor("w")

plt.title('Oscillations')
plt.axhline(c='gray', lw=0.5)

plt.plot(t, Q[:,0], label='Change of flow in time')
plt.plot(t, Q[:,1], label='Change of height difference in time')

plt.xlabel('Time interval, t')
plt.ylabel('Flow, Qt \nheight difference, y')

legend = plt.legend(loc='lower right', shadow = False, fontsize = 'small')

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...