from region1 import Region1
#Создаём объект Область 1
r1 = Region1()
T = 300; p = 50e6
#Расчитываем теплофизические свойства воды по T и p
props_Tp = r1.props_Tp(T, p)
props_Tp #результат расчёта
#Расчитываем теплофизические свойства воды по p и h
props_ph = r1.props_ph(p, props_Tp['h'])
props_ph #результат расчёта
#Расчитываем теплофизические свойства воды по p и s
props_ps = r1.props_ps(p, props_Tp['s'])
props_ps #результат расчёта
#Определение температуры по p и h
r1.T_ph(p, props_Tp['h']) #результат расчёта - температура, К
#Определение температуры по p и s
r1.T_ps(p, props_Tp['s']) #результат расчёта - температура, К
см. в [1] табл. 5 на стр. 9
#Тестовые исходные данные
inputs = [{'T': 300, 'p': 3e6},
{'T': 300, 'p': 80e6},
{'T': 500, 'p': 3e6}]
#Точные значения результата расчёта
true_answers = [{'v': 0.100215168e-2, 'h': 0.115331273e6, 'u': 0.112324818e6, 's': 0.392294792e3,
'cp': 0.417301218e4, 'w': 0.150773921e4},
{'v': 0.971180894e-3, 'h': 0.184142828e6, 'u': 0.106448356e6, 's': 0.368563852e3,
'cp': 0.401008987e4, 'w': 0.163469054e4},
{'v': 0.120241800e-2, 'h': 0.975542239e6, 'u': 0.971934985e6, 's': 0.258041912e4,
'cp': 0.465580682e4, 'w': 0.124071337e4}]
errs = []
for i in range(len(true_answers)):
props = r1.props_Tp(inputs[i]['T'], inputs[i]['p'])
errs.append({})
for key in true_answers[i].keys():
#относительное отклонение результата расчёта от точного значения, %
errs[i][key] = (props[key] / true_answers[i][key] - 1) * 100
import pandas as pd
table = pd.DataFrame(errs)
#относительные отклонения результата расчёта от точных значений, %
table
см. в [1] табл. 7 на стр. 11
#Тестовые исходные данные
inputs_ph = [{'p': 3e6, 'h': 500e3},
{'p': 80e6, 'h': 500e3},
{'p': 80e6, 'h': 1500e3}]
#Точные значения результата расчёта
true_answers_ph = [0.391798509e3, 0.378108626e3, 0.611041229e3]
errs_ph = []
for i in range(len(true_answers_ph)):
T = r1.T_ph(inputs_ph[i]['p'], inputs_ph[i]['h'])
errs_ph.append((T / true_answers_ph[i] - 1) * 100)
#Относительные отклонения результата расчёта от точных значений, %
errs_ph
см. в [1] табл. 9 на стр. 12
#Тестовые исходные данные
inputs_ps = [{'p': 3e6, 's': 0.5e3},
{'p': 80e6, 's': 0.5e3},
{'p': 80e6, 's': 3e3}]
#Точные значения результата расчёта
true_answers_ps = [0.307842258e3, 0.309979785e3, 0.565899909e3]
errs_ps = []
for i in range(len(true_answers_ps)):
T = r1.T_ps(inputs_ps[i]['p'], inputs_ps[i]['s'])
errs_ps.append((T / true_answers_ps[i] - 1) * 100)
#Относительные отклонения результата расчёта от точных значений, %
errs_ps
#Проверка Tp_in
#Точки на границе области (с левого нижнего угла по часовой стрелке)
Tp_edge = [{'T': 273.15, 'p': r1.sc.p_T(273.15)},
{'T': 273.15, 'p': 100e6},
{'T': 623.15, 'p': 100e6},
{'T': 623.15, 'p': r1.sc.p_T(623.15)}]
Tp_in_edge = []
for point in Tp_edge:
Tp_in_edge.append(r1.Tp_in(point['T'], point['p']))
Tp_in_edge
#Значения T и p вне области
Tp_edge_out = [{'T': 273.15 - 1, 'p': r1.sc.p_T(273.15) -1 },
{'T': 273.15 - 1, 'p': 100e6 + 1},
{'T': 623.15 + 1, 'p': 100e6 + 1},
{'T': 623.15 +1 , 'p': r1.sc.p_T(623.15) - 1}]
Tp_in_edge_out = []
for point in Tp_edge_out:
Tp_in_edge_out.append(r1.Tp_in(point['T'], point['p']))
Tp_in_edge_out
#Значения T и p внутри области
Tp_edge_in = [{'T': 273.15 + 1, 'p': r1.sc.p_T(273.15 + 1) + 1 },
{'T': 273.15 + 1, 'p': 100e6 - 1},
{'T': 623.15 - 1, 'p': 100e6 - 1},
{'T': 623.15 - 1 , 'p': r1.sc.p_T(623.15) + 1}]
Tp_in_edge_in = []
for point in Tp_edge_in:
Tp_in_edge_in.append(r1.Tp_in(point['T'], point['p']))
Tp_in_edge_in
#Проверка ph_in
ph_edge = []
for point in Tp_edge:
ph_edge.append({'p': point['p'], 'h': r1.props_Tp(point['T'], point['p'])['h']})
ph_in_edge = []
for point in ph_edge:
ph_in_edge.append(r1.ph_in(point['p'], point['h']))
ph_in_edge
#Левая верхняя точка границы: p и h внутри области
r1.ph_in(ph_edge[1]['p'] - 1, ph_edge[1]['h'] + 1)
#Правая верхняя точка границы: p внутри области, h вне области
r1.ph_in(ph_edge[2]['p'] - 1, ph_edge[2]['h'] + 1)
#Проверка ps_in
#Точки на границе области
ps_edge = []
for point in Tp_edge:
ps_edge.append({'p': point['p'], 's': r1.props_Tp(point['T'], point['p'])['s']})
ps_in_edge = []
for point in ps_edge:
ps_in_edge.append(r1.ps_in(point['p'], point['s']))
ps_in_edge
#Правая верхняя точка границы: p и s внутри области
r1.ps_in(ps_edge[2]['p'] - 1, ps_edge[2]['s'] - 1)
#Правая нижняя точка границы: p внутри области, s вне области
r1.ps_in(ps_edge[3]['p'] + 1, ps_edge[3]['s'] + 1)
Инженерные расчёты на Python, С.В. Медведев, 2020 https://zen.yandex.ru/id/5f33dcd5554adc5b33aaee83