Vyprazdňování nádoby

Zadání

Z válcové nádoby vytéká voda. Určete čas, za který dojde k vyprázdnění nádoby.

Zadané hodnoty:

  • T = 60 °C
  • YD = 0.2 m
  • Y1 = 1.25 m
  • Pv = 200 kPa (gauge)
  • Pb = 0 Pa (gauge)

Postup řešení

V každém časovém okamžiku platí Bernoulliho rovnice...


In [14]:
from __future__ import division
from math import sqrt,pi

R=0.5 #m, Průměr nádoby
rho=1000 #kg/m3, Hustota vody
g=9.81 #m/s2, Gravitační zrychlení
Pv=200000 #Pa, Tlak v nádrži
Y1=1.5 #m, Výška hladniny naplněné nádrže
y=1 #m, Okamžitá výška hladiny

Pb=0 #Pa, Tlak na výtoku
YD=0.2 #m, Výška výtokového potrubí
d=0.02 #m, Průměr výtokového potrubí
Kp=250 #-, Ztrátový součinitel


print ("Průtok m = %.1f kg/s")%m_dot


print ("Celková doba vyprazdňování nádoby t = %.1f s -> tj. %.1f min")%(t,t/60)


Průtok m = 0.4 kg/s
Celková doba vyprazdňování nádoby t = 2898.3 s -> tj. 48.3 min

Stejné řešení numericky

Stanovíme si počet kroků ve kterých budeme postupně řešit kolik vody nám z nádrže vyteklo v každém kroce. V každém kroce uvažujeme konstantní výšku hladiny $y$. Ke snižování výšky hladiny $y$ dojde vždy při přechodu na další časový krok.


In [21]:
import numpy as np

n_kroku = 1000
y=np.linspace(Y1,0,n_kroku)
time=0

def m_dot(y):
    return 

print ("Celková hmotnost vody v nádrži: %.1f kg")%m_all
print ("Celkový čas vyprazdňování t = %f s")%time
print ("Průměrný průtok během vyprazdňování m = %.2f kg/s")%(m_all/time)


Celková hmotnost vody v nádrži: 1178.1 kg
Celkový čas vyprazdňování t = 0.000000 s
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-21-c6e6564aa3ab> in <module>()
     10 print ("Celková hmotnost vody v nádrži: %.1f kg")%m_all
     11 print ("Celkový čas vyprazdňování t = %f s")%time
---> 12 print ("Průměrný průtok během vyprazdňování m = %.2f kg/s")%(m_all/time)

ZeroDivisionError: float division by zero

Grafické doplnění a průběh numerického výpočtu


In [20]:
import matplotlib.pyplot as plt #Tisk grafů
%matplotlib inline

#tt = np.zeros(y.shape)
tt=np.array([])
m_t=np.array([])
for val in y:
    tt=np.append(tt,xxxxx)
    m_t=np.append(m_t,xxxxx)

plt.ylabel("$\dot m$ [kg/s]")
plt.xlabel("y [m]")
aa=plt.plot(y,m_t)
plt.show()

plt.ylabel("Cas [kg/s]")
aa=plt.plot(y, tt)