개정판 560f9bc9
issue #1201 2 Phase 계산식 수정 - Home_Den, Homo_Vel 컬럼 추가
Change-Id: Iae824761449f843c4380a8cea96f4ae2ffad69c9
HYTOS/HYTOS/AppDocData.py | ||
---|---|---|
1110 | 1110 |
, Void |
1111 | 1111 |
, Quality |
1112 | 1112 |
, Density |
1113 |
, V_Den |
|
1113 |
, Homo_Den |
|
1114 |
, V_Den |
|
1114 | 1115 |
, Mean_Vel |
1116 |
, Homo_Vel |
|
1115 | 1117 |
, Max_Vel |
1116 | 1118 |
, Ero_Vel |
1117 | 1119 |
, Pattern_X |
... | ... | |
1129 | 1131 |
cursor.execute(sql, param) |
1130 | 1132 |
rows = cursor.fetchall() |
1131 | 1133 |
for row in rows: |
1132 |
res.append((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], |
|
1133 |
row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19])) |
|
1134 |
res.append((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], |
|
1135 |
row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], |
|
1136 |
row[21])) |
|
1134 | 1137 |
# Catch the exception |
1135 | 1138 |
except Exception as ex: |
1136 | 1139 |
from App import App |
HYTOS/HYTOS/Calculation.py | ||
---|---|---|
719 | 719 |
self.v_visco = None |
720 | 720 |
self._lambda = None |
721 | 721 |
|
722 |
self.tp_homo_den = None |
|
723 |
self.tp_mean_den = None |
|
722 | 724 |
self.tp_homo_vel = None |
725 |
self.tp_mean_vel = None |
|
723 | 726 |
self.tp_max_vel = None |
724 | 727 |
self.tp_ero_vel = None |
725 | 728 |
self.tp_void = None |
726 | 729 |
|
727 |
|
|
728 | 730 |
self.no = None |
729 | 731 |
self.element = {} |
730 | 732 |
self.inside_diameter = {} |
... | ... | |
734 | 736 |
self.pressure = {} |
735 | 737 |
self.void = {} |
736 | 738 |
self.quality = {} |
737 |
self.mean_den = {} |
|
738 |
self.density = {} |
|
739 |
self.homo_vel = {} |
|
739 |
self.mean_den = {} # Display : Density = > Mean.Den |
|
740 |
self.homo_den = {} # 새로 추가 : Homo.Den |
|
741 |
self.density = {} # Display : V.Den |
|
742 |
self.mean_vel = {} # Display : Mean Vel |
|
743 |
self.homo_vel = {} # 새로 추가 : Homo Vel |
|
740 | 744 |
self.max_vel = {} |
741 | 745 |
self.ero_vel = {} |
742 | 746 |
self.x = {} |
... | ... | |
1311 | 1315 |
elif self.tp_angle > 0: |
1312 | 1316 |
self.tp_vu_regime() |
1313 | 1317 |
|
1314 |
self.mixed_pressure_variation[self.no][13] = self.x[self.no]
|
|
1315 |
self.mixed_pressure_variation[self.no][14] = self.y[self.no]
|
|
1316 |
self.mixed_pressure_variation[self.no][15] = str(self.regime[self.no])
|
|
1318 |
self.mixed_pressure_variation[self.no][15] = self.x[self.no]
|
|
1319 |
self.mixed_pressure_variation[self.no][16] = self.y[self.no]
|
|
1320 |
self.mixed_pressure_variation[self.no][17] = str(self.regime[self.no])
|
|
1317 | 1321 |
except Exception as ex: |
1318 | 1322 |
from App import App |
1319 | 1323 |
from AppDocData import MessageType |
... | ... | |
1852 | 1856 |
|
1853 | 1857 |
values['Pressure_Drop_Friction'] = round(fric_result, 3) |
1854 | 1858 |
values['Pressure_Drop_Static'] = round(stat_result, 3) |
1855 |
values['Velocity'] = self.homo_vel[1] |
|
1856 |
values['Density'] = self.mean_den[0] |
|
1859 |
|
|
1860 |
# max_mean_den |
|
1861 |
max_mean_den = sys.float_info.min |
|
1862 |
for no in range(self.no): |
|
1863 |
if no in self.mean_den: |
|
1864 |
mean_den = self.mean_den[no] if no in self.mean_den else 0 |
|
1865 |
if mean_den > max_mean_den: |
|
1866 |
max_mean_den = mean_den |
|
1867 |
|
|
1868 |
# max_homo_den |
|
1869 |
max_homo_den = sys.float_info.min |
|
1870 |
for no in range(self.no): |
|
1871 |
if no in self.homo_den: |
|
1872 |
homo_den = self.homo_den[no] if no in self.homo_den else 0 |
|
1873 |
if homo_den > max_homo_den: |
|
1874 |
max_homo_den = homo_den |
|
1875 |
|
|
1876 |
|
|
1877 |
|
|
1878 |
# max_mean_vel |
|
1879 |
max_mean_vel = sys.float_info.min |
|
1880 |
for no in range(self.no): |
|
1881 |
if no in self.mean_vel: |
|
1882 |
mean_vel = self.mean_vel[no] if no in self.mean_vel else 0 |
|
1883 |
if mean_vel > max_mean_vel: |
|
1884 |
max_mean_vel = mean_vel |
|
1885 |
|
|
1886 |
# max_homo_vel |
|
1887 |
max_homo_vel = sys.float_info.min |
|
1888 |
for no in range(self.no): |
|
1889 |
if no in self.homo_vel: |
|
1890 |
homo_vel = self.homo_vel[no] if no in self.homo_vel else 0 |
|
1891 |
if homo_vel > max_homo_vel: |
|
1892 |
max_homo_vel = homo_vel |
|
1893 |
|
|
1894 |
values['Density'] = max(max_mean_den, max_homo_den) # self.mean_den[0] |
|
1895 |
values['Velocity'] = max(max_mean_vel, max_homo_vel) # self.mean_vel[1] |
|
1857 | 1896 |
|
1858 | 1897 |
# 부피유량 계산 |
1898 |
values['Flowrate_Volume'] = round(values['Flowrate_Mass'] / values['Density'], 3) |
|
1899 |
''' |
|
1859 | 1900 |
tp_volume = self.tp_flow / self.tp_mean_den * 3600 |
1860 | 1901 |
# 현재 tp_volume은 m3/h임.부피유량 단위에 맞춰 뿌려줌 |
1861 | 1902 |
flowrate_volume_unit = self.units['Flowrate_Volume'] |
... | ... | |
1871 | 1912 |
tp_volume = round(tp_volume * 150.955, 3) |
1872 | 1913 |
|
1873 | 1914 |
values['Flowrate_Volume'] = tp_volume |
1874 |
|
|
1915 |
''' |
|
1875 | 1916 |
drawing.hmbTable.updateByUID(self.item.uid, values) |
1876 | 1917 |
except Exception as ex: |
1877 | 1918 |
from App import App |
... | ... | |
2041 | 2082 |
# velocity (m/s) |
2042 | 2083 |
velocity_unit = self.units['Velocity'] |
2043 | 2084 |
if velocity_unit == 'm/s': |
2044 |
av = self.tp_homo_vel |
|
2085 |
av = self.tp_mean_vel # self.tp_homo_vel
|
|
2045 | 2086 |
mv = self.tp_max_vel |
2046 | 2087 |
ev = self.tp_ero_vel |
2047 | 2088 |
elif velocity_unit == 'ft/s': |
2048 |
av = self.tp_homo_vel * 3.28084 |
|
2089 |
av = self.tp_mean_vel * 3.28084 # self.tp_homo_vel * 3.28084
|
|
2049 | 2090 |
mv = self.tp_max_vel * 3.28084 |
2050 | 2091 |
ev = self.tp_ero_vel * 3.28084 |
2051 | 2092 |
|
2052 |
self.homo_vel[self.no] = av
|
|
2093 |
self.mean_vel[self.no] = av
|
|
2053 | 2094 |
self.max_vel[self.no] = mv |
2054 | 2095 |
self.ero_vel[self.no] = ev |
2055 | 2096 |
|
2097 |
self.homo_den[self.no] = self.tp_homo_den |
|
2098 |
self.homo_vel[self.no] = self.tp_homo_vel |
|
2099 |
|
|
2056 | 2100 |
# dimensionless |
2057 | 2101 |
self.void[self.no] = self.tp_void |
2058 | 2102 |
self.quality[self.no] = self.tp_quality |
... | ... | |
2106 | 2150 |
void = self.void[key] if key in self.void else None |
2107 | 2151 |
quality = self.quality[key] if key in self.quality else None |
2108 | 2152 |
mean_den = self.mean_den[key] if key in self.mean_den else None |
2153 |
homo_den = self.homo_den[key] if key in self.homo_den else None |
|
2109 | 2154 |
v_density = self.density[key] if key in self.density else None |
2155 |
mean_vel = self.mean_vel[key] if key in self.mean_vel else None |
|
2110 | 2156 |
homo_vel = self.homo_vel[key] if key in self.homo_vel else None |
2111 | 2157 |
max_vel = self.max_vel[key] if key in self.max_vel else None |
2112 | 2158 |
ero_vel = self.ero_vel[key] if key in self.ero_vel else None |
... | ... | |
2119 | 2165 |
total = self.total[key] if key in self.total else None |
2120 | 2166 |
|
2121 | 2167 |
self.mixed_pressure_variation.append([element, inside_diameter, length, angle, k, pressure, void, |
2122 |
quality, mean_den, v_density, homo_vel, max_vel, ero_vel,
|
|
2168 |
quality, mean_den, homo_den, v_density, mean_vel, homo_vel, max_vel, ero_vel,
|
|
2123 | 2169 |
x, y, regime, dp_fric, dp_stat, dp_momen, total]) |
2124 | 2170 |
|
2125 | 2171 |
except Exception as ex: |
... | ... | |
2204 | 2250 |
l_flowrate = float(self.process['l_flowrate']) |
2205 | 2251 |
v_flowrate = float(self.process['v_flowrate']) |
2206 | 2252 |
|
2207 |
tp_homo_den = self.l_density * (1 - ((v_flowrate / self.v_density) / ( |
|
2253 |
self.tp_homo_den = self.l_density * (1 - ((v_flowrate / self.v_density) / (
|
|
2208 | 2254 |
(v_flowrate / self.v_density) + (l_flowrate / self.l_density)))) + self.v_density * ( |
2209 | 2255 |
(v_flowrate / self.v_density) / ( |
2210 | 2256 |
(v_flowrate / self.v_density) + (l_flowrate / self.l_density))) |
2211 | 2257 |
|
2258 |
# mean velocity (m/s) |
|
2259 |
self.tp_mean_vel = self.tp_massflux / self.tp_mean_den |
|
2260 |
|
|
2212 | 2261 |
# homogeneous vel (m/s) |
2213 | 2262 |
self.tp_homo_vel = self.tp_massflux * self.tp_quality / self.v_density + self.tp_massflux * (1 - self.tp_quality) / self.l_density |
2214 | 2263 |
|
2215 | 2264 |
# max velocity (m/s) |
2216 |
self.tp_max_vel = 122 / (tp_homo_den ** 0.5) |
|
2265 |
self.tp_max_vel = 122 / (self.tp_homo_den ** 0.5)
|
|
2217 | 2266 |
|
2218 | 2267 |
# erosion velocity (m/s) |
2219 |
self.tp_ero_vel = 195 / (tp_homo_den ** 0.5) |
|
2268 |
self.tp_ero_vel = 195 / (self.tp_homo_den ** 0.5)
|
|
2220 | 2269 |
else: |
2221 | 2270 |
return |
2222 | 2271 |
except Exception as ex: |
HYTOS/HYTOS/PressureVariation.py | ||
---|---|---|
91 | 91 |
self.units = attr[1] |
92 | 92 |
|
93 | 93 |
def initialize(self): |
94 |
self.ui.tableWidget.setColumnCount(21)
|
|
94 |
self.ui.tableWidget.setColumnCount(23)
|
|
95 | 95 |
col_names = ['No.\n-', 'Element\n-', 'Diameter\n{}'.format(self.units['Pipe_Diameter']), |
96 | 96 |
'Length\n{}'.format(self.units['Length']), 'Angle\n(deg)', 'K\n-', |
97 | 97 |
'Pressure\n{}(g)'.format(self.units['Pressure']), 'Void\n-', 'Quality\n-', |
98 |
'Density\n{}'.format(self.units['Density']), 'V.Den\n{}'.format(self.units['Density']),
|
|
99 |
'Mean Vel\n{}'.format(self.units['Velocity']), 'Max Vel\n{}'.format(self.units['Velocity']),
|
|
100 |
'Ero Vel\n{}'.format(self.units['Velocity']),
|
|
101 |
'Pattern\nX', 'Pattern\nY', 'Regime\n-', |
|
98 |
'Mean.Den\n{}'.format(self.units['Density']), 'Homo.Den\n{}'.format(self.units['Density']),
|
|
99 |
'V.Den\n{}'.format(self.units['Density']), 'Mean Vel\n{}'.format(self.units['Velocity']),
|
|
100 |
'Homo Vel\n{}'.format(self.units['Velocity']), 'Max Vel\n{}'.format(self.units['Velocity']),
|
|
101 |
'Ero Vel\n{}'.format(self.units['Velocity']), 'Pattern\nX', 'Pattern\nY', 'Regime\n-',
|
|
102 | 102 |
'Friction\n{}/{}'.format(self.units['Pressure'], self.units['Length']), |
103 | 103 |
'Gravity\n{}/{}'.format(self.units['Pressure'], self.units['Length']), |
104 | 104 |
'Momentum\n{}/{}'.format(self.units['Pressure'], self.units['Length']), |
... | ... | |
154 | 154 |
self.ui.tableWidget.setItem(row, 15, set_item_properties(convert_to_fixed_point(data[14]), |
155 | 155 |
Qt.AlignRight | Qt.AlignVCenter)) |
156 | 156 |
self.ui.tableWidget.setItem(row, 16, set_item_properties(convert_to_fixed_point(data[15]), |
157 |
Qt.AlignHCenter | Qt.AlignVCenter))
|
|
157 |
Qt.AlignRight | Qt.AlignVCenter))
|
|
158 | 158 |
self.ui.tableWidget.setItem(row, 17, set_item_properties(convert_to_fixed_point(data[16]), |
159 | 159 |
Qt.AlignRight | Qt.AlignVCenter)) |
160 | 160 |
self.ui.tableWidget.setItem(row, 18, set_item_properties(convert_to_fixed_point(data[17]), |
161 |
Qt.AlignRight | Qt.AlignVCenter))
|
|
161 |
Qt.AlignHCenter | Qt.AlignVCenter))
|
|
162 | 162 |
self.ui.tableWidget.setItem(row, 19, set_item_properties(convert_to_fixed_point(data[18]), |
163 | 163 |
Qt.AlignRight | Qt.AlignVCenter)) |
164 | 164 |
self.ui.tableWidget.setItem(row, 20, set_item_properties(convert_to_fixed_point(data[19]), |
165 | 165 |
Qt.AlignRight | Qt.AlignVCenter)) |
166 |
|
|
166 |
self.ui.tableWidget.setItem(row, 21, set_item_properties(convert_to_fixed_point(data[20]), |
|
167 |
Qt.AlignRight | Qt.AlignVCenter)) |
|
168 |
self.ui.tableWidget.setItem(row, 22, set_item_properties(convert_to_fixed_point(data[21]), |
|
169 |
Qt.AlignRight | Qt.AlignVCenter)) |
|
167 | 170 |
self.ui.tableWidget.resizeRowsToContents() |
168 | 171 |
self.ui.tableWidget.resizeColumnsToContents() |
169 | 172 |
except Exception as ex: |
... | ... | |
179 | 182 |
for row in range(self.ui.tableWidget.rowCount()): |
180 | 183 |
length = self.ui.tableWidget.item(row, 3).text() |
181 | 184 |
if is_not_blank(length): |
182 |
x = float(self.ui.tableWidget.item(row, 14).text())
|
|
183 |
y = float(self.ui.tableWidget.item(row, 15).text())
|
|
185 |
x = float(self.ui.tableWidget.item(row, 16).text())
|
|
186 |
y = float(self.ui.tableWidget.item(row, 17).text())
|
|
184 | 187 |
|
185 | 188 |
angle = float(self.ui.tableWidget.item(row, 4).text()) |
186 | 189 |
if angle == 0: |
... | ... | |
243 | 246 |
data[6] = round(row[6], 3) if row[6] is not None else None # void |
244 | 247 |
data[7] = round(row[7], 3) if row[7] is not None else None # quality |
245 | 248 |
data[8] = round(row[8], 3) if row[8] is not None else None # density |
246 |
data[9] = round(row[9], 3) if row[9] is not None else None # v_den |
|
247 |
data[10] = round(row[10], 3) if row[10] is not None else None # mean_vel |
|
248 |
data[11] = round(row[11], 3) if row[11] is not None else None # max_vel |
|
249 |
data[12] = round(row[12], 3) if row[12] is not None else None # ero_vel |
|
250 |
data[13] = round(row[13], 3) if row[13] is not None else None # x |
|
251 |
data[14] = round(row[14], 3) if row[14] is not None else None # y |
|
252 |
data[15] = row[15] # regime |
|
253 |
data[16] = round(row[16], 5) if row[16] is not None else None # friction |
|
254 |
data[17] = round(row[17], 5) if row[17] is not None else None # gravity |
|
255 |
data[18] = round(row[18], 5) if row[18] is not None else None # momentum |
|
256 |
data[19] = round(row[19], 5) if row[19] is not None else None # total |
|
257 |
|
|
258 |
total_display += round(row[19], 5) if row[19] is not None else 0 |
|
249 |
data[9] = round(row[9], 3) if row[9] is not None else None # homo_den 새로 추가됨 |
|
250 |
data[10] = round(row[10], 3) if row[10] is not None else None # v_den Index 9 -> 10로 변경 |
|
251 |
data[11] = round(row[11], 3) if row[11] is not None else None # mean_vel Index 10 -> 11로 변경 |
|
252 |
data[12] = round(row[12], 3) if row[12] is not None else None # homo_den 새로 추가됨 |
|
253 |
data[13] = round(row[13], 3) if row[13] is not None else None # max_vel Index 11 -> 13로 변경 |
|
254 |
data[14] = round(row[14], 3) if row[14] is not None else None # ero_vel Index 12 -> 14로 변경 |
|
255 |
data[15] = round(row[15], 5) if row[15] is not None else None # x Index 13 -> 15로 변경 |
|
256 |
data[16] = round(row[16], 5) if row[16] is not None else None # y Index 14 -> 16로 변경 |
|
257 |
# data[15] = round(row[15], 3) if row[15] is not None else None # x Index 13 -> 15로 변경 |
|
258 |
# data[16] = round(row[16], 3) if row[16] is not None else None # y Index 14 -> 16로 변경 |
|
259 |
data[17] = row[17] # regime Index 15 -> 17로 변경 |
|
260 |
data[18] = round(row[18], 5) if row[18] is not None else None # friction Index 16 -> 18로 변경 |
|
261 |
data[19] = round(row[19], 5) if row[19] is not None else None # gravity Index 17 -> 19로 변경 |
|
262 |
data[20] = round(row[20], 5) if row[20] is not None else None # momentum Index 18 -> 20로 변경 |
|
263 |
data[21] = round(row[21], 5) if row[21] is not None else None # total Index 19 -> 21로 변경 |
|
264 |
|
|
265 |
total_display += round(row[21], 5) if row[21] is not None else 0 |
|
259 | 266 |
|
260 | 267 |
len = row[2] if row[2] is not None else 0 |
261 |
fric = row[16] if row[16] is not None else 0
|
|
262 |
grav = row[17] if row[17] is not None else 0
|
|
268 |
fric = row[18] if row[18] is not None else 0
|
|
269 |
grav = row[19] if row[19] is not None else 0
|
|
263 | 270 |
|
264 | 271 |
fric_display_pipe += round(fric * len, 5) |
265 | 272 |
grav_display_pipe += round(grav * len, 5) |
... | ... | |
267 | 274 |
if str(row[0]) != 'Start Point': |
268 | 275 |
element = str(row[0]).rsplit('_', 1)[1] |
269 | 276 |
if element == 'Bend': |
270 |
dp_display_bend += round(row[19], 5) if row[19] is not None else 0
|
|
277 |
dp_display_bend += round(row[21], 5) if row[21] is not None else 0
|
|
271 | 278 |
elif element in ('Check_Valve', 'Ball Valve', 'Gate Valve', 'Globe Valve', 'Butterfly Valve'): |
272 |
dp_display_valve += round(row[19], 5) if row[19] is not None else 0
|
|
279 |
dp_display_valve += round(row[21], 5) if row[21] is not None else 0
|
|
273 | 280 |
elif element in ('Nozzle In', 'Nozzle Out'): |
274 |
dp_display_noz += round(row[19], 5) if row[19] is not None else 0
|
|
281 |
dp_display_noz += round(row[21], 5) if row[21] is not None else 0
|
|
275 | 282 |
|
276 |
mean_vel = row[10] if row[10] is not None else 0
|
|
277 |
max_vel = row[11] if row[11] is not None else 0
|
|
283 |
mean_vel = row[11] if row[11] is not None else 0
|
|
284 |
max_vel = row[13] if row[13] is not None else 0
|
|
278 | 285 |
|
279 | 286 |
if float(mean_vel) >= 20: |
280 | 287 |
find_velocity_20 = True |
... | ... | |
286 | 293 |
item.setForeground(Qt.black) |
287 | 294 |
self.ui.listWidget_Status.insertItem(0, item) |
288 | 295 |
|
289 |
regime = str(row[15])
|
|
296 |
regime = str(row[17])
|
|
290 | 297 |
if regime in ('Slug / Plug', 'Oscillary', 'Churn', 'Plug'): |
291 | 298 |
message = '{} regime is {}!'.format(row[0], regime) |
292 | 299 |
item = QListWidgetItem(message) |
HYTOS/HYTOS/Shapes/EngineeringStreamlineItem.py | ||
---|---|---|
1063 | 1063 |
if self.mixed_pressure_variation: |
1064 | 1064 |
for row in self.mixed_pressure_variation: |
1065 | 1065 |
cols = ['UID', 'Components_UID', 'Element', 'Inside_Pipe_Size', 'Length', 'Angle', 'K', 'Pressure', |
1066 |
'Void', 'Quality', 'Density', 'V_Den', 'Mean_Vel', 'Max_Vel', 'Ero_Vel', 'Pattern_X',
|
|
1067 |
'Pattern_Y', 'Regime', 'Friction', 'Gravity', 'Momentum', 'Total'] |
|
1068 |
values = ['?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', |
|
1069 |
'?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?'] |
|
1066 |
'Void', 'Quality', 'Density', 'Homo_Den', 'V_Den', 'Mean_Vel', 'Homo_Vel', 'Max_Vel',
|
|
1067 |
'Ero_Vel', 'Pattern_X', 'Pattern_Y', 'Regime', 'Friction', 'Gravity', 'Momentum', 'Total']
|
|
1068 |
values = ['?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
|
|
1069 |
'?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?']
|
|
1070 | 1070 |
|
1071 | 1071 |
param = [str(uuid.uuid4()), str(uid), str(row[0]), row[1], row[2], row[3], row[4], row[5], row[6], |
1072 | 1072 |
row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], |
1073 |
row[17], row[18], row[19]] |
|
1073 |
row[17], row[18], row[19], row[20], row[21]]
|
|
1074 | 1074 |
|
1075 | 1075 |
sql = 'insert or replace into PressureVariation({}) values({})'.format(','.join(cols), |
1076 | 1076 |
','.join(values)) |
내보내기 Unified diff