프로젝트

일반

사용자정보

개정판 560f9bc9

ID560f9bc94c47dbb7d8bf766047624ae6a742d666
상위 b54ed69c
하위 167da54c

김연진이(가) 4년 이상 전에 추가함

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

클립보드 이미지 추가 (최대 크기: 500 MB)