В данной статье приведён пример использования пакета wsprops
(скачать) предназначенного для расчёта теплофизических свойств воды и водяного пара в областях 1, 2 и частично 4 (в диапазоне давлений 611,213 Па - 16,529 МПа) [1].
Основной расчётный класс - класс HSDiag
. Определяемые с помощью данного класа теплофизические свойства:
T - температура, К;
p - абсолютное давление, Па;
h - удельная энтальпия, Дж/кг;
s - удельная энтропия, Дж/кг/К;
cp - удельная изобарная теплоёмкость, Дж/кг/К;
cv - удельная изохорная теплоёмкость, Дж/кг/К;
v - удельный объём, м3/кг;
u - удельная внутренняя энергия, Дж/кг;
w - скорость звука, м/с;
x - степень сухости (-1 для воды, 0 для кипящей воды, (0; 1) для влажного пара, 1 для сухого насыщенного пара, 2 для сухого перегретого пара)
Результат расчёта возвращается в виде словаря:
props = {
'T': значение T,
'p': значение p,
'h': значение h,
's': значение s,
'cp': значение cp,
'cv': значение cv,
'v': значение v,
'u': значение u,
'w': значение w,
'x': значение x
}
import sys
# Путь к пакету (папке) wsprops
sys.path.append("../0009_Теплофизические_свойства_воды_и_ВП/")
# Основной расчётный класс HSDiag
from wsprops import HSDiag
hs = HSDiag()
help(hs)
Help on HSDiag in module wsprops.hsdiag object: class HSDiag(builtins.object) | Класс для расчёта теплофизических свойств воды и водяного пара | | Methods defined here: | | T_p(self, p) | Определение температуры насыщения (К) по заданному давлению (Па) | p: абсолютное давление, Па | return: температура, К | | __init__(self) | Инициализация параметров | | dh_p(self, p) | Расчёт скрытой теплоты парообразования (h'' - h') | p: давление, Па | return: скрытая теплота парообразования, Дж/кг | | ds_p(self, p) | Расчёт значения s'' - s' | p: давление, Па | return: значение s'' - s', Дж/кг/К | | p_T(self, T) | Определение давления насыщения (Па) по заданной температуре (К) | T: температура, К | return: абсолютное давление, Па | | p_t(self, t) | Определение давления насыщения (Па) по заданной температуре (C) | t: температура, C | return: абсолютное давление, Па | | props_Tp(self, T, p) | Расчёт теплофизических свойств воды и водяного пара по температуре и давлению. | T: температура, К | p: давление, Па | return: словарь свойств | | props_p(self, p) | Расчёт теплофизических свойств кипящей воды и сухого насыщенного пара при давлении p | p: давление, Па | return: кортеж двух словарей: 0 - кипящая вода, 1 - сухой насыщенный пар | | props_ph(self, p, h) | Расчёт теплофизических свойств воды и водяного пара по давлению и энтальпии. | p: давление, Па | h: энтальпия, Дж/кг | return: словарь свойств | | props_ps(self, p, s) | Расчёт теплофизических свойств воды и водяного пара по давлению и энтропии. | p: давление, Па | s: энтропия, Дж/кг/К | return: словарь свойств. | | props_px(self, p, x) | Расчёт теплофизических свойств влажного водяного пара по давлению и степени сухости. | p: давление, Па | x: степень сухости x = [0; 1] | return: словарь свойств. | | props_tp(self, t, p) | Расчёт теплофизических свойств воды и водяного пара по температуре и давлению. | t: температура, C | p: давление, Па | return: словарь свойств | | t_p(self, p) | Определение температуры насыщения (C) по заданному давлению (Па) | p: абсолютное давление, Па | return: температура, C | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined)
# Вода
hs.props_tp(30, 8e3)
{'T': 303.15, 'p': 8000.0, 'h': 125748.5857501582, 's': 436.7917990990837, 'cp': 4180.273497187446, 'cv': 4117.775552719267, 'v': 0.001004408799712297, 'u': 125740.5504797605, 'w': 1510.8336169687846, 'x': -1}
hs.props_Tp(30+273.15, 8e3)
{'T': 303.15, 'p': 8000.0, 'h': 125748.5857501582, 's': 436.7917990990837, 'cp': 4180.273497187446, 'cv': 4117.775552719267, 'v': 0.001004408799712297, 'u': 125740.5504797605, 'w': 1510.8336169687846, 'x': -1}
hs.props_ph(8e3, 125748.5857501582)
{'T': 303.1714477130841, 'p': 8000.0, 'h': 125748.5857501582, 's': 437.0875407052827, 'cp': 4180.267232341029, 'cv': 4117.6837929661, 'v': 0.0010044153248107352, 'u': 125830.20766693105, 'w': 1510.884579664955, 'x': -1}
hs.props_ps(8e3, 436.7917990990837)
{'T': 303.14781014264537, 'p': 8000.0, 'h': 125739.43154679493, 's': 436.7917990990837, 'cp': 4180.274137668333, 'cv': 4117.784920289135, 'v': 0.001004408133717578, 'u': 125731.39628172519, 'w': 1510.8284116958826, 'x': -1}
# Перегретый пар
hs.props_tp(50, 1e3)
{'T': 323.15, 'p': 1000.0, 'h': 2594400.3889870774, 's': 9243.003991265025, 'cp': 1875.685940412334, 'cv': 1412.854302686177, 'v': 149.09614290353312, 'u': 2445304.246083544, 'w': 444.83355220727975, 'x': 2}
hs.props_Tp(50+273.15, 1e3)
{'T': 323.15, 'p': 1000.0, 'h': 2594400.3889870774, 's': 9243.003991265025, 'cp': 1875.685940412334, 'cv': 1412.854302686177, 'v': 149.09614290353312, 'u': 2445304.246083544, 'w': 444.83355220727975, 'x': 2}
hs.props_ph(1e3, 2594400.3889870774)
{'T': 323.1433923550557, 'p': 1000.0, 'h': 2594400.3889870774, 's': 9242.965637593607, 'cp': 1875.6845735751442, 'cv': 1412.8527572321796, 'v': 149.09308899220392, 'u': 2445294.9061326683, 'w': 444.82906980634164, 'x': 2}
hs.props_ps(1e3, 9243.003991265025)
{'T': 323.14754150231647, 'p': 1000.0, 'h': 2594395.777618163, 's': 9243.003991265025, 'cp': 1875.685431827106, 'cv': 1412.8537276468792, 'v': 149.09500663886746, 'u': 2445300.770979295, 'w': 444.8318844526757, 'x': 2}
# Влажный пар
hs.props_px(5.5e6, 0.5)
{'T': 543.1170065268022, 'p': 5500000.0, 'h': 1987321.1629441243, 's': 4453.26358131126, 'cp': 4885.885077351901, 'cv': 2874.2706684247687, 'v': 0.01847253271364685, 'u': 1885722.233019067, 'w': 778.6529952671308, 'x': 0.5}
hs.props_ph(5.5e6, 1987321.1629441243)
{'T': 543.1170065268022, 'p': 5500000.0, 'h': 1987321.1629441243, 's': 4453.26358131126, 'cp': 4885.885077351901, 'cv': 2874.2706684247687, 'v': 0.01847253271364685, 'u': 1885722.233019067, 'w': 778.6529952671308, 'x': 0.5}
hs.props_ps(5.5e6, 4453.26358131126)
{'T': 543.1170065268022, 'p': 5500000.0, 'h': 1987321.1629441243, 's': 4453.26358131126, 'cp': 4885.885077351901, 'cv': 2874.2706684247687, 'v': 0.01847253271364685, 'u': 1885722.233019067, 'w': 778.6529952671308, 'x': 0.5}
# Кривая насыщения
hs.p_t(100), hs.p_T(100+273.15)
(101417.97792130998, 101417.97792130998)
hs.t_p(101417.97792130998), hs.T_p(101417.97792130998) - 273.15
(99.99999999999983, 99.99999999999983)
# Свойства кипящей воды (') и сухого насыщенного пара ('') при заданном давлении
hs.props_p(101325)
({'T': 373.12430000048056, 'p': 101325, 'h': 418990.71780418983, 's': 1306.7239783648365, 'cp': 4216.612690426817, 'cv': 3767.8305778810413, 'v': 0.0010434353664161007, 'u': 418884.99171568773, 'w': 1545.11585070458, 'x': -1}, {'T': 373.12430000048056, 'p': 101325, 'h': 2675531.4660419472, 's': 7354.385113627647, 'cp': 2077.390168548611, 'cv': 1553.6331460890794, 'v': 1.6732953830555108, 'u': 2505984.8113538474, 'w': 472.2428048833232, 'x': 2})
# Скрытая теплота парообразования при заданном давлении (h'' - h'), Дж/кг
hs.dh_p(101325), 2675531.4660419472 - 418990.71780418983
(2256540.7482377575, 2256540.7482377575)
# s'' - s', Дж/кг/К
hs.ds_p(101325), 7354.385113627647 - 1306.7239783648365
(6047.661135262811, 6047.661135262811)
from wsprops import Visc
visc = Visc()
help(visc)
Help on Visc in module wsprops.visc object: class Visc(builtins.object) | Определение динамической и кинематичесой вязкости воды и водяного пара. | Методика расчёта взята из документа | 'Release on the IAPWS Formulation 2008 for the Viscosity of Ordinary Water Substance' | http://www.iapws.org/relguide/visc.pdf | | Methods defined here: | | __init__(self) | Initialize self. See help(type(self)) for accurate signature. | | dvisc_Tp(self, T, p) | Определение динамической взякости воды или водяного пара | T: температура, К | p: давление, Па | return: динамическая вязкость, Па*с | | dvisc_tp(self, t, p) | Определение динамической взякости воды или водяного пара | t: температура, C | p: давление, Па | return: динамическая вязкость, Па*с | | get_props(self) | Получение теплофизических свойств воды или водяного пара для крайнего расчёта | return: словарь теплофизических свойств | | kvisc_Tp(self, T, p) | Определение кинематической взякости воды или водяного пара | T: температура, К | p: давление, Па | return: кинематическая вязкость, м2/с | | kvisc_tp(self, t, p) | Определение кинематической взякости воды или водяного пара | t: температура, C | p: давление, Па | return: кинематическая вязкость, м2/с | | ---------------------------------------------------------------------- | Class methods defined here: | | calc_dvisc(T, dens) from builtins.type | Определение динамической вязкости воды и водяного пара | T: температура, К | dens: плотность, кг/м3 | return: динамическая вязкость, Па*с | Область применения функции см. Figure 1. Estimated uncertainty of the correlating equation. | на стр. 4 в http://www.iapws.org/relguide/visc.pdf | В окрестности критической точки 645.91 K < T < 650.77 K, 245.8 kg/m3 < ρ < 405.3 kg/m3 функция не работает. | (см. стр. 6, раздел 2.7 Critical enhancement). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | H = array([ 1.67752 , 2.20462 , 0.6366564, -0.241605 ]) | | Hij = [array([ 0.520094 , 0.222531 , -0.281378 , 0.161913 , -0.03253... | | hs = <wsprops.hsdiag.HSDiag object>
# Динамическая вязкость воды, мкПа*с
visc.dvisc_tp(40, 5e6)*1e6, visc.dvisc_Tp(40+273.15, 5e6)*1e6
(653.3587355074885, 653.3587355074885)
# Параметры воды при заданных температуре и давлении
visc.get_props()
{'T': 313.15, 'p': 5000000.0, 'h': 171960.40814387944, 's': 570.4909965811079, 'cp': 4166.659294547643, 'cv': 4058.7259153864816, 'v': 0.001005674755576167, 'u': 166932.03436599858, 'w': 1539.2442782259368, 'x': -1}
# Динамическая вязкость пара, мкПа*с
visc.dvisc_tp(300, 5e6)*1e6, visc.dvisc_Tp(300+273.15, 5e6)*1e6
(19.793828006347212, 19.793828006347212)
# Параметры пара при заданных температуре и давлении
visc.get_props()
{'T': 573.15, 'p': 5000000.0, 'h': 2925644.0423554666, 's': 6210.9403902234735, 'cp': 3171.40122912072, 'cv': 2061.499491880862, 'v': 0.045346626893362635, 'u': 2698910.9078886537, 'w': 538.8437066523188, 'x': 2}
# Кинематическая вязкость воды, мм2/с
visc.kvisc_tp(40, 5e6)*1e6, visc.kvisc_Tp(40+273.15, 5e6)*1e6
(0.657066386635047, 0.657066386635047)
# Параметры воды при заданных температуре и давлении
visc.get_props()
{'T': 313.15, 'p': 5000000.0, 'h': 171960.40814387944, 's': 570.4909965811079, 'cp': 4166.659294547643, 'cv': 4058.7259153864816, 'v': 0.001005674755576167, 'u': 166932.03436599858, 'w': 1539.2442782259368, 'x': -1}
# Кинематическая вязкость пара, мм2/с
visc.kvisc_tp(300, 5e6)*1e6, visc.kvisc_Tp(300+273.15, 5e6)*1e6
(0.8975833333952189, 0.8975833333952189)
# Параметры пара при заданных температуре и давлении
visc.get_props()
{'T': 573.15, 'p': 5000000.0, 'h': 2925644.0423554666, 's': 6210.9403902234735, 'cp': 3171.40122912072, 'cv': 2061.499491880862, 'v': 0.045346626893362635, 'u': 2698910.9078886537, 'w': 538.8437066523188, 'x': 2}
Инженерные расчёты на Python, С.В. Медведев, 2020-2022
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2022