initial commit
This commit is contained in:
		
							
								
								
									
										830
									
								
								ArinWarev1/Calculator/AirHandling/CAirHandling.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										830
									
								
								ArinWarev1/Calculator/AirHandling/CAirHandling.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,830 @@ | ||||
| Public Class CAirHandling | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 최대냉/난반후하 계산식인거 같다. | ||||
|     ''' </summary> | ||||
|     ''' <param name="i_HeatCool"></param> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Overridable Sub Calc_Max_Power(ByVal i_HeatCool As Integer) | ||||
|         'Dim i_count_zone As Integer, i_count_AHU As Integer, i_count_profile As Integer | ||||
|         Dim c_p_L As Decimal, rho_L As Decimal | ||||
|         Dim theta_i_c As Decimal, theta_ABL_wi As Decimal, theta_ABL_so As Decimal, theta_AUL_wi As Decimal, theta_AUL_so As Decimal, theta_ZUL_wi As Decimal, theta_ZUL_so As Decimal | ||||
|         Dim x_ABL_wi As Decimal, x_ABL_so As Decimal, x_AUL_wi As Decimal, x_AUL_so As Decimal, x_ZUL_so As Decimal | ||||
|         Dim h_ABL_wi As Decimal, h_ABL_so As Decimal, h_AUL_wi As Decimal, h_AUL_so As Decimal, h_ZUL_wi As Decimal, h_ZUL_so As Decimal | ||||
|         Dim Delta_h_WRG As Decimal, V_dot_mech_m As Decimal, V_dot_star As Decimal, theta_c_mech_min As Decimal, ps_theta_ZUL_so As Decimal | ||||
|         Dim Q_dot_h_star As Decimal, Q_dot_c_star As Decimal, Q_dot_st_star As Decimal | ||||
|         Dim Q_dot_h_max As Decimal, Q_dot_c_max As Decimal | ||||
|         Dim theta_e_min As Decimal, theta_e_max As Decimal, V_A As Decimal, theta_i_h As Decimal, theta_i_c_soll As Decimal | ||||
|         Dim A_B As Decimal, c_p_Lrho_L As Decimal | ||||
|  | ||||
|  | ||||
|         theta_i_c = 24 | ||||
|         theta_i_c_soll = 26 | ||||
|         theta_i_h = 20 | ||||
|         c_p_L = 1.006 'kJ/kg K | ||||
|         rho_L = 1.204 'kg/m3 (20도 1기압상태) | ||||
|         c_p_Lrho_L = 0.34 'Wh/m3 K | ||||
|         theta_ABL_wi = 22 | ||||
|         x_ABL_wi = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_wi = 42.6 '편차가 없는 습도요구 적용 | ||||
|         theta_ABL_so = 26 | ||||
|         x_ABL_so = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_so = 46.7 '편차가 없는 습도요구 적용 | ||||
|         theta_AUL_wi = -12 | ||||
|         x_AUL_wi = 0.001 | ||||
|         h_AUL_wi = -9.6 | ||||
|         theta_AUL_so = 32 | ||||
|         x_AUL_so = 0.012 | ||||
|         h_AUL_so = 63 | ||||
|         theta_e_min = -11.3 | ||||
|         theta_e_max = 31.5 | ||||
|  | ||||
|  | ||||
|         'Dim dr공조처리 As DS.tbl_kongjoRow | ||||
|  | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") | ||||
|  | ||||
|             Dim dr최대냉난방부하 As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Dr존.code & "'")(0), DSR.최대냉난방부하Row) | ||||
|             If Dr존.냉난방공조 = "냉방" Or Dr존.냉난방공조 = "냉난방" Then | ||||
|                 A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                 Dim dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                 V_A = TOSG(dr프로필.최소도입외기량) * A_B ' Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) * A_B | ||||
|  | ||||
|                 For Each dr공조처리 As DS.tbl_kongjoRow In DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <>'0'", "code") | ||||
|                     '//아래두코드는 상단코드로 변경 | ||||
|                     'If Dr존.냉난방공조처리시스템 <> "" Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) <> "" Then | ||||
|                     'If Dr존.냉난방공조처리시스템 = dr공조처리.code Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) = Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|  | ||||
|                     ' 공조기 최대 가열성능 | ||||
|                     If i_HeatCool = 1 Then | ||||
|                         If Dr존.냉난방공조 = "냉난방" Then ' Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉난방" Then | ||||
|  | ||||
|                             Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '"열회수불가" | ||||
|                                     Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Delta_h_WRG = TOSG(dr공조처리.열회수율) * c_p_L * (theta_ABL_wi - theta_AUL_wi) '(3.2.5-55) 순수 현열 회수기 '================2010.03.22 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Delta_h_WRG = TOSG(dr공조처리.열회수율) * c_p_L * (h_ABL_wi - h_AUL_wi) '(3.2.5-56) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                             End Select | ||||
|  | ||||
|  | ||||
|  | ||||
|                             theta_ZUL_wi = TOSG(dr공조처리.설정치난방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(1, i_count_AHU - 1) 'theta_h_mech_min '(도표 3-3) | ||||
|  | ||||
|                             'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.001 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-38) 습도요구 없음 | ||||
|                             'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.006 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-42) 편차가 있는 습도요구 | ||||
|                             h_ZUL_wi = TOSG(1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도요구만 우선 적용 | ||||
|                             Q_dot_h_max = TOSG(dr최대냉난방부하.최대난방기기부하) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                             '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                             If (TOSG(dr공조처리.설정치난방) - theta_i_h) > 0 Then | ||||
|                                 V_dot_mech_m = 1000 * Q_dot_h_max / (c_p_Lrho_L * (TOSG(dr공조처리.설정치난방) - theta_i_h)) | ||||
|                             Else | ||||
|                                 V_dot_mech_m = 0 | ||||
|                             End If | ||||
|                             '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|  | ||||
|                             V_dot_star = V_dot_mech_m | ||||
|                             If dr공조처리.열교환기유형 = "전열교환" Then ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "전열교환" Then | ||||
|                                 Q_dot_h_star = V_dot_star * rho_L * (h_ZUL_wi - h_AUL_wi - Delta_h_WRG) / 3600 '(3.2.5-57) 증기가습 있음 - 열교환방식으로 수정 추후 검토 | ||||
|                             Else | ||||
|                                 Q_dot_h_star = V_dot_star * rho_L * (c_p_L * (theta_ZUL_wi - theta_AUL_wi) - Delta_h_WRG) / 3600 '(3.2.5-58) 증기가습 없음 - 열교환방식으로 수정 추후 검토 | ||||
|                             End If | ||||
|  | ||||
|                             dr최대냉난방부하.최대가열성능 = Q_dot_h_star | ||||
|                             'Worksheets("0").Range("최대난방부하1").Offset(3, i_count_zone - 1) = Q_dot_h_star | ||||
|                             If Q_dot_h_max > (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000 Then | ||||
|                                 dr최대냉난방부하.최대난방실내부하 = (Q_dot_h_max - (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000) | ||||
|                                 'Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) = Q_dot_h_max - (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000 | ||||
|                             Else | ||||
|                                 dr최대냉난방부하.최대난방실내부하 = 0 | ||||
|                                 'Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) = 0 | ||||
|                             End If | ||||
|                         End If | ||||
|  | ||||
|                         '공조기 최대 가습성능 | ||||
|  | ||||
|                         'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.001 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-38) 습도요구 없음 | ||||
|                         'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.006 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-42) 편차가 있는 습도요구 | ||||
|                         h_ZUL_wi = TOSG(1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도 요구 | ||||
|  | ||||
|                         Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "열회수불가" '열회수불가" | ||||
|                                 Delta_h_WRG = 0 '(3.2.5-63) 열 회수기 없음 | ||||
|                             Case "현열교환'" '현열교환" | ||||
|                                 Delta_h_WRG = 2501 * TOSG(dr공조처리.열회수율) * (x_ABL_wi - x_AUL_wi) '(3.2.5-64) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                             Case "전열교환" '전열교환" | ||||
|                                 Delta_h_WRG = 2501 * TOSG(dr공조처리.열회수율) * (x_ABL_wi - x_AUL_wi) '(3.2.5-64) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                         End Select | ||||
|  | ||||
|                         Q_dot_st_star = V_dot_star * rho_L * (h_ZUL_wi - h_AUL_wi - Delta_h_WRG) / 3600 '(3.2.5-65) | ||||
|                         dr최대냉난방부하.최대가습성능 = Q_dot_st_star | ||||
|                         dr최대냉난방부하.공조풍량 = V_dot_star | ||||
|                         'Worksheets("0").Range("최대가습성능1").Offset(0, i_count_zone - 1) = Q_dot_st_star | ||||
|                         'Worksheets("0").Range("최대가습성능1").Offset(1, i_count_zone - 1) = V_dot_star '공조풍량 | ||||
|  | ||||
|                     Else | ||||
|  | ||||
|                         ' 공조기 최대 냉각성능 | ||||
|  | ||||
|                         theta_c_mech_min = TOSG(dr공조처리.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|                         theta_ZUL_so = theta_c_mech_min '(도표 3.3) | ||||
|                         ps_theta_ZUL_so = TOSG(Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506))) '(3.2.5-37) 0.01C<=theta<=80C | ||||
|                         x_ZUL_so = TOSG(0.5911 / (100000 / ps_theta_ZUL_so - 0.95)) '(3.2.5-41) | ||||
|  | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + 0.012 * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-39) 습도요구 없음 ps_theta_ZUL_so>1892Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-40) 습도요구 없음 ps_theta_ZUL_so<=1892Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + 0.011 * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-43) 편차가 있는 습도요구 ps_theta_ZUL_so>1737Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-44) 편차가 있는 습도요구 ps_theta_ZUL_so<=1737Pa | ||||
|  | ||||
|                         If ps_theta_ZUL_so > 1269 Then | ||||
|                             h_ZUL_so = TOSG(1.01 * theta_ZUL_so + 0.008 * (2501 + 1.86 * theta_ZUL_so)) '(3.2.5-43) 편차가 없는 습도요구 ps_theta_ZUL_so>1269Pa | ||||
|                         Else | ||||
|                             h_ZUL_so = TOSG(1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so)) '(3.2.5-44) 편차가 없는 습도요구 ps_theta_ZUL_so<=1269Pa | ||||
|                         End If | ||||
|  | ||||
|                         Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "열회수불가" '열회수불가" | ||||
|                                 Delta_h_WRG = 0 '(3.2.5-59) 열 회수기 없음 | ||||
|                             Case "현열교환" '현열교환" | ||||
|                                 Delta_h_WRG = TOSG(dr공조처리.열회수율냉) * c_p_L * (theta_AUL_so - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 '================2010.03.22 수정, =============2010.04.14 수정 | ||||
|                             Case "전열교환" '전열교환" | ||||
|                                 Delta_h_WRG = TOSG(dr공조처리.열회수율냉) * c_p_L * (h_AUL_so - h_ABL_so) '(3.2.5-56) 현열 및 습기 회수기 '================2010.03.22 수정, =============2010.04.14 수정 | ||||
|                         End Select | ||||
|  | ||||
|                         Q_dot_c_max = TOSG(dr최대냉난방부하.최대냉방기기부하) ' Worksheets("0").Range("최대냉방부하1").Offset(0, i_count_zone - 1) | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         If (theta_i_c - TOSG(dr공조처리.설정치냉방)) > 0 Then | ||||
|                             V_dot_star = 1000 * Q_dot_c_max / (c_p_Lrho_L * (theta_i_c - TOSG(dr공조처리.설정치냉방))) | ||||
|                         Else | ||||
|                             V_dot_star = 0 | ||||
|                         End If | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         Q_dot_c_star = V_dot_star * rho_L * (h_AUL_so - h_ZUL_so - Delta_h_WRG) / 3600 '(3.2.5-62) | ||||
|  | ||||
|                         dr최대냉난방부하.최대냉각성능 = Q_dot_c_star | ||||
|                         dr최대냉난방부하.최대냉방실내부하 = Q_dot_c_max - (c_p_Lrho_L * (theta_e_max - theta_i_c_soll) * V_A) / 1000 | ||||
|  | ||||
|                         'Worksheets("0").Range("최대냉방부하1").Offset(3, i_count_zone - 1) = Q_dot_c_star | ||||
|                         'Worksheets("0").Range("최대냉방부하1").Offset(1, i_count_zone - 1) = Q_dot_c_max - (c_p_Lrho_L * (theta_e_max - theta_i_c_soll) * V_A) / 1000 | ||||
|                     End If | ||||
|  | ||||
|                     'End If | ||||
|                     'End If | ||||
|  | ||||
|                 Next | ||||
|             Else | ||||
|  | ||||
|                 dr최대냉난방부하.최대난방실내부하 = 0 | ||||
|                 dr최대냉난방부하.최대냉방실내부하 = 0 | ||||
|                 dr최대냉난방부하.최대가열성능 = 0 | ||||
|                 dr최대냉난방부하.최대냉각성능 = 0 | ||||
|                 dr최대냉난방부하.최대가습성능 = 0 | ||||
|                 dr최대냉난방부하.공조풍량 = 0 | ||||
|             End If | ||||
|  | ||||
|         Next | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_AirHandling(ByVal i_count_month As Integer, ByVal theta_e As Decimal) ' ByVal d_mth As Integer, | ||||
|         Dim A_B As Decimal | ||||
|         Dim x_ABL_wi As Decimal, h_ABL_wi As Decimal, x_ABL_so As Decimal, h_ABL_so As Decimal, x_AUL_wi As Decimal, h_AUL_wi As Decimal, x_AUL_so As Decimal, h_AUL_so As Decimal | ||||
|         Dim c_p_L As Decimal, rho_L As Decimal, f_p As Decimal, rho_cl As Decimal | ||||
|         Dim q_st_18_12h_m As Decimal, q_st_12h_m As Decimal, q_h_12h_m As Decimal, q_c_12h_m As Decimal, q_h_m As Decimal, q_c_m As Decimal, q_st_m As Decimal | ||||
|         Dim eta_ZUL As Decimal, eta_ABL As Decimal, f_h_H As Decimal, f_h_C As Decimal, f_h_st As Decimal | ||||
|         Dim Delta_p_star_ZUL As Decimal, Delta_p_star_ABL As Decimal, Delta_h_WRG As Decimal | ||||
|         Dim Q_V_E_ZUL_m As Decimal, Q_V_E_ABL_m As Decimal, Q_c_b As Decimal, Q_h_b As Decimal, Q_vh_b As Decimal, Q_vc_b As Decimal, Q_vm_b As Decimal | ||||
|         Dim t_V_mech_m As Decimal, theta_V_mech_m As Decimal, theta_hc_m As Decimal | ||||
|         Dim V_dot_mech_m As Decimal, V_dot_mech_max As Decimal, V_dot_A As Decimal, V_dot_z As Decimal, P_V_ZUL_m As Decimal, P_V_ABL_m As Decimal | ||||
|         Dim Sigma_V_dot As Decimal, Sigma_V_dot_3 As Decimal | ||||
|         Dim theta_h_mech_m As Decimal, theta_c_mech_m As Decimal | ||||
|  | ||||
|         ' Dim i_count_zone As Integer, i_count_profile As Integer, i_count_AHU As Integer | ||||
|         Dim theta_i_c_soll As Integer, theta_i_c As Integer, theta_i_h_soll As Integer, d_V_mech_m As Integer, theta_ABL_wi As Integer, theta_ABL_so As Integer | ||||
|         Dim V_dot_mech_h_max As Decimal, V_dot_mech_c_max As Decimal, V_dot_mech_c_m As Decimal, V_dot_mech_h_m As Decimal | ||||
|         Dim theta_e_min As Decimal, theta_e_max As Decimal | ||||
|         Dim x_ZUL_wi As Decimal, theta_ZUL_wi As Decimal, theta_AUL As Decimal, h_AUL As Decimal, x_AUL As Decimal, theta_AUL_j As Decimal, x_AUL_j As Decimal, psi_AUL_j As Decimal | ||||
|         Dim h_B As Decimal, r_0 As Decimal, m_dot_1_L As Decimal, u As Decimal, Phi_h As Decimal, Phi_c As Decimal '===============================2010.04.14 수정 | ||||
|         Dim Q_VE_B As Decimal, Q_VE_ZU As Decimal, Q_VE_D As Decimal | ||||
|         Dim c_p_Lrho_L As Decimal, theta_ZUL_so As Decimal, p_S_theta_ZUL_so As Decimal, p_95_theta_ZUL_so As Decimal, x_95_ZUL_so As Decimal | ||||
|         Dim h_95_ZUL_so As Decimal, i_count_air As Integer, i_count_start_time As Integer, i_count_end_time As Integer ', i_profile As Integer | ||||
|         Dim P_D_j_theta_AUL_j As Decimal | ||||
|  | ||||
|         ' 공조처리 | ||||
|  | ||||
|         theta_i_c_soll = 26 | ||||
|         theta_i_c = 24 'theta_i_c_soll - 2 '(2-36) | ||||
|         theta_i_h_soll = 20 | ||||
|         c_p_L = 1.006 'kJ/kg K | ||||
|         rho_L = 1.204 'kg/m3 (20도 1기압상태) | ||||
|         c_p_Lrho_L = 0.34 'Wh/m3 K | ||||
|         f_p = 0.4 '= Delta_p_konst / Delta_p_star = 0.4 '(3.2.5-13, 7-1) | ||||
|         '================================================2010.2.21 수정 | ||||
|         'd_V_mech_m = d_mth | ||||
|         '================================================2010.2.21 수정 | ||||
|         theta_ABL_wi = 20 | ||||
|         x_ABL_wi = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_wi = 42.6 '편차가 없는 습도요구 적용 | ||||
|         theta_ABL_so = 26 | ||||
|         x_ABL_so = 0.008 'kg/kg 편차가 없는 습도요구 적용 | ||||
|         h_ABL_so = 46.7 'kJ/kg 편차가 없는 습도요구 적용 | ||||
|         x_AUL_wi = 0.001 | ||||
|         h_AUL_wi = -9.6 | ||||
|         x_AUL_so = 0.012 | ||||
|         h_AUL_so = 63 | ||||
|         q_st_18_12h_m = 0 '우선 0으로 적용 추후 검토 | ||||
|         theta_e_min = -11.3 | ||||
|         theta_e_max = 31.5 | ||||
|         r_0 = 2500 'kJ/kg | ||||
|         x_ZUL_wi = 0.00699 | ||||
|  | ||||
|  | ||||
|         'Dim Dr프로필 As DS.tbl_profileRow   '//아래에서 할당되도록되어있다. | ||||
|         '//location 은 거의 서울(0번줄)이된다. | ||||
|         Dim Drow평균온도 As DS.weather_tempRow = CType(DSET.weather_temp.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_tempRow) | ||||
|         Dim Drow평균습도 As DS.weather_supdoRow = CType(DSET.weather_supdo.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_supdoRow) | ||||
|         Dim Mon As String = "M" & Format(i_count_month, "00") | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") | ||||
|             Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row()) | ||||
|             'If Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉방" Or Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉난방" Then | ||||
|             If Dr존.냉난방공조 = "냉방" OrElse Dr존.냉난방공조 = "냉난방" Then | ||||
|  | ||||
|                 '//존의 프로필과 일치하는 프로필검색후 적용 | ||||
|                 Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "'")(0), DS.tbl_profileRow) | ||||
|                 t_V_mech_m = TOSG(Dr프로필.운전시간난방) ' Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                 V_dot_A = TOSG(Dr프로필.최소도입외기량) ' Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) | ||||
|                 'i_profile = i_count_profile '//아래 루프종료문은 없어서 추가했다. | ||||
|                 '===================================================================================2010.2.21 추가 | ||||
|                 If i_count_month = 0 Then | ||||
|                     d_V_mech_m = 0 | ||||
|                 Else | ||||
|                     d_V_mech_m = CInt(Dr프로필("day" & Format(i_count_month, "00"))) | ||||
|                 End If | ||||
|                 '===================================================================================2010.2.21 추가 | ||||
|  | ||||
|                 For Each Dr공조 As DS.tbl_kongjoRow In DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <> '0'", "code") | ||||
|                     'If Dr존.냉난방공조처리시스템 <> "" Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) <> "" Then | ||||
|                     'If Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) = Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|                     'If Dr존.냉난방공조처리시스템 = Dr공조.code Then ' Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|                     Q_vh_b = 0 | ||||
|                     Q_vc_b = 0 | ||||
|                     Q_vm_b = 0 | ||||
|                     eta_ZUL = TOSG(Dr공조.총효율급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(2, i_count_AHU - 1) | ||||
|                     eta_ABL = TOSG(Dr공조.총효율배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(3, i_count_AHU - 1) | ||||
|                     Delta_p_star_ZUL = TOSG(Dr공조.총압력손실급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(0, i_count_AHU - 1) | ||||
|                     Delta_p_star_ABL = TOSG(Dr공조.총압력손실배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(1, i_count_AHU - 1) | ||||
|                     theta_V_mech_m = TOSG(Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|                     theta_h_mech_m = TOSG(Dr공조.설정치난방) 'Worksheets("공조처리시스템").Range("공조방식1").Offset(1, i_count_AHU - 1) | ||||
|                     theta_c_mech_m = TOSG(Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|  | ||||
|                     A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                     theta_AUL = 0 | ||||
|                     x_AUL = 0 | ||||
|                     i_count_start_time = CInt(Dr프로필.운전시작시간.Substring(0, Dr프로필.운전시작시간.IndexOf(":")))  ' Worksheets("설정조건").Range("사용시작시간1").Offset(3, i_profile) | ||||
|                     i_count_end_time = CInt(Dr프로필.운전종료시간.Substring(0, Dr프로필.운전종료시간.IndexOf(":"))) ' Worksheets("설정조건").Range("사용시작시간1").Offset(4, i_profile) | ||||
|                     If i_count_start_time - i_count_end_time < 0 Then | ||||
|                         For i_count_air = 0 To CInt(t_V_mech_m - 1) '자정 전까지 운전 조건 | ||||
|                             '//Dr기상데이터의 2번째 인덱스부터 시간이다. | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) ' Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) / 100 '  Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|                     Else | ||||
|                         For i_count_air = 0 To 23 - i_count_start_time  '자정 넘어까지 운전 조건 | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) 'Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) / 100 'Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|                         For i_count_air = 0 To i_count_end_time - 1 '자정 넘어까지 운전 조건 | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_air + 1, "00"))) 'Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_air + 1, "00"))) / 100 'Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|  | ||||
|                     End If | ||||
|  | ||||
|                     theta_AUL = theta_AUL / t_V_mech_m | ||||
|                     x_AUL = x_AUL / t_V_mech_m | ||||
|                     h_AUL = c_p_L * theta_AUL + x_AUL * (r_0 + c_p_L * theta_AUL) | ||||
|  | ||||
|                     ''V_dot_mech_h_max = Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) * 1000 / (c_p_Lrho_L * (theta_h_mech_m - theta_i_h_soll)) '(3.2.4-86) | ||||
|  | ||||
|                     '//현재존과일치하는 데이터수집 | ||||
|                     If (theta_i_c_soll - theta_c_mech_m) <> 0 Then | ||||
|                         V_dot_mech_max = TOSG(Result.최대부하.Item(Dr존.code).최대냉방실내부하) * 1000 / (c_p_Lrho_L * (theta_i_c_soll - theta_c_mech_m)) '(3.2.4-86) | ||||
|                     Else | ||||
|                         V_dot_mech_max = 0 | ||||
|                     End If | ||||
|  | ||||
|                     ' Worksheets("0").Range("최대냉방부하1").Offset(1, i_count_zone - 1) | ||||
|  | ||||
|                     ''If V_dot_mech_h_max < V_dot_mech_c_max Then | ||||
|                     ''    V_dot_mech_max = V_dot_mech_c_max | ||||
|                     ''Else | ||||
|                     ''    V_dot_mech_max = V_dot_mech_h_max | ||||
|                     ''End If | ||||
|  | ||||
|                     If V_dot_mech_max < V_dot_A * A_B Then V_dot_mech_max = V_dot_A * A_B | ||||
|  | ||||
|                     Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                         Case "정풍량" '정풍량" | ||||
|                             V_dot_mech_m = V_dot_mech_max | ||||
|  | ||||
|                         Case "변풍량" '변풍량" | ||||
|                             '//계산결과가들엉잇는 12개월용시트(1~12)에ㅓ 해당값을 찾는 엑셀루틴이다. 이건좀 교환하기가 그러네;;ㅠ | ||||
|                             '//해당12개시트의 데이터는 DSR월별에너지분석에 존재한다 이곳에는 월/존두개의 기본키가존재하며 해당rOW를 가져와야한다. | ||||
|  | ||||
|                             If Drow분석.GetUpperBound(0) = -1 Then | ||||
|                                 MsgBox("월별에너지분석에 " & i_count_month & "데이터가 없습니다", MsgBoxStyle.Critical, "계산실패") | ||||
|                                 Return | ||||
|                             End If | ||||
|  | ||||
|                             'Q_c_b = Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) - (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 | ||||
|                             Q_c_b = TOSG(Drow분석(0).냉방요구량공조) - (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 | ||||
|  | ||||
|                             If Q_c_b < 0 Then Q_c_b = 0 | ||||
|  | ||||
|                             V_dot_mech_m = (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 + Q_c_b / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_i_c - theta_c_mech_m) / 1000) '(3.2.5-4) 공조풍량(변풍량) | ||||
|                             'If V_dot_mech_m < 0 Then | ||||
|                             'V_dot_mech_m = 0 | ||||
|                             'End If | ||||
|  | ||||
|                             If V_dot_mech_m < V_dot_A * A_B Then V_dot_mech_m = V_dot_A * A_B | ||||
|  | ||||
|                     End Select | ||||
|  | ||||
|                     'If V_dot_mech_m = 0 Then | ||||
|                     '    theta_hc_m = theta_V_mech_m | ||||
|                     'Else | ||||
|                     '    theta_hc_m = theta_V_mech_m - Q_V_E_ZUL_m * 1000 / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * V_dot_mech_m) + 1.4 '(3.2.5-22) Q_V_E_ZUL_m에 1000 을 곱해야하는지 확인요망 | ||||
|                     'End If | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     '월별 풍량당 공조에너지 요구량은 추후 적용 | ||||
|  | ||||
|  | ||||
|                     'If theta_hc_m <= 22 And theta_hc_m > 18 Then | ||||
|                     'q_h_12h_m = q_h_18_12h_m + g_h_o_m * (theta_hc_m - 18) '(3.2.5-23) 18C<theta_hc_m<=22C | ||||
|                     'q_c_12h_m = q_c_18_12h_m - g_c_o_m * (theta_hc_m - 18) '(3.2.5-25) 18C<theta_hc_m<=22C | ||||
|                     'End If | ||||
|                     'If theta_hc_m <= 18 And theta_hc_m > 14 Then | ||||
|                     'q_h_12h_m = q_h_18_12h_m + g_h_u_m * (theta_hc_m - 18) '(3.2.5-24) 14C<theta_hc_m<=18C | ||||
|                     'q_c_12h_m = q_c_18_12h_m - g_c_u_m * (theta_hc_m - 18) '(3.2.5-26) 14C<theta_hc_m<=18C | ||||
|                     'End If | ||||
|                     'q_st_12h_m = q_st_18_12h_m '(3.2.5-27) | ||||
|  | ||||
|  | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     '========================================================================================================================================== | ||||
|  | ||||
|                     If Dr공조.리턴공기혼합여부 = "예" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(4, i_count_AHU - 1) = "예" Then | ||||
|                         If V_dot_mech_m = 0 Then | ||||
|                             u = 1  '//?? | ||||
|                         Else | ||||
|                             u = (V_dot_mech_m - V_dot_A * A_B) / V_dot_mech_m '예(리턴공기혼합여부) | ||||
|                         End If | ||||
|  | ||||
|                     Else | ||||
|                         u = 0 '아니오(리턴공기혼합여부) | ||||
|                     End If | ||||
|  | ||||
|                     If Dr공조.열교환기유형 = "현열교환" OrElse Dr공조.열교환기유형 = "전열교환" Then ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "현열교환" Or Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "전열교환" Then | ||||
|                         Phi_h = TOSG(Dr공조.열회수율) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) '=====================2010.04.14 수정 | ||||
|                         Phi_c = TOSG(Dr공조.열회수율냉) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(2, i_count_AHU - 1) '=====================2010.04.14 수정 | ||||
|                     Else | ||||
|                         Phi_h = 0 '==============================2010.04.14 수정 | ||||
|                         Phi_c = 0 '==============================2010.04.14 수정 | ||||
|                     End If | ||||
|  | ||||
|  | ||||
|                     If TOSG(Drow분석(0).난방요구량공조) > 0 Then 'Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|  | ||||
|                         '난방공조처리(가열,가열+가습(분무 또는 증기),리턴공기혼합유무(리턴공기혼합율 입력),열회수유무(현열 또는 전열, 열회수율 입력) | ||||
|  | ||||
|                         'Q_h_b = Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) - (theta_i_h_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                         Q_h_b = TOSG(Drow분석(0).난방요구량공조) - (theta_i_h_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                         Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "정풍량" | ||||
|                                 theta_ZUL_wi = 1000 * Q_h_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) + theta_i_h_soll 'd_Nutz=d_V_mech_m 으로 적용 | ||||
|  | ||||
|                             Case "변풍량" | ||||
|                                 If V_dot_mech_m > V_dot_A * A_B Then | ||||
|                                     theta_ZUL_wi = theta_h_mech_m | ||||
|                                 Else | ||||
|                                     If V_dot_mech_m = 0 Then | ||||
|                                         theta_ZUL_wi = theta_i_h_soll | ||||
|                                     Else | ||||
|                                         theta_ZUL_wi = 1000 * Q_h_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) + theta_i_h_soll | ||||
|                                     End If | ||||
|  | ||||
|                                 End If | ||||
|                         End Select | ||||
|  | ||||
|                         m_dot_1_L = V_dot_mech_m * rho_L | ||||
|  | ||||
|                         '외기모드 경우와 에너지 | ||||
|                         'theta_ZUL_wi<theta_ABL_wi+(1-u)*(1-Phi)*(theta_AUL-theta_ABL_wi) | ||||
|                         'Q_VE_B = 0 | ||||
|                         'Q_VE_D = 0 | ||||
|  | ||||
|                         If Dr공조.가습기유형 <> "가습불가" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) <> "가습불가" Then | ||||
|  | ||||
|                             h_B = c_p_L * theta_ZUL_wi + x_ZUL_wi * (r_0 + c_p_L * theta_ZUL_wi) | ||||
|                             Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '열회수불가" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * h_AUL) / 3600) | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * (h_AUL + c_p_L * Phi_h * (theta_ABL_wi - theta_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * (h_AUL + Phi_h * (h_ABL_wi - h_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|  | ||||
|                             End Select | ||||
|                             Q_vh_b = Q_VE_B | ||||
|                         End If | ||||
|  | ||||
|                         If Dr공조.가습기유형 <> "분무가습" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) <> "분무가습" Then | ||||
|  | ||||
|                             Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '열회수불가" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * theta_AUL) / 3600) | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * (theta_AUL + Phi_h * (theta_ABL_wi - theta_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * (theta_AUL + Phi_h * (h_ABL_wi - h_AUL) / c_p_L)) / 3600) '==============2010.04.14 수정 | ||||
|                             End Select | ||||
|                             If Dr공조.가습기유형 = "가습불가" Then 'Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) = "가습불가" Then | ||||
|                                 Q_vh_b = Q_VE_ZU | ||||
|                             Else | ||||
|                                 Q_vh_b = Q_VE_ZU | ||||
|                                 Q_vm_b = Q_VE_B - Q_VE_ZU | ||||
|                             End If | ||||
|  | ||||
|                         End If | ||||
|                     Else | ||||
|                         Q_vh_b = 0 | ||||
|                         Q_vm_b = 0 | ||||
|  | ||||
|                     End If | ||||
|                     '------------------------------------------------------------------------------------------------------------------------------------------ | ||||
|                     If TOSG(Drow분석(0).냉방요구량공조) > 0 Then ' Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) > 0 Then | ||||
|                         '냉방공조처리에너지(냉각,리턴공기혼합유무(리턴공기혼합율 계산, 열회수유무(현열 또는 전열, 열회수율 입력) | ||||
|  | ||||
|                         Q_c_b = TOSG(Drow분석(0).냉방요구량공조) 'Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) | ||||
|                         Select Case Dr공조.공조방식.Trim 'Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "정풍량" '정풍량" | ||||
|                                 If Dr공조.외기냉방제어유무 = "유" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "유" Then | ||||
|                                     If theta_AUL - theta_i_c_soll > 0 Then | ||||
|                                         Q_c_b = Q_c_b - (theta_AUL - theta_i_c_soll) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                                     Else | ||||
|                                         Q_c_b = Q_c_b - (theta_i_c_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                                     End If | ||||
|                                 End If | ||||
|                                 If Q_c_b < 0 Then Q_c_b = 0 | ||||
|                                 theta_ZUL_so = theta_i_c - 1000 * Q_c_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) 'd_Nutz=d_V_mech_m 으로 적용 | ||||
|  | ||||
|                             Case "변풍량" '변풍량" | ||||
|                                 If V_dot_mech_m > V_dot_A * A_B OrElse V_dot_mech_m = 0 Then | ||||
|                                     theta_ZUL_so = theta_c_mech_m | ||||
|                                 Else | ||||
|                                     theta_ZUL_so = theta_i_c - 1000 * Q_c_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) | ||||
|                                 End If | ||||
|  | ||||
|                         End Select | ||||
|  | ||||
|                         p_S_theta_ZUL_so = TOSG(Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506))) | ||||
|                         p_95_theta_ZUL_so = TOSG(0.95 * p_S_theta_ZUL_so) | ||||
|                         x_95_ZUL_so = TOSG(0.5911 / (100000 / p_95_theta_ZUL_so - 0.95)) | ||||
|                         m_dot_1_L = V_dot_mech_m * rho_L | ||||
|                         h_95_ZUL_so = c_p_L * theta_ZUL_so + x_95_ZUL_so * (r_0 + c_p_L * theta_ZUL_so) | ||||
|  | ||||
|  | ||||
|                         'If theta_ZUL_so > theta_AUL Then | ||||
|  | ||||
|                         '냉방의 경우 가열에너지 | ||||
|                         'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                         'Case "열회수불가" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (theta_AUL - theta_ABL_so) Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * theta_AUL) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'Case "현열교환" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (1 - Phi) * (theta_AUL - theta_ABL_so) Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi * (theta_ABL_so - theta_AUL))) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'Case "전열교환" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (1 - Phi) * (h_AUL - h_ABL_so) / c_p_L Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi * (h_ABL_so - h_AUL) / c_p_L)) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'End Select | ||||
|                         'End If | ||||
|  | ||||
|                         If theta_ZUL_so > theta_AUL And Dr공조.외기냉방제어유무 = "유" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "유" Then | ||||
|                             Q_vc_b = 0 | ||||
|                             V_dot_mech_m = (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_c_mech_m - theta_AUL) * V_dot_A * A_B) / 1000 + Q_c_b / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_i_c - theta_AUL) / 1000) | ||||
|                             If V_dot_mech_m < V_dot_A * A_B Then V_dot_mech_m = V_dot_A * A_B | ||||
|                         Else | ||||
|                             If 0.5911 / (100000 / p_95_theta_ZUL_so - 0.95) > (1 - u) * x_AUL + u * x_ABL_so Then | ||||
|                                 Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                     Case "열회수불가" '열회수불가" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * theta_AUL) / 3600 | ||||
|                                     Case "현열교환" '현열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi_c * (theta_ABL_so - theta_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                     Case "전열교환" '전열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi_c * (h_ABL_so - h_AUL) / c_p_L)) / 3600 '==================2010.04.14 수정 | ||||
|                                 End Select | ||||
|                             Else | ||||
|                                 Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                     Case "열회수불가" '열회수불가" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * h_AUL) / 3600 | ||||
|                                     Case "현열교환" '현열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * (h_AUL + c_p_L * Phi_c * (theta_ABL_so - theta_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                     Case "전열교환" '전열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * (h_AUL + Phi_c * (h_ABL_so - h_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                 End Select | ||||
|                             End If | ||||
|  | ||||
|                         End If | ||||
|                     Else | ||||
|                         Q_vc_b = 0 | ||||
|  | ||||
|                     End If | ||||
|                     '========================================================================================================================================== | ||||
|                     '========================================================================================================================================== | ||||
|  | ||||
|                     Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                         Case "정풍량" '정풍량" | ||||
|                             If eta_ZUL <> 0 Then | ||||
|                                 P_V_ZUL_m = V_dot_mech_m * Delta_p_star_ZUL / eta_ZUL / 3600000  ' V_dot_ZUL = V_dot_mech_m (3.2.5-7) 정풍량 (3600은 Pa을 W환산하면서 h를 s로 환산) | ||||
|                             Else | ||||
|                                 P_V_ZUL_m = 0 | ||||
|                             End If | ||||
|  | ||||
|                             If eta_ABL <> 0 Then | ||||
|                                 P_V_ABL_m = V_dot_mech_m * Delta_p_star_ABL / eta_ABL / 3600000 | ||||
|                             Else | ||||
|                                 P_V_ABL_m = 0 | ||||
|                             End If | ||||
|                             Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m '(3.2.5-10) 정풍량 | ||||
|                             Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m '(3.2.5-10) 정풍량 | ||||
|  | ||||
|                         Case "변풍량" '변풍량" | ||||
|  | ||||
|                             Sigma_V_dot = t_V_mech_m * d_V_mech_m * V_dot_mech_m + 1000 * Q_c_b / (c_p_Lrho_L * (theta_i_c - theta_V_mech_m)) '(3.2.5-5) 월간 공조풍량 합(변풍량) | ||||
|                             ' 수식 변경 Sigma_V_dot_3 = t_V_mech_m * d_V_mech_m * (V_dot_mech_m ^ 3) + Q_c_b / (c_p_L * rho_L * (theta_i_c - theta_V_mech_m)) | ||||
|                             Sigma_V_dot_3 = TOSG(Sigma_V_dot * (0.8 * V_dot_mech_m + 0.2 * V_dot_mech_max) ^ 2) | ||||
|  | ||||
|                             If V_dot_mech_m = 0 Then | ||||
|                                 P_V_ZUL_m = 0 'CSng(V_dot_mech_m * Delta_p_star_ZUL * f_p / eta_ZUL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ZUL * (1 - f_p)) / (eta_ZUL * V_dot_mech_m ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검토 | ||||
|                                 P_V_ABL_m = 0 'CSng(V_dot_mech_m * Delta_p_star_ABL * f_p / eta_ABL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ABL * (1 - f_p)) / (eta_ABL * V_dot_mech_m ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검 | ||||
|                                 Q_V_E_ZUL_m = 0 'P_V_ZUL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                                 Q_V_E_ABL_m = 0 'P_V_ABL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                             Else | ||||
|  | ||||
|                                 '==========================변풍량에서도 효율이 없을 경우 동력이 0인 것으로 평가 2010.10.10 | ||||
|                                 If eta_ZUL <> 0 Then | ||||
|                                     P_V_ZUL_m = TOSG(V_dot_mech_m * Delta_p_star_ZUL * f_p / eta_ZUL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ZUL * (1 - f_p)) / (eta_ZUL * V_dot_mech_max ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검토 | ||||
|                                     '=============================================================================================== 최소외기도입량 동력보다 작으면 최소외기도입 동력으로 적용 2012.01.31 | ||||
|                                     If P_V_ZUL_m < V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600 Then | ||||
|                                         P_V_ZUL_m = V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600 | ||||
|                                     End If | ||||
|                                     '=============================================================================================== | ||||
|                                 Else | ||||
|                                     P_V_ZUL_m = 0 | ||||
|                                 End If | ||||
|                                 If eta_ABL <> 0 Then | ||||
|                                     P_V_ABL_m = TOSG(V_dot_mech_m * Delta_p_star_ABL * f_p / eta_ABL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ABL * (1 - f_p)) / (eta_ABL * V_dot_mech_max ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검 | ||||
|                                     '=============================================================================================== 최소외기도입량 동력보다 작으면 최소외기도입 동력으로 적용 2012.01.31 | ||||
|                                     If P_V_ABL_m < V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600 Then | ||||
|                                         P_V_ABL_m = V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600 | ||||
|                                     End If | ||||
|                                     '=============================================================================================== | ||||
|                                 Else | ||||
|                                     P_V_ABL_m = 0 | ||||
|                                 End If | ||||
|                                 '============================================================2010.10.10 | ||||
|                                 Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                                 Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                             End If | ||||
|  | ||||
|                     End Select | ||||
|  | ||||
|                     '------------------------------------------------------------------------------------------------------------------------------------------ | ||||
|                     ' 우선 외기온도에 대한 공조에너지 요구량 산정 필요 ???? | ||||
|  | ||||
|                     'q_st_12h_m = q_st_18_12h_m '(3.2.5-27) | ||||
|  | ||||
|                     'If theta_e < theta_hc_m Then | ||||
|                     'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                     'Case "열회수불가" | ||||
|                     'Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                     'Case "현열교환" | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_wi - theta_e) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'Case "전열교환" | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_wi - theta_e) '(3.2.5-56) 현열 및 습기 회수기 우선 현열만 고려 | ||||
|                     'End Select | ||||
|                     'q_h_12h_m = rho_L * (c_p_L * (theta_hc_m - theta_e) - Delta_h_WRG) * 12 * d_mth * V_dot_A * A_B + rho_L * c_p_L * (theta_h_mech_m - theta_i_h_soll) * 12 * d_mth * (V_dot_mech_m - V_dot_A * A_B) 'theta_h_mech_m 과 theta_hc_m 중 선택 검토 | ||||
|  | ||||
|                     'End If | ||||
|  | ||||
|                     'If theta_e > theta_hc_m Then | ||||
|                     'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                     'Case "열회수불가" | ||||
|                     'Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                     'Case "현열교환" | ||||
|                     'If theta_e > theta_ABL_so Then | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_e - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'Else | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_so - theta_e) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'End If | ||||
|                     'Case "전열교환" | ||||
|                     'If theta_e > theta_ABL_so Then | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_e - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 우선 현열만 고려 | ||||
|                     'Else | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_so - theta_e) '(3.2.5-55) 순수 현열 회수기 우선 현열만 고려 | ||||
|                     'End If | ||||
|  | ||||
|                     'End Select | ||||
|  | ||||
|                     'q_c_12h_m = rho_L * (c_p_L * (theta_e - theta_hc_m) - Delta_h_WRG) * 12 * d_mth * V_dot_A * A_B + rho_L * c_p_L * (theta_i_c_soll - theta_c_mech_m) * 12 * d_mth * (V_dot_mech_m - V_dot_A * A_B) 'theta_c_mech_m 과 theta_hc_m 중 선택 검토 | ||||
|  | ||||
|                     'End If | ||||
|  | ||||
|  | ||||
|                     'f_h_H = 1 + 6.333 * 10 ^ (-3) * (t_V_mech_m - 12) - 2.689 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 + 6.94 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-31) | ||||
|                     'f_h_C = 1 - 5.583 * 10 ^ (-3) * (t_V_mech_m - 12) + 2.153 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 - 6.597 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-32) 편차가 없는 습도요구 | ||||
|                     'f_h_C = 1 - 1.552 * 10 ^ (-3) * (t_V_mech - 12) - 8.073 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 - 1.302 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-32) 편차가 있는 습도요구 추후 검토 | ||||
|                     'f_h_st = 1 | ||||
|  | ||||
|                     'q_h_m = q_h_12h_m * t_V_mech_m / 12 * f_h_H * d_V_mech_m / d_mth '(3-28) | ||||
|                     'q_c_m = q_c_12h_m * t_V_mech_m / 12 * f_h_C * d_V_mech_m / d_mth '(3-29) | ||||
|                     'q_st_m = q_st_12h_m * t_V_mech_m / 12 * f_h_st * d_V_mech_m / d_mth '(3-30) | ||||
|  | ||||
|                     'Q_vh_b = q_h_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|                     'Q_vc_b = q_c_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|                     'Q_vm_b = q_st_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|  | ||||
|                     'Q_vh_b = q_h_m / 1000 ' 우선 공조풍량을 미리 포함시킴 추후 검토 | ||||
|                     'Q_vc_b = q_c_m / 1000 ' 우선 공조풍량을 미리 포함시킴 추후 검토 | ||||
|                     'Q_vm_b = q_st_m * V_dot_mech_m / 1000 '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     Drow분석(0).공조풍량 = V_dot_mech_m | ||||
|                     'Sheets("" & i_count_month & "").Cells(17, 7 + i_count_zone) = V_dot_mech_m | ||||
|                     If Q_vh_b < 0 Then | ||||
|                         Q_vh_b = 0 '음수 여부 추후 검토 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량난방 = Q_vh_b | ||||
|                     'Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) = Q_vh_b | ||||
|  | ||||
|                     If Q_vc_b < 0 Then | ||||
|                         Q_vc_b = 0 '냉방공조에너지요구량이 -인 것은 난방에서 처리되는 것으로 설정 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량냉방 = Q_vc_b | ||||
|                     'Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) = Q_vc_b | ||||
|  | ||||
|                     If Q_vm_b < 0 Then | ||||
|                         Q_vm_b = 0 '음수 여부 추후 검토 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량가습 = Q_vm_b '  Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) = Q_vm_b | ||||
|                     Drow분석(0).환기요구량 = Q_V_E_ZUL_m + Q_V_E_ABL_m ' Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                     '========================================================================================================================================== | ||||
|                     'End If | ||||
|                     'End If | ||||
|                 Next | ||||
|  | ||||
|             Else | ||||
|                 Drow분석(0).공조풍량 = 0 '  Sheets("" & i_count_month & "").Cells(17, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량난방 = 0 '     Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량냉방 = 0 'Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량가습 = 0 ' Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).환기요구량 = 0 'Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = 0 | ||||
|  | ||||
|  | ||||
|                 '==========================================================================2010.02.04 추가부분 시작 | ||||
|                 If Dr존.냉난방공조 = "환기" OrElse (Dr존.냉난방공조 = "난방" AndAlso Dr존.외기부하처리여부 = "예") Then   '//환기 | ||||
|                     Dim DR프로필() As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필.ToString & "' and code <> '0'"), DS.tbl_profileRow()) | ||||
|                     If DR프로필.GetUpperBound(0) = 0 Then | ||||
|                         t_V_mech_m = TOSG(DR프로필(0).운전시간난방) ' Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                         V_dot_A = TOSG(DR프로필(0).최소도입외기량) 'Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) | ||||
|                         A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                         '===================================================================================2010.2.25 추가 | ||||
|                         'd_V_mech_m = Worksheets("설정조건").Range("월간사용일수1").Offset(i_count_month, i_count_profile) | ||||
|                         Select Case i_count_month | ||||
|                             Case 0 : d_V_mech_m = 0 | ||||
|                             Case 1 : d_V_mech_m = DR프로필(0).day01 | ||||
|                             Case 2 : d_V_mech_m = DR프로필(0).day02 | ||||
|                             Case 3 : d_V_mech_m = DR프로필(0).day03 | ||||
|                             Case 4 : d_V_mech_m = DR프로필(0).day04 | ||||
|                             Case 5 : d_V_mech_m = DR프로필(0).day05 | ||||
|                             Case 6 : d_V_mech_m = DR프로필(0).day06 | ||||
|                             Case 7 : d_V_mech_m = DR프로필(0).day07 | ||||
|                             Case 8 : d_V_mech_m = DR프로필(0).day08 | ||||
|                             Case 9 : d_V_mech_m = DR프로필(0).day09 | ||||
|                             Case 10 : d_V_mech_m = DR프로필(0).day10 | ||||
|                             Case 11 : d_V_mech_m = DR프로필(0).day11 | ||||
|                             Case 12 : d_V_mech_m = DR프로필(0).day12 | ||||
|                         End Select | ||||
|                         '===================================================================================2010.2.25 추가 | ||||
|  | ||||
|                     End If | ||||
|  | ||||
|                     Dim DR공조() As DS.tbl_kongjoRow = CType(DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <> '0'"), DS.tbl_kongjoRow()) | ||||
|                     If DR공조.GetUpperBound(0) = 0 Then | ||||
|  | ||||
|                         '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2010.05.26 추가 | ||||
|                         If DR공조(0).열교환기유형.Trim = "현열교환" OrElse DR공조(0).열교환기유형.Trim = "전열교환" Then | ||||
|                             Phi_h = TOSG(DR공조(0).열회수율) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) | ||||
|                             Phi_c = TOSG(DR공조(0).열회수율냉) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(2, i_count_AHU - 1) | ||||
|                         Else | ||||
|                             Phi_h = 0 | ||||
|                             Phi_c = 0 | ||||
|                         End If | ||||
|                         '// 여기 i_count_month 에 0 이 오지는 않나요? 예.. 1 부터 시작해요 | ||||
|                         '// If CSng(Drow분석(0).난방요구량공조) > 0 Then 'Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|  | ||||
|                         If TOSG(Drow분석(0).난방요구량공조) > 0 Then | ||||
|                             Drow분석(0).난방요구량공조 = (1 - Phi_h) * TOSG(Drow분석(0).난방요구량공조) | ||||
|                         End If | ||||
|  | ||||
|                         If TOSG(Drow분석(0).냉방요구량공조) > 0 Then | ||||
|                             Drow분석(0).냉방요구량공조 = (1 - Phi_c) * TOSG(Drow분석(0).냉방요구량공조) | ||||
|                         End If | ||||
|  | ||||
|                         'If Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|                         '    Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) = (1 - Phi_h) * Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) | ||||
|                         'End If | ||||
|  | ||||
|                         'If Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) > 0 Then | ||||
|                         '    Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) = (1 - Phi_c) * Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) | ||||
|                         'End If | ||||
|  | ||||
|                         '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2010.05.26 추가 | ||||
|  | ||||
|                         eta_ZUL = TOSG(DR공조(0).총효율급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(2, i_count_AHU - 1) | ||||
|                         eta_ABL = TOSG(DR공조(0).총효율배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(3, i_count_AHU - 1) | ||||
|                         Delta_p_star_ZUL = TOSG(DR공조(0).총압력손실급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(0, i_count_AHU - 1) | ||||
|                         Delta_p_star_ABL = TOSG(DR공조(0).총압력손실배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(1, i_count_AHU - 1) | ||||
|  | ||||
|                         If eta_ZUL <> 0 Then | ||||
|                             P_V_ZUL_m = V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600000 | ||||
|                         Else | ||||
|                             P_V_ZUL_m = 0 | ||||
|                         End If | ||||
|  | ||||
|                         If eta_ABL <> 0 Then | ||||
|                             P_V_ABL_m = V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600000 | ||||
|                         Else | ||||
|                             P_V_ABL_m = 0 | ||||
|                         End If | ||||
|                         Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m | ||||
|                         Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m | ||||
|  | ||||
|  | ||||
|                         Result.E분석(i_count_month).환기에너지요구량(Dr존.code) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                         'Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                     End If | ||||
|                 Else | ||||
|                     Result.E분석(i_count_month).환기에너지요구량(Dr존.code) = 0 | ||||
|                 End If | ||||
|                 '==========================================================================2010.02.04 추가부분 끝 | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|             End If | ||||
|  | ||||
|         Next | ||||
|  | ||||
|  | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										850
									
								
								ArinWarev1/Calculator/CAirHandling.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										850
									
								
								ArinWarev1/Calculator/CAirHandling.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,850 @@ | ||||
| Public Class CAirHandling | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 최대냉/난반후하 계산식인거 같다. | ||||
|     ''' </summary> | ||||
|     ''' <param name="i_HeatCool"></param> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Overridable Sub Calc_Max_Power(ByVal i_HeatCool As Integer) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_Max_Power 진입")) | ||||
|  | ||||
|         'Dim i_count_zone As Integer, i_count_AHU As Integer, i_count_profile As Integer | ||||
|         Dim c_p_L As Decimal, rho_L As Decimal | ||||
|         Dim theta_i_c As Decimal, theta_ABL_wi As Decimal, theta_ABL_so As Decimal, theta_AUL_wi As Decimal, theta_AUL_so As Decimal, theta_ZUL_wi As Decimal, theta_ZUL_so As Decimal | ||||
|         Dim x_ABL_wi As Decimal, x_ABL_so As Decimal, x_AUL_wi As Decimal, x_AUL_so As Decimal, x_ZUL_so As Decimal | ||||
|         Dim h_ABL_wi As Decimal, h_ABL_so As Decimal, h_AUL_wi As Decimal, h_AUL_so As Decimal, h_ZUL_wi As Decimal, h_ZUL_so As Decimal | ||||
|         Dim Delta_h_WRG As Decimal, V_dot_mech_m As Decimal, V_dot_star As Decimal, theta_c_mech_min As Decimal, ps_theta_ZUL_so As Decimal | ||||
|         Dim Q_dot_h_star As Decimal, Q_dot_c_star As Decimal, Q_dot_st_star As Decimal | ||||
|         Dim Q_dot_h_max As Decimal, Q_dot_c_max As Decimal | ||||
|         Dim theta_e_min As Decimal, theta_e_max As Decimal, V_A As Decimal, theta_i_h As Decimal, theta_i_c_soll As Decimal | ||||
|         Dim A_B As Decimal, c_p_Lrho_L As Decimal | ||||
|  | ||||
|         pLog.Add("Calc", String.Format("Calc_max_power i_HeatCool={0}", i_HeatCool)) | ||||
|  | ||||
|         theta_i_c = 24 | ||||
|         theta_i_c_soll = 26 | ||||
|         theta_i_h = 20 | ||||
|         c_p_L = 1.006 'kJ/kg K | ||||
|         rho_L = 1.204 'kg/m3 (20도 1기압상태) | ||||
|         c_p_Lrho_L = 0.34 'Wh/m3 K | ||||
|         theta_ABL_wi = 22 | ||||
|         x_ABL_wi = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_wi = 42.6 '편차가 없는 습도요구 적용 | ||||
|         theta_ABL_so = 26 | ||||
|         x_ABL_so = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_so = 46.7 '편차가 없는 습도요구 적용 | ||||
|         theta_AUL_wi = -12 | ||||
|         x_AUL_wi = 0.001 | ||||
|         h_AUL_wi = -9.6 | ||||
|         theta_AUL_so = 32 | ||||
|         x_AUL_so = 0.012 | ||||
|         h_AUL_so = 63 | ||||
|         theta_e_min = -11.3 | ||||
|         theta_e_max = 31.5 | ||||
|  | ||||
|  | ||||
|         'Dim dr공조처리 As DS.tbl_kongjoRow | ||||
|  | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") | ||||
|  | ||||
|             Dim dr최대냉난방부하 As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Dr존.code & "'")(0), DSR.최대냉난방부하Row) | ||||
|             If Dr존.냉난방공조 = "냉방" Or Dr존.냉난방공조 = "냉난방" Then | ||||
|                 A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                 Dim dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                 V_A = TOSG(dr프로필.최소도입외기량) * A_B ' Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) * A_B | ||||
|  | ||||
|                 For Each dr공조처리 As DS.tbl_kongjoRow In DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <>'0'", "code") | ||||
|                     '//아래두코드는 상단코드로 변경 | ||||
|                     'If Dr존.냉난방공조처리시스템 <> "" Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) <> "" Then | ||||
|                     'If Dr존.냉난방공조처리시스템 = dr공조처리.code Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) = Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|  | ||||
|                     ' 공조기 최대 가열성능 | ||||
|                     If i_HeatCool = 1 Then | ||||
|                         If Dr존.냉난방공조 = "냉난방" Then ' Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉난방" Then | ||||
|  | ||||
|                             Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '"열회수불가" | ||||
|                                     Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Delta_h_WRG = TOSG(dr공조처리.열회수율) * c_p_L * (theta_ABL_wi - theta_AUL_wi) '(3.2.5-55) 순수 현열 회수기 '================2010.03.22 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Delta_h_WRG = TOSG(dr공조처리.열회수율) * c_p_L * (h_ABL_wi - h_AUL_wi) '(3.2.5-56) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                             End Select | ||||
|  | ||||
|  | ||||
|  | ||||
|                             theta_ZUL_wi = TOSG(dr공조처리.설정치난방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(1, i_count_AHU - 1) 'theta_h_mech_min '(도표 3-3) | ||||
|  | ||||
|                             'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.001 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-38) 습도요구 없음 | ||||
|                             'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.006 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-42) 편차가 있는 습도요구 | ||||
|                             h_ZUL_wi = TOSG(1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도요구만 우선 적용 | ||||
|                             Q_dot_h_max = TOSG(dr최대냉난방부하.최대난방기기부하) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                             '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                             If (TOSG(dr공조처리.설정치난방) - theta_i_h) > 0 Then | ||||
|                                 V_dot_mech_m = 1000 * Q_dot_h_max / (c_p_Lrho_L * (TOSG(dr공조처리.설정치난방) - theta_i_h)) | ||||
|                             Else | ||||
|                                 V_dot_mech_m = 0 | ||||
|                             End If | ||||
|                             '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|  | ||||
|                             V_dot_star = V_dot_mech_m | ||||
|                             If dr공조처리.열교환기유형 = "전열교환" Then ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "전열교환" Then | ||||
|                                 Q_dot_h_star = V_dot_star * rho_L * (h_ZUL_wi - h_AUL_wi - Delta_h_WRG) / 3600 '(3.2.5-57) 증기가습 있음 - 열교환방식으로 수정 추후 검토 | ||||
|                             Else | ||||
|                                 Q_dot_h_star = V_dot_star * rho_L * (c_p_L * (theta_ZUL_wi - theta_AUL_wi) - Delta_h_WRG) / 3600 '(3.2.5-58) 증기가습 없음 - 열교환방식으로 수정 추후 검토 | ||||
|                             End If | ||||
|  | ||||
|                             dr최대냉난방부하.최대가열성능 = Q_dot_h_star | ||||
|                             'Worksheets("0").Range("최대난방부하1").Offset(3, i_count_zone - 1) = Q_dot_h_star | ||||
|                             If Q_dot_h_max > (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000 Then | ||||
|                                 dr최대냉난방부하.최대난방실내부하 = (Q_dot_h_max - (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000) | ||||
|                                 'Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) = Q_dot_h_max - (c_p_Lrho_L * (theta_i_h - theta_e_min) * V_A) / 1000 | ||||
|                             Else | ||||
|                                 dr최대냉난방부하.최대난방실내부하 = 0 | ||||
|                                 'Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) = 0 | ||||
|                             End If | ||||
|                         End If | ||||
|  | ||||
|                         '공조기 최대 가습성능 | ||||
|  | ||||
|                         'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.001 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-38) 습도요구 없음 | ||||
|                         'h_ZUL_wi = 1.01 * theta_ZUL_wi + 0.006 * (2501 + 1.86 * theta_ZUL_wi) '(3.2.5-42) 편차가 있는 습도요구 | ||||
|                         h_ZUL_wi = TOSG(1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도 요구 | ||||
|  | ||||
|                         Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "열회수불가" '열회수불가" | ||||
|                                 Delta_h_WRG = 0 '(3.2.5-63) 열 회수기 없음 | ||||
|                             Case "현열교환'" '현열교환" | ||||
|                                 Delta_h_WRG = 2501 * TOSG(dr공조처리.열회수율) * (x_ABL_wi - x_AUL_wi) '(3.2.5-64) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                             Case "전열교환" '전열교환" | ||||
|                                 Delta_h_WRG = 2501 * TOSG(dr공조처리.열회수율) * (x_ABL_wi - x_AUL_wi) '(3.2.5-64) 현열 및 습기 회수기 '================2010.03.22 수정 | ||||
|                         End Select | ||||
|  | ||||
|                         Q_dot_st_star = V_dot_star * rho_L * (h_ZUL_wi - h_AUL_wi - Delta_h_WRG) / 3600 '(3.2.5-65) | ||||
|                         dr최대냉난방부하.최대가습성능 = Q_dot_st_star | ||||
|                         dr최대냉난방부하.공조풍량 = V_dot_star | ||||
|                         'Worksheets("0").Range("최대가습성능1").Offset(0, i_count_zone - 1) = Q_dot_st_star | ||||
|                         'Worksheets("0").Range("최대가습성능1").Offset(1, i_count_zone - 1) = V_dot_star '공조풍량 | ||||
|  | ||||
|                     Else | ||||
|  | ||||
|                         ' 공조기 최대 냉각성능 | ||||
|  | ||||
|                         theta_c_mech_min = TOSG(dr공조처리.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|                         theta_ZUL_so = theta_c_mech_min '(도표 3.3) | ||||
|                         ps_theta_ZUL_so = TOSG(Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506))) '(3.2.5-37) 0.01C<=theta<=80C | ||||
|                         x_ZUL_so = TOSG(0.5911 / (100000 / ps_theta_ZUL_so - 0.95)) '(3.2.5-41) | ||||
|  | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + 0.012 * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-39) 습도요구 없음 ps_theta_ZUL_so>1892Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-40) 습도요구 없음 ps_theta_ZUL_so<=1892Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + 0.011 * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-43) 편차가 있는 습도요구 ps_theta_ZUL_so>1737Pa | ||||
|                         'h_ZUL_so = 1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so) '(3.2.5-44) 편차가 있는 습도요구 ps_theta_ZUL_so<=1737Pa | ||||
|  | ||||
|                         If ps_theta_ZUL_so > 1269 Then | ||||
|                             h_ZUL_so = TOSG(1.01 * theta_ZUL_so + 0.008 * (2501 + 1.86 * theta_ZUL_so)) '(3.2.5-43) 편차가 없는 습도요구 ps_theta_ZUL_so>1269Pa | ||||
|                         Else | ||||
|                             h_ZUL_so = TOSG(1.01 * theta_ZUL_so + x_ZUL_so * (2501 + 1.86 * theta_ZUL_so)) '(3.2.5-44) 편차가 없는 습도요구 ps_theta_ZUL_so<=1269Pa | ||||
|                         End If | ||||
|  | ||||
|                         Select Case dr공조처리.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "열회수불가" '열회수불가" | ||||
|                                 Delta_h_WRG = 0 '(3.2.5-59) 열 회수기 없음 | ||||
|                             Case "현열교환" '현열교환" | ||||
|                                 Delta_h_WRG = TOSG(dr공조처리.열회수율냉) * c_p_L * (theta_AUL_so - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 '================2010.03.22 수정, =============2010.04.14 수정 | ||||
|                             Case "전열교환" '전열교환" | ||||
|                                 Delta_h_WRG = TOSG(dr공조처리.열회수율냉) * c_p_L * (h_AUL_so - h_ABL_so) '(3.2.5-56) 현열 및 습기 회수기 '================2010.03.22 수정, =============2010.04.14 수정 | ||||
|                         End Select | ||||
|  | ||||
|                         Q_dot_c_max = TOSG(dr최대냉난방부하.최대냉방기기부하) ' Worksheets("0").Range("최대냉방부하1").Offset(0, i_count_zone - 1) | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         If (theta_i_c - TOSG(dr공조처리.설정치냉방)) > 0 Then | ||||
|                             V_dot_star = 1000 * Q_dot_c_max / (c_p_Lrho_L * (theta_i_c - TOSG(dr공조처리.설정치냉방))) | ||||
|                         Else | ||||
|                             V_dot_star = 0 | ||||
|                         End If | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         Q_dot_c_star = V_dot_star * rho_L * (h_AUL_so - h_ZUL_so - Delta_h_WRG) / 3600 '(3.2.5-62) | ||||
|  | ||||
|                         dr최대냉난방부하.최대냉각성능 = Q_dot_c_star | ||||
|                         dr최대냉난방부하.최대냉방실내부하 = Q_dot_c_max - (c_p_Lrho_L * (theta_e_max - theta_i_c_soll) * V_A) / 1000 | ||||
|  | ||||
|                         'Worksheets("0").Range("최대냉방부하1").Offset(3, i_count_zone - 1) = Q_dot_c_star | ||||
|                         'Worksheets("0").Range("최대냉방부하1").Offset(1, i_count_zone - 1) = Q_dot_c_max - (c_p_Lrho_L * (theta_e_max - theta_i_c_soll) * V_A) / 1000 | ||||
|                     End If | ||||
|  | ||||
|                     'End If | ||||
|                     'End If | ||||
|  | ||||
|                 Next | ||||
|             Else | ||||
|  | ||||
|                 dr최대냉난방부하.최대난방실내부하 = 0 | ||||
|                 dr최대냉난방부하.최대냉방실내부하 = 0 | ||||
|                 dr최대냉난방부하.최대가열성능 = 0 | ||||
|                 dr최대냉난방부하.최대냉각성능 = 0 | ||||
|                 dr최대냉난방부하.최대가습성능 = 0 | ||||
|                 dr최대냉난방부하.공조풍량 = 0 | ||||
|             End If | ||||
|  | ||||
|         Next | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_Max_Power 완료")) | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_AirHandling(ByVal i_count_month As Integer, ByVal theta_e As Decimal, Optional p_난방온도 As Decimal = 20, Optional p_냉방온도 As Decimal = 26) ' ByVal d_mth As Integer, | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_AirHandling 진입 : i_count_month={0},theta_e={1},p_난방온도={2},p_냉방온도={3}", i_count_month, theta_e, p_난방온도, p_냉방온도)) | ||||
|  | ||||
|         Dim A_B As Decimal | ||||
|         Dim x_ABL_wi As Decimal, h_ABL_wi As Decimal, x_ABL_so As Decimal, h_ABL_so As Decimal, x_AUL_wi As Decimal, h_AUL_wi As Decimal, x_AUL_so As Decimal, h_AUL_so As Decimal | ||||
|         Dim c_p_L As Decimal, rho_L As Decimal, f_p As Decimal | ||||
|         Dim q_st_18_12h_m As Decimal | ||||
|         Dim eta_ZUL As Decimal, eta_ABL As Decimal | ||||
|         Dim Delta_p_star_ZUL As Decimal, Delta_p_star_ABL As Decimal | ||||
|         Dim Q_V_E_ZUL_m As Decimal, Q_V_E_ABL_m As Decimal, Q_c_b As Decimal, Q_h_b As Decimal, Q_vh_b As Decimal, Q_vc_b As Decimal, Q_vm_b As Decimal | ||||
|         Dim t_V_mech_m As Decimal, theta_V_mech_m As Decimal | ||||
|         Dim V_dot_mech_m As Decimal, V_dot_mech_max As Decimal, V_dot_A As Decimal, P_V_ZUL_m As Decimal, P_V_ABL_m As Decimal | ||||
|         Dim Sigma_V_dot As Decimal, Sigma_V_dot_3 As Decimal | ||||
|         Dim theta_h_mech_m As Decimal, theta_c_mech_m As Decimal | ||||
|  | ||||
|         ' Dim i_count_zone As Integer, i_count_profile As Integer, i_count_AHU As Integer | ||||
|         Dim theta_i_c_soll As Integer, theta_i_c As Integer, theta_i_h_soll As Integer, d_V_mech_m As Integer, theta_ABL_wi As Integer, theta_ABL_so As Integer | ||||
|         Dim theta_e_min As Decimal, theta_e_max As Decimal | ||||
|         Dim x_ZUL_wi As Decimal, theta_ZUL_wi As Decimal, theta_AUL As Decimal, h_AUL As Decimal, x_AUL As Decimal, theta_AUL_j As Decimal, x_AUL_j As Decimal, psi_AUL_j As Decimal | ||||
|         Dim h_B As Decimal, r_0 As Decimal, m_dot_1_L As Decimal, u As Decimal, Phi_h As Decimal, Phi_c As Decimal '===============================2010.04.14 수정 | ||||
|         Dim Q_VE_B As Decimal, Q_VE_ZU As Decimal | ||||
|         Dim c_p_Lrho_L As Decimal, theta_ZUL_so As Decimal, p_S_theta_ZUL_so As Decimal, p_95_theta_ZUL_so As Decimal, x_95_ZUL_so As Decimal | ||||
|         Dim h_95_ZUL_so As Decimal, i_count_air As Integer, i_count_start_time As Integer, i_count_end_time As Integer ', i_profile As Integer | ||||
|         Dim P_D_j_theta_AUL_j As Decimal | ||||
|  | ||||
|         ' 공조처리 | ||||
|         theta_i_h_soll = p_난방온도 | ||||
|         theta_i_c_soll = p_냉방온도 | ||||
|  | ||||
|         theta_i_c = 24 'theta_i_c_soll - 2 '(2-36) | ||||
|  | ||||
|         c_p_L = 1.006 'kJ/kg K | ||||
|         rho_L = 1.204 'kg/m3 (20도 1기압상태) | ||||
|         c_p_Lrho_L = 0.34 'Wh/m3 K | ||||
|         f_p = 0.4 '= Delta_p_konst / Delta_p_star = 0.4 '(3.2.5-13, 7-1) | ||||
|         '================================================2010.2.21 수정 | ||||
|         'd_V_mech_m = d_mth | ||||
|         '================================================2010.2.21 수정 | ||||
|         theta_ABL_wi = 20 | ||||
|         x_ABL_wi = 0.008 '편차가 없는 습도요구 적용 | ||||
|         h_ABL_wi = 42.6 '편차가 없는 습도요구 적용 | ||||
|         theta_ABL_so = 26 | ||||
|         x_ABL_so = 0.008 'kg/kg 편차가 없는 습도요구 적용 | ||||
|         h_ABL_so = 46.7 'kJ/kg 편차가 없는 습도요구 적용 | ||||
|         x_AUL_wi = 0.001 | ||||
|         h_AUL_wi = -9.6 | ||||
|         x_AUL_so = 0.012 | ||||
|         h_AUL_so = 63 | ||||
|         q_st_18_12h_m = 0 '우선 0으로 적용 추후 검토 | ||||
|         theta_e_min = -11.3 | ||||
|         theta_e_max = 31.5 | ||||
|         r_0 = 2500 'kJ/kg | ||||
|         x_ZUL_wi = 0.00699 | ||||
|  | ||||
|  | ||||
|         'Dim Dr프로필 As DS.tbl_profileRow   '//아래에서 할당되도록되어있다. | ||||
|         '//location 은 거의 서울(0번줄)이된다. | ||||
|         Dim Drow평균온도 As DS.weather_tempRow = CType(DSET.weather_temp.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_tempRow) | ||||
|         Dim Drow평균습도 As DS.weather_supdoRow = CType(DSET.weather_supdo.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_supdoRow) | ||||
|         Dim Mon As String = "M" & Format(i_count_month, "00") | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") | ||||
|             Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row()) | ||||
|             'If Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉방" Or Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) = "냉난방" Then | ||||
|             If Dr존.냉난방공조 = "냉방" OrElse Dr존.냉난방공조 = "냉난방" Then | ||||
|  | ||||
|                 '//존의 프로필과 일치하는 프로필검색후 적용 | ||||
|                 Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "'")(0), DS.tbl_profileRow) | ||||
|                 t_V_mech_m = TOSG(Dr프로필.운전시간난방) ' Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                 V_dot_A = TOSG(Dr프로필.최소도입외기량) ' Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) | ||||
|                 'i_profile = i_count_profile '//아래 루프종료문은 없어서 추가했다. | ||||
|                 '===================================================================================2010.2.21 추가 | ||||
|                 If i_count_month = 0 Then | ||||
|                     d_V_mech_m = 0 | ||||
|                 Else | ||||
|                     d_V_mech_m = CInt(Dr프로필("day" & Format(i_count_month, "00"))) | ||||
|                 End If | ||||
|                 '===================================================================================2010.2.21 추가 | ||||
|  | ||||
|                 For Each Dr공조 As DS.tbl_kongjoRow In DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <> '0'", "code") | ||||
|                     'If Dr존.냉난방공조처리시스템 <> "" Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) <> "" Then | ||||
|                     'If Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) = Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|                     'If Dr존.냉난방공조처리시스템 = Dr공조.code Then ' Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then | ||||
|                     Q_vh_b = 0 | ||||
|                     Q_vc_b = 0 | ||||
|                     Q_vm_b = 0 | ||||
|                     eta_ZUL = TOSG(Dr공조.총효율급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(2, i_count_AHU - 1) | ||||
|                     eta_ABL = TOSG(Dr공조.총효율배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(3, i_count_AHU - 1) | ||||
|                     Delta_p_star_ZUL = TOSG(Dr공조.총압력손실급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(0, i_count_AHU - 1) | ||||
|                     Delta_p_star_ABL = TOSG(Dr공조.총압력손실배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(1, i_count_AHU - 1) | ||||
|                     theta_V_mech_m = TOSG(Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|                     theta_h_mech_m = TOSG(Dr공조.설정치난방) 'Worksheets("공조처리시스템").Range("공조방식1").Offset(1, i_count_AHU - 1) | ||||
|                     theta_c_mech_m = TOSG(Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1) | ||||
|  | ||||
|                     A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                     theta_AUL = 0 | ||||
|                     x_AUL = 0 | ||||
|                     i_count_start_time = CInt(Dr프로필.운전시작시간.Substring(0, Dr프로필.운전시작시간.IndexOf(":")))  ' Worksheets("설정조건").Range("사용시작시간1").Offset(3, i_profile) | ||||
|                     i_count_end_time = CInt(Dr프로필.운전종료시간.Substring(0, Dr프로필.운전종료시간.IndexOf(":"))) ' Worksheets("설정조건").Range("사용시작시간1").Offset(4, i_profile) | ||||
|                     If i_count_start_time - i_count_end_time < 0 Then | ||||
|                         For i_count_air = 0 To CInt(t_V_mech_m - 1) '자정 전까지 운전 조건 | ||||
|                             '//Dr기상데이터의 2번째 인덱스부터 시간이다. | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) ' Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) / 100 '  Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|                     Else | ||||
|                         For i_count_air = 0 To 23 - i_count_start_time  '자정 넘어까지 운전 조건 | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) 'Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_start_time + i_count_air + 1, "00"))) / 100 'Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_start_time + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|                         For i_count_air = 0 To i_count_end_time - 1 '자정 넘어까지 운전 조건 | ||||
|                             theta_AUL_j = TOSG(Drow평균온도("t" & Format(i_count_air + 1, "00"))) 'Worksheets("기상데이타").Range("시간별평균온도1").Offset((i_count_month - 1) * 25 + i_count_air, location - 1) | ||||
|                             psi_AUL_j = TOSG(Drow평균습도("t" & Format(i_count_air + 1, "00"))) / 100 'Worksheets("기상데이타").Range("시간별평균습도1").Offset((i_count_month - 1) * 25 + i_count_air, location - 1) / 100 | ||||
|                             P_D_j_theta_AUL_j = TOSG(psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506))) | ||||
|                             x_AUL_j = TOSG(0.5911 / (100000 / P_D_j_theta_AUL_j - 0.95)) | ||||
|                             theta_AUL = theta_AUL + theta_AUL_j | ||||
|                             x_AUL = x_AUL + x_AUL_j | ||||
|                         Next | ||||
|  | ||||
|                     End If | ||||
|  | ||||
|                     theta_AUL = theta_AUL / t_V_mech_m | ||||
|                     x_AUL = x_AUL / t_V_mech_m | ||||
|                     h_AUL = c_p_L * theta_AUL + x_AUL * (r_0 + c_p_L * theta_AUL) | ||||
|  | ||||
|                     ''V_dot_mech_h_max = Worksheets("0").Range("최대난방부하1").Offset(1, i_count_zone - 1) * 1000 / (c_p_Lrho_L * (theta_h_mech_m - theta_i_h_soll)) '(3.2.4-86) | ||||
|  | ||||
|                     '//현재존과일치하는 데이터수집 | ||||
|                     If (theta_i_c_soll - theta_c_mech_m) <> 0 Then | ||||
|                         V_dot_mech_max = TOSG(Result.최대부하.Item(Dr존.code).최대냉방실내부하) * 1000 / (c_p_Lrho_L * (theta_i_c_soll - theta_c_mech_m)) '(3.2.4-86) | ||||
|                     Else | ||||
|                         V_dot_mech_max = 0 | ||||
|                     End If | ||||
|  | ||||
|                     ' Worksheets("0").Range("최대냉방부하1").Offset(1, i_count_zone - 1) | ||||
|  | ||||
|                     ''If V_dot_mech_h_max < V_dot_mech_c_max Then | ||||
|                     ''    V_dot_mech_max = V_dot_mech_c_max | ||||
|                     ''Else | ||||
|                     ''    V_dot_mech_max = V_dot_mech_h_max | ||||
|                     ''End If | ||||
|  | ||||
|                     If V_dot_mech_max < V_dot_A * A_B Then V_dot_mech_max = V_dot_A * A_B | ||||
|  | ||||
|                     Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                         Case "정풍량" '정풍량" | ||||
|                             V_dot_mech_m = V_dot_mech_max | ||||
|  | ||||
|                         Case "변풍량" '변풍량" | ||||
|                             '//계산결과가들엉잇는 12개월용시트(1~12)에ㅓ 해당값을 찾는 엑셀루틴이다. 이건좀 교환하기가 그러네;;ㅠ | ||||
|                             '//해당12개시트의 데이터는 DSR월별에너지분석에 존재한다 이곳에는 월/존두개의 기본키가존재하며 해당rOW를 가져와야한다. | ||||
|  | ||||
|                             If Drow분석.GetUpperBound(0) = -1 Then | ||||
|                                 MsgBox("월별에너지분석에 " & i_count_month & "데이터가 없습니다", MsgBoxStyle.Critical, "계산실패") | ||||
|                                 Return | ||||
|                             End If | ||||
|  | ||||
|                             'Q_c_b = Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) - (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 | ||||
|                             Q_c_b = TOSG(Drow분석(0).냉방요구량공조) - (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 | ||||
|  | ||||
|                             If Q_c_b < 0 Then Q_c_b = 0 | ||||
|  | ||||
|                             If (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_i_c - theta_c_mech_m)) = 0 Then | ||||
|                                 V_dot_mech_m = 0 | ||||
|                             Else | ||||
|                                 V_dot_mech_m = (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) / 1000 + Q_c_b / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_i_c - theta_c_mech_m) / 1000) | ||||
|                             End If | ||||
|  | ||||
|                             '(3.2.5-4) 공조풍량(변풍량) | ||||
|                             'If V_dot_mech_m < 0 Then | ||||
|                             'V_dot_mech_m = 0 | ||||
|                             'End If | ||||
|  | ||||
|                             If V_dot_mech_m < V_dot_A * A_B Then V_dot_mech_m = V_dot_A * A_B | ||||
|  | ||||
|                     End Select | ||||
|  | ||||
|                     'If V_dot_mech_m = 0 Then | ||||
|                     '    theta_hc_m = theta_V_mech_m | ||||
|                     'Else | ||||
|                     '    theta_hc_m = theta_V_mech_m - Q_V_E_ZUL_m * 1000 / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * V_dot_mech_m) + 1.4 '(3.2.5-22) Q_V_E_ZUL_m에 1000 을 곱해야하는지 확인요망 | ||||
|                     'End If | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     '월별 풍량당 공조에너지 요구량은 추후 적용 | ||||
|  | ||||
|  | ||||
|                     'If theta_hc_m <= 22 And theta_hc_m > 18 Then | ||||
|                     'q_h_12h_m = q_h_18_12h_m + g_h_o_m * (theta_hc_m - 18) '(3.2.5-23) 18C<theta_hc_m<=22C | ||||
|                     'q_c_12h_m = q_c_18_12h_m - g_c_o_m * (theta_hc_m - 18) '(3.2.5-25) 18C<theta_hc_m<=22C | ||||
|                     'End If | ||||
|                     'If theta_hc_m <= 18 And theta_hc_m > 14 Then | ||||
|                     'q_h_12h_m = q_h_18_12h_m + g_h_u_m * (theta_hc_m - 18) '(3.2.5-24) 14C<theta_hc_m<=18C | ||||
|                     'q_c_12h_m = q_c_18_12h_m - g_c_u_m * (theta_hc_m - 18) '(3.2.5-26) 14C<theta_hc_m<=18C | ||||
|                     'End If | ||||
|                     'q_st_12h_m = q_st_18_12h_m '(3.2.5-27) | ||||
|  | ||||
|  | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     '========================================================================================================================================== | ||||
|  | ||||
|                     If Dr공조.리턴공기혼합여부 = "예" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(4, i_count_AHU - 1) = "예" Then | ||||
|                         If V_dot_mech_m = 0 Then | ||||
|                             u = 1  '//?? | ||||
|                         Else | ||||
|                             u = (V_dot_mech_m - V_dot_A * A_B) / V_dot_mech_m '예(리턴공기혼합여부) | ||||
|                         End If | ||||
|  | ||||
|                     Else | ||||
|                         u = 0 '아니오(리턴공기혼합여부) | ||||
|                     End If | ||||
|  | ||||
|                     If Dr공조.열교환기유형 = "현열교환" OrElse Dr공조.열교환기유형 = "전열교환" Then ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "현열교환" Or Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) = "전열교환" Then | ||||
|                         Phi_h = TOSG(Dr공조.열회수율) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) '=====================2010.04.14 수정 | ||||
|                         Phi_c = TOSG(Dr공조.열회수율냉) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(2, i_count_AHU - 1) '=====================2010.04.14 수정 | ||||
|                     Else | ||||
|                         Phi_h = 0 '==============================2010.04.14 수정 | ||||
|                         Phi_c = 0 '==============================2010.04.14 수정 | ||||
|                     End If | ||||
|  | ||||
|  | ||||
|                     If TOSG(Drow분석(0).난방요구량공조) > 0 Then 'Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|  | ||||
|                         '난방공조처리(가열,가열+가습(분무 또는 증기),리턴공기혼합유무(리턴공기혼합율 입력),열회수유무(현열 또는 전열, 열회수율 입력) | ||||
|  | ||||
|                         'Q_h_b = Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) - (theta_i_h_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                         Q_h_b = TOSG(Drow분석(0).난방요구량공조) - (theta_i_h_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                         Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "정풍량" | ||||
|                                 theta_ZUL_wi = 1000 * Q_h_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) + theta_i_h_soll 'd_Nutz=d_V_mech_m 으로 적용 | ||||
|  | ||||
|                             Case "변풍량" | ||||
|                                 If V_dot_mech_m > V_dot_A * A_B Then | ||||
|                                     theta_ZUL_wi = theta_h_mech_m | ||||
|                                 Else | ||||
|                                     If V_dot_mech_m = 0 Then | ||||
|                                         theta_ZUL_wi = theta_i_h_soll | ||||
|                                     Else | ||||
|                                         theta_ZUL_wi = 1000 * Q_h_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) + theta_i_h_soll | ||||
|                                     End If | ||||
|  | ||||
|                                 End If | ||||
|                         End Select | ||||
|  | ||||
|                         m_dot_1_L = V_dot_mech_m * rho_L | ||||
|  | ||||
|                         '외기모드 경우와 에너지 | ||||
|                         'theta_ZUL_wi<theta_ABL_wi+(1-u)*(1-Phi)*(theta_AUL-theta_ABL_wi) | ||||
|                         'Q_VE_B = 0 | ||||
|                         'Q_VE_D = 0 | ||||
|  | ||||
|                         If Dr공조.가습기유형 <> "가습불가" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) <> "가습불가" Then | ||||
|  | ||||
|                             h_B = c_p_L * theta_ZUL_wi + x_ZUL_wi * (r_0 + c_p_L * theta_ZUL_wi) | ||||
|                             Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '열회수불가" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * h_AUL) / 3600) | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * (h_AUL + c_p_L * Phi_h * (theta_ABL_wi - theta_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Q_VE_B = d_V_mech_m * (m_dot_1_L * t_V_mech_m * (h_B - u * h_ABL_wi - (1 - u) * (h_AUL + Phi_h * (h_ABL_wi - h_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|  | ||||
|                             End Select | ||||
|                             Q_vh_b = Q_VE_B | ||||
|                         End If | ||||
|  | ||||
|                         If Dr공조.가습기유형 <> "분무가습" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) <> "분무가습" Then | ||||
|  | ||||
|                             Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                 Case "열회수불가" '열회수불가" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * theta_AUL) / 3600) | ||||
|                                 Case "현열교환" '현열교환" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * (theta_AUL + Phi_h * (theta_ABL_wi - theta_AUL))) / 3600) '==============2010.04.14 수정 | ||||
|                                 Case "전열교환" '전열교환" | ||||
|                                     Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_wi - u * theta_ABL_wi - (1 - u) * (theta_AUL + Phi_h * (h_ABL_wi - h_AUL) / c_p_L)) / 3600) '==============2010.04.14 수정 | ||||
|                             End Select | ||||
|                             If Dr공조.가습기유형 = "가습불가" Then 'Worksheets("공조처리시스템").Range("공조방식1").Offset(5, i_count_AHU - 1) = "가습불가" Then | ||||
|                                 Q_vh_b = Q_VE_ZU | ||||
|                             Else | ||||
|                                 Q_vh_b = Q_VE_ZU | ||||
|                                 Q_vm_b = Q_VE_B - Q_VE_ZU | ||||
|                             End If | ||||
|  | ||||
|                         End If | ||||
|                     Else | ||||
|                         Q_vh_b = 0 | ||||
|                         Q_vm_b = 0 | ||||
|  | ||||
|                     End If | ||||
|                     '------------------------------------------------------------------------------------------------------------------------------------------ | ||||
|                     If TOSG(Drow분석(0).냉방요구량공조) > 0 Then ' Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) > 0 Then | ||||
|                         '냉방공조처리에너지(냉각,리턴공기혼합유무(리턴공기혼합율 계산, 열회수유무(현열 또는 전열, 열회수율 입력) | ||||
|  | ||||
|                         Q_c_b = TOSG(Drow분석(0).냉방요구량공조) 'Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) | ||||
|                         Select Case Dr공조.공조방식.Trim 'Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                             Case "정풍량" '정풍량" | ||||
|                                 If Dr공조.외기냉방제어유무 = "유" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "유" Then | ||||
|                                     If theta_AUL - theta_i_c_soll > 0 Then | ||||
|                                         Q_c_b = Q_c_b - (theta_AUL - theta_i_c_soll) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                                     Else | ||||
|                                         Q_c_b = Q_c_b - (theta_i_c_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B / 3600 | ||||
|                                     End If | ||||
|                                 End If | ||||
|                                 If Q_c_b < 0 Then Q_c_b = 0 | ||||
|                                 theta_ZUL_so = theta_i_c - 1000 * Q_c_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) 'd_Nutz=d_V_mech_m 으로 적용 | ||||
|  | ||||
|                             Case "변풍량" '변풍량" | ||||
|                                 If V_dot_mech_m > V_dot_A * A_B OrElse V_dot_mech_m = 0 Then | ||||
|                                     theta_ZUL_so = theta_c_mech_m | ||||
|                                 Else | ||||
|                                     theta_ZUL_so = theta_i_c - 1000 * Q_c_b / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) | ||||
|                                 End If | ||||
|  | ||||
|                         End Select | ||||
|  | ||||
|                         p_S_theta_ZUL_so = TOSG(Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506))) | ||||
|                         p_95_theta_ZUL_so = TOSG(0.95 * p_S_theta_ZUL_so) | ||||
|                         x_95_ZUL_so = TOSG(0.5911 / (100000 / p_95_theta_ZUL_so - 0.95)) | ||||
|                         m_dot_1_L = V_dot_mech_m * rho_L | ||||
|                         h_95_ZUL_so = c_p_L * theta_ZUL_so + x_95_ZUL_so * (r_0 + c_p_L * theta_ZUL_so) | ||||
|  | ||||
|  | ||||
|                         'If theta_ZUL_so > theta_AUL Then | ||||
|  | ||||
|                         '냉방의 경우 가열에너지 | ||||
|                         'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                         'Case "열회수불가" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (theta_AUL - theta_ABL_so) Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * theta_AUL) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'Case "현열교환" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (1 - Phi) * (theta_AUL - theta_ABL_so) Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi * (theta_ABL_so - theta_AUL))) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'Case "전열교환" | ||||
|                         'If theta_ZUL_so > theta_ABL_so + (1 - u) * (1 - Phi) * (h_AUL - h_ABL_so) / c_p_L Then | ||||
|                         'Q_VE_ZU = d_V_mech_m * (m_dot_1_L * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi * (h_ABL_so - h_AUL) / c_p_L)) / 3600) | ||||
|                         'Q_vh_b = Q_vh_b + Q_VE_ZU | ||||
|                         'Else | ||||
|                         'If Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "무" Then | ||||
|                         'i_count_air = 1 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         'End Select | ||||
|                         'End If | ||||
|  | ||||
|                         If theta_ZUL_so > theta_AUL And Dr공조.외기냉방제어유무 = "유" Then ' Worksheets("공조처리시스템").Range("공조방식1").Offset(6, i_count_AHU - 1) = "유" Then | ||||
|                             Q_vc_b = 0 | ||||
|                             V_dot_mech_m = (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_c_mech_m - theta_AUL) * V_dot_A * A_B) / 1000 + Q_c_b / (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_i_c - theta_AUL) / 1000) | ||||
|                             If V_dot_mech_m < V_dot_A * A_B Then V_dot_mech_m = V_dot_A * A_B | ||||
|                         Else | ||||
|                             If 0.5911 / (100000 / p_95_theta_ZUL_so - 0.95) > (1 - u) * x_AUL + u * x_ABL_so Then | ||||
|                                 Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                     Case "열회수불가" '열회수불가" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * theta_AUL) / 3600 | ||||
|                                     Case "현열교환" '현열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi_c * (theta_ABL_so - theta_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                     Case "전열교환" '전열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * c_p_L * (theta_ZUL_so - u * theta_ABL_so - (1 - u) * (theta_AUL + Phi_c * (h_ABL_so - h_AUL) / c_p_L)) / 3600 '==================2010.04.14 수정 | ||||
|                                 End Select | ||||
|                             Else | ||||
|                                 Select Case Dr공조.열교환기유형.Trim ' Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                                     Case "열회수불가" '열회수불가" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * h_AUL) / 3600 | ||||
|                                     Case "현열교환" '현열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * (h_AUL + c_p_L * Phi_c * (theta_ABL_so - theta_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                     Case "전열교환" '전열교환" | ||||
|                                         Q_vc_b = -m_dot_1_L * d_V_mech_m * t_V_mech_m * (h_95_ZUL_so - u * h_ABL_so - (1 - u) * (h_AUL + Phi_c * (h_ABL_so - h_AUL))) / 3600 '==================2010.04.14 수정 | ||||
|                                 End Select | ||||
|                             End If | ||||
|  | ||||
|                         End If | ||||
|                     Else | ||||
|                         Q_vc_b = 0 | ||||
|  | ||||
|                     End If | ||||
|                     '========================================================================================================================================== | ||||
|                     '========================================================================================================================================== | ||||
|  | ||||
|                     Select Case Dr공조.공조방식.Trim ' Worksheets("공조처리시스템").Range("공조방식1").Offset(0, i_count_AHU - 1) | ||||
|                         Case "정풍량" '정풍량" | ||||
|                             If eta_ZUL <> 0 Then | ||||
|                                 P_V_ZUL_m = V_dot_mech_m * Delta_p_star_ZUL / eta_ZUL / 3600000  ' V_dot_ZUL = V_dot_mech_m (3.2.5-7) 정풍량 (3600은 Pa을 W환산하면서 h를 s로 환산) | ||||
|                             Else | ||||
|                                 P_V_ZUL_m = 0 | ||||
|                             End If | ||||
|  | ||||
|                             If eta_ABL <> 0 Then | ||||
|                                 P_V_ABL_m = V_dot_mech_m * Delta_p_star_ABL / eta_ABL / 3600000 | ||||
|                             Else | ||||
|                                 P_V_ABL_m = 0 | ||||
|                             End If | ||||
|                             Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m '(3.2.5-10) 정풍량 | ||||
|                             Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m '(3.2.5-10) 정풍량 | ||||
|  | ||||
|                         Case "변풍량" '변풍량" | ||||
|  | ||||
|                             Sigma_V_dot = t_V_mech_m * d_V_mech_m * V_dot_mech_m + 1000 * Q_c_b / (c_p_Lrho_L * (theta_i_c - theta_V_mech_m)) '(3.2.5-5) 월간 공조풍량 합(변풍량) | ||||
|                             ' 수식 변경 Sigma_V_dot_3 = t_V_mech_m * d_V_mech_m * (V_dot_mech_m ^ 3) + Q_c_b / (c_p_L * rho_L * (theta_i_c - theta_V_mech_m)) | ||||
|                             Sigma_V_dot_3 = TOSG(Sigma_V_dot * (0.8 * V_dot_mech_m + 0.2 * V_dot_mech_max) ^ 2) | ||||
|  | ||||
|                             If V_dot_mech_m = 0 Then | ||||
|                                 P_V_ZUL_m = 0 'CSng(V_dot_mech_m * Delta_p_star_ZUL * f_p / eta_ZUL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ZUL * (1 - f_p)) / (eta_ZUL * V_dot_mech_m ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검토 | ||||
|                                 P_V_ABL_m = 0 'CSng(V_dot_mech_m * Delta_p_star_ABL * f_p / eta_ABL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ABL * (1 - f_p)) / (eta_ABL * V_dot_mech_m ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검 | ||||
|                                 Q_V_E_ZUL_m = 0 'P_V_ZUL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                                 Q_V_E_ABL_m = 0 'P_V_ABL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                             Else | ||||
|  | ||||
|                                 '==========================변풍량에서도 효율이 없을 경우 동력이 0인 것으로 평가 2010.10.10 | ||||
|                                 If eta_ZUL <> 0 Then | ||||
|                                     P_V_ZUL_m = TOSG(V_dot_mech_m * Delta_p_star_ZUL * f_p / eta_ZUL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ZUL * (1 - f_p)) / (eta_ZUL * V_dot_mech_max ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검토 | ||||
|                                     '=============================================================================================== 최소외기도입량 동력보다 작으면 최소외기도입 동력으로 적용 2012.01.31 | ||||
|                                     If P_V_ZUL_m < V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600 Then | ||||
|                                         P_V_ZUL_m = V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600 | ||||
|                                     End If | ||||
|                                     '=============================================================================================== | ||||
|                                 Else | ||||
|                                     P_V_ZUL_m = 0 | ||||
|                                 End If | ||||
|                                 If eta_ABL <> 0 Then | ||||
|                                     P_V_ABL_m = TOSG(V_dot_mech_m * Delta_p_star_ABL * f_p / eta_ABL / 3600 + (V_dot_mech_m ^ 3 * Delta_p_star_ABL * (1 - f_p)) / (eta_ABL * V_dot_mech_max ^ 2) / 3600) '(3.2.5-11)  변풍량 시간, 용도로 추후검 | ||||
|                                     '=============================================================================================== 최소외기도입량 동력보다 작으면 최소외기도입 동력으로 적용 2012.01.31 | ||||
|                                     If P_V_ABL_m < V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600 Then | ||||
|                                         P_V_ABL_m = V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600 | ||||
|                                     End If | ||||
|                                     '=============================================================================================== | ||||
|                                 Else | ||||
|                                     P_V_ABL_m = 0 | ||||
|                                 End If | ||||
|                                 '============================================================2010.10.10 | ||||
|                                 Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                                 Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m / 1000 'kWh (3.2.5-10) 변풍량 냉방부하 | ||||
|                             End If | ||||
|  | ||||
|                     End Select | ||||
|  | ||||
|                     '------------------------------------------------------------------------------------------------------------------------------------------ | ||||
|                     ' 우선 외기온도에 대한 공조에너지 요구량 산정 필요 ???? | ||||
|  | ||||
|                     'q_st_12h_m = q_st_18_12h_m '(3.2.5-27) | ||||
|  | ||||
|                     'If theta_e < theta_hc_m Then | ||||
|                     'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                     'Case "열회수불가" | ||||
|                     'Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                     'Case "현열교환" | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_wi - theta_e) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'Case "전열교환" | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_wi - theta_e) '(3.2.5-56) 현열 및 습기 회수기 우선 현열만 고려 | ||||
|                     'End Select | ||||
|                     'q_h_12h_m = rho_L * (c_p_L * (theta_hc_m - theta_e) - Delta_h_WRG) * 12 * d_mth * V_dot_A * A_B + rho_L * c_p_L * (theta_h_mech_m - theta_i_h_soll) * 12 * d_mth * (V_dot_mech_m - V_dot_A * A_B) 'theta_h_mech_m 과 theta_hc_m 중 선택 검토 | ||||
|  | ||||
|                     'End If | ||||
|  | ||||
|                     'If theta_e > theta_hc_m Then | ||||
|                     'Select Case Worksheets("공조처리시스템").Range("열교환기1").Offset(0, i_count_AHU - 1) | ||||
|                     'Case "열회수불가" | ||||
|                     'Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음 | ||||
|                     'Case "현열교환" | ||||
|                     'If theta_e > theta_ABL_so Then | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_e - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'Else | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_so - theta_e) '(3.2.5-55) 순수 현열 회수기 | ||||
|                     'End If | ||||
|                     'Case "전열교환" | ||||
|                     'If theta_e > theta_ABL_so Then | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_e - theta_ABL_so) '(3.2.5-55) 순수 현열 회수기 우선 현열만 고려 | ||||
|                     'Else | ||||
|                     'Delta_h_WRG = Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) / 100 * c_p_L * (theta_ABL_so - theta_e) '(3.2.5-55) 순수 현열 회수기 우선 현열만 고려 | ||||
|                     'End If | ||||
|  | ||||
|                     'End Select | ||||
|  | ||||
|                     'q_c_12h_m = rho_L * (c_p_L * (theta_e - theta_hc_m) - Delta_h_WRG) * 12 * d_mth * V_dot_A * A_B + rho_L * c_p_L * (theta_i_c_soll - theta_c_mech_m) * 12 * d_mth * (V_dot_mech_m - V_dot_A * A_B) 'theta_c_mech_m 과 theta_hc_m 중 선택 검토 | ||||
|  | ||||
|                     'End If | ||||
|  | ||||
|  | ||||
|                     'f_h_H = 1 + 6.333 * 10 ^ (-3) * (t_V_mech_m - 12) - 2.689 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 + 6.94 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-31) | ||||
|                     'f_h_C = 1 - 5.583 * 10 ^ (-3) * (t_V_mech_m - 12) + 2.153 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 - 6.597 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-32) 편차가 없는 습도요구 | ||||
|                     'f_h_C = 1 - 1.552 * 10 ^ (-3) * (t_V_mech - 12) - 8.073 * 10 ^ (-4) * (t_V_mech_m - 12) ^ 2 - 1.302 * 10 ^ (-6) * (t_V_mech_m - 12) ^ 3 '(3.2.5-32) 편차가 있는 습도요구 추후 검토 | ||||
|                     'f_h_st = 1 | ||||
|  | ||||
|                     'q_h_m = q_h_12h_m * t_V_mech_m / 12 * f_h_H * d_V_mech_m / d_mth '(3-28) | ||||
|                     'q_c_m = q_c_12h_m * t_V_mech_m / 12 * f_h_C * d_V_mech_m / d_mth '(3-29) | ||||
|                     'q_st_m = q_st_12h_m * t_V_mech_m / 12 * f_h_st * d_V_mech_m / d_mth '(3-30) | ||||
|  | ||||
|                     'Q_vh_b = q_h_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|                     'Q_vc_b = q_c_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|                     'Q_vm_b = q_st_m * V_dot_mech_m '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|  | ||||
|                     'Q_vh_b = q_h_m / 1000 ' 우선 공조풍량을 미리 포함시킴 추후 검토 | ||||
|                     'Q_vc_b = q_c_m / 1000 ' 우선 공조풍량을 미리 포함시킴 추후 검토 | ||||
|                     'Q_vm_b = q_st_m * V_dot_mech_m / 1000 '(3-36) =Q_vi_b (7-2,7-8,7-14) | ||||
|  | ||||
|                     '========================================================================================================================================== | ||||
|                     Drow분석(0).공조풍량 = V_dot_mech_m | ||||
|                     'Sheets("" & i_count_month & "").Cells(17, 7 + i_count_zone) = V_dot_mech_m | ||||
|                     If Q_vh_b < 0 Then | ||||
|                         Q_vh_b = 0 '음수 여부 추후 검토 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량난방 = Q_vh_b | ||||
|                     'Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) = Q_vh_b | ||||
|  | ||||
|                     If Q_vc_b < 0 Then | ||||
|                         Q_vc_b = 0 '냉방공조에너지요구량이 -인 것은 난방에서 처리되는 것으로 설정 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량냉방 = Q_vc_b | ||||
|                     'Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) = Q_vc_b | ||||
|  | ||||
|                     If Q_vm_b < 0 Then | ||||
|                         Q_vm_b = 0 '음수 여부 추후 검토 | ||||
|                     End If | ||||
|                     Drow분석(0).공조요구량가습 = Q_vm_b '  Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) = Q_vm_b | ||||
|                     Drow분석(0).환기요구량 = Q_V_E_ZUL_m + Q_V_E_ABL_m ' Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                     '========================================================================================================================================== | ||||
|                     'End If | ||||
|                     'End If | ||||
|                 Next | ||||
|  | ||||
|             Else | ||||
|                 Drow분석(0).공조풍량 = 0 '  Sheets("" & i_count_month & "").Cells(17, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량난방 = 0 '     Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량냉방 = 0 'Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).공조요구량가습 = 0 ' Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) = 0 | ||||
|                 Drow분석(0).환기요구량 = 0 'Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = 0 | ||||
|  | ||||
|  | ||||
|                 '==========================================================================2010.02.04 추가부분 시작 | ||||
|                 If Dr존.냉난방공조 = "환기" OrElse (Dr존.냉난방공조 = "난방" AndAlso Dr존.외기부하처리여부 = "예") Then   '//환기 | ||||
|                     Dim DR프로필() As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필.ToString & "' and code <> '0'"), DS.tbl_profileRow()) | ||||
|                     If DR프로필.GetUpperBound(0) = 0 Then | ||||
|                         t_V_mech_m = TOSG(DR프로필(0).운전시간난방) ' Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                         V_dot_A = TOSG(DR프로필(0).최소도입외기량) 'Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) | ||||
|                         A_B = TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                         '===================================================================================2010.2.25 추가 | ||||
|                         'd_V_mech_m = Worksheets("설정조건").Range("월간사용일수1").Offset(i_count_month, i_count_profile) | ||||
|                         Select Case i_count_month | ||||
|                             Case 0 : d_V_mech_m = 0 | ||||
|                             Case 1 : d_V_mech_m = DR프로필(0).day01 | ||||
|                             Case 2 : d_V_mech_m = DR프로필(0).day02 | ||||
|                             Case 3 : d_V_mech_m = DR프로필(0).day03 | ||||
|                             Case 4 : d_V_mech_m = DR프로필(0).day04 | ||||
|                             Case 5 : d_V_mech_m = DR프로필(0).day05 | ||||
|                             Case 6 : d_V_mech_m = DR프로필(0).day06 | ||||
|                             Case 7 : d_V_mech_m = DR프로필(0).day07 | ||||
|                             Case 8 : d_V_mech_m = DR프로필(0).day08 | ||||
|                             Case 9 : d_V_mech_m = DR프로필(0).day09 | ||||
|                             Case 10 : d_V_mech_m = DR프로필(0).day10 | ||||
|                             Case 11 : d_V_mech_m = DR프로필(0).day11 | ||||
|                             Case 12 : d_V_mech_m = DR프로필(0).day12 | ||||
|                         End Select | ||||
|                         '===================================================================================2010.2.25 추가 | ||||
|  | ||||
|                     End If | ||||
|  | ||||
|                     Dim DR공조() As DS.tbl_kongjoRow = CType(DSET.tbl_kongjo.Select("code='" & Dr존.냉난방공조처리시스템 & "' and code <> '0'"), DS.tbl_kongjoRow()) | ||||
|                     If DR공조.GetUpperBound(0) = 0 Then | ||||
|  | ||||
|                         '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2010.05.26 추가 | ||||
|                         If DR공조(0).열교환기유형.Trim = "현열교환" OrElse DR공조(0).열교환기유형.Trim = "전열교환" Then | ||||
|                             Phi_h = TOSG(DR공조(0).열회수율) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) | ||||
|                             Phi_c = TOSG(DR공조(0).열회수율냉) 'Worksheets("공조처리시스템").Range("열교환기1").Offset(2, i_count_AHU - 1) | ||||
|                         Else | ||||
|                             Phi_h = 0 | ||||
|                             Phi_c = 0 | ||||
|                         End If | ||||
|                         '// 여기 i_count_month 에 0 이 오지는 않나요? 예.. 1 부터 시작해요 | ||||
|                         '// If CSng(Drow분석(0).난방요구량공조) > 0 Then 'Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|  | ||||
|                         If TOSG(Drow분석(0).난방요구량공조) > 0 Then | ||||
|                             Drow분석(0).난방요구량공조 = (1 - Phi_h) * TOSG(Drow분석(0).난방요구량공조) | ||||
|                         End If | ||||
|  | ||||
|                         If TOSG(Drow분석(0).냉방요구량공조) > 0 Then | ||||
|                             Drow분석(0).냉방요구량공조 = (1 - Phi_c) * TOSG(Drow분석(0).냉방요구량공조) | ||||
|                         End If | ||||
|  | ||||
|                         'If Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) > 0 Then | ||||
|                         '    Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) = (1 - Phi_h) * Sheets("" & i_count_month & "").Cells(8, 7 + i_count_zone) | ||||
|                         'End If | ||||
|  | ||||
|                         'If Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) > 0 Then | ||||
|                         '    Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) = (1 - Phi_c) * Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) | ||||
|                         'End If | ||||
|  | ||||
|                         '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------2010.05.26 추가 | ||||
|  | ||||
|                         eta_ZUL = TOSG(DR공조(0).총효율급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(2, i_count_AHU - 1) | ||||
|                         eta_ABL = TOSG(DR공조(0).총효율배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(3, i_count_AHU - 1) | ||||
|                         Delta_p_star_ZUL = TOSG(DR공조(0).총압력손실급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(0, i_count_AHU - 1) | ||||
|                         Delta_p_star_ABL = TOSG(DR공조(0).총압력손실배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(1, i_count_AHU - 1) | ||||
|  | ||||
|                         If eta_ZUL <> 0 Then | ||||
|                             P_V_ZUL_m = V_dot_A * A_B * Delta_p_star_ZUL / eta_ZUL / 3600000 | ||||
|                         Else | ||||
|                             P_V_ZUL_m = 0 | ||||
|                         End If | ||||
|  | ||||
|                         If eta_ABL <> 0 Then | ||||
|                             P_V_ABL_m = V_dot_A * A_B * Delta_p_star_ABL / eta_ABL / 3600000 | ||||
|                         Else | ||||
|                             P_V_ABL_m = 0 | ||||
|                         End If | ||||
|                         Q_V_E_ZUL_m = P_V_ZUL_m * t_V_mech_m * d_V_mech_m | ||||
|                         Q_V_E_ABL_m = P_V_ABL_m * t_V_mech_m * d_V_mech_m | ||||
|  | ||||
|  | ||||
|                         Result.E분석(i_count_month).환기에너지요구량(Dr존.code) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                         'Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m | ||||
|                     End If | ||||
|                 Else | ||||
|                     Result.E분석(i_count_month).환기에너지요구량(Dr존.code) = 0 | ||||
|                 End If | ||||
|                 '==========================================================================2010.02.04 추가부분 끝 | ||||
|             End If | ||||
|         Next | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_AirHandling 완료")) | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Private DSET As DS | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult) | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										1800
									
								
								ArinWarev1/Calculator/CCooling.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1800
									
								
								ArinWarev1/Calculator/CCooling.vb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										18
									
								
								ArinWarev1/Calculator/CD.cd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								ArinWarev1/Calculator/CD.cd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <ClassDiagram MajorVersion="1" MinorVersion="1"> | ||||
|   <Class Name="Eco2Ar.CShared"> | ||||
|     <Position X="0.5" Y="0.5" Width="1.5" /> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAAAEAAAAAAAAAAAAAEAAAAAAABAAABACAABCAAABA=</HashCode> | ||||
|       <FileName>Calculator\CShared.vb</FileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Class Name="Eco2Ar.CZone"> | ||||
|     <Position X="2.25" Y="0.5" Width="1.75" /> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAAAAEAAAAAAAgAAAAAAAAhAAABAAgAAAAAIAACAAA=</HashCode> | ||||
|       <FileName>Calculator\Zone\CZone.vb</FileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Font Name="굴림" Size="9" /> | ||||
| </ClassDiagram> | ||||
							
								
								
									
										54
									
								
								ArinWarev1/Calculator/CD_RESULT.cd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ArinWarev1/Calculator/CD_RESULT.cd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <ClassDiagram MajorVersion="1" MinorVersion="1"> | ||||
|   <Class Name="Eco2Ar.CResult"> | ||||
|     <Position X="0.5" Y="0.5" Width="1.5" /> | ||||
|     <Compartments> | ||||
|       <Compartment Name="Nested Types" Collapsed="false" /> | ||||
|     </Compartments> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAACAAAAAAAAEAEAAAEEAAiIAAAAAAAAgAAABAAAAA=</HashCode> | ||||
|       <FileName>Calculator\Result\CResult.vb</FileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Class Name="Eco2Ar.C사용면적"> | ||||
|     <Position X="2" Y="0.5" Width="1.5" /> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEQYAAA=</HashCode> | ||||
|       <FileName>Calculator\Result\C사용면적.vb</FileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Class Name="Eco2Ar.CZones"> | ||||
|     <Position X="5.5" Y="0.5" Width="1.75" /> | ||||
|     <Compartments> | ||||
|       <Compartment Name="Fields" Collapsed="true" /> | ||||
|       <Compartment Name="Nested Types" Collapsed="false" /> | ||||
|     </Compartments> | ||||
|     <NestedTypes> | ||||
|       <Class Name="Eco2Ar.CZones.Citem"> | ||||
|         <TypeIdentifier> | ||||
|           <NewMemberFileName>Calculator\Result\CZones.vb</NewMemberFileName> | ||||
|         </TypeIdentifier> | ||||
|       </Class> | ||||
|     </NestedTypes> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAAAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAIA=</HashCode> | ||||
|       <FileName>Calculator\Result\CZones.vb</FileName> | ||||
|       <NewMemberFileName>Calculator\Result\C최대냉난방부하.vb</NewMemberFileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Class Name="Eco2Ar.C최대냉난방부하"> | ||||
|     <Position X="3.5" Y="0.5" Width="2" /> | ||||
|     <NestedTypes> | ||||
|       <Class Name="Eco2Ar.C최대냉난방부하.Citem" Collapsed="true"> | ||||
|         <TypeIdentifier> | ||||
|           <NewMemberFileName>Calculator\Result\C최대냉난방부하.vb</NewMemberFileName> | ||||
|         </TypeIdentifier> | ||||
|       </Class> | ||||
|     </NestedTypes> | ||||
|     <TypeIdentifier> | ||||
|       <HashCode>AAAAACAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAA=</HashCode> | ||||
|       <FileName>Calculator\Result\C최대냉난방부하.vb</FileName> | ||||
|     </TypeIdentifier> | ||||
|   </Class> | ||||
|   <Font Name="굴림" Size="9" /> | ||||
| </ClassDiagram> | ||||
							
								
								
									
										3945
									
								
								ArinWarev1/Calculator/CHeating.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3945
									
								
								ArinWarev1/Calculator/CHeating.vb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										736
									
								
								ArinWarev1/Calculator/CRenewable.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										736
									
								
								ArinWarev1/Calculator/CRenewable.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,736 @@ | ||||
| Public Class CRenewable | ||||
|  | ||||
|     Private Result As CResult | ||||
|     Private DSET As DS | ||||
|     Public Sub New(ByRef pds As DS, ByRef presult As CResult) | ||||
|         DSET = pds | ||||
|         Result = presult | ||||
|         'ByVal dr존 As DS.tbl_zoneRow, | ||||
|     End Sub | ||||
|     ' Public Overridable Sub Calc_ThermalSolarSystem_EN(ByVal i_system_ts As Integer, ByVal i_count_ts As Integer, ByVal i_ts_month As Integer, ByVal i_ts_d_mth As Integer, ByVal Q_H_sol_us_m as decimal, ByVal Q_W_sol_us_m as decimal, ByRef Q_W_sol_out_m as decimal, ByRef Q_H_sol_out_m as decimal, ByRef W_sol_aux_m as decimal) | ||||
|  | ||||
|     Public Overridable Sub Calc_ThermalSolarSystem_EN(ByVal i_system_ts As Integer, ByVal DR_code As String, ByVal i_ts_month As Integer, ByVal i_ts_d_mth As Integer, ByVal Q_H_sol_us_m As Decimal, ByVal Q_W_sol_us_m As Decimal, _ | ||||
|                                                       ByRef Q_W_sol_out_m As Decimal, ByRef Q_H_sol_out_m As Decimal, ByRef W_sol_aux_m As Decimal) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_ThermalSolarSystem_EN 진입 : i_system_ts={0}, DR_code={1}, i_ts_month={2}, i_ts_d_mth={3}, Q_H_sol_us_m={4}, Q_W_sol_us_m={5}, Q_W_sol_out_m={6}, Q_H_sol_out_m={7}, W_sol_aux_m={8}", _ | ||||
|                                i_system_ts, DR_code, i_ts_month, i_ts_d_mth, Q_H_sol_us_m, Q_W_sol_us_m, Q_W_sol_out_m, Q_H_sol_out_m, W_sol_aux_m)) | ||||
|  | ||||
|  | ||||
|         Dim theta_ref As Decimal, theta_w As Decimal, theta_cw As Decimal, U_loop_p As Decimal, U_loop As Decimal, Delta_T As Decimal | ||||
|         Dim A_ As Decimal, a As Decimal, b As Decimal, c As Decimal, d As Decimal, e As Decimal, f As Decimal, eta_loop As Decimal, IAM As Decimal, eta_0 As Decimal | ||||
|         Dim a_1 As Decimal, a_2 As Decimal, P_H As Decimal, P_W As Decimal, V_ref As Decimal, V_sol As Decimal, t_m As Decimal, I_m As Decimal, P_aux_nom As Decimal | ||||
|         'Dim i_ts_location As Integer, i_count_ts_location As Integer | ||||
|         '     Dim i_count_month As Integer | ||||
|         Dim i_direction As Integer | ||||
|         Dim t_aux_m As Decimal, l_tot As Decimal, f_st As Decimal, U_st As Decimal | ||||
|         Dim theta_setpoint As Decimal, theta_a_avg As Decimal, theta_e_avg As Decimal | ||||
|         Dim Q_sol_ls_rbl_m As Decimal, Q_sol_aux_rbl_m As Decimal, Q_sol_st_ls_rbl_m As Decimal, Q_bu_dis_ls_rbl_m As Decimal, Q_bu_dis_ls_m As Decimal, Q_sol_ls_m As Decimal | ||||
|         Dim Q_W_bu_dis_ls_m As Decimal, Q_H_bu_dis_ls_m As Decimal, Q_W_sol_st_ls_m As Decimal, Q_H_sol_st_ls_m As Decimal | ||||
|         Dim A_H As Decimal, A_W As Decimal, X As Decimal, Y As Decimal | ||||
|         Dim Q_W_sol_out_net As Decimal, Q_H_sol_out_net As Decimal, H_W_ratio As Decimal | ||||
|  | ||||
|         Q_W_sol_out_net = 0 | ||||
|         Q_H_sol_out_net = 0 | ||||
|  | ||||
|  | ||||
|         'Dim Dr기상데이터 As DS.tbl_weatherRow | ||||
|         'For i_count_ts_location = 1 To DSET.tbl_weather.Rows.Count ' Range("건물위치").Columns.Count | ||||
|         '    Dr기상데이터 = DSET.tbl_weather(i_count_ts_location - 1) | ||||
|         '    If dr존.지역 = Dr기상데이터.건물위치 Then  '//이상하다 1버번쨰 존의 지역값만 계속쓴다 -_-;; 지역은 즉 존에할당된게아니고 1개만 존재하는듯하다 | ||||
|         '        i_ts_location = i_count_ts_location '//기상데이터에서 현재지정된 존.지역의 기상데이터의 지역의 열번호(엑셀에서만)를 기억한다 (나중에 이번호로 데이터 참조하려고) | ||||
|         '        Exit For | ||||
|         '    End If | ||||
|         '    '//지역찾을떄그냥 DR지역을 사용하도록한다. | ||||
|         '    'If Worksheets("입력존").Range("지역1").Offset(0, 0) = Worksheets("기상데이타").Range("건물위치1").Offset(0, i_count_ts_location - 1) Then | ||||
|         '    '    i_ts_location = i_count_ts_location | ||||
|         '    '    Exit For | ||||
|         '    'End If | ||||
|         'Next | ||||
|  | ||||
|         l_tot = 0 | ||||
|  | ||||
|         Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & DR_code & "' and code <> '0'", "code")(0), DS.tbl_newRow)    '//신재생의 태양열시스템 | ||||
|  | ||||
|         Select Case Dr신재생.집열판방위.Trim ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(3, i_count_ts - 1) | ||||
|             Case "동" '동" | ||||
|                 i_direction = 12 | ||||
|  | ||||
|             Case "남동" '남동" | ||||
|                 i_direction = 10 | ||||
|  | ||||
|             Case "남" '남" | ||||
|                 i_direction = 9 | ||||
|  | ||||
|             Case "남서" '남서" | ||||
|                 i_direction = 11 | ||||
|  | ||||
|             Case "서" '서" | ||||
|                 i_direction = 13 | ||||
|  | ||||
|             Case "수평" '수평"  '//월별평균일사 수평면을 사용  나머지것들은 45도짜리를 사용한다. 45도짜리 코드값을 해당코드+1000이다. 해당코드+1000으로 미리 셋팅햇다(변경불가) | ||||
|                 i_direction = 0 | ||||
|             Case Else | ||||
|                 MsgBox("신재생에너지-태양열의 집열판 방위값이 올바르지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|         End Select | ||||
|  | ||||
|         '//집열판방위에따른 월별평균일사의 총합을 가져온다 | ||||
|         '//weather_ilsa 의 p코드에는 지역코드값이 들어가고 코드값은 집열판방위+1000 의값이 해당 각도의 방향에대한 데이터가된다. | ||||
|  | ||||
|  | ||||
|         '///만약값이 서울   방향이 남  이엇을경우에는  해당 일사데이터를 찾는게 목적이에요. 여기서 서울의 코드값은 찾을수잇어요 | ||||
|         '//그담이 방향 남에 맞는 일사데이터를 찾아야하는데.. 일사데이터 코드로는 못찾으니깐. 이름으로 찾아요. | ||||
|         '// | ||||
|         Dim 일사이름 As String = Dr신재생.집열판방위 & "(45)"  '//이렇게되면  남(45)  라는 최종이름이 되겟죠? | ||||
|         Dim Drow평균일사() As DS.weather_ilsaRow = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & _ | ||||
|                                                                               "' and 설명='" & 일사이름 & "'"), DS.weather_ilsaRow()) | ||||
|         '//그렇게해서 서울의 코드에 해당하는 pcode 와  이름이   남(45)로 되어잇는 일사데이터테이블에서 데이터를 검색하게되겟죠? | ||||
|         '//즉 데이터가 나오면 해당 데이터가 맞는거에요 ..이건 데이터베이스 이름을 남(45) 식으로 모두 고쳐주세요 | ||||
|  | ||||
|         If Drow평균일사.GetUpperBound(0) = -1 Then | ||||
|             MsgBox("지역코드=" + Calc.Pub.기상데이터.code + vbCrLf + "집열판방위코드=" + Dr신재생.집열판방위 + _ | ||||
|             vbCrLf + "예상일사코드=" + 일사이름 + _ | ||||
|             vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패") | ||||
|             I_m = 0 | ||||
|             ' Return | ||||
|         Else | ||||
|             l_tot += TOSG(Drow평균일사(0).m01) + TOSG(Drow평균일사(0).m02) + TOSG(Drow평균일사(0).m03) + TOSG(Drow평균일사(0).m04) + _ | ||||
|             TOSG(Drow평균일사(0).m05) + TOSG(Drow평균일사(0).m06) + TOSG(Drow평균일사(0).m07) + TOSG(Drow평균일사(0).m08) + _ | ||||
|             TOSG(Drow평균일사(0).m09) + TOSG(Drow평균일사(0).m10) + TOSG(Drow평균일사(0).m11) + TOSG(Drow평균일사(0).m12) | ||||
|             I_m = TOSG(Drow평균일사(0)("m" & i_ts_month.ToString("00")))   '//이줄로 위의 케이스문을 대체햇다 오류나면 케이스문으로 일단 사용할예정 | ||||
|  | ||||
|         End If | ||||
|         t_aux_m = I_m / l_tot * 2000 | ||||
|  | ||||
|         '//월별외기평균온도(i_ts_month << 파라미터) | ||||
|         theta_e_avg = TOSG(Calc.Pub.기상데이터("m" & i_ts_month.ToString("00"))) | ||||
|         'theta_e_avg =  Worksheets("기상데이타").Range("최소외기온도1").Offset(2 + i_ts_month, i_ts_location - 1) '//월별외기평균온도 tbl_weather에 존재 | ||||
|  | ||||
|         Select Case Dr신재생.축열탱크설치장소.Trim ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|             Case "난방공간" '난방공간" | ||||
|                 theta_a_avg = 20 | ||||
|             Case "비난방공간" '비난방공간" | ||||
|                 theta_a_avg = theta_e_avg + (20 - theta_e_avg) / 2 | ||||
|             Case "외부공간" '외부공간" | ||||
|                 theta_a_avg = theta_e_avg | ||||
|         End Select | ||||
|  | ||||
|         theta_w = 40 | ||||
|         theta_cw = 15 | ||||
|         a_2 = 0 | ||||
|         eta_loop = 0.8 | ||||
|         eta_0 = 0.6 | ||||
|         t_m = i_ts_d_mth * 24 | ||||
|         a = 1.029 | ||||
|         b = -0.065 | ||||
|         c = -0.245 | ||||
|         d = 0.0018 | ||||
|         e = 0.0215 | ||||
|         f = 0 | ||||
|  | ||||
|  | ||||
|         Select Case Dr신재생.집열기유형.Trim 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(1, i_count_ts - 1) | ||||
|             Case "평판형" '평판형" | ||||
|                 a_1 = 6 | ||||
|                 IAM = 0.94 | ||||
|             Case "진공관형" '진공관형" | ||||
|                 a_1 = 3 | ||||
|                 IAM = 1 | ||||
|         End Select | ||||
|  | ||||
|         If Dr신재생.태양열시스템의성능 = "성능치" Then ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(5, i_count_ts - 1) = "성능치" Then | ||||
|             eta_0 = TOSG(Dr신재생.무손실효율계수) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(6, i_count_ts - 1) | ||||
|             a_1 = TOSG(Dr신재생.열손실계수1차) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(7, i_count_ts - 1) | ||||
|             a_2 = TOSG(Dr신재생.열손실계수2차) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(8, i_count_ts - 1) | ||||
|         End If | ||||
|  | ||||
|         Select Case Dr신재생.태양열종류.Trim ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(0, i_count_ts - 1) | ||||
|             Case "급탕" '급탕" | ||||
|                 A_ = TOSG(Dr신재생.집열판면적) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(2, i_count_ts - 1) | ||||
|                 U_loop_p = TOSG(5 + 0.5 * A_) '(B.3) | ||||
|                 U_loop = a_1 + a_2 * 40 + U_loop_p / A_ '(13) | ||||
|                 theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                 Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                 V_ref = A_ * 75 | ||||
|                 V_sol = TOSG(Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1) | ||||
|                 f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     X = A_ * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_W_sol_us_m * 1000) '(12) | ||||
|                     Y = A_ * IAM * eta_0 * eta_loop * I_m * t_m / (Q_W_sol_us_m * 1000) '(15) | ||||
|                     Q_W_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_W_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_W_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_W_sol_out_m < 0 Then Q_W_sol_out_m = 0 | ||||
|                 If Q_W_sol_out_m > Q_W_sol_us_m Then Q_W_sol_out_m = Q_W_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 60 | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     Q_W_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_W_sol_out_m / Q_W_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_bu_dis_ls_m = TOSG(0.02 * Q_W_sol_us_m * (Q_W_sol_out_m / Q_W_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_W_sol_st_ls_m = 0 | ||||
|                     Q_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|  | ||||
|                 If i_system_ts = 1 Then '=====================================================2010.04.02 추가 | ||||
|  | ||||
|                     '난방 부분 | ||||
|                     theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                     Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                     V_ref = A_H * 75 | ||||
|                     V_sol = TOSG(Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1) | ||||
|                     f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                     If Q_H_sol_us_m <> 0 Then | ||||
|                         X = A_H * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_H_sol_us_m * 1000) '(12) | ||||
|                         Y = A_H * IAM * eta_0 * eta_loop * I_m * t_m / (Q_H_sol_us_m * 1000) '(15) | ||||
|                         Q_H_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_H_sol_us_m '(11) | ||||
|                     Else | ||||
|                         Q_H_sol_out_m = 0 | ||||
|                     End If | ||||
|                     If Q_H_sol_out_m < 0 Then Q_H_sol_out_m = 0 | ||||
|                     If Q_H_sol_out_m > Q_H_sol_us_m Then Q_H_sol_out_m = Q_H_sol_us_m | ||||
|  | ||||
|                     '태양열시스템 열손실 | ||||
|                     U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                     theta_setpoint = 40 | ||||
|                     If Q_H_sol_us_m <> 0 Then | ||||
|                         Q_H_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_H_sol_out_m / Q_H_sol_us_m) * t_m / 1000 '(17) | ||||
|                         Q_H_bu_dis_ls_m = TOSG(0.02 * Q_H_sol_us_m * (Q_H_sol_out_m / Q_H_sol_us_m)) | ||||
|                     Else | ||||
|                         Q_H_sol_st_ls_m = 0 | ||||
|                         Q_H_bu_dis_ls_m = 0 | ||||
|                     End If | ||||
|                     Q_sol_ls_m = Q_H_sol_st_ls_m + Q_H_bu_dis_ls_m + Q_W_sol_st_ls_m + Q_W_bu_dis_ls_m | ||||
|  | ||||
|                 End If '=====================================================2010.04.02 추가 | ||||
|  | ||||
|                 '  Q_sol_ls_m = Q_W_sol_st_ls_m + Q_bu_dis_ls_m | ||||
|  | ||||
|                 ' 보조에너지 | ||||
|                 P_aux_nom = TOSG(Dr신재생.솔라펌프의정격출력) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(4, i_count_ts - 1) | ||||
|                 W_sol_aux_m = P_aux_nom * t_aux_m / 1000 | ||||
|  | ||||
|                 Q_sol_aux_rbl_m = TOSG(W_sol_aux_m * 0.5) | ||||
|  | ||||
|                 Select Case Dr신재생.축열탱크설치장소.Trim 'Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|                     Case "난방공간" '난방공간" | ||||
|                         Q_sol_st_ls_rbl_m = Q_W_sol_st_ls_m | ||||
|                         Q_bu_dis_ls_rbl_m = Q_bu_dis_ls_m | ||||
|                     Case "비난방공간" '비난방공간" | ||||
|                         Q_sol_st_ls_rbl_m = TOSG(Q_W_sol_st_ls_m * 0.5) | ||||
|                         Q_bu_dis_ls_rbl_m = TOSG(Q_bu_dis_ls_m * 0.5) | ||||
|                     Case "외부공간" '외부공간" | ||||
|                         Q_sol_st_ls_rbl_m = 0 | ||||
|                         Q_bu_dis_ls_rbl_m = 0 | ||||
|                 End Select | ||||
|  | ||||
|                 Q_sol_ls_rbl_m = Q_sol_aux_rbl_m + Q_sol_st_ls_rbl_m + Q_bu_dis_ls_rbl_m '(20) | ||||
|  | ||||
|  | ||||
|  | ||||
|             Case "난방+급탕" '난방+급탕" | ||||
|                 P_H = Q_H_sol_us_m / (Q_H_sol_us_m + Q_W_sol_us_m) '(9) | ||||
|                 P_W = Q_W_sol_us_m / (Q_H_sol_us_m + Q_W_sol_us_m) '(10) | ||||
|                 A_ = TOSG(Dr신재생.집열판면적) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(2, i_count_ts - 1) | ||||
|                 A_H = P_H * A_ | ||||
|                 A_W = P_W * A_ | ||||
|  | ||||
|                 '급탕 부분 | ||||
|                 U_loop_p = 5 + 0.5 * A_W '(B.3) '===========================2010.04.24 추가 | ||||
|                 If A_W <> 0 Then | ||||
|                     U_loop = a_1 + a_2 * 40 + U_loop_p / A_W '(13) '===============2010.04.24 추가 | ||||
|                     theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                     Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                     V_ref = A_W * 75 | ||||
|                     V_sol = TOSG(Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1) | ||||
|                     f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 End If | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     X = A_W * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_W_sol_us_m * 1000) '(12) | ||||
|                     Y = A_W * IAM * eta_0 * eta_loop * I_m * t_m / (Q_W_sol_us_m * 1000) '(15) | ||||
|                     Q_W_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_W_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_W_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_W_sol_out_m < 0 Then Q_W_sol_out_m = 0 | ||||
|                 If Q_W_sol_out_m > Q_W_sol_us_m Then Q_W_sol_out_m = Q_W_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 60 | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     Q_W_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_W_sol_out_m / Q_W_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_W_bu_dis_ls_m = TOSG(0.02 * Q_W_sol_us_m * (Q_W_sol_out_m / Q_W_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_W_sol_st_ls_m = 0 | ||||
|                     Q_W_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|  | ||||
|  | ||||
|                 '난방 부분 | ||||
|                 U_loop_p = 5 + 0.5 * A_H '(B.3) '===========================2010.04.24 추가 | ||||
|                 U_loop = a_1 + a_2 * 40 + U_loop_p / A_H '(13) '===============2010.04.24 추가 | ||||
|  | ||||
|                 theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                 Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                 V_ref = A_H * 75 | ||||
|                 V_sol = TOSG(Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1) | ||||
|                 f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 If Q_H_sol_us_m <> 0 Then | ||||
|                     X = A_H * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_H_sol_us_m * 1000) '(12) | ||||
|                     Y = A_H * IAM * eta_0 * eta_loop * I_m * t_m / (Q_H_sol_us_m * 1000) '(15) | ||||
|                     Q_H_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_H_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_H_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_H_sol_out_m < 0 Then Q_H_sol_out_m = 0 | ||||
|                 If Q_H_sol_out_m > Q_H_sol_us_m Then Q_H_sol_out_m = Q_H_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 40 | ||||
|                 If Q_H_sol_us_m <> 0 Then | ||||
|                     Q_H_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_H_sol_out_m / Q_H_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_H_bu_dis_ls_m = TOSG(0.02 * Q_H_sol_us_m * (Q_H_sol_out_m / Q_H_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_H_sol_st_ls_m = 0 | ||||
|                     Q_H_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|                 Q_sol_ls_m = Q_H_sol_st_ls_m + Q_H_bu_dis_ls_m + Q_W_sol_st_ls_m + Q_W_bu_dis_ls_m | ||||
|  | ||||
|  | ||||
|  | ||||
|                 ' 보조에너지 | ||||
|                 P_aux_nom = TOSG(Dr신재생.솔라펌프의정격출력) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(4, i_count_ts - 1) | ||||
|                 W_sol_aux_m = P_aux_nom * t_aux_m / 1000 | ||||
|  | ||||
|                 Q_sol_aux_rbl_m = TOSG(W_sol_aux_m * 0.5) | ||||
|  | ||||
|                 Select Case Dr신재생.축열탱크설치장소.Trim ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|                     Case "난방공간" '난방공간" | ||||
|                         Q_sol_ls_rbl_m = Q_sol_aux_rbl_m + Q_sol_ls_m | ||||
|                     Case "비난방공간" '비난방공간" | ||||
|                         Q_sol_ls_rbl_m = TOSG(Q_sol_aux_rbl_m + Q_sol_ls_m * 0.5) | ||||
|                     Case "외부공간" '외부공간" | ||||
|                         Q_sol_ls_rbl_m = Q_sol_aux_rbl_m | ||||
|                 End Select | ||||
|  | ||||
|         End Select | ||||
|  | ||||
|  | ||||
|         ''보조에너지 | ||||
|         ''f_sol_m = Q_sol_out_m / Q_sol_us_m '(21) | ||||
|         ''W_bu_aux_m = W_bu_nom_m * (1 - f_sol_m) '(22) | ||||
|  | ||||
|         ''P_aux_nom = 50 + 5 * A_ '(B.4) | ||||
|  | ||||
|  | ||||
|         '// 신재생에너지 자립률 추가(2017.01.20) | ||||
|  | ||||
|         H_W_ratio = Q_H_sol_out_m / (Q_H_sol_out_m + Q_W_sol_out_m) | ||||
|         Q_H_sol_out_net = Q_H_sol_out_m + H_W_ratio * W_sol_aux_m * 2.75 | ||||
|         Q_W_sol_out_net = Q_W_sol_out_m + (1 - H_W_ratio) * W_sol_aux_m * 2.75 | ||||
|  | ||||
|  | ||||
|  | ||||
|         '// 신재생에너지 자립률 추가 | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|         '//열에너지생산량-태양열 | ||||
|         Result.생산E(i_ts_month).태양열생산량 += Q_W_sol_out_net + Q_H_sol_out_net '// 20170120 추가 | ||||
|         '//Result.생산E(i_ts_month).태양열생산량 += Q_W_sol_out_m + Q_H_sol_out_m '20170120 삭제 | ||||
|         'DSETR.TReqUse.Rows(CEnum.ResultRow.생산_열생산량_태양열)(CStr("M" & Format(i_ts_month, "00"))) = CSng(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_열생산량_태양열)(CStr("M" & Format(i_ts_month, "00")))) + Q_W_sol_out_m + Q_H_sol_out_m 'Sheets("계산결과").Cells(97, 7 + i_ts_month) = Q_W_sol_out_m + Q_H_sol_out_m | ||||
|         'Dim TDR As DSR.TReqUseRow = CType(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_단위면적당생산량_태양열), DSR.TReqUseRow) | ||||
|         Select Case i_system_ts '//이것도 프로시져 파라미터이다. | ||||
|             Case 1  '//난방?급탕 혼합형태? | ||||
|                 If Q_W_sol_out_m <> 0 Then | ||||
|                     Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_net / Result.사용면적.W) '// 20170120 추가 | ||||
|                     'Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result.사용면적.W)  삭제 | ||||
|                 Else | ||||
|                     Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_net / Result.사용면적.H) '// 20170120 추가 | ||||
|                     'Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result.사용면적.H) | ||||
|                 End If | ||||
|             Case 2  '//냉방? | ||||
|                 Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_net / Result.사용면적.C) '// 20170120 추가 | ||||
|                 'Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result.사용면적.C) | ||||
|             Case 3  '//급탕 | ||||
|                 Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_net / Result.사용면적.W) '// 20170120 추가 | ||||
|                 'Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result.사용면적.W) | ||||
|             Case Else | ||||
|                 MsgBox("단위면적당생산량 누적시 i_syste_ts 가 알수없음", MsgBoxStyle.Critical, "확인") | ||||
|         End Select | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_ThermalSolarSystem_EN 진입 : 태양열생산량={0}, 면적당생산량태양열={1}, Q_W_sol_out_m={2}, Q_H_sol_out_m={3}", _ | ||||
|                                        Result.생산E(i_ts_month).태양열생산량, Result.생산E(i_ts_month).면적당생산량태양열, Q_W_sol_out_net, Q_H_sol_out_net))   '// 20170120 수정 | ||||
|         'pLog.Add(String.Format(">>Calc_ThermalSolarSystem_EN 진입 : 태양열생산량={0}, 면적당생산량태양열={1}, Q_W_sol_out_m={2}, Q_H_sol_out_m={3}", _ | ||||
|         '                       Result.생산E(i_ts_month).태양열생산량, Result.생산E(i_ts_month).면적당생산량태양열, Q_W_sol_out_m, Q_H_sol_out_m))    | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_PhotovoltaicSystem_EN(ByVal i_count_pv_month As Integer, ByVal i_pv_d_mth As Integer) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_PhotovoltaicSystem_EN 진입 : i_count_pv_month={0}, i_pv_d_mth={1}", _ | ||||
|                           i_count_pv_month, i_pv_d_mth)) | ||||
|  | ||||
|         Dim E_el_pv_out As Decimal, P_pk As Decimal, f_perf As Decimal, E_sol As Decimal | ||||
|         Dim a As Decimal, K_pk As Decimal | ||||
|         'Dim i_count_pv As Integer, i_count_pv_location As Integer, i_pv_location As Integer | ||||
|  | ||||
|         E_el_pv_out = 0 | ||||
|  | ||||
|         'If DSET.tbl_new.Rows.Count > 0 Then ' Worksheets("신재생기기").Range("신재생생산기기1").Offset(0, 0) <> "" Then    '//신재생기기 처음칸에 뭐가 잇다? 즉 데이터가잇느냐 | ||||
|         For Each Dr신재생 As DS.tbl_newRow In DSET.tbl_new.Select("code <> '0'", "code") | ||||
|             If Dr신재생.기기종류 = "태양광" Then | ||||
|  | ||||
|                 a = TOSG(Dr신재생.태양광모듈면적) ' Worksheets("신재생기기").Range("태양광모듈1").Offset(0, i_count_pv - 1) | ||||
|  | ||||
|                 Select Case Dr신재생.태양광모듈적용타입.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(4, i_count_pv - 1) | ||||
|                     Case "밀착형" '밀착형" | ||||
|                         f_perf = 0.7 | ||||
|                     Case "후면통풍형" '후면통풍형" | ||||
|                         f_perf = 0.75 | ||||
|                     Case "기계환기형" '기계환기형" | ||||
|                         f_perf = 0.8 | ||||
|                 End Select | ||||
|  | ||||
|  | ||||
|                 'If a <> 0 Then  '//태양광모듈면적이있을경우에만 작동하도록한다. | ||||
|  | ||||
|  | ||||
|                 Dim Dr일사 As DS.weather_ilsaRow | ||||
|                 Select Case Dr신재생.태양광모듈기울기.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(1, i_count_pv - 1) | ||||
|                     Case "수평" '수평" | ||||
|                         '//수평면에해당하는 월별평균일사 값을 가져온다.수평면 0001은 고정값이된다. | ||||
|                         Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='0001'")(0), DS.weather_ilsaRow) | ||||
|                         E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|  | ||||
|                     Case "45도" '45도" | ||||
|                         Select Case Dr신재생.태양광모듈방위.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1) | ||||
|                             Case "남" '"남" | ||||
|                                 '//45도 남에대한건 기본 수평면하고 +9를 하면 나온다 나머지도 순서이므로 +1을 게속해주면된다. | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 9, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남동" '"남동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 10, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남서" '"남서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 11, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "동" '"동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 12, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "서" '"서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 13, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                         End Select | ||||
|  | ||||
|                     Case "수직" '수직" | ||||
|                         Select Case Dr신재생.태양광모듈방위.Trim 'Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1) | ||||
|                             Case "남" '"남" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 1, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남동" '"남동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 2, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남서" '"남서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 3, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "동" '"동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 4, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "서" '"서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 5, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                         End Select | ||||
|                 End Select | ||||
|  | ||||
|                 'E_sol = E_sol_hor * f_tlt 수평면일사에 계수를 곱하지 않고 직접 기상데이타 적용 | ||||
|  | ||||
|                 Select Case Dr신재생.태양광모듈종류.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(3, i_count_pv - 1) | ||||
|                     Case "단결정" '단결정" | ||||
|                         K_pk = 0.12 | ||||
|                     Case "다결정" '다결정" | ||||
|                         K_pk = 0.1 | ||||
|                     Case "비정질박막형" '비정질박막형" | ||||
|                         K_pk = 0.04 | ||||
|                     Case "기타박막형" '기타박막형" | ||||
|                         K_pk = 0.035 | ||||
|                     Case "CIS박막형" 'CIS박막형" | ||||
|                         K_pk = 0.105 | ||||
|                     Case "CdTe박막형" 'CdTe박막형" | ||||
|                         K_pk = 0.095 | ||||
|                     Case "성능치 입력" | ||||
|                         Try | ||||
|                             K_pk = TOSG(Dr신재생.태양광모듈효율) | ||||
|                         Catch ex As Exception | ||||
|                             MsgBox("태양광모듈효율을 알 수 없습니다.", MsgBoxStyle.Critical, "값=" & Dr신재생.태양광모듈효율) | ||||
|                             K_pk = 0 | ||||
|                         End Try | ||||
|  | ||||
|                     Case Else | ||||
|                         MsgBox("알수없는 태양광모듈종류입니다.", MsgBoxStyle.Critical, "값=" & Dr신재생.태양광모듈종류) | ||||
|  | ||||
|                 End Select | ||||
|  | ||||
|                 P_pk = K_pk * a | ||||
|                 E_el_pv_out = E_el_pv_out + E_sol * P_pk * f_perf | ||||
|                 'End If | ||||
|             End If | ||||
|         Next | ||||
|  | ||||
|  | ||||
|         'If Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = "" Then | ||||
|         '    Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = E_el_pv_out | ||||
|         'Else | ||||
|         '    Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = Sheets("계산결과").Cells(104, 7 + i_count_pv_month) + E_el_pv_out | ||||
|         'End If | ||||
|  | ||||
|         Result.생산E(i_count_pv_month).태양광전력생산량 += E_el_pv_out | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_PhotovoltaicSystem_EN 진입 : E_el_pv_out={0}, 태양광전력생산량={1}", _ | ||||
|                        E_el_pv_out, Result.생산E(i_count_pv_month).태양광전력생산량)) | ||||
|  | ||||
|  | ||||
|  | ||||
|         'DSETR.TReqUse.Rows(CEnum.ResultRow.생산_전기_태양광)("M" & Format(i_count_pv_month, "00")) = CSng(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_전기_태양광)("M" & Format(i_count_pv_month, "00"))) + E_el_pv_out  ' Sheets("계산결과").Cells(95, 7 + i_count_pv_month) | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_HeatpumpSystem(ByVal i_system_hp As Integer, ByVal i_HeatCool As Integer, ByVal Dr신재생 As DS.tbl_newRow, ByVal Q_hp_outg As Decimal, ByVal i_hp_month As Integer, _ | ||||
|                                                ByVal d_h_mth As Integer, ByVal t_hp As Integer, ByVal theta_VA As Decimal, ByVal theta_i As Decimal, ByRef Q_h_outg As Decimal, ByRef Q_h_f_hp As Decimal, ByRef Q_h_g_aux As Decimal) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_HeatpumpSystem 진입 : i_system_hp={0}, i_HeatCool={1},dr신재생={2},Q_hp_outg={3},i_hp_month={4},d_h_mth={5},t_hp={6},theta_VA={7},theta_i={8},Q_h_outg={9},Q_h_f_hp={10},Q_h_g_aux={11}", _ | ||||
|                           i_system_hp, i_HeatCool, Dr신재생.code, Q_hp_outg, i_hp_month, d_h_mth, t_hp, theta_VA, theta_i, Q_h_outg, Q_h_f_hp, Q_h_g_aux)) | ||||
|  | ||||
|  | ||||
|         Dim f_Verwindung As Decimal, V As Decimal, q_B_S As Decimal, Phi_g As Decimal | ||||
|         Dim Q_h_g As Decimal, Q_h_g_s As Decimal, Q_h_g_WP As Decimal | ||||
|         Dim P_rd_mot As Decimal | ||||
|         'Dim Q_h_f_hp as decimal 'DIN 에서는 Q_h_f로 표기 | ||||
|         'Dim Delta_p_prim as decimal, Delta_p_sek as decimal | ||||
|         Dim Phi_prim_aux As Decimal, Phi_sek_aux As Decimal, t_ON_aux As Decimal | ||||
|         Dim theta_h_s As Decimal | ||||
|         Dim COP As Decimal | ||||
|         Dim Q_h_outg_net As Decimal | ||||
|  | ||||
|  | ||||
|         Q_h_g_s = 0 | ||||
|         Q_h_g_WP = 0 '전기히트펌프인 경우 0  가스히트펌프는 ? | ||||
|         P_rd_mot = 0 | ||||
|         Q_h_f_hp = 0 | ||||
|         Q_h_outg_net = 0 | ||||
|  | ||||
|  | ||||
|         'eta_aux = 0.3 | ||||
|         'Delta_p_prim = 40 'kPa 1차측 | ||||
|         'Delta_p_sek = 10 'kPa 2차측 | ||||
|  | ||||
|         'MsgBox(i_count_hp) | ||||
|  | ||||
|         'i_count_hp = 0  '//신재생 줄번호는 무조건 0이된다. 20100127 '//연습용데이터 문제있음 | ||||
|         ' Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) | ||||
|  | ||||
|         Phi_g = TOSG(Dr신재생.지열히트펌프용량) '  Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(0, i_count_hp - 1) | ||||
|  | ||||
|         If Dr신재생.가동연료 <> "전기" And i_HeatCool = 1 And Dr신재생.열교환기설치여부 = "예" Then ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(5, i_count_hp - 1) = "예" Then | ||||
|             P_rd_mot = 0.4 | ||||
|         End If | ||||
|  | ||||
|         If Q_hp_outg < (Phi_g * t_hp) * (1 + P_rd_mot) Then | ||||
|             Q_h_outg = Q_hp_outg | ||||
|         Else | ||||
|             Q_h_outg = Phi_g * t_hp * (1 + P_rd_mot) | ||||
|         End If | ||||
|  | ||||
|         If i_HeatCool = 1 Or i_HeatCool = 3 Then '난방 1 , 냉방 2, 급탕 3 | ||||
|             '난방, 급탕 | ||||
|             If Dr신재생.팽창탱크설치여부 = "예" Then ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(6, i_count_hp - 1) = "예" Then | ||||
|                 f_Verwindung = 1.2 | ||||
|                 V = TOSG(Dr신재생.팽창탱크체적) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(7, i_count_hp - 1) | ||||
|                 q_B_S = TOSG(0.4 + 0.14 * V ^ 0.45) '(51) | ||||
|                 theta_h_s = theta_VA '급수온도로 적용 | ||||
|                 Q_h_g_s = f_Verwindung * (theta_h_s - theta_i) / 45 * d_h_mth * q_B_S '(49) 외부완충(팽창탱크 유무) | ||||
|  | ||||
|             End If | ||||
|  | ||||
|             Q_h_g = Q_h_g_s + Q_h_g_WP | ||||
|             COP = TOSG(Dr신재생.열성능비난방) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(1, i_count_hp - 1) | ||||
|  | ||||
|         Else | ||||
|             '냉방 | ||||
|  | ||||
|             COP = TOSG(Dr신재생.열성능비냉방) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(2, i_count_hp - 1) | ||||
|  | ||||
|         End If | ||||
|  | ||||
|  | ||||
|         If Dr신재생.가동연료 = "전기" Then ' Worksheets("신재생기기").Range("신재생및열병합기기종류1").Offset(1, i_count_hp - 1) = "전기" Then | ||||
|             Q_h_f_hp = (Q_h_outg + Q_h_g) / COP | ||||
|             '    Q_h_in = Q_h_outg + Q_h_g - Q_h_f_hp '월간 전기히트펌프(재생에너지유입량) | ||||
|         Else | ||||
|             Q_h_f_hp = Q_h_outg / COP | ||||
|             '    If i_HeatCool = 1 And Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(5, i_count_hp - 1) = "예" Then | ||||
|             '        P_rd_mot = 0.4 | ||||
|             '    End If | ||||
|             '    Q_h_in = Q_h_outg + Q_h_g - Q_h_f_hp * (1 + P_rd_mot) '월간 가스히트펌프(재생에너지유입량) | ||||
|         End If | ||||
|  | ||||
|         'Q_h_f = Q_h_outg + Q_h_g - k_rd_g * Q_h_g_aux - Q_h_in '월간(A.1) 전기히트펌프(난방요구량 충당) | ||||
|         'Q_h_f = (Q_h_outg + Q_h_g - k_rd_g * Q_h_g_aux - Q_h_in) / (1 + P_rd_mot) '월간(A.2) 가스히트펌프(난방요구량 충당) | ||||
|  | ||||
|  | ||||
|         '보조에너지 | ||||
|  | ||||
|  | ||||
|         'Phi_prim_aux = Delta_p_prim * V_dot / (eta_aux * 3600) '(89) 사용자 입력항목이므로 확인 요망 | ||||
|         'Phi_sek_aux = Delta_p_sek * V_dot / (eta_aux * 3600) '(89) 사용자 입력항목이므로 확인 요망 | ||||
|  | ||||
|         t_ON_aux = Q_h_outg / (Phi_g) '(81) | ||||
|         Phi_prim_aux = TOSG(Dr신재생.펌프용량1차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(3, i_count_hp - 1) | ||||
|         Phi_sek_aux = TOSG(Dr신재생.펌프용량2차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(4, i_count_hp - 1) | ||||
|  | ||||
|         Q_h_g_aux = TOSG((Phi_prim_aux + Phi_sek_aux) * 0.001 * t_ON_aux) '(88) | ||||
|  | ||||
|  | ||||
|         '// 신재생에너지 자립률 추가(2017.01.20) | ||||
|  | ||||
|         If Dr신재생.가동연료 = "전기" Then | ||||
|             Q_h_outg_net = Q_h_outg - ((Q_h_f_hp + Q_h_g_aux) * 2.75)  '전기 1차에너지계수 적용 | ||||
|             If Q_h_outg_net < 0 Then Q_h_outg_net = 0 | ||||
|  | ||||
|         Else | ||||
|             Q_h_outg_net = Q_h_outg - (Q_h_f_hp * 1.1 + Q_h_g_aux * 2.75)  '가스 1차에너지계수 적용 | ||||
|             If Q_h_outg_net < 0 Then Q_h_outg_net = 0 | ||||
|         End If | ||||
|  | ||||
|  | ||||
|  | ||||
|         '// 신재생에너지 자립률 추가 | ||||
|  | ||||
|  | ||||
|         '//열에너지생산량 (지열) | ||||
|         Result.생산E(i_hp_month).지열생산량 += Q_h_outg_net '//20170120 추가 | ||||
|         '// Result.생산E(i_hp_month).지열생산량 += Q_h_f_hp  '20170120 지열생산량을 수정 | ||||
|         'DSETR.TReqUse.Rows(79)("M" & Format(i_hp_month, "00")) = CSng(DSETR.TReqUse.Rows(79)("M" & Format(i_hp_month, "00"))) + Q_h_f_hp 'DrT생산.열생산량지열 += Q_h_f_hp | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_HeatpumpSystem 결과0 Q_h_f_hp={0},t_ON_aux={1},Q_h_g_aux={2}", _ | ||||
|                       Q_h_f_hp, t_ON_aux, Q_h_g_aux)) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_HeatpumpSystem 결과1 지열생산량={0}", _ | ||||
|                        Result.생산E(i_hp_month).지열생산량)) | ||||
|  | ||||
|         '100 : Total >> DrT생산.단위면적당생산량지열 | ||||
|         Select Case i_system_hp | ||||
|             Case 1 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_outg_net / Result.사용면적.H)  '//20170120 추가 | ||||
|                 '//Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.H) '20170120 지열생산량을 수정 | ||||
|                 'DSETR.TReqUse.Rows(100)("M00") = CSng(DSETR.TReqUse.Rows(100)("M00")) + Q_h_f_hp / CSng(DSETR.TReqUse.Rows(10)("M00")) ' DrT요구량.난방사용면적 ' Sheets("계산결과").Cells(15, 7) | ||||
|             Case 2 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_outg_net / Result.사용면적.C)  '//20170120 추가 | ||||
|                 '//Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.C) '20170120 지열생산량을 수정 | ||||
|                 'DSETR.TReqUse.Rows(100)("M00") = CSng(DSETR.TReqUse.Rows(100)("M00")) + Q_h_f_hp / CSng(DSETR.TReqUse.Rows(15)("M00")) 'DrT요구량.냉방사용면적 '("계산결과").Cells(20, 7) | ||||
|             Case 3 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_outg_net / Result.사용면적.W)  '//20170120 추가 | ||||
|                 '//Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.W) '20170120 지열생산량을 수정 | ||||
|         End Select | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_HeatpumpSystem 결과2 면적당생산량지열={0}", _ | ||||
|                        Result.생산E(i_hp_month).면적당생산량지열)) | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_CogenerationSystemEN(ByVal Dr신재생 As DS.tbl_newRow, i_system_chp As Integer, ByVal i_chp_month As Integer, ByVal Q_h_outg As Decimal, ByVal t_chp As Integer, _ | ||||
|                                                      ByRef Q_chp_gen_out As Decimal, ByRef E_chp_gen_in As Decimal) | ||||
|  | ||||
|         pLog.Add(String.Format(">>Calc_CogenerationSystemEN 진입 : Dr신재생={0}, i_system_chp={1},i_chp_month={2},Q_h_outg={3},t_chp={4},Q_chp_gen_out={5},E_chp_gen_in={6}", _ | ||||
|                           Dr신재생.code, i_system_chp, i_chp_month, Q_h_outg, t_chp, Q_chp_gen_out, E_chp_gen_in)) | ||||
|  | ||||
|         'EN15316-4-4_2007 5.6.2에서 시작 | ||||
|         'Dim Wmsg As New System.Text.StringBuilder | ||||
|         'Wmsg.AppendLine("Calc_CogenerationSystemEN 이 함수의경우") | ||||
|         'Wmsg.AppendLine("i_count_chp 에따라서 열을 할당해야한다.... 지만..아직 이 파라미터값을 모르게삳") | ||||
|         'Wmsg.AppendLine("사용하는곳의 참조확인을해서 저곳이 신재생기기 코드값이 바로오는건지 다른값인지 확인해봐야겠다") | ||||
|         'MsgBox(Wmsg.ToString) | ||||
|  | ||||
|         Dim Q_dot_T_chp As Decimal | ||||
|         Dim eta_T_chp_an As Decimal, eta_el_chp_an As Decimal | ||||
|         Dim E_el_chp_out As Decimal | ||||
|         Dim Q_chp_gen_out_net As Decimal, E_el_chp_out_net As Decimal, Q_E_ratio As Decimal, net_ratio As Decimal | ||||
|  | ||||
|         Q_chp_gen_out_net = 0 | ||||
|         E_el_chp_out_net = 0 | ||||
|         Q_E_ratio = 0 | ||||
|         net_ratio = 0 | ||||
|  | ||||
|  | ||||
|  | ||||
|         ' Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) | ||||
|  | ||||
|         Q_dot_T_chp = TOSG(Dr신재생.열생산능력) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(0, i_count_chp - 1) | ||||
|         eta_T_chp_an = TOSG(Dr신재생.열생산효율) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(1, i_count_chp - 1) | ||||
|         eta_el_chp_an = TOSG(Dr신재생.발전효율) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(2, i_count_chp - 1) | ||||
|  | ||||
|         If Q_h_outg > (Q_dot_T_chp * t_chp) Then | ||||
|             Q_chp_gen_out = Q_dot_T_chp * t_chp | ||||
|         Else | ||||
|             Q_chp_gen_out = Q_h_outg | ||||
|         End If | ||||
|  | ||||
|         E_chp_gen_in = Q_chp_gen_out / (eta_T_chp_an / 100) | ||||
|         E_el_chp_out = E_chp_gen_in * eta_el_chp_an / 100 | ||||
|  | ||||
|         Result.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out | ||||
|  | ||||
|         pLog.Add(String.Format("Calc_CogenerationSystemEN 결과0 E_chp_gen_in={0},E_el_chp_out={1}", E_chp_gen_in, E_el_chp_out)) | ||||
|         pLog.Add(String.Format("Calc_CogenerationSystemEN 결과1 열병합전력생산량={0}", Result.생산E(i_chp_month).열병합전력생산량)) | ||||
|  | ||||
|         '//전기생산량 열병합 | ||||
|         If Dr신재생.열병합신재생여부 Then | ||||
|  | ||||
|  | ||||
|             '// 신재생에너지 자립률 추가(2017.01.20) | ||||
|  | ||||
|             net_ratio = (Q_chp_gen_out + E_el_chp_out * 2.75) / (E_chp_gen_in * 1.1) | ||||
|             Q_E_ratio = Q_chp_gen_out / (Q_chp_gen_out + E_el_chp_out * 2.75) | ||||
|             Q_chp_gen_out_net = Q_chp_gen_out * (net_ratio - 1) * Q_E_ratio | ||||
|             E_el_chp_out_net = (E_el_chp_out * 2.75 * (net_ratio - 1) * (1 - Q_E_ratio)) / 2.75 | ||||
|             If Q_chp_gen_out_net < 0 Then Q_chp_gen_out_net = 0 | ||||
|             If E_el_chp_out_net < 0 Then E_el_chp_out_net = 0 | ||||
|  | ||||
|  | ||||
|  | ||||
|             '// 신재생에너지 자립률 추가 | ||||
|  | ||||
|  | ||||
|             '//전력 | ||||
|             Result.생산E(i_chp_month).신재생열병합전력생산량 += (E_el_chp_out_net) '//20170120 추가 | ||||
|             'Result.생산E(i_chp_month).신재생열병합전력생산량 += (E_el_chp_out) | ||||
|  | ||||
|             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과2 신재생열병합전력생산량={0}", Result.생산E(i_chp_month).신재생열병합전력생산량)) | ||||
|  | ||||
|             '//면적당열병합 (신재생면적당열생산량) | ||||
|             Select Case i_system_chp | ||||
|                 Case 1 | ||||
|                     Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result.사용면적.H) '// 20170120 추가 | ||||
|                     'Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out / Result.사용면적.H) | ||||
|                 Case 2 | ||||
|                     Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result.사용면적.C) '// 20170120 추가 | ||||
|                     'Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out / Result.사용면적.C) | ||||
|                 Case 3 | ||||
|                     Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result.사용면적.W) '// 20170120 추가 | ||||
|                     'Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out / Result.사용면적.W) | ||||
|  | ||||
|             End Select | ||||
|  | ||||
|             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과3 신재생면적당열생산량={0}", Result.생산E(i_chp_month).신재생면적당열생산량)) | ||||
|  | ||||
|         End If | ||||
|         'DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00")) = CSng(DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00"))) + E_el_chp_out ' Sheets("계산결과").Cells(96, 7 + i_chp_month) = E_el_chp_out | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										169
									
								
								ArinWarev1/Calculator/CShared.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								ArinWarev1/Calculator/CShared.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,169 @@ | ||||
| ''' <remarks>공용으로 사용되는 값을을 이곳에서 설정한다</remarks> | ||||
| Public Class CShared | ||||
|     Public ReadOnly Property 기상데이터() As DS.tbl_weatherRow | ||||
|         Get | ||||
|  | ||||
|             If DSET1.tbl_Desc.Rows.Count = 0 Then | ||||
|                 MsgBox("건물개요데이터가 없습니다.", MsgBoxStyle.Critical, "오류") | ||||
|                 Return Nothing | ||||
|             Else | ||||
|                 Try | ||||
|                     Return CType(DSET1.tbl_weather.Select("code ='" & DSET1.tbl_Desc.Rows(0)("buildarea").ToString & "'")(0), DS.tbl_weatherRow) | ||||
|                 Catch ex As Exception | ||||
|                     MsgBox("건물개요의 지역정보를 찾을수없습니다.", MsgBoxStyle.Critical, "오류") | ||||
|                     Return Nothing | ||||
|                 End Try | ||||
|             End If | ||||
|  | ||||
|         End Get | ||||
|  | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 오류가있는가? | ||||
|     ''' </summary> | ||||
|     Public IsError As Boolean = False | ||||
|     ''' <summary> | ||||
|     ''' 주6일근무제로 변경 | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public d_full() As Decimal | ||||
|     ''' <summary> | ||||
|     ''' 외기온도값 | ||||
|     ''' </summary> | ||||
|     Public theta_e(12) As Decimal | ||||
|     ''' <summary> | ||||
|     ''' 평균일사값이 들어있다. | ||||
|     ''' </summary> | ||||
|     Public I_s(8, 12) As Decimal | ||||
|     ''' <summary> | ||||
|     ''' 외기온도 난방기(최대) | ||||
|     ''' </summary> | ||||
|     Public theta_e_min As Decimal | ||||
|     ''' <summary> | ||||
|     ''' 외기온도 냉방기(최대) | ||||
|     ''' </summary> | ||||
|     Public theta_e_max As Decimal | ||||
|  | ||||
|     Public F_sh_gl(7, 11) As Decimal '//2010.02.26 차양감소계수 | ||||
|  | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 클래스 생성자 | ||||
|     ''' </summary> | ||||
|     Public Sub New() | ||||
|         '//지정된 존에 해당하는 지역정보를 가지고옴(현재기상정보가 존에 할당되어있어서 그렇다) | ||||
|         '//1번째 존에 지역이 설정된걸로 간주한다 | ||||
|  | ||||
|         'Dr신재생 = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) | ||||
|  | ||||
|         d_full = New Decimal() {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} '우선 휴일없는 것으로 설정 | ||||
|         'd_op = new decimal() {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} '우선 휴일없는 것으로 설정  각달의 일수 ##### 02/21 삭제됨 | ||||
|         'd_we = new decimal() {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} ' 우선 휴일없는 것으로 설정 | ||||
|  | ||||
|         '//최소외기온도 설정 | ||||
|         theta_e_min = TOSG(기상데이터.난방기) | ||||
|         theta_e_max = TOSG(기상데이터.냉방기) | ||||
|  | ||||
|         '//지역의 외기온도값 | ||||
|         theta_e(0) = 0 | ||||
|         theta_e(1) = TOSG(기상데이터.m01) | ||||
|         theta_e(2) = TOSG(기상데이터.m02) | ||||
|         theta_e(3) = TOSG(기상데이터.m03) | ||||
|         theta_e(4) = TOSG(기상데이터.m04) | ||||
|         theta_e(5) = TOSG(기상데이터.m05) | ||||
|         theta_e(6) = TOSG(기상데이터.m06) | ||||
|         theta_e(7) = TOSG(기상데이터.m07) | ||||
|         theta_e(8) = TOSG(기상데이터.m08) | ||||
|         theta_e(9) = TOSG(기상데이터.m09) | ||||
|         theta_e(10) = TOSG(기상데이터.m10) | ||||
|         theta_e(11) = TOSG(기상데이터.m11) | ||||
|         theta_e(12) = TOSG(기상데이터.m12) | ||||
|  | ||||
|         '//월별평균일사(기상데이터) 9개를 가져온다. 그중 최대부하값만 취한다. | ||||
|         '//현재 기상ROW의 CODE 와같은 Weather ilsa 데이터를 가져온다. | ||||
|         '//엑셀의 0 to 8 은 9개의 평균일사 데이터를 의미한다 | ||||
|         Dim DRow일사() As DS.weather_ilsaRow = CType(DSET1.weather_ilsa.Select("pcode='" & 기상데이터.code & "'", "code"), DS.weather_ilsaRow()) | ||||
|         If DRow일사.GetUpperBound(0) = -1 Then | ||||
|             MsgBox("월별평균일사데이터중 " & 기상데이터.code & "에 해당되는 지역이 없습니다", MsgBoxStyle.Critical, "CShared") | ||||
|             Me.IsError = True | ||||
|         Else | ||||
|  | ||||
|             For i As Short = 0 To 8 'DRow일사.GetUpperBound(0) <- 이식을 사용하려했으나 45도용데이터떄문에 사용못함 | ||||
|                 Dim DR일사 As DS.weather_ilsaRow = DRow일사(i) | ||||
|                 I_s(i, 0) = TOSG(DR일사.최대부하) | ||||
|                 I_s(i, 1) = TOSG(DR일사.m01) | ||||
|                 I_s(i, 2) = TOSG(DR일사.m02) | ||||
|                 I_s(i, 3) = TOSG(DR일사.m03) | ||||
|                 I_s(i, 4) = TOSG(DR일사.m04) | ||||
|                 I_s(i, 5) = TOSG(DR일사.m05) | ||||
|                 I_s(i, 6) = TOSG(DR일사.m06) | ||||
|                 I_s(i, 7) = TOSG(DR일사.m07) | ||||
|                 I_s(i, 8) = TOSG(DR일사.m08) | ||||
|                 I_s(i, 9) = TOSG(DR일사.m09) | ||||
|                 I_s(i, 10) = TOSG(DR일사.m10) | ||||
|                 I_s(i, 11) = TOSG(DR일사.m11) | ||||
|                 I_s(i, 12) = TOSG(DR일사.m12) | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\일사.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("기상코드  I   M0  1   2   3   4   5   6   7   8   9   10  11  12") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(기상데이터.code + vbTab + i.ToString() + vbTab + DR일사.최대부하 + vbTab + _ | ||||
|                 '                             DR일사.m01 + vbTab + DR일사.m02 + vbTab + DR일사.m03 + vbTab + DR일사.m04 + vbTab + DR일사.m05 + vbTab + _ | ||||
|                 '                             DR일사.m06 + vbTab + DR일사.m07 + vbTab + DR일사.m08 + vbTab + DR일사.m09 + vbTab + DR일사.m10 + vbTab + DR일사.m11 + vbTab + DR일사.m12) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|  | ||||
|             Next | ||||
|         End If | ||||
|  | ||||
|         '=============================================================================2010.02.26 추가 | ||||
|         Dim DRow차양() As DS.weather_chaRow = CType(DSET1.weather_cha.Select("pcode='" & 기상데이터.code & "'", "code"), DS.weather_chaRow()) | ||||
|         If DRow차양.GetUpperBound(0) = -1 Then | ||||
|             MsgBox("월별차양감소데이터중 " & 기상데이터.code & "에 해당되는 지역이 없습니다", MsgBoxStyle.Critical, "CShared") | ||||
|             Me.IsError = True | ||||
|         Else | ||||
|             '//차양감소계수 추가 | ||||
|             For i As Short = 0 To 7 '총 8개의 종류가있따. | ||||
|                 Dim DR차양 As DS.weather_chaRow = DRow차양(i) | ||||
|                 F_sh_gl(i, 0) = TOSG(DR차양.m01) | ||||
|                 F_sh_gl(i, 1) = TOSG(DR차양.m02) | ||||
|                 F_sh_gl(i, 2) = TOSG(DR차양.m03) | ||||
|                 F_sh_gl(i, 3) = TOSG(DR차양.m04) | ||||
|                 F_sh_gl(i, 4) = TOSG(DR차양.m05) | ||||
|                 F_sh_gl(i, 5) = TOSG(DR차양.m06) | ||||
|                 F_sh_gl(i, 6) = TOSG(DR차양.m07) | ||||
|                 F_sh_gl(i, 7) = TOSG(DR차양.m08) | ||||
|                 F_sh_gl(i, 8) = TOSG(DR차양.m09) | ||||
|                 F_sh_gl(i, 9) = TOSG(DR차양.m10) | ||||
|                 F_sh_gl(i, 10) = TOSG(DR차양.m11) | ||||
|                 F_sh_gl(i, 11) = TOSG(DR차양.m12) | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\차양.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("기상코드  I   M0  1   2   3   4   5   6   7   8   9   10  11") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(기상데이터.code + vbTab + i.ToString() + vbTab + _ | ||||
|                 '                             DR차양.m01 + vbTab + DR차양.m02 + vbTab + DR차양.m03 + vbTab + DR차양.m04 + vbTab + DR차양.m05 + vbTab + _ | ||||
|                 '                             DR차양.m06 + vbTab + DR차양.m07 + vbTab + DR차양.m08 + vbTab + DR차양.m09 + vbTab + DR차양.m10 + vbTab + DR차양.m11 + vbTab + DR차양.m12) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|  | ||||
|             Next | ||||
|         End If | ||||
|  | ||||
|         '=============================================================================2010.02.26 추가 | ||||
|         'For i = 0 To 7 | ||||
|         '    For j = 0 To 11 | ||||
|         '        F_sh_gl(i, j) = Worksheets("기상데이타").Range("차양감소계수1").Offset(i * 13 + j, i_count_location - 1) | ||||
|         '    Next | ||||
|         'Next | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										892
									
								
								ArinWarev1/Calculator/CSummary.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										892
									
								
								ArinWarev1/Calculator/CSummary.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,892 @@ | ||||
| Public Class CSummary | ||||
|     Public Event Message(ByVal Msg As String, pval As Integer, pmin As Integer, pmax As Integer)    '//메세지표시 | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pdsetr As DSR, ByRef presult As CResult) | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|     End Sub | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 모든 집계데이터를 갱신합니다. | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub All() | ||||
|  | ||||
|         ''TMon() | ||||
|         RaiseEvent Message("최종데이터 집계중..." + vbCrLf + "잠시만기다려주세요", 1, 0, 1) | ||||
|  | ||||
|         For Each Dr As C에너지분석 In Result.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다. '//LoadOfZone 에서 계산완료한다. | ||||
|             Dr.Calc() | ||||
|         Next | ||||
|         Result.최대부하.Calc_Summary()    '//최대냉난방부하(합계-zone='00') 계산 | ||||
|         'Result.생산E(0).Calc_Summary()    '//합계필드(M00)에데이터를 누적합니다. | ||||
|         Result.일차E소요량(0).Calc_Summary()   '//1차소요량의 합계데이터를 계산 | ||||
|         Result.E소요량(0).Calc_Summary()   '//1차소요량의 합계데이터를 계산 | ||||
|  | ||||
|         'TReqUse_M01M12() '//이것들은 현재 사용하지 않고있다. | ||||
|         'TReqUse_M00()    '//현재 사용하지않고있따. | ||||
|  | ||||
|         Me.Make_ResultSheet()    '//최종결과를 보여주는 시트를 작성한다. | ||||
|         DSETR.AcceptChanges()   '//변경된모든내용을 적용함 | ||||
|     End Sub | ||||
|  | ||||
| #Region "미사용개체" | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 1월부터 10월까지 집계데이터를 계산한다. | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub TReqUse_M01M12() | ||||
|         For i As Short = 1 To 12 | ||||
|             'MOn = "M" & Format(i, "00") | ||||
|             'Dim DR() As DSR.TReqUseRow = CType(DSETR.TReqUse.Select("", "code"), DSR.TReqUseRow()) | ||||
|  | ||||
|  | ||||
|             ''//////////////////////////////////// | ||||
|             ''         연간 Co2 배출량 | ||||
|             ''//////////////////////////////////// | ||||
|  | ||||
|             ''조명/환기에너지소요량 | ||||
|             'DR(56 - 1)(MOn) = CType(DSETR.월별에너지분석.Select("월='" & MOn & "' and 존='00'")(0), DSR.월별에너지분석Row).조명요구량 | ||||
|             'DR(57 - 1)(MOn) = CType(DSETR.월별에너지분석.Select("월='" & MOn & "' and 존='00'")(0), DSR.월별에너지분석Row).환기요구량 | ||||
|  | ||||
|             ''//SUMProduct 계산 | ||||
|             'Dim Acc1 as decimal = 0 | ||||
|             'Dim Acc2 as decimal = 0 | ||||
|             'For j As Short = 41 To 57 | ||||
|             '    Acc1 += Ru(j, MOn) * Ru(j, "sign") | ||||
|             'Next | ||||
|             'For j As Short = 58 To 59 | ||||
|             '    Acc2 += Ru(j, MOn) * Ru(j, "sign") | ||||
|             'Next | ||||
|             'Ru(ResultRow.CO2_연간배출량, MOn) = Acc1 - Acc2 '//최상단 합계(연가Co2배출량 | ||||
|  | ||||
|             ''//Excel 67번줄데이터가 필요하므로 먼저계산한다..해당데이터는 마지막(64번줄에 할당함) | ||||
|             ''//(I95+I96)/(I76+I82+I88+I90+I92)*$C$76 | ||||
|             'Ru(64, MOn) = (Ru(58, MOn) + Ru(59, MOn)) / (Ru(45, MOn) + Ru(50, MOn) + Ru(55, MOn) + Ru(56, MOn) + Ru(57, MOn)) * Ru(45, "sign") | ||||
|  | ||||
|             ''//난방에너지소요량(계수(sign)* Sumproduct) | ||||
|             'Dim ACc_Nan as decimal = 0 | ||||
|             'For j As Short = 41 To 45 | ||||
|             '    ACc_Nan += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|             'Dim ACc_Naeng as decimal = 0 | ||||
|             'For j As Short = 46 To 50 | ||||
|             '    ACc_Naeng += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|             'Dim ACc_KUb as decimal = 0 | ||||
|             'For j As Short = 51 To 55 | ||||
|             '    ACc_KUb += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|  | ||||
|             ''//67>64 | ||||
|             ''IF(csng(ru(7,"00"))=0,0,(ACc_Nan-ru(45,mon)*ru(64,mon))/$H$15)+IF($H$20=0,0,(SUMPRODUCT($C$78:$C$82,I78:I82)-I82*I67)/$H$20)+IF($H$26=0,0,(SUMPRODUCT($C$84:$C$88,I84:I88)-I88*I67)/$H$26)+IF($H$23=0,0,($C$90*I90-I90*I67)/$H$23)+IF($H$27=0,0,($C$92*I92-I92*I67)/$H$27) | ||||
|             ''IF(csng(ru(7))=0,0,(ACc_Nan-ru(45,mon)*ru(64,mon))/ru(7))+IF(ru(12)=0,0,(acc_naeng-ru(50,mon)*ru(64,mon))/ru(12))+IF(ru(18)=0,0,(acc_kub-ru(55,mon)*ru(64,mon))/ru(18))+IF(ru(15)=0,0,(ru(56,"sign")*ru(56,mon)-ru(56,mon)*ru(64,mon))/ru(15))+IF(ru(19)=0,0,(ru(57,"sign")*ru(57,mon)-ru(57,mon)*ru(64,mon))/ru(19)) | ||||
|  | ||||
|             ''//단위면적당Co2배출량) | ||||
|             'If Ru(ResultRow.요구량_난방_사용면적) = 0 Then | ||||
|             '    Ru(ResultRow.CO2_단위면적당배출량, MOn) = 0 | ||||
|             'Else | ||||
|             '    '(ACc_Nan-ru(45,mon)*ru(64,mon))/ru(7))+IF(ru(12)=0,0,(acc_naeng-ru(50,mon)*ru(64,mon))/ru(12))+IF(ru(18)=0,0,(acc_kub-ru(55,mon)*ru(64,mon))/ru(18))+IF(ru(15)=0,0,(ru(56,"sign")*ru(56,mon)-ru(56,mon)*ru(64,mon))/ru(15))+IF(ru(19)=0,0,(ru(57,"sign")*ru(57,mon)-ru(57,mon)*ru(64,mon))/ru(19) | ||||
|             '    Ru(ResultRow.CO2_단위면적당배출량, MOn) = (ACc_Nan - Ru(45, MOn) * Ru(64, MOn)) / Ru(7) + CSng(IIf(Ru(12) = 0, 0, (ACc_Naeng - Ru(50, MOn) * Ru(64, MOn)) / Ru(12))) + CSng(IIf(Ru(18) = 0, 0, (ACc_KUb - Ru(55, MOn) * Ru(64, MOn)) / Ru(18))) + CSng(IIf(Ru(15) = 0, 0, (Ru(56, "sign") * Ru(56, MOn) - Ru(56, MOn) * Ru(64, MOn)) / Ru(15))) + CSng(IIf(Ru(19) = 0, 0, (Ru(57, "sign") * Ru(57, MOn) - Ru(57, MOn) * Ru(64, MOn)) / Ru(19))) | ||||
|             'End If | ||||
|         Next | ||||
|     End Sub | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 에너지요구량및소요량 테이블의 M00(합계)를 누적(M01~M12)로 채웁니다. 그렇지않은건 이후에 합계프로시져별도로 생성함 | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub TReqUse_M00() | ||||
|         ''//LT(LineType 이 SL  Sum Line 인경우가져와서 m00 = m01~m12 한다 | ||||
|         'Dim DR() As DSR.TReqUseRow = CType(DSETR.TReqUse.Select("", "code"), DSR.TReqUseRow()) | ||||
|         'For Each Drs As DSR.TReqUseRow In DSETR.TReqUse.Select("lt='SL'") | ||||
|         '    Drs.M00 = Drs.M01 + Drs.M02 + Drs.M03 + Drs.M04 + Drs.M05 + Drs.M06 + Drs.M07 + Drs.M08 + Drs.M09 + Drs.M10 + Drs.M11 + Drs.M12 | ||||
|         'Next | ||||
|  | ||||
|         ''//커스텀 합계필드 계산 | ||||
|  | ||||
|         ''자주사용되는 SUM(1~12)를 미리 계산해둔다 | ||||
|         'Dim L45, L50, L55, L56, L57, L22, L27, L31, L33, L37 as decimal : Dim Drow As DSR.TReqUseRow | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(45 - 1), DSR.TReqUseRow) | ||||
|         'L45 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(50 - 1), DSR.TReqUseRow) | ||||
|         'L50 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(55 - 1), DSR.TReqUseRow) | ||||
|         'L55 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(56 - 1), DSR.TReqUseRow) | ||||
|         'L56 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(57 - 1), DSR.TReqUseRow) | ||||
|         'L57 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(22 - 1), DSR.TReqUseRow) | ||||
|         'L22 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(27 - 1), DSR.TReqUseRow) | ||||
|         'L27 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(31 - 1), DSR.TReqUseRow) | ||||
|         'L31 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(33 - 1), DSR.TReqUseRow) | ||||
|         'L33 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(37 - 1), DSR.TReqUseRow) | ||||
|         'L37 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         ''//실제 데이터 집계 | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(45 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L45 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L45 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(50 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L50 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 ' | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L50 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(55 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L55 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L55 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(56 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L56 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L56 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(57 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L57 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L57 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(22 - 1), DSR.TReqUseRow) | ||||
|         '' If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L22 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         'Drow.COLG = L22 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         ''    End If | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(27 - 1), DSR.TReqUseRow) | ||||
|         '' If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L27 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|         'Drow.COLG = L27 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|         '' End If | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(31 - 1), DSR.TReqUseRow) | ||||
|         ''  If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L31 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         'Drow.COLG = L31 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         ''        End If | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(33 - 1), DSR.TReqUseRow) | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L33 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         'Drow.COLG = L33 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         '' End If | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(20 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = DR(22 - 1).M00 + DR(27 - 1).M00 + DR(31 - 1).M00 + DR(33 - 1).M00 + DR(37 - 1).M00 | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(26 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(7 - 1).M00 = 0, 0, DR(22 - 1).M00 / DR(7 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(30 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(12 - 1).M00 = 0, 0, DR(27 - 1).M00 / DR(12 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(32 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(15 - 1).M00 = 0, 0, DR(31 - 1).M00 / DR(15 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(36 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(18 - 1).M00 = 0, 0, DR(33 - 1).M00 / DR(18 - 1).M00)) | ||||
|  | ||||
|  | ||||
|         ''=SUM(I58:T58)-(H95+H96)/(SUM(I76:T76)+SUM(I82:T82)+SUM(I88:T88)+SUM(I90:T90)+SUM(I92:T92))*SUM(I92:T92) | ||||
|         ''=L37-(ru(58)+ru(59))/(L45+L50+L55+L56+L57)*L57 | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(37 - 1), DSR.TReqUseRow)    '//환기에너지소요량(X) | ||||
|         ''    If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L37 - (Ru(58) + Ru(59)) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         'Drow.COLG = L37 - (Ru(58)) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         ''    End If | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(38 - 1), DSR.TReqUseRow)    '//환기에너지 단위면적당 소요량 | ||||
|         'Drow.M00 = CSng(IIf(Ru(19) = 0, 0, Ru(37) / Ru(19))) | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(21 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = DR(26 - 1).M00 + DR(30 - 1).M00 + DR(32 - 1).M00 + DR(36 - 1).M00 + DR(38 - 1).M00 | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
| #End Region | ||||
|  | ||||
|     Public Sub Make_ResultSheet() | ||||
|         '//에너지요구량 | ||||
|         DSETR.TReqUse.Clear() | ||||
|         DSETR.TReqUse.AcceptChanges() | ||||
|  | ||||
|         Dim Array As New ArrayList | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("100", "에너지요구량", "[kWh]", "Qb", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).면적당요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("100", "단위면적당 에너지 요구량", "[kWh/m²]", "Σ(Qb / Ab)", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량", "[kWh]", "QH,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량(열)", "[kWh]", "Qh,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방공조) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량(공조,환기)", "[kWh]", "Qh*,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QH,b / AH", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(난방)", "[m²]", "AH", "=", Result.사용면적.H, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량", "[kWh]", "QC,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량(열)", "[kWh]", "Qc,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방공조) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량(공조,환기)", "[kWh]", "Qc*,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QC,b / AC", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(냉방)", "[m²]", "AC", "=", Result.사용면적.C, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).조명요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "조명에너지 요구량", "[kWh]", "QL,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).조명면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QL,b / AL", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(조명)", "[m²]", "AL", "=", Result.사용면적.L, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).급탕요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "급탕에너지 요구량", "[kWh]", "QW,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).급탕면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QW,b / AW", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(급탕)", "[m²]", "AW", "=", Result.사용면적.W, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(환기)", "[m²]", "AV", "=", Result.사용면적.V, "N1") | ||||
|  | ||||
|         '//에너지소요량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("200", "에너지소요량", "[kWh]", "Qf", "", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).면적소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("200", "단위면적당 에너지 소요량", "[kWh/m²]", "Σ(Qf / Ab)", "", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "QH,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "Qh,f", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방보조에너지 소요량", "[kWh]", "Qh,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QH,f / AH", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "QC,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "Qc,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방보조에너지 소요량", "[kWh]", "Qc,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QC,f / AC", "=", Array, "N1") | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).조명S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "조명에너지 소요량", "[kWh]", "QL,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).조명면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QL,f / AL", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "QW,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "Qw,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕보조에너지 소요량", "[kWh]", "Qw,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QW,f / AW", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).환기S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "환기에너지 소요량", "[kWh]", "QV,aux", "=", Array)    '//36 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).환기면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QV.aux / AV", "=", Array, "N1") | ||||
|  | ||||
|         '//1차에너지 소요량(10-02 추가) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("300", "1차에너지 소요량", "[kWh]", "", "", Array)   '//38 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).단위면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("300", "단위면적당 1차에너지 소요량", "[kWh/m²]", "", "", Array, "N1")    '//39 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방 1차에너지 소요량", "", "", "", Array)  '//40 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열료 소요량", "[kWh]", "0.728", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//45 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).난방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//46 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "냉방 1차에너지 소요량", "", "", "", Array)  '//47 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array)  '//48 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//50 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방지역난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.728", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방지역냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역냉방열 소요량", "[kWh]", Result.E변환계수.지역냉방.ToString("N3"), "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//52 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).냉방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//53 | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "급탕 1차에너지 소요량", "", "", "", Array)  '//54 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array)  '//55 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//57 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.728", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//59 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).급탕펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//60 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "조명 1차에너지 소요량", "", "", "", Array)  '//61 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//62 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//63 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "환기 1차에너지 소요량", "", "", "", Array)  '//64 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//65 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//66 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).태양광전력생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전기에너지 생산량(태양광)", "[kWh]", CStr(Result.E변환계수.전력), "=", Array)    '//67 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).열병합전력생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전기에너지 생산량(열병합)", "[kWh]", CStr(Result.E변환계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).태양열생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "열에너지 생산량(태양열)", "[kWh]", "", "=", Array)  '//69 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).지열생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "열에너지 생산량(지열)", "[kWh]", "", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).면적당생산량태양열) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 생산량(태양열)", "[kWh]", "", "=", Array, "N1")    '//71 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).면적당생산량지열) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 생산량(지열)", "[kWh]", "", "=", Array, "N1")  '//72 | ||||
|  | ||||
|  | ||||
|         '//CO2배출량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("400", "연간 CO2 배출량", "[kg CO2]", "", "", Array)  '//73 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).단위면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("400", "단위면적당 CO2 배출량", "[kg CO2/m²]", "", "", Array, "N1")    '//74 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방 CO2 발생량", "", "", "", Array)  '//75 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역냉방), "=", Array) | ||||
|  | ||||
|         'Array.Clear() '//펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).난방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "펠렛 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "냉방 CO2 발생량", "", "", "", Array)  '//82 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방지역난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방지역냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역냉방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역냉방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         'Array.Clear() '//낸ㅇ방펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).냉방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "급탕 CO2 발생량", "", "", "", Array)  '//89 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         'Array.Clear() '//급탕펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).급탕펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "조명 CO2 발생량", "", "", "", Array)  '//96 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "환기 CO2 발생량", "", "", "", Array)  '//99 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         '//CO2저감량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).저감량태양광) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 저감량(태양광)", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) '//102 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).저감량열병합) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 저감량(열병합)", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) '//103 | ||||
|         DSETR.AcceptChanges() | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Private Sub Set_ReqUseRow(ByVal GRP As String, ByVal desc As String, ByVal unit As String, ByVal sign As String, ByVal eq As String, ByVal Value As ArrayList, Optional ByVal F As String = "N0") | ||||
|         Dim DR As DSR.TReqUseRow : DR = DSETR.TReqUse.NewTReqUseRow | ||||
|  | ||||
|         DR.Code = Format(DSETR.TReqUse.Rows.Count + 1, "000") | ||||
|         DR.GRP = GRP  '//그룹 출력할떄 그룹으로 뽑는다. | ||||
|         DR.Desc = desc  '//설명 | ||||
|         DR.UNIT = unit  '//단위 | ||||
|         DR.SIGN = sign    '//기호 | ||||
|         DR.EQ = eq    '//등호 = | ||||
|         DR.M00 = TOSG(Value.Item(0)) | ||||
|         DR.M01 = TOSG(Value.Item(1)) | ||||
|         DR.M02 = TOSG(Value.Item(2)) | ||||
|         DR.M03 = TOSG(Value.Item(3)) | ||||
|         DR.M04 = TOSG(Value.Item(4)) | ||||
|         DR.M05 = TOSG(Value.Item(5)) | ||||
|         DR.M06 = TOSG(Value.Item(6)) | ||||
|         DR.M07 = TOSG(Value.Item(7)) | ||||
|         DR.M08 = TOSG(Value.Item(8)) | ||||
|         DR.M09 = TOSG(Value.Item(9)) | ||||
|         DR.M10 = TOSG(Value.Item(10)) | ||||
|         DR.M11 = TOSG(Value.Item(11)) | ||||
|         DR.M12 = TOSG(Value.Item(12)) | ||||
|         DR.F = F | ||||
|         DSETR.TReqUse.AddTReqUseRow(DR) | ||||
|     End Sub | ||||
|     Private Sub Set_ReqUseRow(ByVal GRP As String, ByVal desc As String, ByVal unit As String, ByVal sign As String, ByVal eq As String, ByVal Value As Decimal, Optional ByVal F As String = "N0") | ||||
|         Dim DR As DSR.TReqUseRow : DR = DSETR.TReqUse.NewTReqUseRow | ||||
|  | ||||
|         DR.Code = Format(DSETR.TReqUse.Rows.Count + 1, "000") | ||||
|         DR.GRP = GRP  '//그룹 출력할떄 그룹으로 뽑는다. | ||||
|         DR.Desc = desc  '//설명 | ||||
|         DR.UNIT = unit  '//단위 | ||||
|         DR.SIGN = sign    '//기호 | ||||
|         DR.EQ = eq    '//등호 = | ||||
|         DR.M00 = Value | ||||
|         DR.F = F | ||||
|         'DR.M01 = CSng(Value.Item(1)) | ||||
|         'DR.M02 = CSng(Value.Item(2)) | ||||
|         'DR.M03 = CSng(Value.Item(3)) | ||||
|         'DR.M04 = CSng(Value.Item(4)) | ||||
|         'DR.M05 = CSng(Value.Item(5)) | ||||
|         'DR.M06 = CSng(Value.Item(6)) | ||||
|         'DR.M07 = CSng(Value.Item(7)) | ||||
|         'DR.M08 = CSng(Value.Item(8)) | ||||
|         'DR.M09 = CSng(Value.Item(9)) | ||||
|         'DR.M10 = CSng(Value.Item(10)) | ||||
|         'DR.M11 = CSng(Value.Item(11)) | ||||
|         'DR.M12 = CSng(Value.Item(12)) | ||||
|         DSETR.TReqUse.AddTReqUseRow(DR) | ||||
|     End Sub | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										907
									
								
								ArinWarev1/Calculator/CZone.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										907
									
								
								ArinWarev1/Calculator/CZone.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,907 @@ | ||||
| Public Class CZone | ||||
|  | ||||
|     'Public Event PBarSet(ByVal min As Integer, ByVal max As Integer) '//프로그레시브바 초기화 | ||||
|     Public Event Message(ByVal Msg As String, pval As Integer, pmin As Integer, pmax As Integer)    '//메세지표시 | ||||
|     ' Public Event PBarVal(ByVal Value As Integer) '//프로그레시브 값설정 | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' (main)에너지요구량 계산 | ||||
|     ''' </summary> | ||||
|     ''' <param name="Calc_Use">에너지소요량을 추가로 계산하려면 True 를 입력</param> | ||||
|     ''' <param name="Log">로그가 입력될 스트링빌더</param> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Overridable Function Calc_LoadOfZones(showmsg As String, isSimul As Boolean, 기저비율 As Decimal, Optional ByVal p_난방설정온도 As Decimal = 20, Optional ByVal p_냉방설정온도 As Decimal = 26) As Boolean | ||||
|  | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|         pLog.Add("Calc_LoadOfZones") | ||||
|         pLog.Add(String.Format("기저비율:{0},난방설정온도:{1},냉방설정온도:{2}", 기저비율, p_난방설정온도, p_냉방설정온도)) | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|  | ||||
|         pLog.Add("요구량log는 임시 종료함", True) | ||||
|         pLog.LogEnable = False | ||||
|  | ||||
|  | ||||
|         Dim title As String = "" | ||||
|  | ||||
|         RaiseEvent Message(showmsg + "에너지요구량계산을 준비중입니다." + vbCrLf + "잠시만기다려주세요", 0, 0, 0) | ||||
|         'i_count_OpWe As Integer, d_we_month As Integer, Q_h_b_we as decimal,  ==================================2010.2.21 삭제 | ||||
|  | ||||
|         Dim t_24 As Integer, f_wind As Integer, t_NA As Integer, t_h_op_d As Integer, i_count_Is As Integer | ||||
|         Dim Delta_theta_er As Decimal, Delta_theta_i_NA As Decimal, Delta_theta_i_WE As Decimal, theta_i As Decimal, theta_i_h As Decimal, theta_i_c As Decimal, F_f As Decimal, F__F As Decimal, F_W As Decimal, F_S As Decimal, F_V As Decimal, h_r As Decimal, c_p_arhoa As Decimal, e_wind As Decimal, n_50 As Decimal, n_ue As Decimal, n_mech As Decimal, n_inf As Decimal, A_B As Decimal, A_u As Decimal, h_u As Decimal, V As Decimal, V_ue As Decimal | ||||
|         Dim H_V_inf As Decimal, H_V_mech As Decimal, H_V_ue As Decimal, H_V_z As Decimal, theta_z As Decimal, theta_u As Decimal, H_T_D As Decimal, H_T_iu As Decimal, H_T_iz As Decimal, H_T_s As Decimal, Delta_U_WB As Decimal, H_V_mech_theta As Decimal, theta_i_h_soll As Decimal, theta_i_c_soll As Decimal, theta_V_mech As Decimal ', theta_e_min as decimal, theta_e_max as decimal | ||||
|         Dim C_wirk As Decimal, tau As Decimal, a As Decimal, a_tb As Decimal, f_we As Decimal, f_NA As Decimal, f_tb As Decimal, Q_h_max As Decimal, theta_V_mech_RLT As Decimal | ||||
|         Dim Q_V_inf_sink As Decimal, Q_V_mech_sink As Decimal, Q_V_z_sink As Decimal, Q_V_sink As Decimal, Q_T_e_sink As Decimal, Q_T_u_sink As Decimal, Q_T_z_sink As Decimal, Q_T_s_sink As Decimal, Q_T_sink As Decimal, Q_S_sink As Decimal, R_se As Decimal, Q_source As Decimal, Q_sink As Decimal, Q_I_source As Decimal | ||||
|         Dim Q_V_inf_source As Decimal, Q_V_mech_source As Decimal, Q_V_z_source As Decimal, Q_V_source As Decimal, Q_T_e_source As Decimal, Q_T_u_source As Decimal, Q_T_z_source As Decimal, Q_T_s_source As Decimal, Q_T_source As Decimal, Q_S_source As Decimal | ||||
|         Dim Q_I_source_p As Decimal, Q_I_source_fac As Decimal, Q_I_L As Decimal, Q_l_b As Decimal, Q_w_b As Decimal, gamma As Decimal, eta As Decimal, Q_h_b As Decimal, Q_h_b_op As Decimal, g_TI As Decimal | ||||
|         Dim V_mech As Decimal | ||||
|         'Dim d_op_month As Integer, theta_e_month as decimal | ||||
|         'Dim A_H as decimal, A_C as decimal, A_L as decimal, A_W as decimal, A_V as decimal | ||||
|         Dim Q_vh_b_op As Decimal | ||||
|         Dim g_blinds As Decimal, tau_e_B As Decimal, rho_e_B As Decimal, U_blinds As Decimal, tau_e_B_corr As Decimal, rho_e_B_corr As Decimal 'EN 13363-1 적용 | ||||
|         Dim g As Decimal, alpa As Decimal | ||||
|         'Dim i_sub_wall As Integer | ||||
|         Dim V_mech_outdoor As Decimal | ||||
|  | ||||
|         '//2010.02.04추가 | ||||
|         Dim Phi As Decimal | ||||
|         '//2010.02.21추가 | ||||
|         Dim d_op_mth As Integer | ||||
|         '//2011.04.04 추가 | ||||
|         Dim Q_V_win_sink As Decimal, Q_V_win_source As Decimal, H_V_win As Decimal, n_win As Decimal | ||||
|         Dim zone_count As Decimal '//2012.07.08 추가  입력존의 수 | ||||
|  | ||||
|         'Dim priod_value As Single = 0 | ||||
|         Dim age As Decimal = 1 '//준공연도에 의한 경년변화값 | ||||
|         'For Each DRpriod As DS.tbl_DescRow In DSET.tbl_Desc.Select("cname<>'0'", "cname") | ||||
|         '    priod_value = CSng(DRpriod.priod) | ||||
|         'Next | ||||
|         'If priod_value = 0 Then | ||||
|         '    age = 1 | ||||
|         'Else | ||||
|         '    age = 1 / (1 - priod_value * 0.0012) | ||||
|         'End If | ||||
|  | ||||
|         t_24 = 24 | ||||
|         F_f = 0.5 '구조체와 하늘과의 형태계수 | ||||
|         F__F = 0.7 '창 프레임 감소계수 __필요 | ||||
|         F_W = 0.9 '수직입사가 아닌경우에 대한 감소계수 | ||||
|         F_S = 1 '주변환경에 의한 그늘짐 | ||||
|         F_V = 1 '0.9 '우선 먼지팩터는 없는 것으로 가정 | ||||
|         h_r = 5 * 0.9 '= 5*e(모를경우 e=0.9) | ||||
|         Delta_theta_er = 10 | ||||
|         Delta_theta_i_NA = 4 '(용도별조건) | ||||
|         'theta_i = 21 | ||||
|         'theta_i_h = 21 | ||||
|         theta_i_h_soll = p_난방설정온도 ' 20  '//난방설정온도 | ||||
|         theta_i_c = 24 | ||||
|         theta_i_c_soll = p_냉방설정온도 ' 26 '//냉방설정온도 | ||||
|         theta_V_mech_RLT = 27 | ||||
|         'theta_e_min = -11.3 | ||||
|         'theta_e_max = 31.5 | ||||
|         c_p_arhoa = 0.34    '//먼지모름 | ||||
|         'n_50 = 1.5 | ||||
|         n_ue = 0.6 | ||||
|         e_wind = 0.07 | ||||
|         f_wind = 15 | ||||
|         R_se = 0.043 '외기에 직접 열전달저항 확인요망 | ||||
|         g_TI = 0.35 '(2-113) | ||||
|         alpa = 0.4 '우선 0.4으로 설정 표면흡수율 도표 2-6 참조 | ||||
|         n_mech = 1 '임시 | ||||
|         A_u = 1 | ||||
|         h_u = 1 '임시 | ||||
|  | ||||
|  | ||||
|  | ||||
|         RaiseEvent Message("요구량계산준비완료", 0, 0, 0) | ||||
|  | ||||
|  | ||||
|  | ||||
|         '///////////////////////////////////////////////////// | ||||
|         For i_count_HeatCool As Integer = 1 To 2 '(1)   루프회전 난방/냉방 구분해서 회전한다. 둘의 산식이 거의 비슷하므로 루프를 이용해서 계산 | ||||
|  | ||||
|             For i_count_month As Short = 0 To 12 '(2)    --월전체의 루프? | ||||
|  | ||||
|                 If i_count_HeatCool = 1 AndAlso i_count_month = 1 Then | ||||
|                     Console.WriteLine("col") | ||||
|                 End If | ||||
|  | ||||
|  | ||||
|                 title = showmsg + "요구량계산중..." & CStr(IIf(i_count_HeatCool = 1, "난방", "냉방")) & "(" & i_count_month & "/12)" | ||||
|  | ||||
|                 pLog.Add(String.Format("요구량계산({0}),Month={1}", IIf(i_count_HeatCool = 1, "난방", "냉방"), i_count_month), True) | ||||
|  | ||||
|                 RaiseEvent Message(title, i_count_month, 0, 12) | ||||
|  | ||||
|                 Dim Mon As String = "M" & Format(i_count_month, "00")   '//저장소의 필드명이 M00 식으로되어있다. | ||||
|                 If i_count_month = 0 Then '//난방이라면? '//최소외기온도 난방기(theta_e_min) | ||||
|                     Calc.Pub.theta_e(i_count_month) = TOSG(IIf(i_count_HeatCool = 1, Calc.Pub.theta_e_min, Calc.Pub.theta_e_max)) | ||||
|                     pLog.Add(String.Format(" Calc.Pub.theta_e({0}) = {1}", i_count_month, Calc.Pub.theta_e(i_count_month))) | ||||
|                 End If | ||||
|  | ||||
|                 '//존 루프 | ||||
|                 For Each DR존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") ' DSET.tbl_zone.Rows.Count '(3) | ||||
|  | ||||
|                     '//방식이나 공조는 ZZ는 사용안함이다 V=환기  외기부하처리여부의경우 0001 은 예이다. | ||||
|                     zone_count = TOSG(DR존.입력존의수) | ||||
|  | ||||
|                     pLog.Add(String.Format("Start Zone Code={0},Desc={1},입력존수={2}", DR존.code, DR존.설명, zone_count)) | ||||
|  | ||||
|                     If DR존.냉난방방식 <> "기능없음" Or (DR존.냉난방공조 <> "기능없음" And (DR존.냉난방공조 <> "환기" Or DR존.외기부하처리여부 = "예")) Then | ||||
|                         Q_vh_b_op = 0 | ||||
|  | ||||
|                         '//i_count_OpWe 1은 평일 2는 주말이다ㅡㅡ/ | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         'For i_count_OpWe = 1 To 2 | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         Q_V_inf_sink = 0 | ||||
|                         Q_V_inf_source = 0 | ||||
|                         Q_V_mech_sink = 0 | ||||
|                         Q_V_mech_source = 0 | ||||
|                         Q_V_z_sink = 0 | ||||
|                         Q_V_z_source = 0 | ||||
|                         Q_V_win_sink = 0 '//2011.04.04 추가 | ||||
|                         Q_V_win_source = 0 '//2011.04.04 추가 | ||||
|  | ||||
|                         Q_T_e_sink = 0 | ||||
|                         Q_T_e_source = 0 | ||||
|                         Q_T_u_sink = 0 | ||||
|                         Q_T_u_source = 0 | ||||
|                         Q_T_z_sink = 0 | ||||
|                         Q_T_z_source = 0 | ||||
|                         Q_T_s_sink = 0 | ||||
|                         Q_T_s_source = 0 | ||||
|  | ||||
|                         A_B = TOSG(DR존.면적) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                         V = TOSG(DR존.순실체적) ' Worksheets("입력존").Range("체적1").Offset(0, i_count_zone - 1) | ||||
|                         V_ue = A_u * h_u | ||||
|                         'Log.AppendLine("               >>  V_ue = A_u * h_u =  // au와 hu 는 선언부에서 1값으로 고정되어있음 v_ue는 항상 1") | ||||
|  | ||||
|                         '//존의 프로필설정에대한 실제 프로필의 데이터를 가져옴 | ||||
|                         Dim DR프로필() As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'"), DS.tbl_profileRow()) | ||||
|                         If DR프로필.GetUpperBound(0) = -1 Then | ||||
|                             MsgBox("존=" & DR존.code & " 의 프로필=" & DR존.프로필 & " 의 데이터가 존재하지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                             Return False | ||||
|                         Else | ||||
|                             'Log.AppendLine("               >>  존의 프로필코드(" & DR존.프로필 & ") 에 해당하는 프로필정보를 가져옵니다") | ||||
|                             t_h_op_d = TOIT(DR프로필(0).운전시간난방) '  Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                             '===================================================================================2010.2.21 추가 | ||||
|                             If i_count_month = 0 Then | ||||
|                                 d_op_mth = 0 | ||||
|                             Else | ||||
|                                 d_op_mth = CInt(TOSG(DR프로필(0)("day" & Format(i_count_month, "00")))) | ||||
|                             End If | ||||
|                             '===================================================================================2010.2.21 추가 | ||||
|                             If Not isSimul Then '//개선계산중이아닌경우에만 사용한다. | ||||
|                                 theta_i_h_soll = TOSG(DR프로필(0).난방설정온도) ' Worksheets("설정조건").Range("난방설정온도1").Offset(0, i_count_profile) | ||||
|                                 theta_i_c_soll = TOSG(DR프로필(0).냉방설정온도) ' Worksheets("설정조건").Range("냉방설정온도1").Offset(0, i_count_profile) | ||||
|                             End If | ||||
|                             Delta_theta_i_NA = TOSG(DR프로필(0).야간최저허용온도) ' Worksheets("설정조건").Range("야간최저허용온도1").Offset(0, i_count_profile) | ||||
|                             Delta_theta_i_WE = TOSG(DR프로필(0).주말최저허용온도) ' Worksheets("설정조건").Range("주말최저허용온도1").Offset(0, i_count_profile) | ||||
|                             '  If i_count_OpWe = 1 Then=============================================================2010.2.21 삭제 | ||||
|                             'Log.AppendLine("               >>  i_count_OpWe = 1 >> Q_I_source_p/Q_I_source_fac/V_mech 계산됨") | ||||
|                             Q_I_source_p = TOSG(DR프로필(0).사람) * A_B '  Worksheets("설정조건").Range("사람1").Offset(0, i_count_profile) * A_B '(2-118) | ||||
|                             Q_I_source_fac = (TOSG(DR프로필(0).작업보조기기) * A_B) + 기저비율 ' Worksheets("설정조건").Range("작업보조기기1").Offset(0, i_count_profile) * A_B '(2-119) | ||||
|                             V_mech = TOSG(DR프로필(0).최소도입외기량) * A_B '  Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) * A_B | ||||
|                             '    Else   '=============================================================2010.2.21 삭제 | ||||
|                             '    Log.AppendLine("               >>  i_count_OpWe <> 1 >> Q_I_source_p/Q_I_source_fac 는 0입니다") | ||||
|                             '    Q_I_source_p = 0 '주말 사람없음 | ||||
|                             '    Q_I_source_fac = 0 '주말 기기발열 없음 | ||||
|                             'End If | ||||
|                             'Q_I_L = 0 'mu_L*Q_I_L_elektr (2-123)추후 추가 | ||||
|                         End If | ||||
|  | ||||
|                         V_mech_outdoor = 1 '외기처리 관련 (ZZ=사용안함 Y=예) | ||||
|                         If DR존.냉난방방식 <> "기능없음" And DR존.냉난방공조 <> "기능없음" And DR존.외기부하처리여부 = "예" Then | ||||
|                             If i_count_HeatCool = 1 Then    '//난방이라면 | ||||
|                                 If DR존.냉난방공조 <> "난방" AndAlso DR존.냉난방공조 <> "냉난방" Then '난방/냉난방 이 아니면! | ||||
|                                     If theta_i_h_soll > Calc.Pub.theta_e(i_count_month) Then    '//난방설정온도 > 외기온도(난방기) | ||||
|                                         Q_vh_b_op = V_mech * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) * t_h_op_d * c_p_arhoa * d_op_mth * zone_count '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                                         V_mech_outdoor = 0 ' 외기처리된 상태인 경우 | ||||
|                                         'Log.AppendLine("               >>  외기처리됨") | ||||
|                                     End If | ||||
|                                 End If | ||||
|                             Else | ||||
|                                 If DR존.냉난방공조 <> "냉방" AndAlso DR존.냉난방공조 <> "냉난방" Then '냉방/냉난방이 아닐경우 | ||||
|                                     If theta_i_c_soll < Calc.Pub.theta_e(i_count_month) Then | ||||
|                                         Q_vh_b_op = V_mech * (Calc.Pub.theta_e(i_count_month) - theta_i_c_soll) * t_h_op_d * c_p_arhoa * d_op_mth * zone_count '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                                         V_mech_outdoor = 0 ' 외기처리된 상태인 경우 | ||||
|                                         'Log.AppendLine("               >>  외기처리됨") | ||||
|                                     End If | ||||
|                                 End If | ||||
|                             End If | ||||
|                         End If | ||||
|  | ||||
|                         pLog.Add(String.Format("Q_vh_b_op:{0},V_mech_outdoor:{1}", Q_vh_b_op, V_mech_outdoor)) | ||||
|  | ||||
|  | ||||
|  | ||||
|                         n_50 = TOSG(DR존.침기율)    '//tosg 는 빈값일경우 0을 반환 | ||||
|                         n_inf = n_50 * e_wind '(2-59) 환기기기 없는 경우 | ||||
|                         'n_inf = n_50 * e_wind * (1 + f_V_mech * t_V_mech / 24) '(2-60) 급기 및 배기에 대한 환기회수 필요 | ||||
|                         '///////////////////////////////////////////////////////////////////////////////////////////////////////2011.04.04 추가 | ||||
|                         'If n_nutz < 1.2 Then | ||||
|                         '    Delta_n_win = n_nutz - (n_nutz - 0.2) * n_inf - 0.1 | ||||
|                         'Else | ||||
|                         '    Delta_n_win = n_nutz - n_inf - 0.1 | ||||
|                         'End If | ||||
|                         'If Delta_n_win < 0 Then | ||||
|                         '    Delta_n_win = 0 | ||||
|                         'End If | ||||
|                         'n_win = 0.1 + Delta_n_win * t_h_op_d / 24 | ||||
|                         n_win = 0.1 ' 최소외기 도입량은 환기기기 유무와 상관없이 적용되는 것으로 평가하기 때문에 자연환기 기본값만 적용 | ||||
|                         '///////////////////////////////////////////////////////////////////////////////////////////////////////2011.04.04 추가 | ||||
|  | ||||
|  | ||||
|                         H_T_D = 0 | ||||
|                         H_T_iu = 0 | ||||
|                         H_T_iz = 0 | ||||
|  | ||||
|  | ||||
|                         Dim Drow프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                         If DR존.조명부하산출방법 = "계산치" Then | ||||
|                             Q_I_L = TOSG(DR존.조명에너지부하율계산치) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         Else | ||||
|                             Q_I_L = TOSG(DR존.조명에너지부하율입력치) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         End If | ||||
|                         'Q_I_L = TOSG(IIf(DR존.조명부하산출방법 = "계산치", TOSG(DR존.조명에너지부하율계산치), TOSG(DR존.조명에너지부하율입력치))) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         Q_w_b = TOSG(Drow프로필.일일급탕요구량) * A_B * d_op_mth | ||||
|                         '===================================2010.2.21 삭제 | ||||
|                         'If DR존.조명부하산출방법 = "CALC" Then    '//OpWe의 2번은 주말인거 같다. | ||||
|                         '    '//부하율계산치?입력치구분 | ||||
|                         '    Q_w_b = TOSG(DR존.급탕요구량) * A_B * Calc.Pub.d_op_mth(i_count_month) | ||||
|                         'Else | ||||
|                         '    Q_I_L = 0 '주말 소등으로 설정 | ||||
|                         '    Q_w_b = 0 '주말은 급탕사용안함 | ||||
|                         'End If | ||||
|                         '===================================2010.2.21 삭제 | ||||
|  | ||||
|                         'Log.AppendLine("               >>  현재존을 사용하는 각 입력면(" & DSET.tbl_myoun.Select("존분류='" & DR존.code & "'").GetUpperBound(0) & ")으로부터 데이터를 누적") | ||||
|                         For Each Dr입력면 As DS.tbl_myounRow In DSET.tbl_myoun.Select("존분류='" & DR존.code & "'") | ||||
|                             If Dr입력면.code <> "0" Then | ||||
|                                 If DR존.열교가산치 = "내단열" Then | ||||
|                                     Delta_U_WB = 0.15                            '내단열(=0001) Worksheets("입력존").Range("열교1").Offset(0, i_count_zone - 1) = "내단열" Then | ||||
|                                 Else | ||||
|                                     Delta_U_WB = 0.1                               '내단열(=0001) Worksheets("입력존").Range("열교1").Offset(0, i_count_zone - 1) = "내단열" Then | ||||
|                                 End If | ||||
|                                 Select Case Dr입력면.건축부위방식.Trim ' Case Worksheets("입력면").Range("입력부위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                     Case "외벽" '"외벽" | ||||
|                                         'Dr입력면.열관류율 >> Calc.Get_열관류율(Dr입력면) | ||||
|                                         H_T_D = H_T_D + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) + Delta_U_WB * TOSG(Dr입력면.건축부위면적) ' Worksheets("입력면").Range("부위면적" & i_sub_wall & "").Offset(0, i_count_wall) '(2-44) Delta_U_WB는 외단열 0.1, 내단열 0.15 | ||||
|                                     Case "외부창", "내부창" '=================2010.03.20 수정 | ||||
|                                         If Dr입력면.블라인드유무 = "유" Then ' '0001(=유) Range("에너지투과율" & i_sub_wall & "").Offset(3, i_count_wall) = "유" Then    | ||||
|                                             If Calc.Get_열관류율(Dr입력면) = 0 Then | ||||
|                                                 MsgBox("블라인드 사용이지만 열관류율 수치가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                             Else | ||||
|                                                 Select Case Dr입력면.블라인드위치.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(4, i_count_wall) | ||||
|                                                     Case "내부" '"내부" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 30)) | ||||
|                                                     Case "중간" '중간" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 3)) | ||||
|                                                     Case "외부" ' '외부" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 5 + 1 / 10)) | ||||
|                                                 End Select | ||||
|                                             End If | ||||
|  | ||||
|                                         Else | ||||
|                                             U_blinds = Calc.Get_열관류율(Dr입력면) * age 'Worksheets("입력면").Range("열관류율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                         End If | ||||
|  | ||||
|                                         '=========================================================================================================2010.03.20 수정 | ||||
|                                         If Dr입력면.건축부위방식.Trim = "외부창" Then | ||||
|                                             H_T_D = H_T_D + U_blinds * TOSG(Dr입력면.건축부위면적) + Delta_U_WB * TOSG(Dr입력면.건축부위면적) '(2-44) Delta_U_WB는 외단열 0.1, 내단열 0.15 | ||||
|                                         Else | ||||
|                                             H_T_iu = H_T_iu + U_blinds * TOSG(Dr입력면.건축부위면적) | ||||
|                                         End If | ||||
|                                         '=========================================================================================================2010.03.20 수정 | ||||
|                                     Case "내벽" ' "내벽" | ||||
|                                         H_T_iu = H_T_iu + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) '(2-48) | ||||
|                                     Case "간벽" '"간벽" | ||||
|                                         H_T_iz = H_T_iz + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) '(2-52) | ||||
|                                     Case Else | ||||
|                                         MsgBox("입력면 건축부위방식이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                         Return False | ||||
|                                 End Select | ||||
|                             End If | ||||
|                         Next | ||||
|  | ||||
|  | ||||
|                         If H_T_D = 0 Then | ||||
|                             H_V_inf = 0 | ||||
|                         Else | ||||
|                             H_V_inf = n_inf * V * c_p_arhoa '(2-58) c_p_arhoa는 0.34 V는 존의 체적 | ||||
|                         End If | ||||
|                         H_V_win = n_win * V * c_p_arhoa '//2011.04.04 추가 | ||||
|                         H_V_mech = V_mech * c_p_arhoa 'n_mech * V * c_p_arhoa '(2-83) | ||||
|                         H_V_ue = n_ue * V_ue * c_p_arhoa '(2-94) | ||||
|                         'H_V_z = n_z_d * c_p_arhoa '(2-99) | ||||
|  | ||||
|                         pLog.Add(String.Format("H_V_inf:{0},H_V_win:{1},H_V_mech:{2},H_V_ue:{3}", H_V_inf, H_V_win, H_V_mech, H_V_ue)) | ||||
|  | ||||
|  | ||||
|                         If DR존.열저장능력 = "" Then | ||||
|                             MsgBox(DR존.설명 & "의 열저장능력이 입력되어 있지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                             C_wirk = 0 | ||||
|                         Else | ||||
|                             C_wirk = TOSG(DR존.열저장능력) * A_B ' .Worksheets("입력존").Range("열저장능력1").Offset(0, i_count_zone - 1) * A_B | ||||
|                         End If | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             H_V_mech_theta = 0 'H_V_mech * (theta_i_h_soll - theta_V_mech) / 6 '(2-130) 우선 고려안함 | ||||
|                         Else | ||||
|                             H_V_mech_theta = 0 'H_V_mech * (theta_i_c_soll - theta_V_mech) / 6 '(2-130) | ||||
|                         End If | ||||
|                         tau = C_wirk / ((H_T_D + H_T_iu + H_T_iz) + (H_V_inf + H_V_mech + H_V_ue + H_V_win) + H_V_mech_theta) '(2-22, 129) 추후 H_V_z 추가 '//2011.04.04 H_V_win 추가 | ||||
|                         If tau < 48 Then tau = 48 | ||||
|  | ||||
|                         a = 1 + tau / 16 '(2-25) | ||||
|  | ||||
|                         a_tb = 1 ' =A_beheizt / A_B 'A_beheizt는 난방면적, A_B는 전용면적 | ||||
|  | ||||
|                         t_NA = 24 - t_h_op_d | ||||
|                         f_tb = TOSG(0.8 * (1 - Math.Exp(-Q_h_max / (A_B * 35))) * a_tb ^ 2) '(2-34) | ||||
|  | ||||
|                         pLog.Add(String.Format("t_NA:{0},f_tb:{1}", t_NA, f_tb)) | ||||
|  | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'If i_count_OpWe = 1 Then | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         Select Case DR존.야간운전방식.Trim '공통1002 Worksheets("입력존").Range("야간가동1").Offset(0, i_count_zone - 1) | ||||
|                             Case "정상가동" '정상가동" | ||||
|                                 f_NA = 0 | ||||
|                             Case "감소가동" '감소가동" | ||||
|                                 f_NA = TOSG(0.13 * t_NA * Math.Exp(-tau / 250) / 24) '(2-28) 감소가동 | ||||
|                             Case "가동정지" '가동정지" | ||||
|                                 f_NA = TOSG(0.26 * t_NA * Math.Exp(-tau / 250) / 24) '(2-29) 가동정지 | ||||
|                         End Select | ||||
|                         theta_i_h = theta_i_h_soll - f_NA * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) | ||||
|                         If theta_i_h < theta_i_h_soll - Delta_theta_i_NA * t_NA / 24 Then theta_i_h = theta_i_h_soll - Delta_theta_i_NA * t_NA / 24 '(2-27) 야간감소 | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'Else | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         Select Case DR존.주말운전방식.Trim ' Worksheets("입력존").Range("주말가동1").Offset(0, i_count_zone - 1) | ||||
|                             Case "정상가동" '정상가동" | ||||
|                                 f_we = 0 | ||||
|                             Case "감소가동" '감소가동" | ||||
|                                 f_we = TOSG(0.2 * (1 - 0.4 * tau / 250)) '(2-31) 난방감소 | ||||
|                             Case "가동정지" '가동정지" | ||||
|                                 f_we = TOSG(0.3 * (1 - 0.2 * tau / 250)) '(2-32) 난방정지식 | ||||
|                         End Select | ||||
|                         theta_i_h = theta_i_h_soll - f_we * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) | ||||
|                         If theta_i_h < theta_i_h_soll - Delta_theta_i_WE Then theta_i_h = theta_i_h_soll - Delta_theta_i_WE '(2-30) 주말감소식 변형 | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|  | ||||
|                         pLog.Add(String.Format("theta_i_h:{0}", theta_i_h)) | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             theta_i = theta_i_h | ||||
|                             theta_z = theta_i_h | ||||
|                             theta_u = TOSG(theta_i_h_soll - 0.7 * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month))) | ||||
|                         Else | ||||
|                             theta_i = theta_i_c_soll '24'에너지 사용량 계산할때 24 사용 | ||||
|                             theta_z = theta_i_c_soll | ||||
|                             theta_u = TOSG(theta_i_c_soll - 0.7 * (theta_i_c_soll - Calc.Pub.theta_e(i_count_month))) | ||||
|                         End If | ||||
|  | ||||
|                         'theta_i_h = theta_i_h_soll - f_tb * (theta_i_h_soll - theta_e(i_count_month)) '(2-33) 공간적제한 | ||||
|                         'theta_i_h = theta_i_NA - f_tb * (theta_i_NA - theta_e(i_count_month)) '(2-35) 공간적 시간적 제한 | ||||
|  | ||||
|                         'theta_V_mech = theta_e(i_count_month) '(2-90) 공조처리 없는 경우 | ||||
|                         'theta_V_mech = theta_e(i_count_month) + eta_V_mech * (theta_i - theta_e(i_count_month)) '(2-91) 비제어적 열교환 eta_V_mech은 사용자입력 | ||||
|                         theta_V_mech_RLT = TOSG(IIf(i_count_HeatCool = 1, 27, 16)) | ||||
|  | ||||
|                         theta_V_mech = Calc.Pub.theta_e(i_count_month) 'theta_V_mech_RLT '(2-92) 공조처리된 급기온도(도표 3-3, 3-4, 7-5) 난방 27, 냉방 16으로 설정 | ||||
|  | ||||
|                         pLog.Add(String.Format("theta_i:{0},theta_z:{1},theta_u:{2},theta_V_mech_RLT:{3},theta_V_mech:{4}", theta_i, theta_z, theta_u, theta_V_mech_RLT, theta_V_mech)) | ||||
|  | ||||
|  | ||||
|                         '=======================================================================2010.02.04 추가부분 시작 | ||||
|                         If DR존.냉난방공조처리시스템 <> "0" And DR존.냉난방공조 = "환기" Then   '//냉난방공조처리시스템이 선택되어있고 공조가 환기라면 | ||||
|                             '//공조처리스템과 일치하는 공조기기(tbl_kongjo) 를 찾아서 계산한다. | ||||
|                             Dim DR() As DS.tbl_kongjoRow = CType(DSET.tbl_kongjo.Select("code='" & DR존.냉난방공조처리시스템 & "' and code <> '0'"), DS.tbl_kongjoRow()) | ||||
|                             If DR.GetUpperBound(0) = 0 Then | ||||
|                                 Select Case DR(0).열교환기유형.Trim | ||||
|                                     Case "현열교환", "전열교환" '//현열교환,전열교환 | ||||
|                                         Phi = TOSG(DR(0).열회수율) ' Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) | ||||
|                                     Case Else | ||||
|                                         Phi = 0 | ||||
|                                 End Select | ||||
|                                 theta_V_mech = Calc.Pub.theta_e(i_count_month) + Phi * (theta_i - Calc.Pub.theta_e(i_count_month)) | ||||
|                             Else | ||||
|                                 MsgBox(DR존.설명 & "존의 냉난방공조처리스템(" & DR존.냉난방공조처리시스템 & ") 의값이 일치하지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                             End If | ||||
|                         End If | ||||
|                         '=======================================================================2010.02.04 추가부분 끝 | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_V_inf_sink = H_V_inf * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-56) | ||||
|                             Q_V_win_sink = H_V_win * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '//2011.04.04 추가 | ||||
|                         Else | ||||
|                             Q_V_inf_source = H_V_inf * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2- | ||||
|                             Q_V_win_source = H_V_win * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '//2011.04.04 추가 | ||||
|                         End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'If i_count_OpWe = 1 Then | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         If theta_i > theta_V_mech Then | ||||
|                             Q_V_mech_sink = H_V_mech * V_mech_outdoor * (theta_i - theta_V_mech) * t_h_op_d '(2-81) | ||||
|                         Else | ||||
|                             Q_V_mech_source = H_V_mech * V_mech_outdoor * (theta_V_mech - theta_i) * t_h_op_d '(2- | ||||
|                         End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'Else | ||||
|                         'If theta_i > theta_V_mech Then | ||||
|                         '    Q_V_mech_sink = 0 | ||||
|                         'Else | ||||
|                         '    Q_V_mech_source = 0 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|  | ||||
|                         pLog.Add(String.Format("Q_V_inf_sink:{0},Q_V_win_sink:{1},Q_V_mech_sink:{2},Q_V_mech_source:{3}", _ | ||||
|                                                Q_V_inf_sink, Q_V_win_sink, Q_V_mech_sink, Q_V_mech_source)) | ||||
|  | ||||
|  | ||||
|                         If theta_i > theta_z Then | ||||
|                             Q_V_z_sink = H_V_z * (theta_i - theta_z) * t_24 '(2-97) | ||||
|                         Else | ||||
|                             Q_V_z_source = H_V_z * (theta_z - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|  | ||||
|                         Q_V_sink = Q_V_inf_sink + Q_V_mech_sink + Q_V_z_sink + Q_V_win_sink '(2-13) '//2011.04.04 추가 | ||||
|  | ||||
|                         '//Console.WriteLine(String.Format("mon={0},QV_sink={1},{2},{3},{4},{5}", i_count_month, Q_V_sink, Q_V_inf_sink, Q_V_mech_sink, Q_V_z_sink, Q_V_win_sink)) | ||||
|  | ||||
|                         Q_V_source = Q_V_inf_source + Q_V_mech_source + Q_V_z_source + Q_V_win_source '(2-  '//2011.04.04 추가 | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_T_e_sink = H_T_D * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-42) | ||||
|                         Else | ||||
|                             Q_T_e_source = H_T_D * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > theta_u Then | ||||
|                             Q_T_u_sink = H_T_iu * (theta_i - theta_u) * t_24 '(2-46) | ||||
|                         Else | ||||
|                             Q_T_u_source = H_T_iu * (theta_u - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > theta_z Then | ||||
|                             Q_T_z_sink = H_T_iz * (theta_i - theta_z) * t_24 '(2-50) | ||||
|                         Else | ||||
|                             Q_T_z_source = H_T_iz * (theta_z - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_T_s_sink = H_T_s * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-53) 추후수정 | ||||
|                         Else | ||||
|                             Q_T_s_source = H_T_s * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2-53) 추후수정 | ||||
|                         End If | ||||
|  | ||||
|                         Q_T_sink = Q_T_e_sink + Q_T_u_sink + Q_T_z_sink + Q_T_s_sink '(2-12) | ||||
|                         Q_T_source = Q_T_e_source + Q_T_u_source + Q_T_z_source + Q_T_s_source '(2-12) | ||||
|  | ||||
|                         Q_S_sink = 0 | ||||
|                         Q_S_source = 0 | ||||
|  | ||||
|                         pLog.Add(String.Format("Q_T_sink:{0},Q_T_source:{1}", Q_T_sink, Q_T_source)) | ||||
|  | ||||
|                         For Each DRF입력면 As DS.tbl_myounRow In DSET.tbl_myoun.Select("존분류='" & DR존.code & "' and code <> '0'")    '//해당존을 사용하는 모든 입력면을 가져옴 | ||||
|                             Select Case DRF입력면.방위.Trim ' Worksheets("입력면").Range("방위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                 Case "수평" '"수평" | ||||
|                                     i_count_Is = 0 | ||||
|                                 Case "남" '"남" | ||||
|                                     i_count_Is = 1 | ||||
|                                 Case "남동" '"남동" | ||||
|                                     i_count_Is = 2 | ||||
|                                 Case "남서" '"남서" | ||||
|                                     i_count_Is = 3 | ||||
|                                 Case "동" '"동" | ||||
|                                     i_count_Is = 4 | ||||
|                                 Case "서" '"서" | ||||
|                                     i_count_Is = 5 | ||||
|                                 Case "북동" '"북동" | ||||
|                                     i_count_Is = 6 | ||||
|                                 Case "북서" '"북서" | ||||
|                                     i_count_Is = 7 | ||||
|                                 Case "북" '"북" | ||||
|                                     i_count_Is = 8 | ||||
|                                     '==========================================================2010.03.20 추가 | ||||
|                                 Case Else | ||||
|                                     i_count_Is = -1 | ||||
|                                     '==========================================================2010.03.20 추가 | ||||
|                             End Select | ||||
|  | ||||
|                             If i_count_Is <> -1 Then '=====================================2010.03.20 추가 | ||||
|  | ||||
|  | ||||
|                                 Select Case DRF입력면.건축부위방식.Trim ' Range("입력부위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                     Case "외벽" '외벽 | ||||
|                                         If alpa * Calc.Pub.I_s(i_count_Is, i_count_month) < F_f * h_r * Delta_theta_er Then | ||||
|                                             Q_S_sink = Q_S_sink + R_se * Calc.Get_열관류율(DRF입력면) * age * TOSG(DRF입력면.건축부위면적) * (F_f * h_r * Delta_theta_er - alpa * Calc.Pub.I_s(i_count_Is, i_count_month)) * t_24 '(2-111) | ||||
|                                         Else | ||||
|                                             'Log.AppendLine("외벽 if else = " & Q_S_source) | ||||
|                                             Q_S_source = Q_S_source + R_se * Calc.Get_열관류율(DRF입력면) * age * TOSG(DRF입력면.건축부위면적) * (alpa * Calc.Pub.I_s(i_count_Is, i_count_month) - F_f * h_r * Delta_theta_er) * t_24 '(2- | ||||
|                                             'Log.AppendLine(">>" & Q_S_source) | ||||
|                                         End If | ||||
|  | ||||
|                                     Case "외부창", "내부창" '=====================================2010.03.20 수정 | ||||
|                                         If TOSG(DRF입력면.수평차양각) < 67.5 Then 'Range("에너지투과율" & i_sub_wall & "").Offset(1, i_count_wall) < 67.5 Then | ||||
|  | ||||
|                                             If DRF입력면.블라인드유무 = "유" Then ' Range("에너지투과율" & i_sub_wall & "").Offset(3, i_count_wall) = "유" Then | ||||
|                                                 Select Case DRF입력면.블라인드빛종류.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(6, i_count_wall) | ||||
|                                                     Case "불투과(t=0.0)" '불투과(t=0.0)" | ||||
|                                                         tau_e_B = 0 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" '흰색" | ||||
|                                                                 rho_e_B = 0.7 | ||||
|                                                             Case "밝은색" '밝은색" | ||||
|                                                                 rho_e_B = 0.5 | ||||
|                                                             Case "어두운색" '어두운색" | ||||
|                                                                 rho_e_B = 0.3 | ||||
|                                                             Case "검은색" '검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("불투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                     Case "약투과(t=0.2)" '약투과(t=0.2)" | ||||
|                                                         tau_e_B = 0.2 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" | ||||
|                                                                 rho_e_B = 0.6 | ||||
|                                                             Case "밝은색" | ||||
|                                                                 rho_e_B = 0.4 | ||||
|                                                             Case "어두운색" | ||||
|                                                                 rho_e_B = 0.2 | ||||
|                                                             Case "검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("약투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                     Case "반투과(t=0.4)" '반투과(t=0.4)" | ||||
|                                                         tau_e_B = 0.4 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" | ||||
|                                                                 rho_e_B = 0.4 | ||||
|                                                             Case "밝은색" | ||||
|                                                                 rho_e_B = 0.3 | ||||
|                                                             Case "어두운색" | ||||
|                                                                 rho_e_B = 0.2 | ||||
|                                                             Case "검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("반투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                 End Select | ||||
|  | ||||
|                                                 If DRF입력면.블라인드각도 = "45도" Then ' Range("에너지투과율" & i_sub_wall & "").Offset(5, i_count_wall) = "45도" Then | ||||
|                                                     tau_e_B_corr = TOSG(0.65 * tau_e_B + 0.15 * rho_e_B) | ||||
|                                                     rho_e_B_corr = TOSG(rho_e_B * (0.75 + 0.7 * tau_e_B)) | ||||
|                                                     tau_e_B = tau_e_B_corr | ||||
|                                                     rho_e_B = rho_e_B_corr | ||||
|                                                 End If | ||||
|  | ||||
|                                                 g = TOSG(DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                                 If DRF입력면.블라인드위치.Trim <> "" AndAlso Calc.Get_열관류율(DRF입력면) = 0 Then | ||||
|                                                     MsgBox(DRF입력면.설명 & "의 열관류율이 0입니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                 Else | ||||
|                                                     Select Case DRF입력면.블라인드위치.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(4, i_count_wall) | ||||
|                                                         Case "내부" '내부" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 30)) | ||||
|                                                             g_blinds = g * (1 - g * rho_e_B - (1 - tau_e_B - rho_e_B) * U_blinds / 30) | ||||
|                                                         Case "중간" '중간" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 3)) | ||||
|                                                             g_blinds = g * tau_e_B + g * ((1 - tau_e_B - rho_e_B) + (1 - g) * rho_e_B) * U_blinds / 3 | ||||
|                                                         Case "외부" '외부" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 5 + 1 / 10)) | ||||
|                                                             g_blinds = tau_e_B * g + (1 - tau_e_B - rho_e_B) * U_blinds / 10 + tau_e_B * (1 - g) * g / 5 | ||||
|                                                         Case Else | ||||
|                                                             MsgBox("블라인드위치가 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                     End Select | ||||
|                                                 End If | ||||
|                                                 '===========================================================================2010.02.27 추가 | ||||
|                                                 If i_count_month = 0 Then | ||||
|                                                     If i_count_HeatCool = 1 Then | ||||
|                                                         g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, 1 - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, 1 - 1) * g_blinds | ||||
|                                                     Else | ||||
|                                                         g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, 7 - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, 7 - 1) * g_blinds | ||||
|                                                     End If | ||||
|                                                 Else | ||||
|                                                     g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1) * g_blinds | ||||
|                                                 End If | ||||
|                                                 '===========================================================================2010.02.27 추가 | ||||
|  | ||||
|                                             Else | ||||
|                                                 g_blinds = TOSG(DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|  | ||||
|                                             End If | ||||
|                                             If TOSG(DRF입력면.수평차양각) < 67.5 Then   '===================================================================2014.04.03 if문 추가 | ||||
|                                                 Q_S_source = TOSG(Q_S_source + F__F * TOSG(DRF입력면.건축부위면적) * F_S * F_W * F_V * g_blinds * Math.Cos(1.33 * TOSG(DRF입력면.수평차양각) * 3.141592 / 180) * (1 - TOSG(DRF입력면.수직차양각) / 300) * Calc.Pub.I_s(i_count_Is, i_count_month) * t_24) '(2-113) | ||||
|                                             End If | ||||
|  | ||||
|                                         End If | ||||
|                                 End Select | ||||
|                             End If '==========================================================2010.03.20 추가 | ||||
|                         Next | ||||
|  | ||||
|                         Q_I_source = Q_I_source_p + Q_I_source_fac + Q_I_L '(2-20) | ||||
|                         Q_source = Q_S_source + Q_T_source + Q_V_source + Q_I_source '(2-16) | ||||
|                         If i_count_month = 0 AndAlso i_count_HeatCool = 1 Then Q_source = 0 ' 난방 최대부하 계산 | ||||
|                         Q_sink = Q_T_sink + Q_V_sink + Q_S_sink '(2-11) Q_I_sink는 현재 고려안함 | ||||
|  | ||||
|                         If Q_sink = 0 Then | ||||
|                             eta = 0 | ||||
|                         Else | ||||
|                             gamma = Q_source / Q_sink '(2-21) | ||||
|                             'If gamma > 1.1 And a > 100 Then | ||||
|                             If gamma ^ a > 1000000 Then | ||||
|                                 eta = 1 / gamma | ||||
|                             Else | ||||
|                                 If gamma = 1 Then | ||||
|                                     eta = a / (a + 1) '(2-24) | ||||
|                                 Else | ||||
|                                     eta = TOSG((1 - gamma ^ a) / (1 - gamma ^ (a + 1))) '(2-23) | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             If 1 - (eta * gamma) < 0.01 Then eta = 1 / gamma '(2-137) | ||||
|                             If (1 - eta) * gamma < 0.01 Then eta = 1 '(2-138) | ||||
|                             'If V_mech >= Q_C_max / (c_p_arhoa * (theta_i - theta_mech)) Then eta = 1 '(2-139) 추후 고민 | ||||
|                         End If | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             Q_h_b = Q_sink - eta * Q_source '(2-1) | ||||
|                         Else | ||||
|                             Q_h_b = (1 - eta) * Q_source '(2-7) | ||||
|                         End If | ||||
|  | ||||
|                         If Q_h_b < 0.001 Then Q_h_b = 0 '1W 미만 제거 | ||||
|  | ||||
|                         pLog.Add(String.Format("Q_h_b:{0}", Q_h_b)) | ||||
|  | ||||
|                         '========================================================2010.2.21 수정 And i_count_OpWe = 1  삭제 | ||||
|                         If i_count_month = 0 Then | ||||
|                             If t_h_op_d <> 0 Then | ||||
|                                 Q_h_b_op = Q_h_b / t_h_op_d * zone_count | ||||
|                             Else | ||||
|                                 Q_h_b_op = Q_h_b * zone_count | ||||
|                             End If | ||||
|                         Else | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'If i_count_OpWe = 1 Then | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             Q_h_b_op = Q_h_b * d_op_mth * zone_count | ||||
|                             ' MsgBox(i_count_month & "    " & Q_h_b & "     " & d_op(i_count_month) & "     " & Q_h_b_op) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'Else | ||||
|                             'Q_h_b_we = Q_h_b * Calc.Pub.d_we(i_count_month) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             Dim DRProf As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                             If DR존.조명부하산출방법 = "계산치" Then 'Worksheets("조명").Range("조명부하산출방법1").Offset(0, i_count_zone - 1) = "계산치" Then | ||||
|                                 Q_l_b = TOSG(DR존.조명에너지부하율계산치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth * zone_count | ||||
|                             Else | ||||
|                                 Q_l_b = TOSG(DR존.조명에너지부하율입력치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth * zone_count | ||||
|                             End If | ||||
|                             Q_w_b = TOSG(DRProf.일일급탕요구량) * A_B * d_op_mth * zone_count 'Worksheets("입력존").Range("일일급탕요구량1").Offset(0, i_count_zone - 1) * A_B * d_op(i_count_month) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'End If | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                         End If | ||||
|                         'Q_h_b_mth = d_op(i_count_month) * (Q_sink_op - eta_op * Q_source_op) + d_we(i_count_month) * (Q_sink_we - eta_we * Q_source_we) '(2-6) | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         'Next | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                     Else | ||||
|                         A_B = TOSG(DR존.면적) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                         Q_vh_b_op = 0 | ||||
|                         Q_h_b_op = 0 | ||||
|                         'Q_h_b_we = 0 | ||||
|  | ||||
|                         '//조명부하산출방법이 계산치(0001)일경우 계산치로 그렇지않을경우 입력치로 계산함 | ||||
|                         Dim DRProf As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|  | ||||
|                         If DR존.조명부하산출방법 = "계산치" Then | ||||
|                             Q_l_b = TOSG(DR존.조명에너지부하율계산치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth * zone_count | ||||
|                         Else | ||||
|                             Q_l_b = TOSG(DR존.조명에너지부하율입력치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth * zone_count | ||||
|                         End If | ||||
|  | ||||
|                         Q_w_b = TOSG(DRProf.일일급탕요구량) * A_B * d_op_mth * zone_count '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                     End If | ||||
|  | ||||
|                     pLog.Add(String.Format("Q_w_b:{0}", Q_w_b)) | ||||
|  | ||||
|                     Dim Dr최대부하 As New C최대냉난방부하.Citem(DSETR, DR존.code) ' DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & DR존.code & "'")(0), DSR.최대냉난방부하Row) | ||||
|  | ||||
|                     If i_count_HeatCool = 1 Then | ||||
|                         If i_count_month = 0 Then   '//0번시트는최대 냉난방부하 시트이다. | ||||
|                             Dr최대부하.최대난방기기부하 = TOSG((Q_h_b_op) / 1000) ''=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                             'Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(0, i_count_zone - 1) = (Q_h_b_op + Q_h_b_we) / 1000 | ||||
|                             If DR존.야간운전방식 = "가동정지" Then ' Worksheets("입력존").Range("야간가동1").Offset(0, i_count_zone - 1) = "가동정지" Then | ||||
|                                 Dr최대부하.일일난방최대가동시간 = t_h_op_d | ||||
|                                 'Dr최대냉난방부하.난방최대가동시간 = t_h_op_d '  Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(2, i_count_zone - 1) = t_h_op_d | ||||
|                             Else | ||||
|                                 Dr최대부하.일일난방최대가동시간 = 24 | ||||
|                                 'Dr최대냉난방부하.난방최대가동시간 = 24 ' Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(2, i_count_zone - 1) = 24 | ||||
|                             End If | ||||
|                         Else | ||||
|                             Dim Dr월에너지요구량 As New C에너지분석(DSETR, Result, i_count_month, DR존.code) | ||||
|  | ||||
|                             'Dim Dr월에너지요구량 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) | ||||
|                             'Dr월에너지요구량 = DSETR.에너지분석및요구량.Rows(i_count_month - 1) '//각 월별 시트에 값을 셋트(에너지분석및요구량 테이블에 들어있다) | ||||
|                             If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "난방" Then    '//냉난방,난방 | ||||
|                                 Dr월에너지요구량.난방에너지요구량열 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Dr월에너지요구량.난방에너지요구량공조환기 = TOSG(Q_vh_b_op / 1000) | ||||
|                                 '  If i_count_month = 1 Then MsgBox("1") | ||||
|                                 'Log.AppendLine("공조값설정=" & CSng(Q_vh_b_op / 1000)) | ||||
|                             ElseIf DR존.냉난방공조 = "냉난방" Or DR존.냉난방공조 = "난방" Then    '//냉난방,난방 | ||||
|                                 Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                 Dr월에너지요구량.난방에너지요구량공조환기 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|  | ||||
|                                 '//오류확인용 존1만 확인한다. | ||||
|                                 'If DR존.code = "0001" Then MsgBox(DR존.냉난방방식 & vbCrLf & DR존.냉난방공조 & vbCrLf & CSng((Q_h_b_op + Q_h_b_we) / 1000), MsgBoxStyle.Information, DR존.code) | ||||
|  | ||||
|                             Else | ||||
|                                 If (DR존.냉난방공조 = "냉방" Or DR존.냉난방공조 = "환기") And DR존.외기부하처리여부 = "예" Then '냉방/환기/"예" Then | ||||
|                                     Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                     ' If i_count_month = 1 Then MsgBox("3") | ||||
|                                     Dr월에너지요구량.난방에너지요구량공조환기 = TOSG(Q_vh_b_op / 1000) | ||||
|                                 Else | ||||
|                                     ' If i_count_month = 1 Then MsgBox("4") | ||||
|                                     Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                     Dr월에너지요구량.난방에너지요구량공조환기 = 0 | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             Dr월에너지요구량.조명에너지요구량 = Q_l_b / 1000 | ||||
|  | ||||
|                             ' Log.AppendLine("i_count_HeatCool=" & i_count_HeatCool & "i_count_month=" & i_count_month & ",급탕에너지요구량=" & CSng(Q_w_b / 1000)) | ||||
|                             Dr월에너지요구량.급탕에너지요구량 = Q_w_b / 1000 | ||||
|                             ' MsgBox("난방요구량" & Dr월에너지요구량.난방요구량공조, MsgBoxStyle.Information, i_count_month & "CZONE") | ||||
|  | ||||
|                             pLog.Add(String.Format("난방에너지요구량열:{0},공조환기:{1},조명에너지요구량:{2},급탕에너지요구량:{3}", _ | ||||
|                                                    Dr월에너지요구량.난방에너지요구량열, _ | ||||
|                                                   Dr월에너지요구량.난방에너지요구량공조환기, _ | ||||
|                                                   Dr월에너지요구량.조명에너지요구량, _ | ||||
|                                                   Dr월에너지요구량.급탕에너지요구량)) | ||||
|  | ||||
|                         End If | ||||
|  | ||||
|                     Else | ||||
|                         If i_count_month = 0 Then | ||||
|                             Dr최대부하.최대냉방기기부하 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                             'Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(0, i_count_zone - 1) = (Q_h_b_op + Q_h_b_we) / 1000 | ||||
|                             If DR존.야간운전방식 = "가동정지" Then  '//가동정지 | ||||
|                                 Dr최대부하.일일냉방최대가동시간 = t_h_op_d ' Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(2, i_count_zone - 1) = t_h_op_d | ||||
|                             Else | ||||
|                                 Dr최대부하.일일냉방최대가동시간 = 24 'Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(2, i_count_zone - 1) = 24 | ||||
|                             End If | ||||
|  | ||||
|                             pLog.Add(String.Format("Dr최대부하.일일냉방최대가동시간:{0}", Dr최대부하.일일냉방최대가동시간)) | ||||
|  | ||||
|                         Else | ||||
|                             Dim Dr월에너지요구량 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) | ||||
|                             If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "냉방" Then    '//냉난방/냉방 | ||||
|                                 Dr월에너지요구량.냉방요구량열 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Dr월에너지요구량.냉방요구량공조 = TOSG(Q_vh_b_op / 1000) | ||||
|                             Else | ||||
|                                 If DR존.냉난방공조 = "냉난방" Or DR존.냉난방공조 = "냉방" Then    '//냉난방/냉방 | ||||
|                                     Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                     Dr월에너지요구량.냉방요구량공조 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Else | ||||
|                                     If (DR존.냉난방공조 = "난방" Or DR존.냉난방공조 = "환기") And DR존.냉난방공조 = "예" Then '//난방/환기/예 | ||||
|                                         Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                         Dr월에너지요구량.냉방요구량공조 = TOSG(Q_vh_b_op / 1000) | ||||
|                                     Else | ||||
|                                         Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                         Dr월에너지요구량.냉방요구량공조 = 0 | ||||
|                                     End If | ||||
|  | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             pLog.Add(String.Format("냉방요구량열:{0},냉방요구량공조{1}", Dr월에너지요구량.냉방요구량열, Dr월에너지요구량.냉방요구량공조)) | ||||
|                         End If | ||||
|  | ||||
|  | ||||
|  | ||||
|                     End If | ||||
|                 Next '(3) | ||||
|  | ||||
|                 Dim CAir As New CAirHandling(DSET, DSETR, Result) | ||||
|                 If i_count_month = 0 Then | ||||
|                     CAir.Calc_Max_Power(i_count_HeatCool) '//AIR HANDLING 모듈 에 존재함..역시 내용이 크다 ㅠ_ㅠ | ||||
|                 End If | ||||
|  | ||||
|             Next '(2) | ||||
|         Next '(1) | ||||
|  | ||||
|         title = showmsg + "분석데이터 집계중..." | ||||
|         RaiseEvent Message(title, 12, 0, 12) | ||||
|  | ||||
|         '//요구량 계산이 완료되었으므로 Summary 계산한다. (이것이 없어서 소요량이 오류났음) | ||||
|         For Each Dr As C에너지분석 In Result.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다. | ||||
|             Dr.Calc() | ||||
|         Next | ||||
|         DSETR.AcceptChanges() | ||||
|         Return True | ||||
|     End Function | ||||
|  | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' (main2)소요량 계산 | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Function Calc_Useage(isSimul As String) As Boolean | ||||
|  | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|         pLog.Add("Calc_Useage") | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|  | ||||
|         'Dim d_op_month As Integer | ||||
|         Dim theta_e_month As Decimal | ||||
|         Dim d_full_mth As Integer | ||||
|  | ||||
|         Dim title = isSimul + "소요량계산준비중..." | ||||
|         RaiseEvent Message(title, 12, 0, 12) | ||||
|  | ||||
|         '//160428  | ||||
|  | ||||
|  | ||||
|         For i_count_month As Short = 1 To 12 '//월별로 난/냉방 소요량을 계산 | ||||
|  | ||||
|             pLog.LogEnable = False | ||||
|  | ||||
|  | ||||
|             title = isSimul + "소요량계산중..." & "(" & i_count_month & "/12)" | ||||
|             RaiseEvent Message(title, i_count_month, 0, 12) | ||||
|  | ||||
|             '===============================================2010.2.21 수정 | ||||
|             'd_op_month = d_op(i_count_month) | ||||
|             d_full_mth = CInt(Calc.Pub.d_full(i_count_month)) | ||||
|             '===============================================2010.2.21 수정 | ||||
|             theta_e_month = Calc.Pub.theta_e(i_count_month) | ||||
|  | ||||
|             pLog.Add(String.Format("소요량계산 Mon={0},d_full_mth={1},theta_e_month={2}", i_count_month, d_full_mth, theta_e_month)) | ||||
|  | ||||
|             '///난방 | ||||
|  | ||||
|             pLog.Add("급탕소요량 시작") | ||||
|             Calc.Heating.Calc_WaterheatingSystem(i_count_month, d_full_mth, theta_e_month)  '//급탕소요량 '========2010.2.21 수정 | ||||
|  | ||||
|  | ||||
|             pLog.Add("환기소요량 시작") | ||||
|             Calc.AirHandling.Calc_AirHandling(i_count_month, d_full_mth) '//환기? '========2010.2.21 수정 | ||||
|  | ||||
|             '// | ||||
|             If Result.E분석(i_count_month).난방에너지요구량 <> 0 Then | ||||
|                 pLog.Add(String.Format("난방에너지요구량({0})이 0보다 큽니다 추가 계산을 실행 : Calc.Heating.Calc_HeatingSystem", Result.E분석(i_count_month).난방에너지요구량)) | ||||
|                 Calc.Heating.Calc_HeatingSystem(i_count_month, theta_e_month) '//난방소요량 | ||||
|             End If | ||||
|  | ||||
|             '///냉방 | ||||
|             pLog.LogEnable = True | ||||
|             If Result.E분석(i_count_month).냉방에너지요구량 <> 0 Then | ||||
|                 pLog.Add(String.Format("냉방에너지요구량({0})이 0보다 큽니다 추가 계산을 실행 : Calc.Cooling.Calc_CoolingSystem", Result.E분석(i_count_month).냉방에너지요구량)) | ||||
|                 Calc.Cooling.Calc_CoolingSystem(i_count_month, theta_e_month) | ||||
|             End If | ||||
|  | ||||
|             pLog.Add(String.Format("==== 소요량 Mon={0} 완료==========", i_count_month)) | ||||
|         Next | ||||
|         DSETR.AcceptChanges() | ||||
|         Return True | ||||
|     End Function | ||||
|  | ||||
|     Private DSET As DS | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult) | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|     End Sub | ||||
| End Class | ||||
|  | ||||
							
								
								
									
										719
									
								
								ArinWarev1/Calculator/Calculator.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										719
									
								
								ArinWarev1/Calculator/Calculator.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,719 @@ | ||||
| Public Class Calculator | ||||
|  | ||||
|     Public WithEvents Zone As CZone    '//존에클래스할당 | ||||
|     Public WithEvents AirHandling As CAirHandling    '//존에클래스할당 | ||||
|     Public WithEvents Cooling As CCooling    '//존에클래스할당 | ||||
|     Public WithEvents Heating As CHeating    '//존에클래스할당 | ||||
|     Public WithEvents Renewable As CRenewable    '//존에클래스할당 | ||||
|     Public WithEvents Summary As CSummary | ||||
|     Public WithEvents Pub As CShared | ||||
|  | ||||
|     Public IsError As Boolean = False | ||||
|     Public IsSimulation As Boolean = False | ||||
|  | ||||
|     Enum ECalc | ||||
|         All = 0 | ||||
|         REq = 1 | ||||
|         Use = 2 | ||||
|         설계개선안 = 3 | ||||
|     End Enum | ||||
|  | ||||
|     Private DSET As DS | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByVal Version As String, ByRef pds As DS, ByRef pdsetr As DSR, ByRef prresult As CResult, p_simul As Boolean) | ||||
|         Me.IsError = False | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|         Result = prresult | ||||
|         IsSimulation = p_simul  '//평가계산에의해서는 시뮬레이션모드로 작동 | ||||
|         Select Case Version | ||||
|             Case "2009123100", StartVersion | ||||
|                 Me.Zone = New CZone(DSET, DSETR, Result) '//존 | ||||
|                 Me.AirHandling = New CAirHandling(DSET, DSETR, Result)   '//공기 | ||||
|                 Me.Cooling = New CCooling(DSET, DSETR, Result) | ||||
|                 Me.Heating = New CHeating(DSET, DSETR, Result) | ||||
|                 Me.Renewable = New CRenewable(DSET, Result)   '//신재상 | ||||
|                 Me.Summary = New CSummary(DSETR, Result)   '//계산결과 집계 | ||||
|                 Me.Pub = New CShared    '//공용변수(여기추가됬을거에요)- 기상오류처리 | ||||
|                 Me.IsError = Me.Pub.IsError '//공용변수값에 오류확인 | ||||
|             Case Else | ||||
|                 MsgBox("LG계산식에 지원되지않는 버젼(" & StartVersion & "/" & Version & ")입니다", MsgBoxStyle.Critical, "확인") | ||||
|                 Me.IsError = True | ||||
|         End Select | ||||
|     End Sub | ||||
|  | ||||
|     Private Function 설계개선안사용여부(findcode As String) As Boolean | ||||
|         Dim retval As Boolean = False | ||||
|         For Each dr As DS.tbl_monuseRow In DSET1.tbl_monuse.Select("code='" + findcode + "'", "월") | ||||
|             If dr.도시가스 <> "0" Then | ||||
|                 retval = True | ||||
|                 Exit For | ||||
|             End If | ||||
|             If dr.전력 <> "0" Then | ||||
|                 retval = True | ||||
|                 Exit For | ||||
|             End If | ||||
|             If dr.지역난방 <> "0" Then | ||||
|                 retval = True | ||||
|                 Exit For | ||||
|             End If | ||||
|         Next | ||||
|         Return retval | ||||
|     End Function | ||||
|  | ||||
|     Private Sub 입력값계수변환(code As String) | ||||
|         If 설계개선안사용여부(code) Then | ||||
|             For Each dr As DS.tbl_monuseRow In DSET1.tbl_monuse.Select("code='" + code + "'", "월") | ||||
|                 Dim newdr As DSR.월별1차에너지사용량Row = DSETR1.월별1차에너지사용량.NewRow | ||||
|                 newdr.도시가스 = dr.도시가스 * Result2.E변환계수.LNG | ||||
|                 newdr.전력 = dr.전력 * Result2.E변환계수.전력 | ||||
|                 newdr.지역난방 = dr.지역난방 * Result2.E변환계수.지역난방 | ||||
|                 newdr.code = dr.code | ||||
|                 newdr.년 = dr.년 | ||||
|                 newdr.월 = dr.월 | ||||
|                 DSETR1.월별1차에너지사용량.Rows.Add(newdr) | ||||
|             Next | ||||
|         End If | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
|     '''130824 | ||||
|     Public Function 설계개선안계산() As Boolean | ||||
|         Dim dr_desc As DS.tbl_DescRow = DSET.tbl_Desc.Rows(0) | ||||
|  | ||||
|         '//년면적값확인 | ||||
|         Dim 년면적 As Decimal = 0 | ||||
|         If IsNumeric(dr_desc.buildm23) = False Then dr_desc.buildm23 = "0" | ||||
|         년면적 = CDec(dr_desc.buildm23) | ||||
|         If 년면적 = 0 Then | ||||
|             MsgBox("년면적값이 없습니다.", MsgBoxStyle.Critical, "확인") | ||||
|             Return False | ||||
|         End If | ||||
|  | ||||
|         '//월별에너지사용량에서 입력한 값 | ||||
|         Dim 사용자입력값에너지사용량(12) As Decimal | ||||
|  | ||||
|         '//현재계산되어있는 1차에너지사용량 | ||||
|         Dim 년면적당(12) As Decimal | ||||
|         Dim 년면적당원본(12) As Decimal | ||||
|  | ||||
|         Dim ok As Boolean = True | ||||
|         Dim 오차계산횟수 As Decimal = 0 | ||||
|         Dim 난방설정온도 As Decimal = 20 | ||||
|         Dim 냉방설정온도 As Decimal = 26 | ||||
|         Dim 실내발열 As Decimal = 0 | ||||
|  | ||||
|         Dim 전반기최저입력 As Decimal = 999999 | ||||
|         Dim 하반기최저입력 As Decimal = 999999 | ||||
|         Dim 전반기최저 As Decimal = 999999 | ||||
|         Dim 하반기최저 As Decimal = 999999 | ||||
|  | ||||
|         For i As Integer = 1 To 12 | ||||
|             사용자입력값에너지사용량(i) = 0 | ||||
|             년면적당(i) = 0 | ||||
|             Zone_Message("계산데이터와 입력데이터 집계중(" + i.ToString() + "/3)...", i, 0, 12) | ||||
|  | ||||
|             '//사용자에의해서 입력된 값을 누적한다. | ||||
|             For Each dr1 As DSR.월별1차에너지사용량Row In DSETR.월별1차에너지사용량.Select("월='" + i.ToString("00") + "'") | ||||
|                 사용자입력값에너지사용량(i) += TOSG(dr1.도시가스) + TOSG(dr1.전력) + TOSG(dr1.지역난방) | ||||
|             Next | ||||
|  | ||||
|             '//임시계산저장소의 값을 이용한다. | ||||
|             년면적당원본(i) = (Result1.일차E소요량(i).난방소요량 / 년면적) + (Result1.일차E소요량(i).냉방소요량 / 년면적) _ | ||||
|                + (Result1.일차E소요량(i).급탕소요량 / 년면적) + (Result1.일차E소요량(i).조명소요량 / 년면적) _ | ||||
|                 + (Result1.일차E소요량(i).환기소요량 / 년면적) | ||||
|  | ||||
|             If i <= 6 Then | ||||
|                 If 사용자입력값에너지사용량(i) < 전반기최저입력 Then 전반기최저입력 = 사용자입력값에너지사용량(i) | ||||
|                 If 년면적당원본(i) < 전반기최저 Then 전반기최저 = 년면적당원본(i) | ||||
|             Else | ||||
|                 If 사용자입력값에너지사용량(i) < 하반기최저입력 Then 하반기최저입력 = 사용자입력값에너지사용량(i) | ||||
|                 If 년면적당원본(i) < 하반기최저 Then 하반기최저 = 년면적당원본(i) | ||||
|             End If | ||||
|         Next | ||||
|  | ||||
|         Dim 입력값평균 As Decimal = (하반기최저입력 + 전반기최저입력) / 2 | ||||
|         Dim 계산값평균 As Decimal = (하반기최저 + 전반기최저) / 2 | ||||
|         Dim 오차 As Decimal = 계산값평균 - 입력값평균 | ||||
|         Dim 오차재계산횟수 As Integer = 5 | ||||
|  | ||||
|  | ||||
|         While (True) | ||||
|  | ||||
|             For i As Integer = 1 To 12 | ||||
|                 사용자입력값에너지사용량(i) = 0 | ||||
|                 년면적당(i) = 0 | ||||
|                 Zone_Message("계산데이터와 입력데이터 집계중(" + i.ToString() + "/3)...", i, 0, 12) | ||||
|  | ||||
|                 '//사용자에의해서 입력된 값을 누적한다. | ||||
|                 For Each dr1 As DSR.월별1차에너지사용량Row In DSETR.월별1차에너지사용량.Select("월='" + i.ToString("00") + "'") | ||||
|                     사용자입력값에너지사용량(i) += TOSG(dr1.도시가스) + TOSG(dr1.전력) + TOSG(dr1.지역난방) | ||||
|                 Next | ||||
|  | ||||
|                 '//임시계산저장소의 값을 이용한다. | ||||
|                 년면적당(i) = (Result2.일차E소요량(i).난방소요량 / 년면적) + (Result2.일차E소요량(i).냉방소요량 / 년면적) _ | ||||
|                    + (Result2.일차E소요량(i).급탕소요량 / 년면적) + (Result2.일차E소요량(i).조명소요량 / 년면적) _ | ||||
|                     + (Result2.일차E소요량(i).환기소요량 / 년면적) | ||||
|  | ||||
|                 년면적당(i) += (-1 * 오차) | ||||
|  | ||||
|             Next | ||||
|  | ||||
|             '//여름피크확인(8월) | ||||
|             '//겨울피크확인(1월) | ||||
|             Dim 오차겨울 As Decimal = Math.Abs(년면적당(1) - 사용자입력값에너지사용량(1)) | ||||
|             Dim 오차여름 As Decimal = Math.Abs(년면적당(8) - 사용자입력값에너지사용량(8)) | ||||
|  | ||||
|             Dim 원본겨울 As Decimal = 년면적당원본(1) | ||||
|             Dim 원본여름 As Decimal = 년면적당원본(8) | ||||
|  | ||||
|             Dim 오차발생여름 As Boolean = False | ||||
|             Dim 오차발생겨울 As Boolean = False | ||||
|  | ||||
|             Dim 오차겨울퍼센트 As Decimal = (오차겨울 / 년면적당(1)) * 100 | ||||
|             Dim 오차여름퍼센트 As Decimal = (오차여름 / 년면적당(8)) * 100 | ||||
|  | ||||
|             '//오차계산에따른 반복제어 | ||||
|             If 오차계산횟수 > 오차재계산횟수 Then | ||||
|                 ' MsgBox("오차계산횟수를 초과하였습니다" + vbCrLf + "개선작업이 종료됩니다.", MsgBoxStyle.Information, "확인") | ||||
|                 ok = False | ||||
|                 Exit While | ||||
|             End If | ||||
|  | ||||
|             If 오차겨울퍼센트 > 0.1 Then | ||||
|                 오차발생겨울 = True | ||||
|                 If 년면적당(1) < 사용자입력값에너지사용량(1) Then | ||||
|                     난방설정온도 += 0.5 | ||||
|                 Else | ||||
|                     난방설정온도 -= 0.5 | ||||
|                 End If | ||||
|             End If | ||||
|  | ||||
|             If 오차여름퍼센트 > 0.1 Then | ||||
|                 오차발생여름 = True | ||||
|                 If 년면적당(8) < 사용자입력값에너지사용량(8) Then | ||||
|                     냉방설정온도 -= 0.5 | ||||
|                 Else | ||||
|                     냉방설정온도 += 0.5 | ||||
|                 End If | ||||
|             End If | ||||
|  | ||||
|             '//오차가발생하지않았다면 더이상 진행하지 않는다. | ||||
|             If Not 오차발생여름 AndAlso Not 오차발생겨울 Then | ||||
|                 ok = True | ||||
|                 Exit While | ||||
|             End If | ||||
|  | ||||
|            | ||||
|  | ||||
|             '//변경될 온도정보를 가지고 다시 계산합니다. | ||||
|             If Me.Start("설계개선작업(" + (오차계산횟수 + 1).ToString() + "/" + 오차재계산횟수.ToString + ")" + vbCrLf + vbCrLf + _ | ||||
|                         "(겨울/여름)오차발생율:" + 오차겨울퍼센트.ToString("#0.00") + "%/" + 오차여름퍼센트.ToString("#0.00") + "%" + vbCrLf, ECalc.All, LogSB, (-1 * 오차), 난방설정온도, 냉방설정온도) Then   '//파라미터 True 라면 소요량이 추가로 게산된다. | ||||
|                 오차계산횟수 += 1 | ||||
|                 Me.Summary.All() | ||||
|                 '오차 = 0 | ||||
|                 'Continue While | ||||
|             Else | ||||
|                 MsgBox("설계개선작업중 오류가 발생하였습니다." + vbCrLf + LogSB.ToString, MsgBoxStyle.Critical, "확인") | ||||
|                 ok = False | ||||
|                 Exit While | ||||
|             End If | ||||
|  | ||||
|         End While | ||||
|  | ||||
|  | ||||
|         '//가상결과데이터(DSR2)를 집계해서 실제결과DSR1에 넣는다. | ||||
|         DSETR1.설계계산결과.Clear() | ||||
|         DSETR1.설계계산결과.AcceptChanges() | ||||
|  | ||||
|         For i As Integer = 1 To 12 | ||||
|             Dim ndr As DSR.설계계산결과Row = DSETR1.설계계산결과.New설계계산결과Row | ||||
|             ndr.월 = i.ToString("00") | ||||
|             ndr.난방전 = (Result2.일차E소요량(i).난방소요량 / 년면적) | ||||
|             ndr.냉방전 = (Result2.일차E소요량(i).냉방소요량 / 년면적) | ||||
|             ndr.조명전 = (Result2.일차E소요량(i).조명소요량 / 년면적) | ||||
|             ndr.급탕전 = +(Result2.일차E소요량(i).급탕소요량 / 년면적) | ||||
|             ndr.환기전 = (Result2.일차E소요량(i).환기소요량 / 년면적) | ||||
|             DSETR1.설계계산결과.Rows.Add(ndr) | ||||
|         Next | ||||
|  | ||||
|  | ||||
|         '//벽체 열관류율, 창호 열관류율, 일사투과율, 장비 효율, 조명밀도 등 적용 | ||||
|         '//면형태 : 벽체 - 외,내벽 :: tbl_yk 모든 열관류율을  = 0.1 *get열관류율을 마지막에 한번만 작동하도록 상수지정 | ||||
|         '//면형태 : 창호 - 외부창,내부창 = 1.0 | ||||
|         '//면형태 : 창호 - 외부창,내부창  일사투과율 = 0.3 | ||||
|         For Each drmn As DS.tbl_ykRow In DSET.tbl_yk.Select("code <> '0'") | ||||
|             Dim 면형태코드 As String = drmn.면형태 | ||||
|             If 면형태코드.Trim = "" Then Continue For | ||||
|             Dim 면형태 As String = Get_CName("1088", 면형태코드) | ||||
|             Select Case 면형태 | ||||
|                 Case "외벽(벽체)", "내벽(벽체)", "지중벽" | ||||
|                     drmn.열관류율 = "0.1" | ||||
|                 Case "외부창", "내부창" | ||||
|                     drmn.열관류율 = "1" | ||||
|                     drmn.일사에너지투과율 = "0.3" | ||||
|             End Select | ||||
|         Next : DSET.tbl_yk.AcceptChanges() | ||||
|  | ||||
|         '//난방기기 , 정격보일러효율=0.9 , 히트난방정격7=4.5 | ||||
|         For Each drmn As DS.tbl_nanbangkikiRow In DSET.tbl_nanbangkiki.Select("code <> '0'") | ||||
|             If CDec(drmn.정격보일러효율) < 90 Then | ||||
|                 drmn.정격보일러효율 = "90" | ||||
|             End If | ||||
|             If CDec(drmn.히트난방정격7) < 4.5 Then | ||||
|                 drmn.히트난방정격7 = "4.5" | ||||
|             End If | ||||
|         Next : DSET.tbl_nanbangkiki.AcceptChanges() | ||||
|  | ||||
|         '//냉방기기 , 열성능비 = 5.0 | ||||
|         For Each drmn As DS.tbl_nangbangkikiRow In DSET.tbl_nangbangkiki.Select("code <> '0'") | ||||
|             If CDec(drmn.열성능비) < 5 Then | ||||
|                 drmn.열성능비 = "5.0" | ||||
|             End If | ||||
|         Next : DSET.tbl_nangbangkiki.AcceptChanges() | ||||
|  | ||||
|         '//조명밀도 : 조명에너지부하율입력치 : 6 | ||||
|         For Each drmn As DS.tbl_zoneRow In DSET.tbl_zone.Select("code <> '0'") | ||||
|             If drmn.조명부하산출방법 = "입력치" Then | ||||
|                 drmn.조명에너지부하율입력치 = 6 | ||||
|             End If | ||||
|         Next : DSET.tbl_zone.AcceptChanges() | ||||
|  | ||||
|         '//보정데이터유지하고 계산실행 | ||||
|         '//그래프출력시 발생한 오차를 데이터테이블에 표시 | ||||
|         '//변경될 온도정보를 가지고 다시 계산합니다. | ||||
|         If Me.Start("설계개선작업II" + vbCrLf, ECalc.All, LogSB, (-1 * 오차), 난방설정온도, 냉방설정온도) Then   '//파라미터 True 라면 소요량이 추가로 게산된다. | ||||
|             Me.Summary.All() | ||||
|             ok = False | ||||
|         End If | ||||
|  | ||||
|         For i As Integer = 1 To 12 | ||||
|             Dim ndr As DSR.설계계산결과Row = DSETR1.설계계산결과.Rows(i - 1) | ||||
|             ndr.난방 = (Result2.일차E소요량(i).난방소요량 / 년면적) | ||||
|             ndr.냉방 = (Result2.일차E소요량(i).냉방소요량 / 년면적) | ||||
|             ndr.조명 = (Result2.일차E소요량(i).조명소요량 / 년면적) | ||||
|             ndr.급탕 = +(Result2.일차E소요량(i).급탕소요량 / 년면적) | ||||
|             ndr.환기 = (Result2.일차E소요량(i).환기소요량 / 년면적) | ||||
|             ndr.AcceptChanges() | ||||
|         Next | ||||
|  | ||||
|         DSETR1.설계계산결과.AcceptChanges() | ||||
|  | ||||
|         '//파라미터저장 | ||||
|         DSETR1.설계계산파라미터.Clear() | ||||
|         Dim ndr3 As DSR.설계계산파라미터Row = DSETR1.설계계산파라미터.New설계계산파라미터Row | ||||
|         ndr3.난방 = 난방설정온도.ToString | ||||
|         ndr3.냉방 = 냉방설정온도.ToString | ||||
|         ndr3.기저비율 = CDec(-1 * 오차).ToString() | ||||
|         DSETR1.설계계산파라미터.Rows.Add(ndr3) | ||||
|         DSETR1.설계계산파라미터.AcceptChanges() | ||||
|  | ||||
|         If ok Then | ||||
|             Return True | ||||
|         Else | ||||
|             Return False | ||||
|         End If | ||||
|         Return True | ||||
|     End Function | ||||
|  | ||||
|     Public Function Start(showmsg As String, ByVal CalcType As ECalc, ByRef logBuffer As System.Text.StringBuilder, 기저비율 As Decimal, Optional ByVal 난방설정온도 As Decimal = 20, Optional ByVal 냉방설정온도 As Decimal = 26) As Boolean | ||||
|  | ||||
|         pLog.Add("=====================================") | ||||
|         pLog.Add("Calc Start") | ||||
|         pLog.Add("=====================================", True) | ||||
|  | ||||
|         Me.Pub = New CShared    '//공용변수 | ||||
|  | ||||
|         '//계산을 시작  p_CalcUse : 는 소요량 계산도 할건지으 ㅣ플래그 나중에 분리해야겠따. | ||||
|         'Dim ST As Date = Now | ||||
|  | ||||
|         If Me.IsError Then | ||||
|             MsgBox("계산준비중 오류발생", MsgBoxStyle.Critical, "확인") | ||||
|             Return False | ||||
|         End If | ||||
|         logBuffer = New System.Text.StringBuilder("") | ||||
|         Dim Cnt As Integer = FixData() | ||||
|         'log.AppendLine(">>데이터보정(" & Cnt.ToString & ")개의 데이터가 보정되었습니다") | ||||
|         'log.AppendLine(">>유효성검사시작") | ||||
|         If validation() = False Then Return False '//유효성 체크를 수행한다. | ||||
|  | ||||
|         If CalcType <> ECalc.Use AndAlso CalcType <> ECalc.설계개선안 Then | ||||
|             'log.AppendLine(">>계산영역초기화") | ||||
|             Clear_ResultArea()  '//과거의 계산영역을 클리어시킨다. | ||||
|             'log.AppendLine(">>각존의 사용면적 계산") | ||||
|             Result.사용면적.Calc() '//A_H,C,W,L,V 의 누적값을 계산(사용면적) : 개별프로시져로 할당 | ||||
|             'log.AppendLine(">>주계산시작") | ||||
|         End If | ||||
|  | ||||
|         '//사용자가입력한 1차에너지사용량(=월별에너지사용량)을 변환계수를 이용해 값을 생성한다. | ||||
|         DSETR1.월별1차에너지사용량.Rows.Clear() : DSETR2.월별1차에너지사용량.Rows.Clear() | ||||
|         DSETR1.월별1차에너지사용량.AcceptChanges() : DSETR2.월별1차에너지사용량.AcceptChanges() | ||||
|         Zone_Message("설계개선안 입력데이터 변환중(1/3)...", 1, 0, 3) : 입력값계수변환("0001") | ||||
|         Zone_Message("설계개선안 입력데이터 변환중(2/3)...", 2, 0, 3) : 입력값계수변환("0002") | ||||
|         Zone_Message("설계개선안 입력데이터 변환중(3/3)...", 1, 0, 3) : 입력값계수변환("0003") | ||||
|         DSETR1.월별1차에너지사용량.AcceptChanges() | ||||
|         DSETR2.월별1차에너지사용량.Merge(DSETR1.월별1차에너지사용량) | ||||
|         DSETR2.월별1차에너지사용량.AcceptChanges() | ||||
|  | ||||
|         Dim Retval As Boolean | ||||
|         Select Case CalcType | ||||
|             Case ECalc.All | ||||
|                 pLog.LogEnable = False | ||||
|                 Retval = Zone.Calc_LoadOfZones(showmsg, IsSimulation, 기저비율, 난방설정온도, 냉방설정온도) | ||||
|                 pLog.LogEnable = True | ||||
|                 If Retval Then Retval = Zone.Calc_Useage(showmsg) | ||||
|                 Return Retval | ||||
|             Case ECalc.REq | ||||
|                 pLog.LogEnable = True | ||||
|                 Return Zone.Calc_LoadOfZones(showmsg, IsSimulation, 기저비율, 난방설정온도, 냉방설정온도) | ||||
|             Case ECalc.Use | ||||
|                 pLog.LogEnable = True | ||||
|                 Return Zone.Calc_Useage(showmsg) | ||||
|             Case ECalc.설계개선안 | ||||
|                 pLog.LogEnable = True | ||||
|                 Return 설계개선안계산() | ||||
|         End Select | ||||
|  | ||||
|         pLog.LogEnable = True | ||||
|  | ||||
|     End Function | ||||
|  | ||||
|     Private Function FixData() As Integer | ||||
|         Dim RetCnt As Integer = 0 | ||||
|         Dim Null As String = "(없음)" | ||||
|         '//보정할수있는데이터를 보정합니다. | ||||
|         ';//입력면 - 건축부위방식이 .내벽 or 간벽일경우 방위는 (없음)이다 | ||||
|         For Each DR면 As DS.tbl_myounRow In DSET.tbl_myoun.Select("code <> '0'") | ||||
|             If DR면.건축부위방식 = "내벽" Or DR면.건축부위방식 = "간벽" Then | ||||
|                 If DR면.방위 <> Null Then | ||||
|                     RetCnt += 1 | ||||
|                     DR면.방위 = Null | ||||
|                 End If | ||||
|             End If | ||||
|         Next | ||||
|         For Each DR존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code <> '0'") | ||||
|             If DR존.조명방식.ToString = "0" OrElse DR존.조명방식.ToString = "" Then | ||||
|                 RetCnt += 1 | ||||
|                 LogSB.AppendLine("Zone " & DR존.설명.ToString & "] 의 조명방식이 없음으로 설정됩니다.") | ||||
|                 DR존.조명방식 = "(없음)" | ||||
|             End If | ||||
|             If DR존.인공광원.ToString = "0" OrElse DR존.인공광원.ToString = "" Then | ||||
|                 RetCnt += 1 | ||||
|                 LogSB.AppendLine("Zone " & DR존.설명.ToString & "] 의 인공광원이 없음으로 설정됩니다.") | ||||
|                 DR존.인공광원 = "(없음)" | ||||
|             End If | ||||
|             If DR존.외기부하처리여부.ToString = "0" OrElse DR존.외기부하처리여부.ToString = "" Then | ||||
|                 RetCnt += 1 | ||||
|                 LogSB.AppendLine("Zone " & DR존.설명.ToString & "] 의 외기부하처리여부가 아니오로 설정됩니다.") | ||||
|                 DR존.외기부하처리여부 = "아니오" | ||||
|             End If | ||||
|  | ||||
|             'If DR존.조명방식.ToString.Trim = "" Then DR존.조명방식 = "(없음)" | ||||
|             'If DR존.인공광원.ToString.Trim = "" Then DR존.인공광원 = "(없음)" | ||||
|         Next | ||||
|  | ||||
|         DSET.AcceptChanges()  '//변경내용 적용 | ||||
|         Return RetCnt | ||||
|     End Function | ||||
|     Public Function validation() As Boolean | ||||
|         pLog.Add("Calc Validation") | ||||
|         '//존이 2개이상있어야한다 (없음데이터로인해서 반드시 1개는 있기때문이다.) | ||||
|         '//여기보정데이터가잇네요.; | ||||
|         Dim NoErr As Boolean = True | ||||
|  | ||||
|         '//콤보박스들의 값이 지정되어잇는지 확인한다. 무조건 있어야한다 | ||||
|         Dim Title As String | ||||
|         Dim Columns() As String '//(없음)이 들어가는 콤보필드  | ||||
|         Dim ColumnC() As String '//공용코드전용 필드들 | ||||
|         Dim CGubun() As String '//공용코드필드의 구분값이 저장됨 | ||||
|         Dim Columnst() As String    '//0이 들어가는 콤보필드 | ||||
|  | ||||
|         '//ZONE | ||||
|         Title = "Zone" | ||||
|         Columns = New String() {"냉난방열공급시스템", "열저장능력", "열교가산치", _ | ||||
|                                 "주말운전방식", "야간운전방식", "외기부하처리여부", _ | ||||
|                                 "냉난방공조", "냉난방방식", _ | ||||
|                                  "조명부하산출방법", "조명방식", "인공광원"} | ||||
|         ColumnC = New String() {"열저장능력", "열교가산치", _ | ||||
|                               "주말운전방식", "야간운전방식", "외기부하처리여부"} ' | ||||
|         '//다를지도 모르니 나중에 함 확인하시구요 | ||||
|         CGubun = New String() {"1023", "1022", _ | ||||
|                                 "1002", "1002", "1054"}   '//공용코드있는데는 모조리 설정하시구요 물론 길이는 바로위하고 같아야합닌다. | ||||
|         '//여기에 각 공용코드의 구분값 1009 뭐 이런것들을 같게 넣어주세요 column 가 8개가있었따면 cgubun 도 8개가 잇으면됩니다. | ||||
|  | ||||
|         Columnst = New String() {"프로필", "냉난방공조처리시스템", "열생산난방생산기기", _ | ||||
|                                 "열생산급탕생산기기", "열생산냉방생산기기", _ | ||||
|                                  "열생산가습생산기기", "냉난방공조분배시스템", _ | ||||
|                                  "냉난방분배시스템", "공조냉방생산기기", "공조난방생산기기"} | ||||
|  | ||||
|         Set_Null(Columns, DSET.tbl_zone, "(없음)")   '//데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리 | ||||
|         Set_Null(ColumnC, DSET.tbl_zone, "(없음)")   '//공용코드값이 아에없는 데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리 | ||||
|         'Set_CheckCommon(ColumnC, DSET.tbl_zone, CGubun)    '//이거는 // 공용코드오류난 데이터 검색하는부분이에요 | ||||
|         Set_Null(Columnst, DSET.tbl_zone, "0") | ||||
|  | ||||
|         Title = "신재생에너지" | ||||
|         Columns = New String() {"기기종류", "가동연료", "태양열종류", "집열기유형", _ | ||||
|                                 "집열판방위", "태양열시스템의성능", "축열탱크설치장소", _ | ||||
|                                 "태양광모듈기울기", "태양광모듈방위", _ | ||||
|                                 "태양광모듈종류", "태양광모듈적용타입", _ | ||||
|                                 "열교환기설치여부", "팽창탱크설치여부"} | ||||
|         Set_Null(Columns, DSET.tbl_new, "(없음)") | ||||
|         'Set_Null(Columnst, DSET.tbl_bunbae, "0") | ||||
|  | ||||
|         Title = "난방분배시스템" | ||||
|         Columns = New String() {"생산기기구분", "표준치적용", "배관망유형", _ | ||||
|                                 "배관구간방식", "배관설치장소", _ | ||||
|                                 "배관설치장소", "지관장소"} | ||||
|         Set_Null(Columns, DSET.tbl_nbunbae, "(없음)") | ||||
|         'Set_Null(Columnst, DSET.tbl_bunbae, "0") | ||||
|  | ||||
|         Title = "난방기기" | ||||
|         Columns = New String() {"열생산기기방식", "사용연료", "운전방식", "보일러방식", _ | ||||
|                                 "지역난방방식", "단열등급", "축열탱크방식", _ | ||||
|                                 "배관망유형", "펌프교정계수", "펌프제어유형", _ | ||||
|                                 "분배시스템방식", "순환유무", "펌프제어", _ | ||||
|                                 "히트펌프시스템종류", "신재생연결여부"} | ||||
|         Columnst = New String() {"연결된시스템"} | ||||
|         Set_Null(Columns, DSET.tbl_nanbangkiki, "(없음)") | ||||
|         Set_Null(Columnst, DSET.tbl_nanbangkiki, "0") | ||||
|  | ||||
|         Title = "냉방기기" | ||||
|         Columns = New String() {"냉동기방식", "냉동기종류", "냉동기압축방식", _ | ||||
|                                 "압축기제어방식", "냉동기설비시스템", _ | ||||
|                                 "냉동기설비시스템", "제어방식", _ | ||||
|                                 "열생산연결방식", "사용연료", "증발식건식냉각기", _ | ||||
|                                 "증발식냉각기", "보조방음기유무", "신재생연결여부"} | ||||
|         Columnst = New String() {"온수열생산기기", "연결된시스템"} | ||||
|         Set_Null(Columns, DSET.tbl_nangbangkiki, "(없음)") | ||||
|         Set_Null(Columnst, DSET.tbl_nangbangkiki, "0") | ||||
|  | ||||
|  | ||||
|         Title = "입력면" | ||||
|         Columns = New String() {"건축부위방식", "블라인드유무", _ | ||||
|                                 "블라인드위치", "방위", "블라인드빛종류", _ | ||||
|                                 "블라인드색상", "블라인드각도"} | ||||
|         Columnst = New String() {"존분류", "대차대조존"} | ||||
|         Set_Null(Columns, DSET.tbl_myoun, "(없음)") | ||||
|         Set_Null(Columnst, DSET.tbl_myoun, "0") | ||||
|  | ||||
|  | ||||
|         Title = "난방공급시스템" | ||||
|         Columns = New String() {"열공급시스템", "노출형제어", "바닥난방열제어", _ | ||||
|                                 "바닥난방열건축부위", "바닥난방전기제어", "바닥난방전기건축부위", "전기난방제어"} | ||||
|         Columnst = New String() {"열공급생산기기"} | ||||
|         Set_Null(Columns, DSET.tbl_kongkub, "(없음)") | ||||
|         Set_Null(Columnst, DSET.tbl_kongkub, "0") | ||||
|  | ||||
|  | ||||
|         Title = "공조처리" | ||||
|         Columns = New String() {"공조방식", "리턴공기혼합여부", "가습기유형", "외기냉방제어유무", "열교환기유형"} | ||||
|         Set_Null(Columns, DSET.tbl_kongjo, "(없음)") | ||||
|         'Set_Null(Columnst, DSET.tbl_bunbae, "0") | ||||
|  | ||||
|         Title = "냉방분배시스템" | ||||
|         Columns = New String() {"냉매방식", "펌프운전제어유무"} | ||||
|         Columnst = New String() {"냉동기"} | ||||
|         Set_Null(Columns, DSET.tbl_bunbae, "(없음)") | ||||
|         Set_Null(Columnst, DSET.tbl_bunbae, "0") | ||||
|  | ||||
|  | ||||
|         '//모든공조데이터 순환 | ||||
|         For Each DR As DS.tbl_kongjoRow In DSET.tbl_kongjo.Select("code<>'0'") | ||||
|             DR.팬효율산출방식 = DR.팬효율산출방식.Trim | ||||
|             'MsgBox(DR.설명 & "==현재저장된값 : " & DR.팬효율산출방식 & " 길이 = " & DR.팬효율산출방식.Length) | ||||
|             If DR.팬효율산출방식.Trim = "" Then DR.팬효율산출방식 = "입력치" | ||||
|         Next | ||||
|         'DSET.tbl_kongjo.AcceptChanges() | ||||
|         DSET.AcceptChanges() | ||||
|  | ||||
|  | ||||
|         '//그값이 존에잇어요?cnrkehlsrp?추가된게?공조기기요 | ||||
|         For Each Dr As DS.tbl_zoneRow In DSET.tbl_zone.Select("code <> '0'") '//모든존을 검사 없음(0)은 빼고 | ||||
|             'If Dr.공조난방생산기기 = "0" And Dr.공조냉방생산기기 = "0" Then '//둘다 0일경우 | ||||
|             '//오류를 내고싶으면 여기서 return false 해버리면됩니다.'다른족건이 잇다면.. 아까처럼.. | ||||
|             'Return False 냉난방공조 라는 공조에 냉난방이 있으면  : : | ||||
|             'End If | ||||
|             If Dr.냉난방공조 = "냉난방" Then '// | ||||
|                 If Dr.공조난방생산기기 = "0" OrElse Dr.공조냉방생산기기 = "0" Then | ||||
|                     MsgBox("입력존에서 공조방식에 대응하는 공조냉난방생산기기가 지정되지 않은 것이 있습니다.") | ||||
|                     Return False | ||||
|                 End If | ||||
|             End If | ||||
|             If Dr.냉난방공조 = "난방" OrElse (Dr.냉난방공조 = "냉방" And Dr.외기부하처리여부 = "예") Then '// | ||||
|                 If Dr.공조난방생산기기 = "0" Then | ||||
|                     MsgBox("입력존에서 공조방식에 대응하는 공조난방생산기기가 지정되지 않은 것이 있습니다.") | ||||
|                     Return False | ||||
|                 End If | ||||
|             End If | ||||
|             If Dr.냉난방공조 = "냉방" OrElse (Dr.냉난방공조 = "난방" And Dr.외기부하처리여부 = "예") Then '// | ||||
|                 If Dr.공조냉방생산기기 = "0" Then | ||||
|                     MsgBox("입력존에서 공조방식에 대응하는 공조냉방생산기기가 지정되지 않은 것이 있습니다.") | ||||
|                     Return False | ||||
|                 End If | ||||
|             End If | ||||
|             If Dr.냉난방공조 = "환기" And Dr.외기부하처리여부 = "예" Then '// | ||||
|                 If Dr.공조난방생산기기 = "0" OrElse Dr.공조냉방생산기기 = "0" Then | ||||
|                     MsgBox("입력존에서 외기부하처리에 따른 공조냉난방생산기기가 지정되지 않은 것이 있습니다.") | ||||
|                     Return False | ||||
|                 End If | ||||
|             End If | ||||
|  | ||||
|  | ||||
|  | ||||
|         Next | ||||
|  | ||||
|         '//여기에서 FAlse 를 반환해버리면.. 게산은 돌지않아요 게산전에 수행되는곳이구요 | ||||
|         '//아까 파일오픈시에도 여기를 호출합니다.  바로 윗부분이 nul l값에대한 기본값 처리구요. | ||||
|         Return NoErr | ||||
|     End Function | ||||
|  | ||||
|     Private Sub Set_Null(ByVal Columns() As String, ByRef dt As DataTable, ByVal val As String) | ||||
|         For Each Dr As DataRow In dt.Select("code<>'0'", "code") | ||||
|             For Each Col As String In Columns | ||||
|                 If Dr(Col).ToString.Trim = "" Then '//값이없으면 기본값(val)으로 설정 | ||||
|                     Dr(Col) = val | ||||
|                 End If | ||||
|             Next | ||||
|         Next | ||||
|     End Sub | ||||
|  | ||||
|     '''공용코드에값이있는지확인 | ||||
|     Private Sub Set_CheckCommon(ByVal Columns() As String, ByRef dt As DataTable, ByVal gubunval() As String) | ||||
|         Dim index As Short = -1 | ||||
|         For Each Dr As DataRow In dt.Select("code<>'0'", "code") | ||||
|             index = 0 | ||||
|             For Each Col As String In Columns | ||||
|                 If Dr(Col).ToString.Trim = "" Then '//값이없으면 기본값(val)으로 설정 | ||||
|                     'Dr(Col) = val | ||||
|                 Else  '//값이있을때 | ||||
|                     Dim V As String = Dr(Col).ToString.Trim | ||||
|                     '//v의값이 공용ㅇ코드에 있는지 확인 공용코드는 name 을 저장하므로  name 으로검사를 수행 | ||||
|                     Dim Cdr() As DS.tbl_commonRow = DSET.tbl_common.Select("gubun='" & gubunval(index) & "' and name='" & V & "'") | ||||
|                     If Cdr.GetUpperBound(0) = -1 Then | ||||
|                         MsgBox("값이있으나 공용코드에없음(여기에 경고문구좀 날려주시면되구요") | ||||
|                     End If | ||||
|                 End If | ||||
|                 index += 1 | ||||
|             Next | ||||
|         Next | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 계산결과 영역을 초기화시킵니다. | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Private Sub Clear_ResultArea() | ||||
|         pLog.Add("Clear_ResultArea") | ||||
|  | ||||
|         DSETR.Clear() : DSETR.AcceptChanges() '//기존데이터 클리어 | ||||
|  | ||||
|         '//0번시트의 결과값을 저장할 장소를 생성한다. Zone=00 은 합계필드이다(이것이 일률적이지않아서 00으로 할당을 따로 해서 나중에 합산작업을 할 예정) | ||||
|         '//00번 존을포함하여 현재 존의 갯수+1개를 생성한다. | ||||
|  | ||||
|         '//최대냉난방/E분석 | ||||
|         Dim ZoneCode As String | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("", "code") | ||||
|             If Dr존.code = "0" Then | ||||
|                 ZoneCode = "00" | ||||
|             Else | ||||
|                 ZoneCode = Dr존.code | ||||
|             End If | ||||
|  | ||||
|             Dim Res1 As DSR.최대냉난방부하Row = DSETR.최대냉난방부하.New최대냉난방부하Row | ||||
|             Res1.Zone = ZoneCode : DSETR.최대냉난방부하.Add최대냉난방부하Row(Res1) | ||||
|             For ii As Integer = 1 To 12 | ||||
|                 Dim DrE분석 As DSR.월별에너지분석Row = DSETR.월별에너지분석.New월별에너지분석Row | ||||
|                 DrE분석.월 = "M" & Format(ii, "00")  '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함 | ||||
|                 DrE분석.존 = ZoneCode | ||||
|                 DSETR.월별에너지분석.Add월별에너지분석Row(DrE분석) | ||||
|                 'MsgBox("M" & Format(ii, "00"), MsgBoxStyle.Information, ZoneCo'de) | ||||
|             Next | ||||
|         Next | ||||
|  | ||||
|         '//월별로 움직이는데이터 | ||||
|         Dim Mon As String | ||||
|         Dim Dr As DataRow | ||||
|         For ii As Integer = 0 To 12 | ||||
|             Mon = "M" & Format(ii, "00") | ||||
|  | ||||
|             Dr = DSETR.생산에너지.NewRow | ||||
|             Dr("mon") = Mon  '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함 | ||||
|             DSETR.생산에너지.Rows.Add(Dr) | ||||
|  | ||||
|             Dr = DSETR.에너지소요량.NewRow | ||||
|             Dr("mon") = Mon  '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함 | ||||
|             DSETR.에너지소요량.Rows.Add(Dr) | ||||
|  | ||||
|             Dr = DSETR.에너지소요량1.NewRow | ||||
|             Dr("mon") = Mon  '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함 | ||||
|             DSETR.에너지소요량1.Rows.Add(Dr) | ||||
|  | ||||
|         Next | ||||
|         '//전부다시 구성해야함  | ||||
|         DSETR.AcceptChanges() | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
|     '''열관류율값ㅇㄹ 반환 | ||||
|     Public Function Get_열관류율(ByVal Dr As DS.tbl_myounRow) As Decimal | ||||
|         Dim 열관류율2 As String = Dr.열관류율2  '//저장된 코드값 cmb_열관류율 | ||||
|  | ||||
|         If IsNumeric(열관류율2) Then | ||||
|             If CInt(열관류율2) > 0 Then | ||||
|                 Try | ||||
|                     Dim Drow As DS.tbl_ykRow = DSET.tbl_yk.Select("code='" & 열관류율2 & "'")(0) | ||||
|                     Return TOSG(Drow.열관류율) '//코드내에 저장된 값을 보낸다 | ||||
|                 Catch ex As Exception | ||||
|                     MsgBox("열관류율코드값(" & 열관류율2 & ") 값오류" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Critical, "확인") | ||||
|                     Return 0 | ||||
|                 End Try | ||||
|             End If | ||||
|         End If | ||||
|  | ||||
|         Dim 열관 As Single = 0 | ||||
|         Try | ||||
|             열관 = Single.Parse(Dr.열관류율) | ||||
|         Catch ex As Exception | ||||
|             열관 = 0 | ||||
|         End Try | ||||
|  | ||||
|         Return TOSG(Dr.열관류율) | ||||
|         'If 열관 = 0 Then    '//0이므로 코드값을 찾는다. | ||||
|  | ||||
|         '    Try | ||||
|         '        Dim Drow As DS.tbl_ykRow = DSET.tbl_yk.Select("code='" & 열관류율2 & "'")(0) | ||||
|         '        Return TOSG(Drow.열관류율) '//코드내에 저장된 값을 보낸다 | ||||
|         '    Catch ex As Exception | ||||
|         '        MsgBox("열관류율코드값(" & 열관류율2 & ") 값오류" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Critical, "확인") | ||||
|         '        Return 0 | ||||
|         '    End Try | ||||
|         'Else    '//입력값이 잇으므로 입력값을 바로사용한다. | ||||
|  | ||||
|         'End If | ||||
|     End Function | ||||
|  | ||||
|  | ||||
|     Private Sub Zone_Message(Msg As String, pval As Integer, pmin As Integer, pmax As Integer) Handles Zone.Message | ||||
|         If Not msgf Is Nothing Then | ||||
|             msgf.Label1.Text = Msg | ||||
|             msgf.ProgressBar1.Minimum = pmin | ||||
|             msgf.ProgressBar1.Maximum = pmax | ||||
|             msgf.ProgressBar1.Value = pval | ||||
|             msgf.Label1.Refresh() | ||||
|         Else | ||||
|             msgf = New Frm_Work("계산중...") | ||||
|             msgf.Label1.Text = Msg | ||||
|             msgf.ProgressBar1.Minimum = pmin | ||||
|             msgf.ProgressBar1.Maximum = pmax | ||||
|             msgf.ProgressBar1.Value = pval | ||||
|             msgf.TopMost = True | ||||
|             msgf.Show() | ||||
|         End If | ||||
|  | ||||
|         msgf.Refresh() | ||||
|     End Sub | ||||
|  | ||||
| End Class | ||||
|  | ||||
							
								
								
									
										813
									
								
								ArinWarev1/Calculator/Cooling/CCooling.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										813
									
								
								ArinWarev1/Calculator/Cooling/CCooling.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,813 @@ | ||||
| Public Class CCooling | ||||
|     Public Overridable Sub Calc_CoolingSystem(ByVal i_count_month As Integer, ByVal theta_e As Decimal) | ||||
|  | ||||
|  | ||||
|         Dim c_p1 As Decimal, c_p2 As Decimal, c_cl As Decimal | ||||
|         Dim b As Decimal, L As Decimal, n_G As Decimal, h_G As Decimal, L_max As Decimal, R As Decimal, z As Decimal | ||||
|         Dim rho_cl As Decimal | ||||
|         Dim eta_c_star_d As Decimal, eta_c_star_ce_sens As Decimal, eta_c_star_ce As Decimal, eta_c_d As Decimal, eta_c_ce As Decimal, eta_c_ce_sens As Decimal | ||||
|         Dim Q_c_star_s As Decimal, Q_c_s As Decimal, Q_c_b As Decimal, Q_vc_b As Decimal, Q_vm_b As Decimal, Q_c_b_i As Decimal, Q_c_star_b_i As Decimal | ||||
|         Dim Q_c_star_b As Decimal, Q_m_star_b As Decimal, Q_c_star_d As Decimal, Q_c_star_ce As Decimal, Q_c_d As Decimal, Q_c_ce As Decimal | ||||
|         Dim Q_c_star_outg As Decimal, Q_z_outg_l As Decimal, Q_m_star_outg As Decimal, Q_dot_c_outg As Decimal, Q_c_outg As Decimal, Q_c_outg_total As Decimal, Q_dot_z As Decimal | ||||
|         Dim Q_c_ce_aux As Decimal, Q_z_aux_d_l As Decimal, Q_z_star_outg_l As Decimal | ||||
|         Dim f_c_ce_aux As Decimal, f_Abgl As Decimal, f_e As Decimal | ||||
|         Dim V_dot_z As Decimal | ||||
|         Dim EER As Decimal, PLV_av As Decimal | ||||
|         Dim P_d_hydr As Decimal, P_Pump As Decimal | ||||
|         Dim beta_d_l As Decimal, e_d_l As Decimal | ||||
|         Dim W_d_hydr_l As Decimal | ||||
|         Dim Q_c_f_elektr As Decimal, Q_c_f_R_elektr As Decimal, Q_dot_R_outg As Decimal, Q_c_outg_therm As Decimal, Q_c_f As Decimal, Q_c_aux As Decimal | ||||
|         Dim t_h_max As Integer | ||||
|         Dim Q_c_g As Decimal, Q_c_g_v_i As Decimal, Q_dot_N As Decimal, Q_dot_d_in As Decimal | ||||
|         Dim theta_VA As Decimal, theta_RA As Decimal, theta_HK_m_beta_h_d As Decimal, beta_h As Decimal, n_beta As Decimal | ||||
|         Dim eta_k_100 As Decimal, eta_k_pl As Decimal, f As Decimal, e As Decimal, q_B_70 As Decimal, q_B_theta As Decimal, f_Hs_Hi As Decimal | ||||
|         Dim Q_V_g_100 As Decimal, Q_dot_B_h As Decimal, Q_V_g_pl As Decimal, q_R_elektr As Decimal | ||||
|         Dim beta_k_pl As Decimal, Delta_theta_z_cl As Decimal | ||||
|         Dim Delta_P_WUE As Decimal, Delta_P_WUV As Decimal, Delta_P_RV As Decimal, Delta_p_z As Decimal | ||||
|         Dim k_n As Decimal, f_1_av As Decimal, f_2_av As Decimal, f_R_av As Decimal, T_W_1_i As Decimal, l_min_i As Decimal | ||||
|         Dim use_Oil As Decimal, use_LNG As Decimal, use_LPG As Decimal, use_Elec As Decimal, use_DH As Decimal | ||||
|  | ||||
|         '20100223 제거 i_count_chiller As Integer, 최적화중 사용안함 | ||||
|         'Dim i_count_zone As Integer, i_count_c_d As Integer | ||||
|         Dim i_count_beta As Integer, k_n_index As Integer | ||||
|         ' Dim i_count_renewable As Integer | ||||
|         Dim i_HeatCool As Integer | ||||
|         Dim theta_i As Decimal, Q_hp_outg As Decimal, Q_c_f_hp As Decimal, Q_c_g_hp_aux As Decimal | ||||
|         Dim Q_chp_outg As Decimal, Q_c_f_chp As Decimal | ||||
|         Dim system_type As Integer | ||||
|         '==================================2010.2.21 수정 | ||||
|         Dim use_DC As Decimal | ||||
|         Dim d_op_mth As Integer | ||||
|         Dim d_op_max_mth As Integer | ||||
|  | ||||
|         Dim f_1_av_up As Decimal, f_1_av_dn As Decimal | ||||
|         ' Dim i_count_profile As Integer | ||||
|         use_DC = 0 | ||||
|         d_op_max_mth = 0 | ||||
|         '==================================2010.2.21 수정 | ||||
|         '==================================2010.04.02 수정 | ||||
|         Dim Q_H_sol_out_m As Decimal, Q_W_sol_out_m As Decimal, W_sol_aux_m As Decimal | ||||
|         Dim Q_h_outg_i As Decimal | ||||
|  | ||||
|         Q_H_sol_out_m = 0 | ||||
|         Q_h_outg_i = 0 | ||||
|         '==================================2010.04.02 수정 | ||||
|         Dim priod_value As Single = 0 | ||||
|         Dim age As Single '//준공연도에 의한 경년변화값 | ||||
|         Dim age_heating As Single | ||||
|         For Each DRpriod As DS.tbl_DescRow In DSET.tbl_Desc.Select("cname<>'0'", "cname") | ||||
|             priod_value = CSng(DRpriod.priod) | ||||
|         Next | ||||
|         If priod_value > 20 Then priod_value = 20 | ||||
|         age = (1 - 0.01) ^ priod_value | ||||
|         age_heating = (1 - 0.005) ^ priod_value | ||||
|  | ||||
|  | ||||
|         eta_c_star_d = 0.95 '건물 내 배관 적용 | ||||
|         eta_c_star_ce_sens = 1 '습도요구 편차없음 적용 | ||||
|         eta_c_star_ce = 0.9 '공조기기로 냉열전달에서 현열전달효율로 우선 0.9 적용 | ||||
|         Q_c_star_s = 0 | ||||
|         Q_c_s = 0 '(3.2.8-22) | ||||
|         eta_c_d = 0.9 ' 우선 적용 추후 검토 | ||||
|         eta_c_ce = 1  ' 우선 적용 추후 검토 | ||||
|         eta_c_ce_sens = 0.9 '우선 적용 추후 검토 | ||||
|         f_c_ce_aux = 0.04 ' 표3.93 우선 적용 추후 검토 | ||||
|         f_Abgl = 1 '수리역학적으로 평형을 이룬 배관망 | ||||
|         Q_c_f = 0 | ||||
|         Q_c_aux = 0 | ||||
|         beta_k_pl = 0.3 | ||||
|         PLV_av = 1 | ||||
|         use_Oil = 0 | ||||
|         use_LNG = 0 | ||||
|         use_LPG = 0 | ||||
|         use_Elec = 0 | ||||
|         use_DH = 0 | ||||
|         i_HeatCool = 2 | ||||
|         system_type = 2 | ||||
|  | ||||
|         Dim Mon As String = "M" & Format(i_count_month, "00") | ||||
|         For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET.tbl_nangbangkiki.Select("code<>'0'", "code") | ||||
|  | ||||
|             '//이 냉방기가가 존에서 사용되었는지확인한다. | ||||
|             Dim Drow존() As DS.tbl_zoneRow = CType(DSET.tbl_zone.Select("(공조냉방생산기기 = '" & dr냉방.code & "' and 냉난방공조 <> '기능없음' and (외기부하처리여부 = '예' or 냉난방공조 = '냉난방' or 냉난방공조 = '냉방') ) or (열생산냉방생산기기='" & dr냉방.code & "'  and 냉난방방식 <> '난방' and 냉난방방식 <> '기능없음') and code <> '0'"), DS.tbl_zoneRow()) | ||||
|             If Drow존.GetUpperBound(0) <> -1 Then ' Worksheets("냉방기기").Range("냉방생산기기1").Offset(2, i_count_chiller - 1) = "0001" Then '2 | ||||
|                 Q_c_b = 0 | ||||
|                 Q_c_star_b = 0 | ||||
|                 t_h_max = 0 | ||||
|                 Q_c_f_elektr = 0 | ||||
|                 Q_c_outg_therm = 0 | ||||
|                 Q_c_g = 0 | ||||
|                 Q_c_f_R_elektr = 0 | ||||
|  | ||||
|  | ||||
|                 For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("(공조냉방생산기기 = '" & dr냉방.code & "' and 냉난방공조 <> '기능없음' and (외기부하처리여부 = '예' or 냉난방공조 = '냉난방' or 냉난방공조 = '냉방') ) or (열생산냉방생산기기='" & dr냉방.code & "'  and 냉난방방식 <> '난방' and 냉난방방식 <> '기능없음') and code <> '0'", "code") | ||||
|                     Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row()) | ||||
|                     ' 존데이터를가져올떄 해당 냉방기기에서 사용한 존만 가져왔따. | ||||
|                     ' If Dr존.열생산냉방생산기기 <> "" Then ' Worksheets("입력존").Range("입력냉방생산기기1").Offset(0, i_count_zone - 1) <> "" Then | ||||
|                     ' If Dr존.열생산냉방생산기기 = dr냉방.code Then ' Worksheets("입력존").Range("입력냉방생산기기1").Offset(0, i_count_zone - 1) = Worksheets("냉방기기").Range("냉방생산기기1").Offset(0, i_count_chiller - 1) Then | ||||
|  | ||||
|                     If Dr존.열생산냉방생산기기 = dr냉방.code And (Dr존.냉난방방식 = "냉난방" OrElse Dr존.냉난방방식 = "냉방") Then | ||||
|                         Q_c_b_i = Result.E분석(i_count_month).냉방에너지요구량열(Dr존.code) ' CSng(Drow분석(0).냉방요구량열) ' Sheets("" & i_count_month & "").Cells(10, 7 + i_count_zone) | ||||
|                         Q_c_b = Q_c_b + Q_c_b_i | ||||
|                     End If | ||||
|                     If Dr존.공조냉방생산기기 = dr냉방.code And Dr존.냉난방공조 = "냉난방" OrElse Dr존.냉난방공조 = "냉방" OrElse ((Dr존.냉난방공조 = "환기" OrElse Dr존.냉난방공조 = "난방") And Dr존.외기부하처리여부 = "예") Then | ||||
|                         If (Dr존.냉난방공조 = "환기" OrElse Dr존.냉난방공조 = "난방") And Dr존.외기부하처리여부 = "예" Then '// 2010.11.19 추가 | ||||
|                             Q_c_star_b_i = TOSG(Drow분석(0).냉방요구량공조)  '//2010.11.19 추가 | ||||
|                         Else | ||||
|                             Q_c_star_b_i = Result.E분석(i_count_month).공조에너지요구량냉방(Dr존.code) ' CSng(Drow분석(0).공조요구량냉방) ' Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) | ||||
|                         End If | ||||
|  | ||||
|                         Q_c_star_b = Q_c_star_b + Q_c_star_b_i | ||||
|                     End If | ||||
|  | ||||
|                     '===================================================================================2010.2.21 수정 | ||||
|                     Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                     Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Dr존.code & "'"), DSR.최대냉난방부하Row()) | ||||
|  | ||||
|                     If i_count_month = 0 Then | ||||
|                         d_op_mth = 0 | ||||
|                     Else | ||||
|                         d_op_mth = CInt(Dr프로필("day" & Format(i_count_month, "00"))) | ||||
|                     End If | ||||
|  | ||||
|                     'If t_h_max < TOSG(Drow최대(0).난방최대가동시간) * d_op_mth Then | ||||
|                     '    t_h_max = CInt(TOSG(Drow최대(0).난방최대가동시간) * d_op_mth) | ||||
|                     'End If | ||||
|  | ||||
|                     If t_h_max < TOSG(Dr프로필.일일운전시간) * d_op_mth Then | ||||
|                         t_h_max = CInt(TOSG(Dr프로필.일일운전시간) * d_op_mth) | ||||
|                     End If | ||||
|  | ||||
|                     If d_op_max_mth < d_op_mth Then | ||||
|                         d_op_max_mth = d_op_mth | ||||
|                     End If | ||||
|                     '===================================================================================2010.2.21 수정 | ||||
|                     ' End If | ||||
|                     ' End If | ||||
|                 Next | ||||
|  | ||||
|                 'Q_vh_b = Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) | ||||
|                 'Q_vc_b = Sheets("" & i_count_month & "").Cells(21, 7 + i_count_zone) | ||||
|                 'Q_vm_b = Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) | ||||
|  | ||||
|  | ||||
|                 '========================================================================================================================================== | ||||
|                 ' 가열유닛에 대한 사용에너지(3차 에너지) | ||||
|                 ' 외부 공조덕트가 없어서 Q_vh_d 는 0으로 적용 | ||||
|  | ||||
|                 'Q_dot_V_H_max = V_dot_star_rho_L(c_p_L * (theta_ZUL_wi - theta_AUL_wi) - Delta_h_WRG) '(3.2.5-58) | ||||
|                 'Q_dot_V_H_max = V_dot_star * rho_L(h_ZUL_wi - h_AUL_wi - Delta_h_WRG) '(3.2.5-57) | ||||
|                 'b_VH_a = sigma1_12(b_VH_month) '(3.2.8-7) | ||||
|                 'b_VH_mth = Q_vh_b / Q_dot_V_H_max '(3.2.8-6) | ||||
|                 't_H_r = t_H_r_14_12h + (t_H_r_22_12h - t_H_r_14_12h) * (theta_V_mech - 14) / 8 '(3-B.1) theta_V_mech은 (3-C.1) | ||||
|                 't_H_star_op_mth = t_H_r * b_VH_mth / b_VH_a '(3.2.8-5) | ||||
|                 'Q_vh_d = f_vh_d * A_K_A * t_H_star_opo_mth '(3.2.8-10) f_vh_d=16W/m | ||||
|  | ||||
|                 'Q_vh_ce = (1 - eta_vh_ce) * Q_vh_b '(3.2.8-9) eta_vh_ce 는 1로 Q_vh_ce 는 0이 됨 | ||||
|                 'Q_h_star_b = Q_vh_b 'Q_h_star_b = Q_vh_b + Q_vh_ce + Q_vh_d '(3.2.8-2) | ||||
|                 '========================================================================================================================================== | ||||
|  | ||||
|  | ||||
|  | ||||
|                 '========================================================================================================================================== | ||||
|                 ' 냉각 유닛에 대한 사용 에너지(3차 에너지) | ||||
|                 ' 외부 공조덕트가 없어서 Q_vc_d 는 0으로 적용 | ||||
|  | ||||
|                 'Q_dot_V_C_max = V_dot_star * rho_L(h_AUL_so - h_ZUL_so - Delta_h_WRG) '(3.2.5-62) | ||||
|                 'b_VC_a = sigma1_12(b_VC_month) '(3.2.8-13) | ||||
|                 'b_VC_mth = Q_vc_b / Q_dot_V_C_max '(3.2.8-12) | ||||
|                 't_C_r = (t_C_r_14_12h + (t_C_r_22_12h - t_C_r_14_12h) * (theta_V_mech - 14) / 8) * f_h_C '(3-B.2) theta_V_mech은 (3-C.1) | ||||
|                 't_C_star_op_mth = t_C_r * b_VC_mth / b_VC_a '(3.2.8-11) | ||||
|                 'Q_vc_d = f_vc_d * A_K_A * t_C_star_opo_mth '(3.2.8-10) f_vh_d=9W/m | ||||
|                 'Q_vc_ce = (1 - eta_vc_ce) * Q_vc_b '(3.2.8-9) eta_vc_ce 는 1로 Q_vc_ce 는 0이 됨 | ||||
|  | ||||
|                 'Q_c_star_b = Q_vc_b 'Q_c_star_b = Q_vc_b + Q_vc_ce + Q_vc_d '(3.2.8-8) | ||||
|  | ||||
|                 '========================================================================================================================================== | ||||
|  | ||||
|  | ||||
|                 '가습 | ||||
|                 'Q_m_star_b = Q_vm_b '(3.2.8-14) | ||||
|  | ||||
|  | ||||
|                 ' 실-냉방 냉열 공급 | ||||
|  | ||||
|                 'Q_c_b = Sheets("" & i_count_month & "").Cells(7, 7 + i_count_zone) | ||||
|  | ||||
|                 Q_c_d = (1 - eta_c_d) * Q_c_b '(3.2.8-21) eta_c_d는 (Tab.7-8) | ||||
|                 Q_c_ce = ((1 - eta_c_ce) + (1 - eta_c_ce_sens)) * Q_c_b '(3.2.5-20) eta_c_ce는(Tab.7-8), eta_c_ce_sens는 (Tab.7-7) | ||||
|  | ||||
|                 Q_c_outg = Q_c_b + Q_c_ce + Q_c_d + Q_c_s '(3.2.8-19) | ||||
|  | ||||
|  | ||||
|  | ||||
|                 '========================================================================================================================================== | ||||
|                 ' 실-냉방 2차 공기 송풍기의 전기에너지 요구량 | ||||
|                 ' 추후 세부 변수 검토 | ||||
|  | ||||
|                 'beta_c_i = beat_c_we = Q_c_b_we / (Q_c_max_res * t_c_op_we) '(2-D.7) | ||||
|                 'beta_c_i = beta_c_nutz = Q_c_b_nutz / (Q_c_max_res * t_c_op_nutz) | ||||
|                 't_c_i = t_mth_nutz = d_nutz * t_c_op_nutz '(2-D.8) t_c_i=t_mth_we=d_we*t_c_op_we | ||||
|                 't_c_i = t_mth_i * beta_c_i / beta_c_grenz '(2-D.6) | ||||
|                 't_c_op = t_c_NR + t_c_we '(2-D.5) | ||||
|                 'Q_c_outg = Q_c_b + Q_c_ce + Q_c_d + Q_c_s '(3.2.8-19) | ||||
|                 'Q_c_ce_aux = f_c_ce_aux * Q_c_outg * t_c_op / 1000 '(3.2.8-23) f_c_ce_aux 는 (Tab.3.93) | ||||
|                 Q_c_ce_aux = f_c_ce_aux * Q_c_outg * t_h_max / 1000 | ||||
|  | ||||
|  | ||||
|                 '========================================================================================================================================== | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|                 '공조-냉방 냉열 공급 | ||||
|  | ||||
|                 Q_c_star_d = (1 - eta_c_star_d) * Q_c_star_b '(3.2.8-18) eta_c_star_d는 (Tab.3.91) | ||||
|                 Q_c_star_ce = ((1 - eta_c_star_ce) + (1 - eta_c_star_ce_sens)) * Q_c_star_b '(3.2.8-16) eta_c_star_ce는 (Tab.3.91), eta_c_star_ce_sens는 (Tab.3.91) | ||||
|  | ||||
|                 Q_c_star_outg = Q_c_star_b + Q_c_star_ce + Q_c_star_d + Q_c_star_s '(3.2.8-15) | ||||
|                 Q_z_star_outg_l = Q_c_star_outg | ||||
|  | ||||
|  | ||||
|                 ' 공조기기 가습에 필요한 생산기의 이용열 교부 | ||||
|  | ||||
|  | ||||
|                 'Q_m_star_d = 0 | ||||
|                 'Q_m_star_ce = 0 | ||||
|                 'Q_m_star_b = Q_vm_b '(3.2.8-14) | ||||
|                 'Q_m_star_outg = Q_m_star_b 'Q_m_star_outg = Q_m_star_b + Q_m_star_ce + Q_m_star_d '(3.2.8-24) | ||||
|  | ||||
|  | ||||
|                 Q_c_outg_total = Q_c_outg + Q_c_star_outg | ||||
|  | ||||
|                 Q_z_outg_l = Q_c_outg_total | ||||
|  | ||||
|  | ||||
|  | ||||
|                 '================================================================================================================================== | ||||
|                 '================================================================================================================================== | ||||
|                 '지열시스템 | ||||
|  | ||||
|                 Dim CRenew As New CRenewable | ||||
|                 If dr냉방.신재생연결여부 = "시스템연결" AndAlso dr냉방.연결된시스템 <> "0" Then ' 시스템연결" Then | ||||
|                     Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & dr냉방.연결된시스템 & "' and code <> '0'")(0), DS.tbl_newRow) | ||||
|                     '//연결되었을시에는  | ||||
|                     Select Case Dr신재생.기기종류.Trim | ||||
|                         Case "태양열" '//태양열 | ||||
|                         Case "태양광" '//태양광 | ||||
|                         Case "지열" '//지열 | ||||
|                             Select Case Dr신재생.가동연료.Trim | ||||
|                                 Case "전기" '전기" | ||||
|                                     CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_c_outg_total, i_count_month, d_op_max_mth, t_h_max, theta_VA, theta_i, Q_hp_outg, Q_c_f_hp, Q_c_g_hp_aux) | ||||
|                                     Q_c_outg_total = Q_c_outg_total - Q_hp_outg | ||||
|                                     Q_c_f = Q_c_f + Q_c_f_hp + Q_c_g_hp_aux | ||||
|                                     use_Elec = use_Elec + Q_c_f_hp + Q_c_g_hp_aux | ||||
|                                 Case "천연가스" '천연가스" | ||||
|                                     CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_c_outg_total, i_count_month, d_op_max_mth, t_h_max, theta_VA, theta_i, Q_hp_outg, Q_c_f_hp, Q_c_g_hp_aux) | ||||
|                                     Q_c_outg_total = Q_c_outg_total - Q_hp_outg | ||||
|                                     Q_c_f = Q_c_f + Q_c_f_hp + Q_c_g_hp_aux | ||||
|                                     use_LNG = use_LNG + Q_c_f_hp | ||||
|                                     use_Elec = use_Elec + Q_c_g_hp_aux | ||||
|                                 Case "액화가스" '액화가스" | ||||
|                                     CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_c_outg_total, i_count_month, d_op_max_mth, t_h_max, theta_VA, theta_i, Q_hp_outg, Q_c_f_hp, Q_c_g_hp_aux) | ||||
|                                     Q_c_outg_total = Q_c_outg_total - Q_hp_outg | ||||
|                                     Q_c_f = Q_c_f + Q_c_f_hp + Q_c_g_hp_aux | ||||
|                                     use_LPG = use_LPG + Q_c_f_hp | ||||
|                                     use_Elec = use_Elec + Q_c_g_hp_aux | ||||
|                             End Select | ||||
|                         Case "열병합" '//열병합 | ||||
|                     End Select | ||||
|                 End If | ||||
|  | ||||
|                 '================================================================================================================================== | ||||
|                 '================================================================================================================================== | ||||
|  | ||||
|                 EER = TOSG(dr냉방.열성능비) * age ' Dr냉방.열성능비 | ||||
|                 Q_dot_c_outg = TOSG(dr냉방.냉동기용량) ' dr냉방.냉동기용량 | ||||
|  | ||||
|                 k_n = Q_c_outg_total / (Q_dot_c_outg * t_h_max) | ||||
|  | ||||
|                 If k_n > 1 Then k_n = 1 | ||||
|  | ||||
|                 k_n_index = 100 ' 조건에 없는 압축방식에서 에러 발생 유도함 | ||||
|  | ||||
|                 Select Case dr냉방.냉동기방식.Trim 'Dr냉방.냉동기방식 | ||||
|                     Case "압축식", "압축식(LNG)" '압축식" | ||||
|                         T_W_1_i = TOSG(dr냉방.냉각탑입구온도) ' Dr냉방.냉각탑입구온도 | ||||
|                         Select Case dr냉방.냉동기종류.Trim ' Dr냉방.냉동기종류 | ||||
|                             Case "수냉식" '수냉식" | ||||
|                                 Select Case dr냉방.냉동기압축방식.Trim ' Dr냉방.냉동기압축방식 | ||||
|                                     Case "왕복동/스크롤 압축기" '왕복동/스크롤압축기" | ||||
|                                         Select Case dr냉방.압축기제어방식.Trim 'Dr냉방.압축기제어방식 | ||||
|                                             Case "on/off제어" | ||||
|                                                 k_n_index = 7 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case "다단제어" '다단제어" | ||||
|                                                 k_n_index = 8 | ||||
|                                                 Select Case dr냉방.증발식건식냉각기.Trim ' Dr냉방.증발식건식냉각기 | ||||
|                                                     Case "증발식" '증발식" | ||||
|                                                         f_2_av = TOSG(2.0614 - 0.0307 * T_W_1_i) | ||||
|                                                     Case "건식" '건식" | ||||
|                                                         f_2_av = TOSG(2.1181 - 0.0249 * T_W_1_i) | ||||
|                                                     Case Else | ||||
|                                                         MsgBox("22") | ||||
|                                                 End Select | ||||
|                                             Case "실린더off" | ||||
|                                                 k_n_index = 9 | ||||
|                                                 Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                                                     Case "증발식" '증발식" | ||||
|                                                         f_2_av = TOSG(2.0614 - 0.0307 * T_W_1_i) | ||||
|                                                     Case "건식" '건식" | ||||
|                                                         f_2_av = TOSG(2.1181 - 0.0249 * T_W_1_i) | ||||
|                                                     Case Else | ||||
|                                                         MsgBox("21") | ||||
|                                                 End Select | ||||
|                                             Case "바이패스제어" '바이패스제어" | ||||
|                                                 k_n_index = 10 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case Else | ||||
|                                                 MsgBox("19") | ||||
|                                         End Select | ||||
|                                     Case "스크류압축기" '스크류압축기" | ||||
|                                         k_n_index = 11 | ||||
|                                         Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                                             Case "증발식" '증발식" | ||||
|                                                 f_2_av = TOSG(2.0614 - 0.0307 * T_W_1_i) | ||||
|                                             Case "건식" '건식" | ||||
|                                                 f_2_av = TOSG(3.1851 - 0.0486 * T_W_1_i) | ||||
|                                             Case Else | ||||
|                                                 MsgBox("18") | ||||
|                                         End Select | ||||
|                                     Case "터보압축기" '터보압축기" | ||||
|                                         k_n_index = 12 | ||||
|                                         Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                                             Case "증발식" '증발식" | ||||
|                                                 f_2_av = TOSG(2.0614 - 0.0307 * T_W_1_i) | ||||
|                                             Case "건식" '건식" | ||||
|                                                 f_2_av = TOSG(2.1181 - 0.0249 * T_W_1_i) | ||||
|                                             Case Else | ||||
|                                                 MsgBox("16") | ||||
|                                         End Select | ||||
|                                     Case Else | ||||
|                                         MsgBox("17") | ||||
|                                 End Select | ||||
|  | ||||
|                             Case "공냉식" '공냉식" | ||||
|                                 Select Case dr냉방.냉동기압축방식.Trim | ||||
|                                     Case "왕복동/스크롤 압축기" '왕복동/스크롤압축기" | ||||
|                                         Select Case dr냉방.압축기제어방식.Trim | ||||
|                                             Case "on/off제어" | ||||
|                                                 k_n_index = 0 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case "다단제어" '다단제어" | ||||
|                                                 k_n_index = 1 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case Else | ||||
|                                                 MsgBox("15") | ||||
|                                         End Select | ||||
|                                     Case "스크류압축기" '스크류압축기" | ||||
|                                         k_n_index = 2 | ||||
|                                         f_2_av = 1 | ||||
|                                     Case Else | ||||
|                                         MsgBox("14") | ||||
|                                 End Select | ||||
|  | ||||
|                             Case "실내공조시스템" '실내공조시스템" | ||||
|                                 Select Case dr냉방.냉동기설비시스템.Trim ' Dr냉방.냉동기설비시스템 | ||||
|                                     Case "콤팩트형시스템" '콤팩트형시스템" | ||||
|                                         k_n_index = 3 | ||||
|                                         f_2_av = 1 | ||||
|                                     Case "실내외분리시스템" '실내외분리시스템" | ||||
|                                         Select Case dr냉방.제어방식.Trim.ToLower '냉동기설비시스템의제어방식 Dr냉방.제어방식 | ||||
|                                             Case "on/off제어" | ||||
|                                                 k_n_index = 3 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case "회전수제어" '회전수제어" | ||||
|                                                 k_n_index = 5 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case Else | ||||
|                                                 MsgBox(dr냉방.제어방식.Trim) | ||||
|                                         End Select | ||||
|                                     Case "멀티분리시스템" '멀티분리시스템" | ||||
|                                         Select Case dr냉방.제어방식.Trim | ||||
|                                             Case "on/off제어" | ||||
|                                                 k_n_index = 4 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case "회전수제어" '회전수제어" | ||||
|                                                 k_n_index = 6 | ||||
|                                                 f_2_av = 1 | ||||
|                                             Case Else | ||||
|                                                 MsgBox("11") | ||||
|                                         End Select | ||||
|                                     Case Else | ||||
|                                         MsgBox("13") | ||||
|                                 End Select | ||||
|                             Case Else | ||||
|                                 MsgBox("30") | ||||
|                         End Select | ||||
|                         '//이부분정확히 살펴보아야할듯  | ||||
|                         If k_n = 0 Then k_n = 0.001 ' 부분부하율이 0일 경우 부분부하를 0에서 0.1구간으로 설정 | ||||
|                         'Dim Drow부분부하() As DS.tbl_buhaRow = DSET.tbl_buha.Rows(k_n_index) '.Select("code='" & Format(9 - Int((1 - k_n) * 10), "00") & "'") | ||||
|  | ||||
|                         If k_n_index >= 100 Then | ||||
|                             Log.AppendLine("냉방기기(" & dr냉방.설명 & ")의 냉동기방식(" & dr냉방.냉동기방식.Trim & ")에따른 종류(" & dr냉방.냉동기종류.Trim & ")를 확인할 수 없습니다") | ||||
|                             Exit For 'Return | ||||
|                         Else | ||||
|                             f_1_av_up = TOSG(DSET.tbl_buha.Rows(k_n_index)(CInt(9 - Int((1 - k_n) * 10) + 2))) | ||||
|                             If k_n < 0.1 Then | ||||
|                                 f_1_av_dn = f_1_av_up | ||||
|                             Else | ||||
|                                 f_1_av_dn = TOSG(DSET.tbl_buha.Rows(k_n_index)(CInt(9 - Int((1 - k_n) * 10) + 1))) | ||||
|                             End If | ||||
|                             f_1_av = f_1_av_up - (f_1_av_up - f_1_av_dn) * (1 - (k_n * 10 - Int(k_n * 10))) | ||||
|  | ||||
|                             'f_1_av = TOSG(DSET.tbl_buha.Rows(k_n_index)(CInt(9 - Int((1 - k_n) * 10) + 2))) ' Worksheets("부분부하율").Range("냉동기부분부하율1").Offset(k_n_index, 9 - Int((1 - k_n) * 10)) | ||||
|                         End If | ||||
|  | ||||
|                         PLV_av = f_1_av * f_2_av | ||||
|                         If dr냉방.냉동기방식 = "압축식" Then | ||||
|                             Q_c_f_elektr = Q_c_outg_total / (EER * PLV_av) | ||||
|                             '======================================================================= 2010.10.5 추가 | ||||
|                         ElseIf dr냉방.냉동기방식 = "압축식(LNG)" Then | ||||
|                             Q_c_outg_therm = Q_c_outg_total / (EER * PLV_av) | ||||
|                             use_LNG = use_LNG + Q_c_outg_therm | ||||
|                             '======================================================================= 2010.10.5 추가 | ||||
|                         End If | ||||
|                         If (dr냉방.냉동기방식 = "압축식" Or dr냉방.냉동기방식 = "압축식(LNG)") And dr냉방.냉동기종류 = "수냉식" Then 'If Dr냉방.냉동기방식 = "압축식" And Dr냉방.냉동기종류 = "수냉식" Then | ||||
|                             Q_dot_R_outg = Q_dot_c_outg * (1 + 1 / EER) | ||||
|                             Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                                 Case "증발식" '증발식" | ||||
|                                     l_min_i = TOSG(1.2103 - 0.0162 * theta_e) '원래는 습구온도로 입력요망 우선 외기건구온도로 입력 추후 수정 | ||||
|                                     'f_R_av = (Log(1 - 0.5 / 0.8) * l_min_i / (Log(1 - 0.5 / 0.8) * 0.87)) ^ 2 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정 | ||||
|                                     f_R_av = Q_c_outg_total * 4 / (Q_dot_c_outg * t_h_max) ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정 | ||||
|                                     If f_R_av > 1 Then f_R_av = 1 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산하고 최대가동시간 이하로 계산 추후 수정 | ||||
|                                     Select Case dr냉방.증발식냉각기.Trim 'Dr냉방.증발식냉각기 | ||||
|                                         Case "폐쇄형" '폐쇄형" | ||||
|                                             Select Case dr냉방.보조방음기유무.Trim 'Dr냉방.보조방음기유무 | ||||
|                                                 Case "아니오" '아니오" | ||||
|                                                     q_R_elektr = 0.033 | ||||
|                                                 Case "예" '예" | ||||
|                                                     q_R_elektr = 0.04 | ||||
|                                             End Select | ||||
|                                         Case "개방형" '개방형" | ||||
|                                             Select Case dr냉방.보조방음기유무.Trim | ||||
|                                                 Case "아니오" '아니오" | ||||
|                                                     q_R_elektr = 0.018 | ||||
|                                                 Case "예" '예" | ||||
|                                                     q_R_elektr = 0.021 | ||||
|                                             End Select | ||||
|                                     End Select | ||||
|                                 Case "건식" '건식" | ||||
|                                     f_R_av = 1 '우선 1로 적용 추후 검토 | ||||
|                                     q_R_elektr = 0.045 | ||||
|                             End Select | ||||
|                             Q_c_f_R_elektr = Q_dot_R_outg * q_R_elektr * f_R_av * t_h_max | ||||
|                         Else | ||||
|                             Q_c_f_R_elektr = 0 | ||||
|                         End If | ||||
|  | ||||
|  | ||||
|                     Case "흡수식" '흡수식" | ||||
|                         Q_dot_R_outg = Q_dot_c_outg * (1 + 1 / EER) | ||||
|                         T_W_1_i = TOSG(dr냉방.냉각탑입구온도) | ||||
|                         Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                             Case "증발식" '증발식" | ||||
|                                 l_min_i = TOSG(1.2103 - 0.0162 * theta_e) '원래는 습구온도로 입력요망 우선 외기건구온도로 입력 추후 수정 | ||||
|                                 'f_R_av = (Log(1 - 0.5 / 0.8) * l_min_i / (Log(1 - 0.5 / 0.8) * 0.87)) ^ 2 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정 | ||||
|                                 f_R_av = Q_c_outg_total * 4 / (Q_dot_c_outg * t_h_max) ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정 | ||||
|                                 If f_R_av > 1 Then f_R_av = 1 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산하고 최대가동시간 이하로 계산 추후 수정 | ||||
|                                 Select Case dr냉방.증발식냉각기.Trim | ||||
|                                     Case "폐쇄형" | ||||
|                                         Select Case dr냉방.보조방음기유무.Trim | ||||
|                                             Case "아니오" | ||||
|                                                 q_R_elektr = 0.033 | ||||
|                                             Case "예" | ||||
|                                                 q_R_elektr = 0.04 | ||||
|                                         End Select | ||||
|                                     Case "개방형" | ||||
|                                         Select Case dr냉방.보조방음기유무.Trim | ||||
|                                             Case "아니오" | ||||
|                                                 q_R_elektr = 0.018 | ||||
|                                             Case "예" | ||||
|                                                 q_R_elektr = 0.021 | ||||
|                                         End Select | ||||
|                                 End Select | ||||
|                             Case "건식" '건식" | ||||
|                                 f_R_av = 1 '우선 1로 적용 추후 검토 | ||||
|                                 q_R_elektr = 0.045 | ||||
|                         End Select | ||||
|                         Q_c_f_R_elektr = Q_dot_R_outg * q_R_elektr * f_R_av * t_h_max | ||||
|  | ||||
|                         Select Case dr냉방.증발식건식냉각기.Trim | ||||
|                             Case "증발식" | ||||
|                                 f_2_av = TOSG(1.7174 - 0.0217 * T_W_1_i) | ||||
|                             Case "건식" | ||||
|                                 f_2_av = TOSG(2.3235 - 0.0294 * T_W_1_i) | ||||
|                             Case Else | ||||
|                                 'MsgBox("증발식건식냉각기를 확인할 수 없습니다" & vbCrLf & "Calc_CoolingSystem 429번줄 Case else 를 입력하세요", MsgBoxStyle.Critical, dr냉방.증발식건식냉각기) | ||||
|  | ||||
|                         End Select | ||||
|  | ||||
|                         '//13번째줄 | ||||
|                         If k_n = 0 Then k_n = 0.01 ' 부분부하율이 0일 경우 부분부하를 0에서 0.1구간으로 설정 | ||||
|                         f_1_av_up = TOSG(DSET.tbl_buha.Rows(13)(CInt(9 - Int((1 - k_n) * 10) + 2))) | ||||
|                         If k_n < 0.1 Then | ||||
|                             f_1_av_dn = f_1_av_up | ||||
|                         Else | ||||
|                             f_1_av_dn = TOSG(DSET.tbl_buha.Rows(13)(CInt(9 - Int((1 - k_n) * 10) + 1))) | ||||
|                         End If | ||||
|                         f_1_av = f_1_av_up - (f_1_av_up - f_1_av_dn) * (1 - (k_n * 10 - Int(k_n * 10))) | ||||
|                         'f_1_av = TOSG(DSET.tbl_buha.Rows(13)(CInt(9 - Int((1 - k_n) * 10) + 2))) 'Worksheets("부분부하율").Range("냉동기부분부하율1").Offset(13, 9 - Int((1 - k_n) * 10)) | ||||
|                         PLV_av = f_1_av * f_2_av | ||||
|  | ||||
|  | ||||
|  | ||||
|                         Q_c_outg_therm = Q_c_outg_total / (EER * PLV_av) | ||||
|  | ||||
|                         ': 흡수식 냉동기에서 사용되는 보일러의 생산손실에너지 계산 | ||||
|                         If dr냉방.열생산연결방식.ToString = "외부연결" Then '==============================2010.04.02 if문 추가 | ||||
|  | ||||
|  | ||||
|                             '//냉방의 온수열생산기기로 지정된 난방기기만을 취한다 10.02.23 최적화중변경 | ||||
|                             For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET.tbl_nanbangkiki.Select("code = '" & dr냉방.온수열생산기기 & "' and code <> '0'", "code") | ||||
|                                 'If Dr난방.code = dr냉방.온수열생산기기 Then ' Dr냉방.온수열생산기기 Then | ||||
|  | ||||
|                                 theta_VA = TOSG(Dr난방.급수온도) ' Worksheets("난방기기").Range("난방기기급수온도1").Offset(0, i_count_c_d - 1) | ||||
|                                 theta_RA = TOSG(Dr난방.환수온도) ' Worksheets("난방기기").Range("난방기기환수온도1").Offset(0, i_count_c_d - 1) | ||||
|  | ||||
|                                 theta_HK_m_beta_h_d = TOSG(0.5 * (theta_VA + theta_RA)) | ||||
|  | ||||
|                                 '---------------------------------------------------------------------------------------------------------------------------------- | ||||
|                                 '---------------------------------------------------------------------------------------------------------------------------------- | ||||
|  | ||||
|                                 '신재생 및 열병합 시스템 | ||||
|                                 Dim CNew As New CRenewable | ||||
|                                 If Dr난방.신재생연결여부 = "시스템연결" AndAlso Dr난방.연결된시스템 <> "0" Then ' Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_c_d - 1) = "시스템연결" Then | ||||
|                                     Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & Dr난방.연결된시스템 & "' and code <> '0'")(0), DS.tbl_newRow) | ||||
|                                     Select Case Dr신재생.기기종류.Trim | ||||
|                                         Case "태양열" '//태양열 | ||||
|                                             '========================================================================================2010.04.02 추가 | ||||
|                                             If Q_c_outg_therm > 0 Then | ||||
|                                                 Calc.Renewable.Calc_ThermalSolarSystem_EN(system_type, Dr신재생.code, i_count_month, d_op_max_mth, Q_h_outg_i, Q_c_outg_therm, Q_W_sol_out_m, Q_H_sol_out_m, W_sol_aux_m) | ||||
|                                                 Q_c_outg_therm = Q_c_outg_therm - Q_W_sol_out_m | ||||
|                                                 Q_c_aux = Q_c_aux + W_sol_aux_m | ||||
|                                             End If | ||||
|                                             '========================================================================================2010.04.02 추가 | ||||
|                                         Case "태양광" '//태양광 | ||||
|                                         Case "지열" '//지열                                            | ||||
|                                         Case "열병합" '//열병합 | ||||
|                                             If Q_c_outg_therm > 0 Then '===========================2010.04.02  And Q_c_outg_therm > 0 추가 | ||||
|                                                 Select Case Dr신재생.가동연료.Trim | ||||
|                                                     Case "난방유" '난방유" | ||||
|                                                         CNew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_c_outg_therm, t_h_max, Q_chp_outg, Q_c_f_chp) | ||||
|                                                         Q_c_outg_therm = Q_c_outg_therm - Q_chp_outg | ||||
|                                                         use_Oil = use_Oil + Q_c_f_chp | ||||
|  | ||||
|                                                     Case "천연가스" '천연가스" | ||||
|                                                         CNew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_c_outg_therm, t_h_max, Q_chp_outg, Q_c_f_chp) | ||||
|                                                         Q_c_outg_therm = Q_c_outg_therm - Q_chp_outg | ||||
|                                                         use_LNG = use_LNG + Q_c_f_chp | ||||
|  | ||||
|                                                     Case "액화가스" '액화가스" | ||||
|                                                         CNew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_c_outg_therm, t_h_max, Q_chp_outg, Q_c_f_chp) | ||||
|                                                         Q_c_outg_therm = Q_c_outg_therm - Q_chp_outg | ||||
|                                                         use_LPG = use_LPG + Q_c_f_chp | ||||
|  | ||||
|                                                 End Select | ||||
|                                             End If | ||||
|  | ||||
|                                     End Select | ||||
|                                 End If | ||||
|  | ||||
|  | ||||
|                                 '---------------------------------------------------------------------------------------------------------------------------------- | ||||
|                                 '---------------------------------------------------------------------------------------------------------------------------------- | ||||
|  | ||||
|  | ||||
|                                 If Dr난방.열생산기기방식 = "보일러" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_c_d - 1) = "보일러" Then | ||||
|  | ||||
|                                     Q_dot_N = TOSG(Dr난방.정격보일러효율) * age_heating ' Worksheets("난방기기").Range("난방기기정격출력1").Offset(0, i_count_c_d - 1) | ||||
|                                     Q_dot_d_in = Q_c_outg_therm / t_h_max | ||||
|  | ||||
|                                     Select Case Dr난방.운전방식.Trim ' Worksheets("난방기기").Range("난방기기운전방식1").Offset(0, i_count_c_d - 1) | ||||
|                                         Case "단독가동" '단독가동" | ||||
|                                             beta_h = Q_dot_d_in / Q_dot_N '(3.2.7-64) : 단일보일러 시설 | ||||
|                                         Case "동시가동" ' 동시가동" | ||||
|                                             beta_h = Q_dot_d_in / (Q_dot_N * TOSG(Dr난방.보일러대수)) ' Worksheets("난방기기").Range("난방기기운전방식1").Offset(1, i_count_c_d - 1)) '(3.2.7-64) : 다수보일러 동시가동 | ||||
|                                         Case "순차가동" '순차가동" | ||||
|                                             For i_count_beta = 1 To CInt(TOSG(Dr난방.보일러대수)) | ||||
|                                                 If Q_dot_d_in <= (Q_dot_N * i_count_beta) Then | ||||
|                                                     beta_h = (Q_dot_d_in - Q_dot_N * (i_count_beta - 1)) / Q_dot_N * i_count_beta '다수보일러 대수제어 | ||||
|                                                     n_beta = i_count_beta - 1 | ||||
|                                                     Exit For | ||||
|                                                 End If | ||||
|                                             Next | ||||
|                                     End Select | ||||
|  | ||||
|  | ||||
|                                     eta_k_100 = TOSG(Dr난방.정격보일러효율) * age_heating / 100 'Worksheets("난방기기").Range("난방기기정격효율1").Offset(0, i_count_c_d - 1) / 100 | ||||
|                                     eta_k_pl = eta_k_100 | ||||
|                                     f = -0.4 | ||||
|                                     Select Case Dr난방.보일러방식.Trim 'Worksheets("난방기기").Range("보일러방식1").Offset(0, i_count_c_d - 1) | ||||
|                                         Case "가스보일러" '가스보일러" | ||||
|                                             e = 8.5 | ||||
|                                             f = -0.4 | ||||
|                                         Case "기름보일러" '기름보일러" | ||||
|                                             e = 8.5 | ||||
|                                             f = -0.4 | ||||
|                                         Case "저온가스보일러" '저온가스보일러" | ||||
|                                             e = 4.5 | ||||
|                                             f = -0.4 | ||||
|                                         Case "저온기름보일러" '저온기름보일러" | ||||
|                                             e = 4.25 | ||||
|                                         Case "콘덴싱보일러" '콘덴싱보일러" | ||||
|                                             e = 4 | ||||
|                                     End Select | ||||
|  | ||||
|                                     q_B_70 = TOSG((e * (Q_dot_N ^ f)) / 100) | ||||
|                                     q_B_theta = q_B_70 '원래는 =q_B_70 * (theta_HK_m_beta_h_g - theta_i) / (70 - 20) 이지만 q_B_theta 와 q_B_70 이 같은 것으로 적용 추후검토 | ||||
|  | ||||
|                                     'Select Case Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_c_d - 1) | ||||
|                                     'Case "난방유" | ||||
|                                     'f_Hs_Hi = 1.06 | ||||
|                                     'Case "천연가스" | ||||
|                                     'f_Hs_Hi = 1.11 | ||||
|                                     'Case "액화가스" | ||||
|                                     'f_Hs_Hi = 1.09 | ||||
|                                     'Case "석탄" | ||||
|                                     'f_Hs_Hi = 1.04 | ||||
|                                     'Case "갈탄" | ||||
|                                     'f_Hs_Hi = 1.07 | ||||
|                                     'Case "나무" | ||||
|                                     'f_Hs_Hi = 1.08 | ||||
|                                     'End Select | ||||
|  | ||||
|                                     f_Hs_Hi = 1 ' 국내는 총발열량을 기준으로 입력함으로 우선 1로 설정, 추후 검토 | ||||
|  | ||||
|                                     Q_dot_B_h = q_B_theta * (Q_dot_N / eta_k_100) * f_Hs_Hi '(3.2.7-71) | ||||
|  | ||||
|                                     Q_V_g_100 = (f_Hs_Hi - eta_k_100) / eta_k_100 * Q_dot_N | ||||
|                                     Q_V_g_pl = (f_Hs_Hi - eta_k_pl) / eta_k_pl * beta_k_pl * Q_dot_N | ||||
|  | ||||
|                                     '------------------------------------------------------------------------------------------------------ | ||||
|  | ||||
|                                     If beta_h > beta_k_pl Then | ||||
|                                         Q_c_g_v_i = ((beta_h - beta_k_pl) / (1 - beta_k_pl) * (Q_V_g_100 - Q_V_g_pl) + Q_V_g_pl) | ||||
|                                         Q_c_g_v_i = Q_c_g_v_i + ((Q_V_g_100 - Q_V_g_pl) + Q_V_g_pl) * n_beta | ||||
|                                     Else | ||||
|                                         Q_c_g_v_i = ((beta_h / beta_k_pl) * (Q_V_g_pl - Q_dot_B_h) + Q_dot_B_h) | ||||
|                                     End If | ||||
|  | ||||
|  | ||||
|                                     Q_c_g = Q_c_g_v_i * t_h_max '  추후 검토 | ||||
|  | ||||
|                                 Else | ||||
|  | ||||
|                                     ':지역난방의 경우 적용 추후 검토 | ||||
|                                     Q_c_g = 0 | ||||
|  | ||||
|                                 End If | ||||
|  | ||||
|                                 If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_c_d - 1) = "보일러" Then | ||||
|                                     Select Case Dr난방.사용연료.Trim ' Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_c_d - 1) | ||||
|                                         Case "난방유" '난방유" | ||||
|                                             use_Oil = use_Oil + Q_c_g + Q_c_outg_therm | ||||
|  | ||||
|                                         Case "천연가스" '천연가스" | ||||
|                                             use_LNG = use_LNG + Q_c_g + Q_c_outg_therm | ||||
|  | ||||
|                                         Case "액화가스" '액화가스" | ||||
|                                             use_LPG = use_LPG + Q_c_g + Q_c_outg_therm | ||||
|  | ||||
|                                     End Select | ||||
|                                 Else | ||||
|                                     Select Case Dr난방.열생산기기방식.Trim 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_c_d - 1) | ||||
|                                         Case "지역난방" '지역난방" | ||||
|                                             use_DH = use_DH + Q_c_outg_therm | ||||
|  | ||||
|                                         Case "전기보일러" '전기보일러" | ||||
|                                             use_Elec = use_Elec + Q_c_outg_therm | ||||
|  | ||||
|                                     End Select | ||||
|  | ||||
|                                 End If | ||||
|  | ||||
|  | ||||
|                                 ' End If | ||||
|  | ||||
|  | ||||
|                             Next | ||||
|                             '=================================================================================================2010.04.02 if문 추가 | ||||
|                         ElseIf dr냉방.열생산연결방식 = "직화식" Then | ||||
|                             Select Case dr냉방.사용연료.ToString | ||||
|                                 Case "난방유" | ||||
|                                     use_Oil = use_Oil + Q_c_outg_therm | ||||
|                                 Case "천연가스" | ||||
|                                     use_LNG = use_LNG + Q_c_outg_therm | ||||
|                                 Case "액화가스" | ||||
|                                     use_LPG = use_LPG + Q_c_outg_therm | ||||
|                                 Case Else | ||||
|                                     MsgBox("냉동기기(" & dr냉방.설명 & ")가 직화식이나 사용연료가 없습니다.확인바랍니다.", vbOKOnly, "건물 에너지 평가 프로그램(ECO2)") | ||||
|                             End Select | ||||
|                         Else | ||||
|                             MsgBox("냉동기기(" & dr냉방.설명 & ")의 열생산연결방식을 확인바랍니다.", vbOKOnly, "건물 에너지 평가 프로그램(ECO2)") | ||||
|                         End If | ||||
|  | ||||
|                         '=================================================================================================2010.04.02 if문 추가 | ||||
|                     Case "지역냉방" '지역냉방" | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         use_DC = use_DC + Q_c_outg_total | ||||
|                         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|                         Q_c_outg_therm = Q_c_outg_total | ||||
|  | ||||
|                 End Select | ||||
|  | ||||
|                 Q_c_f = Q_c_f + Q_c_f_elektr + Q_c_f_R_elektr + Q_c_outg_therm + Q_c_g | ||||
|                 use_Elec = use_Elec + Q_c_f_elektr + Q_c_f_R_elektr | ||||
|  | ||||
|                 If i_count_month = 6 Then | ||||
|                     i_count_month = 6 | ||||
|                 End If | ||||
|                 ' 분배에 대한 전기 에너지 소비 | ||||
|                 For Each Dr분배 As DS.tbl_bunbaeRow In DSET.tbl_bunbae.Select("냉동기='" & dr냉방.code & "' and code <> '0'", "code") | ||||
|                     'If Dr분배.냉동기 = dr냉방.code Then ' Worksheets("냉방분배시스템").Range("냉동기분배1").Offset(0, i_count_c_d - 1) = Worksheets("냉방기기").Range("냉방생산기기1").Offset(0, i_count_chiller - 1) Then | ||||
|  | ||||
|                     Q_dot_z = Q_dot_c_outg * (1 + 1 / EER) '(3.2.8-30) | ||||
|                     Delta_theta_z_cl = TOSG(Dr분배.설정점에서의온도차) ' Worksheets("냉방분배시스템").Range("급수온도1").Offset(3, i_count_c_d - 1) 6 | ||||
|                     c_cl = TOSG(Dr분배.냉매의비열) ' Worksheets("냉방분배시스템").Range("급수온도1").Offset(4, i_count_c_d - 1) 4.18 | ||||
|                     rho_cl = TOSG(Dr분배.냉매의밀도) ' Worksheets("냉방분배시스템").Range("급수온도1").Offset(5, i_count_c_d - 1)   1000 | ||||
|                     V_dot_z = (3600 * Q_dot_z) / (Delta_theta_z_cl * c_cl * rho_cl) '(3.2.8-29) | ||||
|                     L = TOSG(Dr분배.공급범위의길이) ' Worksheets("냉방분배시스템").Range("공급범위길이1").Offset(0, i_count_c_d - 1) | ||||
|                     b = TOSG(Dr분배.공급범위의넓이) 'Worksheets("냉방분배시스템").Range("공급범위길이1").Offset(1, i_count_c_d - 1) | ||||
|                     n_G = TOSG(Dr분배.열층의수) ' Worksheets("냉방분배시스템").Range("공급범위길이1").Offset(2, i_count_c_d - 1) | ||||
|                     h_G = TOSG(Dr분배.층고) 'Worksheets("냉방분배시스템").Range("공급범위길이1").Offset(3, i_count_c_d - 1) | ||||
|                     L_max = 2 * (L + b / 2 + h_G * n_G + 10) '(3.2.8-32) | ||||
|                     R = TOSG(Dr분배.배관의압력손실) ' Worksheets("냉방분배시스템").Range("급수온도1").Offset(7, i_count_c_d - 1)  0.3 | ||||
|                     z = TOSG(Dr분배.개별저항비율) '("냉방분배시스템").Range("급수온도1").Offset(8, i_count_c_d - 1) 0.4 | ||||
|                     Delta_P_WUE = TOSG(Dr분배.생산기기압력손실) ' Worksheets("냉방분배시스템").Range("생산기기압력손실1").Offset(0, i_count_c_d - 1) | ||||
|                     Delta_P_WUV = TOSG(Dr분배.사용기기압력손실) ' Worksheets("냉방분배시스템").Range("생산기기압력손실1").Offset(1, i_count_c_d - 1) | ||||
|                     Delta_P_RV = TOSG(Dr분배.제어밸브압력손실) ' Worksheets("냉방분배시스템").Range("생산기기압력손실1").Offset(2, i_count_c_d - 1) | ||||
|  | ||||
|                     Delta_p_z = R * L_max * (1 + z) + Delta_P_WUE + Delta_P_RV + Delta_P_WUV '(3.2.8-31) R(7-Tab.11), Delta_P_WUE, Delta_P_RV, Delta_P_WUV (7-Tab.12) | ||||
|  | ||||
|                     P_d_hydr = 1000 * Delta_p_z * V_dot_z / 3600 '(3.2.8-28) | ||||
|  | ||||
|                     'f_e = f_dash_e * (1 + (nu_cl ^ 2 / (16 * P_d_hydr)) ^ 0.4) '기존건물 관련 | ||||
|                     'f_e = (1.25 + (200 / P_d_hydr) ^ 0.5) * f_Adap * b '(3.2.8-38) '기존건물 관련 | ||||
|                     P_Pump = TOSG(Dr분배.펌프동력) 'Worksheets("냉방분배시스템").Range("급수온도1").Offset(9, i_count_c_d - 1) | ||||
|                     'P_Pump = Worksheets("냉방분배시스템").Range("급수온도1").Offset(9, i_count_c_d - 1) << 이거오류인듯 펌프는 8번인덱스여야한다.9번줄에는 아무것도 없다. | ||||
|                     f_e = P_Pump / P_d_hydr '원래는 P_hydr '(3.2.8-37) | ||||
|  | ||||
|                     If Dr분배.펌프운전제어유무 = "제어" Then ' Worksheets("냉방분배시스템").Range("급수온도1").Offset(-1, i_count_c_d - 1) = "제어" Then | ||||
|                         c_p1 = 0.85 | ||||
|                         c_p2 = 0.15 | ||||
|                     ElseIf Dr분배.펌프운전제어유무 = "대수제어" Then | ||||
|                         c_p1 = 0.75 | ||||
|                         c_p2 = 0.25 | ||||
|                     Else | ||||
|                         c_p1 = 0.25 | ||||
|                         c_p2 = 0.75 | ||||
|                     End If | ||||
|  | ||||
|                     'beta_d_l = beta_dash_ + (1 - beta_dash_d_l) * V_dot_z_min / V_dot_z '(3.2.8-35) | ||||
|                     If Q_z_outg_l <> 0 Then | ||||
|                         beta_d_l = Q_z_outg_l / (Q_dot_z * t_h_max) '(3.2.8-34) t_d_l 을 t_h_max으로 사용 | ||||
|  | ||||
|                         e_d_l = f_e * (c_p1 + c_p2 / beta_d_l) '(3.2.8-36) | ||||
|  | ||||
|                         W_d_hydr_l = P_d_hydr / 1000 * t_h_max * beta_d_l * f_Abgl '(3.2.8-27)  t_d_l 을 t_h_max으로 사용 | ||||
|  | ||||
|                         Q_z_aux_d_l = W_d_hydr_l * e_d_l '(3.2.8-26) | ||||
|                         'Q_z_aux_d_a = sigma(Q_z_zux_d_l) '(3.2.8-25) | ||||
|  | ||||
|                         Q_c_aux = Q_c_aux + Q_z_aux_d_l | ||||
|                     End If | ||||
|  | ||||
|                     'End If | ||||
|  | ||||
|                 Next | ||||
|  | ||||
|             End If '2 | ||||
|  | ||||
|         Next '1 | ||||
|  | ||||
|  | ||||
|  | ||||
|         '//계산결과 시트의 각 월에해당되는 곳에 데이터를 기록한다. | ||||
|  | ||||
|         Result.E소요량(i_count_month).냉방 = Q_c_f | ||||
|         Result.E소요량(i_count_month).냉방보조 = Q_c_aux | ||||
|  | ||||
|         use_Elec = use_Elec + Q_c_aux | ||||
|  | ||||
|         Result.일차E소요량(i_count_month).냉방등유 = use_Oil | ||||
|         Result.일차E소요량(i_count_month).냉방LNG = use_LNG | ||||
|         Result.일차E소요량(i_count_month).냉방LPG = use_LPG | ||||
|         Result.일차E소요량(i_count_month).냉방지역난방열 = use_DH | ||||
|         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|         Result.일차E소요량(i_count_month).냉방지역냉방열 = use_DC | ||||
|         '--------------------------------------------------------------------------------------------------2010.02.22 수정 | ||||
|         Result.일차E소요량(i_count_month).냉방전력 = use_Elec | ||||
|  | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										1821
									
								
								ArinWarev1/Calculator/Heating/CHeating.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1821
									
								
								ArinWarev1/Calculator/Heating/CHeating.vb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										593
									
								
								ArinWarev1/Calculator/Renewable/CRenewable.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										593
									
								
								ArinWarev1/Calculator/Renewable/CRenewable.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,593 @@ | ||||
| Public Class CRenewable | ||||
|     Public Sub New() | ||||
|         'ByVal dr존 As DS.tbl_zoneRow, | ||||
|     End Sub | ||||
|     ' Public Overridable Sub Calc_ThermalSolarSystem_EN(ByVal i_system_ts As Integer, ByVal i_count_ts As Integer, ByVal i_ts_month As Integer, ByVal i_ts_d_mth As Integer, ByVal Q_H_sol_us_m as decimal, ByVal Q_W_sol_us_m as decimal, ByRef Q_W_sol_out_m as decimal, ByRef Q_H_sol_out_m as decimal, ByRef W_sol_aux_m as decimal) | ||||
|  | ||||
|     Public Overridable Sub Calc_ThermalSolarSystem_EN(ByVal i_system_ts As Integer, ByVal DR_code As String, ByVal i_ts_month As Integer, ByVal i_ts_d_mth As Integer, ByVal Q_H_sol_us_m As Decimal, ByVal Q_W_sol_us_m As Decimal, ByRef Q_W_sol_out_m As Decimal, ByRef Q_H_sol_out_m As Decimal, ByRef W_sol_aux_m As Decimal) | ||||
|  | ||||
|         Dim theta_ref As Decimal, theta_w As Decimal, theta_cw As Decimal, U_loop_p As Decimal, U_loop As Decimal, Delta_T As Decimal | ||||
|         Dim A_ As Decimal, a As Decimal, b As Decimal, c As Decimal, d As Decimal, e As Decimal, f As Decimal, eta_loop As Decimal, IAM As Decimal, eta_0 As Decimal | ||||
|         Dim a_1 As Decimal, a_2 As Decimal, P_H As Decimal, P_W As Decimal, V_ref As Decimal, V_sol As Decimal, t_m As Decimal, I_m As Decimal, P_aux_nom As Decimal | ||||
|         'Dim i_ts_location As Integer, i_count_ts_location As Integer | ||||
|         '     Dim i_count_month As Integer | ||||
|         Dim i_direction As Integer | ||||
|         Dim t_aux_m As Decimal, l_tot As Decimal, f_st As Decimal, U_st As Decimal | ||||
|         Dim theta_setpoint As Decimal, theta_a_avg As Decimal, theta_e_avg As Decimal | ||||
|         Dim Q_sol_ls_rbl_m As Decimal, Q_sol_aux_rbl_m As Decimal, Q_sol_st_ls_rbl_m As Decimal, Q_bu_dis_ls_rbl_m As Decimal, Q_bu_dis_ls_m As Decimal, Q_sol_ls_m As Decimal | ||||
|         Dim Q_W_bu_dis_ls_m As Decimal, Q_H_bu_dis_ls_m As Decimal, Q_W_sol_st_ls_m As Decimal, Q_H_sol_st_ls_m As Decimal | ||||
|         Dim A_H As Decimal, A_W As Decimal, X As Decimal, Y As Decimal | ||||
|  | ||||
|         'Dim Dr기상데이터 As DS.tbl_weatherRow | ||||
|         'For i_count_ts_location = 1 To DSET.tbl_weather.Rows.Count ' Range("건물위치").Columns.Count | ||||
|         '    Dr기상데이터 = DSET.tbl_weather(i_count_ts_location - 1) | ||||
|         '    If dr존.지역 = Dr기상데이터.건물위치 Then  '//이상하다 1버번쨰 존의 지역값만 계속쓴다 -_-;; 지역은 즉 존에할당된게아니고 1개만 존재하는듯하다 | ||||
|         '        i_ts_location = i_count_ts_location '//기상데이터에서 현재지정된 존.지역의 기상데이터의 지역의 열번호(엑셀에서만)를 기억한다 (나중에 이번호로 데이터 참조하려고) | ||||
|         '        Exit For | ||||
|         '    End If | ||||
|         '    '//지역찾을떄그냥 DR지역을 사용하도록한다. | ||||
|         '    'If Worksheets("입력존").Range("지역1").Offset(0, 0) = Worksheets("기상데이타").Range("건물위치1").Offset(0, i_count_ts_location - 1) Then | ||||
|         '    '    i_ts_location = i_count_ts_location | ||||
|         '    '    Exit For | ||||
|         '    'End If | ||||
|         'Next | ||||
|  | ||||
|         l_tot = 0 | ||||
|  | ||||
|         Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & DR_code & "' and code <> '0'", "code")(0), DS.tbl_newRow)    '//신재생의 태양열시스템 | ||||
|  | ||||
|         Select Case Dr신재생.집열판방위.Trim ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(3, i_count_ts - 1) | ||||
|             Case "동" '동" | ||||
|                 i_direction = 12 | ||||
|  | ||||
|             Case "남동" '남동" | ||||
|                 i_direction = 10 | ||||
|  | ||||
|             Case "남" '남" | ||||
|                 i_direction = 9 | ||||
|  | ||||
|             Case "남서" '남서" | ||||
|                 i_direction = 11 | ||||
|  | ||||
|             Case "서" '서" | ||||
|                 i_direction = 13 | ||||
|  | ||||
|             Case "수평" '수평"  '//월별평균일사 수평면을 사용  나머지것들은 45도짜리를 사용한다. 45도짜리 코드값을 해당코드+1000이다. 해당코드+1000으로 미리 셋팅햇다(변경불가) | ||||
|                 i_direction = 0 | ||||
|             Case Else | ||||
|                 MsgBox("신재생에너지-태양열의 집열판 방위값이 올바르지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|         End Select | ||||
|  | ||||
|         '//집열판방위에따른 월별평균일사의 총합을 가져온다 | ||||
|         '//weather_ilsa 의 p코드에는 지역코드값이 들어가고 코드값은 집열판방위+1000 의값이 해당 각도의 방향에대한 데이터가된다. | ||||
|  | ||||
|  | ||||
|         '///만약값이 서울   방향이 남  이엇을경우에는  해당 일사데이터를 찾는게 목적이에요. 여기서 서울의 코드값은 찾을수잇어요 | ||||
|         '//그담이 방향 남에 맞는 일사데이터를 찾아야하는데.. 일사데이터 코드로는 못찾으니깐. 이름으로 찾아요. | ||||
|         '// | ||||
|         Dim 일사이름 As String = Dr신재생.집열판방위 & "(45)"  '//이렇게되면  남(45)  라는 최종이름이 되겟죠? | ||||
|         Dim Drow평균일사() As DS.weather_ilsaRow = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & _ | ||||
|                                                                               "' and 설명='" & 일사이름 & "'"), DS.weather_ilsaRow()) | ||||
|         '//그렇게해서 서울의 코드에 해당하는 pcode 와  이름이   남(45)로 되어잇는 일사데이터테이블에서 데이터를 검색하게되겟죠? | ||||
|         '//즉 데이터가 나오면 해당 데이터가 맞는거에요 ..이건 데이터베이스 이름을 남(45) 식으로 모두 고쳐주세요 | ||||
|  | ||||
|         If Drow평균일사.GetUpperBound(0) = -1 Then | ||||
|             MsgBox("지역코드=" + Calc.Pub.기상데이터.code + vbCrLf + "집열판방위코드=" + Dr신재생.집열판방위 + _ | ||||
|             vbCrLf + "예상일사코드=" + 일사이름 + _ | ||||
|             vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패") | ||||
|             I_m = 0 | ||||
|             ' Return | ||||
|         Else | ||||
|             l_tot += TOSG(Drow평균일사(0).m01) + TOSG(Drow평균일사(0).m02) + TOSG(Drow평균일사(0).m03) + TOSG(Drow평균일사(0).m04) + _ | ||||
|             TOSG(Drow평균일사(0).m05) + TOSG(Drow평균일사(0).m06) + TOSG(Drow평균일사(0).m07) + TOSG(Drow평균일사(0).m08) + _ | ||||
|             TOSG(Drow평균일사(0).m09) + TOSG(Drow평균일사(0).m10) + TOSG(Drow평균일사(0).m11) + TOSG(Drow평균일사(0).m12) | ||||
|             I_m = TOSG(Drow평균일사(0)("m" & i_ts_month.ToString("00")))   '//이줄로 위의 케이스문을 대체햇다 오류나면 케이스문으로 일단 사용할예정 | ||||
|  | ||||
|         End If | ||||
|  | ||||
|         | ||||
|         t_aux_m = I_m / l_tot * 2000 | ||||
|  | ||||
|  | ||||
|         '//월별외기평균온도(i_ts_month << 파라미터) | ||||
|         theta_e_avg = TOSG(Calc.Pub.기상데이터("m" & i_ts_month.ToString("00"))) | ||||
|         'theta_e_avg =  Worksheets("기상데이타").Range("최소외기온도1").Offset(2 + i_ts_month, i_ts_location - 1) '//월별외기평균온도 tbl_weather에 존재 | ||||
|  | ||||
|         Select Case Dr신재생.축열탱크설치장소.Trim ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|             Case "난방공간" '난방공간" | ||||
|                 theta_a_avg = 20 | ||||
|             Case "비난방공간" '비난방공간" | ||||
|                 theta_a_avg = theta_e_avg + (20 - theta_e_avg) / 2 | ||||
|             Case "외부공간" '외부공간" | ||||
|                 theta_a_avg = theta_e_avg | ||||
|         End Select | ||||
|  | ||||
|         theta_w = 40 | ||||
|         theta_cw = 15 | ||||
|         a_2 = 0 | ||||
|         eta_loop = 0.8 | ||||
|         eta_0 = 0.6 | ||||
|         t_m = i_ts_d_mth * 24 | ||||
|         a = 1.029 | ||||
|         b = -0.065 | ||||
|         c = -0.245 | ||||
|         d = 0.0018 | ||||
|         e = 0.0215 | ||||
|         f = 0 | ||||
|  | ||||
|  | ||||
|         Select Case Dr신재생.집열기유형.Trim 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(1, i_count_ts - 1) | ||||
|             Case "평판형" '평판형" | ||||
|                 a_1 = 6 | ||||
|                 IAM = 0.94 | ||||
|             Case "진공관형" '진공관형" | ||||
|                 a_1 = 3 | ||||
|                 IAM = 1 | ||||
|         End Select | ||||
|  | ||||
|         If Dr신재생.태양열시스템의성능 = "성능치" Then ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(5, i_count_ts - 1) = "성능치" Then | ||||
|             eta_0 = TOSG(Dr신재생.무손실효율계수) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(6, i_count_ts - 1) | ||||
|             a_1 = TOSG(Dr신재생.열손실계수1차) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(7, i_count_ts - 1) | ||||
|             a_2 = TOSG(Dr신재생.열손실계수2차) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(8, i_count_ts - 1) | ||||
|         End If | ||||
|  | ||||
|         Select Case Dr신재생.태양열종류.Trim ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(0, i_count_ts - 1) | ||||
|             Case "급탕" '급탕" | ||||
|                 A_ = TOSG(Dr신재생.집열판면적) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(2, i_count_ts - 1) | ||||
|                 U_loop_p = TOSG(5 + 0.5 * A_) '(B.3) | ||||
|                 U_loop = a_1 + a_2 * 40 + U_loop_p / A_ '(13) | ||||
|                 theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                 Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                 V_ref = A_ * 75 | ||||
|                 V_sol = TOSG(Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1) | ||||
|                 f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     X = A_ * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_W_sol_us_m * 1000) '(12) | ||||
|                     Y = A_ * IAM * eta_0 * eta_loop * I_m * t_m / (Q_W_sol_us_m * 1000) '(15) | ||||
|                     Q_W_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_W_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_W_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_W_sol_out_m < 0 Then Q_W_sol_out_m = 0 | ||||
|                 If Q_W_sol_out_m > Q_W_sol_us_m Then Q_W_sol_out_m = Q_W_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 60 | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     Q_W_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_W_sol_out_m / Q_W_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_bu_dis_ls_m = TOSG(0.02 * Q_W_sol_us_m * (Q_W_sol_out_m / Q_W_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_W_sol_st_ls_m = 0 | ||||
|                     Q_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|  | ||||
|                 If i_system_ts = 1 Then '=====================================================2010.04.02 추가 | ||||
|  | ||||
|                     '난방 부분 | ||||
|                     theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                     Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                     V_ref = A_H * 75 | ||||
|                     V_sol = TOSG(Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1) | ||||
|                     f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                     If Q_H_sol_us_m <> 0 Then | ||||
|                         X = A_H * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_H_sol_us_m * 1000) '(12) | ||||
|                         Y = A_H * IAM * eta_0 * eta_loop * I_m * t_m / (Q_H_sol_us_m * 1000) '(15) | ||||
|                         Q_H_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_H_sol_us_m '(11) | ||||
|                     Else | ||||
|                         Q_H_sol_out_m = 0 | ||||
|                     End If | ||||
|                     If Q_H_sol_out_m < 0 Then Q_H_sol_out_m = 0 | ||||
|                     If Q_H_sol_out_m > Q_H_sol_us_m Then Q_H_sol_out_m = Q_H_sol_us_m | ||||
|  | ||||
|                     '태양열시스템 열손실 | ||||
|                     U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                     theta_setpoint = 40 | ||||
|                     If Q_H_sol_us_m <> 0 Then | ||||
|                         Q_H_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_H_sol_out_m / Q_H_sol_us_m) * t_m / 1000 '(17) | ||||
|                         Q_H_bu_dis_ls_m = TOSG(0.02 * Q_H_sol_us_m * (Q_H_sol_out_m / Q_H_sol_us_m)) | ||||
|                     Else | ||||
|                         Q_H_sol_st_ls_m = 0 | ||||
|                         Q_H_bu_dis_ls_m = 0 | ||||
|                     End If | ||||
|                     Q_sol_ls_m = Q_H_sol_st_ls_m + Q_H_bu_dis_ls_m + Q_W_sol_st_ls_m + Q_W_bu_dis_ls_m | ||||
|  | ||||
|                 End If '=====================================================2010.04.02 추가 | ||||
|  | ||||
|                 '  Q_sol_ls_m = Q_W_sol_st_ls_m + Q_bu_dis_ls_m | ||||
|  | ||||
|                 ' 보조에너지 | ||||
|                 P_aux_nom = TOSG(Dr신재생.솔라펌프의정격출력) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(4, i_count_ts - 1) | ||||
|                 W_sol_aux_m = P_aux_nom * t_aux_m / 1000 | ||||
|  | ||||
|                 Q_sol_aux_rbl_m = TOSG(W_sol_aux_m * 0.5) | ||||
|  | ||||
|                 Select Case Dr신재생.축열탱크설치장소.Trim 'Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|                     Case "난방공간" '난방공간" | ||||
|                         Q_sol_st_ls_rbl_m = Q_W_sol_st_ls_m | ||||
|                         Q_bu_dis_ls_rbl_m = Q_bu_dis_ls_m | ||||
|                     Case "비난방공간" '비난방공간" | ||||
|                         Q_sol_st_ls_rbl_m = TOSG(Q_W_sol_st_ls_m * 0.5) | ||||
|                         Q_bu_dis_ls_rbl_m = TOSG(Q_bu_dis_ls_m * 0.5) | ||||
|                     Case "외부공간" '외부공간" | ||||
|                         Q_sol_st_ls_rbl_m = 0 | ||||
|                         Q_bu_dis_ls_rbl_m = 0 | ||||
|                 End Select | ||||
|  | ||||
|                 Q_sol_ls_rbl_m = Q_sol_aux_rbl_m + Q_sol_st_ls_rbl_m + Q_bu_dis_ls_rbl_m '(20) | ||||
|  | ||||
|  | ||||
|  | ||||
|             Case "난방+급탕" '난방+급탕" | ||||
|                 P_H = Q_H_sol_us_m / (Q_H_sol_us_m + Q_W_sol_us_m) '(9) | ||||
|                 P_W = Q_W_sol_us_m / (Q_H_sol_us_m + Q_W_sol_us_m) '(10) | ||||
|                 A_ = TOSG(Dr신재생.집열판면적) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(2, i_count_ts - 1) | ||||
|                 A_H = P_H * A_ | ||||
|                 A_W = P_W * A_ | ||||
|  | ||||
|                 '급탕 부분 | ||||
|                 U_loop_p = 5 + 0.5 * A_W '(B.3) '===========================2010.04.24 추가 | ||||
|                 If A_W <> 0 Then | ||||
|                     U_loop = a_1 + a_2 * 40 + U_loop_p / A_W '(13) '===============2010.04.24 추가 | ||||
|                     theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                     Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                     V_ref = A_W * 75 | ||||
|                     V_sol = TOSG(Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1) | ||||
|                     f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 End If | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     X = A_W * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_W_sol_us_m * 1000) '(12) | ||||
|                     Y = A_W * IAM * eta_0 * eta_loop * I_m * t_m / (Q_W_sol_us_m * 1000) '(15) | ||||
|                     Q_W_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_W_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_W_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_W_sol_out_m < 0 Then Q_W_sol_out_m = 0 | ||||
|                 If Q_W_sol_out_m > Q_W_sol_us_m Then Q_W_sol_out_m = Q_W_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 60 | ||||
|                 If Q_W_sol_us_m <> 0 Then | ||||
|                     Q_W_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_W_sol_out_m / Q_W_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_W_bu_dis_ls_m = TOSG(0.02 * Q_W_sol_us_m * (Q_W_sol_out_m / Q_W_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_W_sol_st_ls_m = 0 | ||||
|                     Q_W_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|  | ||||
|  | ||||
|                 '난방 부분 | ||||
|                 U_loop_p = 5 + 0.5 * A_H '(B.3) '===========================2010.04.24 추가 | ||||
|                 U_loop = a_1 + a_2 * 40 + U_loop_p / A_H '(13) '===============2010.04.24 추가 | ||||
|  | ||||
|                 theta_ref = TOSG(11.6 + 1.18 * theta_w + 3.86 * theta_cw - 1.32 * theta_e_avg) '(B.8) 급탕시스템인 경우 theta_w는 40도, theta_cw 시수온도는15도 가정 | ||||
|                 Delta_T = theta_ref - theta_e_avg '(14) | ||||
|                 V_ref = A_H * 75 | ||||
|                 V_sol = TOSG(Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1) | ||||
|                 f_st = TOSG((V_ref / V_sol) ^ 0.25) '(B.5) | ||||
|                 If Q_H_sol_us_m <> 0 Then | ||||
|                     X = A_H * U_loop * eta_loop * Delta_T * f_st * t_m / (Q_H_sol_us_m * 1000) '(12) | ||||
|                     Y = A_H * IAM * eta_0 * eta_loop * I_m * t_m / (Q_H_sol_us_m * 1000) '(15) | ||||
|                     Q_H_sol_out_m = (a * Y + b * X + c * Y * Y + d * X * X + e * Y * Y * Y + f * X * X * X) * Q_H_sol_us_m '(11) | ||||
|                 Else | ||||
|                     Q_H_sol_out_m = 0 | ||||
|                 End If | ||||
|                 If Q_H_sol_out_m < 0 Then Q_H_sol_out_m = 0 | ||||
|                 If Q_H_sol_out_m > Q_H_sol_us_m Then Q_H_sol_out_m = Q_H_sol_us_m | ||||
|  | ||||
|                 '태양열시스템 열손실 | ||||
|                 U_st = TOSG(0.16 * V_sol ^ 0.5) '(B.9) | ||||
|                 theta_setpoint = 40 | ||||
|                 If Q_H_sol_us_m <> 0 Then | ||||
|                     Q_H_sol_st_ls_m = U_st * (theta_setpoint - theta_a_avg) * (Q_H_sol_out_m / Q_H_sol_us_m) * t_m / 1000 '(17) | ||||
|                     Q_H_bu_dis_ls_m = TOSG(0.02 * Q_H_sol_us_m * (Q_H_sol_out_m / Q_H_sol_us_m)) | ||||
|                 Else | ||||
|                     Q_H_sol_st_ls_m = 0 | ||||
|                     Q_H_bu_dis_ls_m = 0 | ||||
|                 End If | ||||
|                 Q_sol_ls_m = Q_H_sol_st_ls_m + Q_H_bu_dis_ls_m + Q_W_sol_st_ls_m + Q_W_bu_dis_ls_m | ||||
|  | ||||
|  | ||||
|  | ||||
|                 ' 보조에너지 | ||||
|                 P_aux_nom = TOSG(Dr신재생.솔라펌프의정격출력) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(4, i_count_ts - 1) | ||||
|                 W_sol_aux_m = P_aux_nom * t_aux_m / 1000 | ||||
|  | ||||
|                 Q_sol_aux_rbl_m = TOSG(W_sol_aux_m * 0.5) | ||||
|  | ||||
|                 Select Case Dr신재생.축열탱크설치장소.Trim ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(2, i_count_ts - 1) | ||||
|                     Case "난방공간" '난방공간" | ||||
|                         Q_sol_ls_rbl_m = Q_sol_aux_rbl_m + Q_sol_ls_m | ||||
|                     Case "비난방공간" '비난방공간" | ||||
|                         Q_sol_ls_rbl_m = TOSG(Q_sol_aux_rbl_m + Q_sol_ls_m * 0.5) | ||||
|                     Case "외부공간" '외부공간" | ||||
|                         Q_sol_ls_rbl_m = Q_sol_aux_rbl_m | ||||
|                 End Select | ||||
|  | ||||
|         End Select | ||||
|  | ||||
|  | ||||
|         ''보조에너지 | ||||
|         ''f_sol_m = Q_sol_out_m / Q_sol_us_m '(21) | ||||
|         ''W_bu_aux_m = W_bu_nom_m * (1 - f_sol_m) '(22) | ||||
|  | ||||
|         ''P_aux_nom = 50 + 5 * A_ '(B.4) | ||||
|  | ||||
|         '//열에너지생산량-태양열 | ||||
|         Result.생산E(i_ts_month).태양열생산량 += Q_W_sol_out_m + Q_H_sol_out_m | ||||
|         'DSETR.TReqUse.Rows(CEnum.ResultRow.생산_열생산량_태양열)(CStr("M" & Format(i_ts_month, "00"))) = CSng(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_열생산량_태양열)(CStr("M" & Format(i_ts_month, "00")))) + Q_W_sol_out_m + Q_H_sol_out_m 'Sheets("계산결과").Cells(97, 7 + i_ts_month) = Q_W_sol_out_m + Q_H_sol_out_m | ||||
|         'Dim TDR As DSR.TReqUseRow = CType(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_단위면적당생산량_태양열), DSR.TReqUseRow) | ||||
|         Select Case i_system_ts '//이것도 프로시져 파라미터이다. | ||||
|             Case 1  '//난방?급탕 혼합형태? | ||||
|                 If Q_W_sol_out_m <> 0 Then | ||||
|                     Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result.사용면적.W) | ||||
|                 Else | ||||
|                     Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result.사용면적.H) | ||||
|                 End If | ||||
|             Case 2  '//냉방? | ||||
|                 Result.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result.사용면적.C) | ||||
|             Case 3  '//급탕 | ||||
|                 Result.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result.사용면적.W) | ||||
|             Case Else | ||||
|                 MsgBox("단위면적당생산량 누적시 i_syste_ts 가 알수없음", MsgBoxStyle.Critical, "확인") | ||||
|         End Select | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_PhotovoltaicSystem_EN(ByVal i_count_pv_month As Integer, ByVal i_pv_d_mth As Integer) | ||||
|  | ||||
|         Dim E_el_pv_out As Decimal, P_pk As Decimal, f_perf As Decimal, E_sol As Decimal, E_sol_hor As Decimal, f_tlt As Decimal | ||||
|         Dim a As Decimal, K_pk As Decimal | ||||
|         'Dim i_count_pv As Integer, i_count_pv_location As Integer, i_pv_location As Integer | ||||
|  | ||||
|         E_el_pv_out = 0 | ||||
|  | ||||
|         'If DSET.tbl_new.Rows.Count > 0 Then ' Worksheets("신재생기기").Range("신재생생산기기1").Offset(0, 0) <> "" Then    '//신재생기기 처음칸에 뭐가 잇다? 즉 데이터가잇느냐 | ||||
|         For Each Dr신재생 As DS.tbl_newRow In DSET.tbl_new.Select("code <> '0'", "code") | ||||
|             If Dr신재생.기기종류 = "태양광" Then | ||||
|  | ||||
|                 a = TOSG(Dr신재생.태양광모듈면적) ' Worksheets("신재생기기").Range("태양광모듈1").Offset(0, i_count_pv - 1) | ||||
|  | ||||
|                 Select Case Dr신재생.태양광모듈적용타입.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(4, i_count_pv - 1) | ||||
|                     Case "밀착형" '밀착형" | ||||
|                         f_perf = 0.7 | ||||
|                     Case "후면통풍형" '후면통풍형" | ||||
|                         f_perf = 0.75 | ||||
|                     Case "기계환기형" '기계환기형" | ||||
|                         f_perf = 0.8 | ||||
|                 End Select | ||||
|  | ||||
|  | ||||
|                 'If a <> 0 Then  '//태양광모듈면적이있을경우에만 작동하도록한다. | ||||
|  | ||||
|  | ||||
|                 Dim Dr일사 As DS.weather_ilsaRow | ||||
|                 Select Case Dr신재생.태양광모듈기울기.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(1, i_count_pv - 1) | ||||
|                     Case "수평" '수평" | ||||
|                         '//수평면에해당하는 월별평균일사 값을 가져온다.수평면 0001은 고정값이된다. | ||||
|                         Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='0001'")(0), DS.weather_ilsaRow) | ||||
|                         E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|  | ||||
|                     Case "45도" '45도" | ||||
|                         Select Case Dr신재생.태양광모듈방위.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1) | ||||
|                             Case "남" '"남" | ||||
|                                 '//45도 남에대한건 기본 수평면하고 +9를 하면 나온다 나머지도 순서이므로 +1을 게속해주면된다. | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 9, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남동" '"남동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 10, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남서" '"남서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 11, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "동" '"동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 12, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "서" '"서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 13, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                         End Select | ||||
|  | ||||
|                     Case "수직" '수직" | ||||
|                         Select Case Dr신재생.태양광모듈방위.Trim 'Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1) | ||||
|                             Case "남" '"남" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 1, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남동" '"남동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 2, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "남서" '"남서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 3, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "동" '"동" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 4, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                             Case "서" '"서" | ||||
|                                 Dr일사 = CType(DSET.weather_ilsa.Select("pcode='" & Calc.Pub.기상데이터.code & "' and code='" & Format(1 + 5, "0000") & "'")(0), DS.weather_ilsaRow) | ||||
|                                 E_sol = TOSG(Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000 | ||||
|                         End Select | ||||
|                 End Select | ||||
|  | ||||
|                 'E_sol = E_sol_hor * f_tlt 수평면일사에 계수를 곱하지 않고 직접 기상데이타 적용 | ||||
|  | ||||
|                 Select Case Dr신재생.태양광모듈종류.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(3, i_count_pv - 1) | ||||
|                     Case "단결정" '단결정" | ||||
|                         K_pk = 0.12 | ||||
|                     Case "다결정" '다결정" | ||||
|                         K_pk = 0.1 | ||||
|                     Case "비정질박막형" '비정질박막형" | ||||
|                         K_pk = 0.04 | ||||
|                     Case "기타박막형" '기타박막형" | ||||
|                         K_pk = 0.035 | ||||
|                     Case "CIS박막형" 'CIS박막형" | ||||
|                         K_pk = 0.105 | ||||
|                     Case "CdTe박막형" 'CdTe박막형" | ||||
|                         K_pk = 0.095 | ||||
|                     Case "성능치 입력" | ||||
|                         Try | ||||
|                             K_pk = TOSG(Dr신재생.태양광모듈효율) | ||||
|                         Catch ex As Exception | ||||
|                             MsgBox("태양광모듈효율을 알 수 없습니다.", MsgBoxStyle.Critical, "값=" & Dr신재생.태양광모듈효율) | ||||
|                             K_pk = 0 | ||||
|                         End Try | ||||
|  | ||||
|                     Case Else | ||||
|                         MsgBox("알수없는 태양광모듈종류입니다.", MsgBoxStyle.Critical, "값=" & Dr신재생.태양광모듈종류) | ||||
|  | ||||
|                 End Select | ||||
|  | ||||
|                 P_pk = K_pk * a | ||||
|                 E_el_pv_out = E_el_pv_out + E_sol * P_pk * f_perf | ||||
|                 'End If | ||||
|             End If | ||||
|         Next | ||||
|  | ||||
|  | ||||
|         'If Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = "" Then | ||||
|         '    Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = E_el_pv_out | ||||
|         'Else | ||||
|         '    Sheets("계산결과").Cells(104, 7 + i_count_pv_month) = Sheets("계산결과").Cells(104, 7 + i_count_pv_month) + E_el_pv_out | ||||
|         'End If | ||||
|  | ||||
|         Result.생산E(i_count_pv_month).태양광전력생산량 += E_el_pv_out | ||||
|  | ||||
|         'DSETR.TReqUse.Rows(CEnum.ResultRow.생산_전기_태양광)("M" & Format(i_count_pv_month, "00")) = CSng(DSETR.TReqUse.Rows(CEnum.ResultRow.생산_전기_태양광)("M" & Format(i_count_pv_month, "00"))) + E_el_pv_out  ' Sheets("계산결과").Cells(95, 7 + i_count_pv_month) | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_HeatpumpSystem(ByVal i_system_hp As Integer, ByVal i_HeatCool As Integer, ByVal Dr신재생 As DS.tbl_newRow, ByVal Q_hp_outg As Decimal, ByVal i_hp_month As Integer, ByVal d_h_mth As Integer, ByVal t_hp As Integer, ByVal theta_VA As Decimal, ByVal theta_i As Decimal, ByRef Q_h_outg As Decimal, ByRef Q_h_f_hp As Decimal, ByRef Q_h_g_aux As Decimal) | ||||
|  | ||||
|         Dim f_Verwindung As Decimal, V As Decimal, q_B_S As Decimal, Phi_g As Decimal | ||||
|         Dim Q_h_g As Decimal, Q_h_g_s As Decimal, Q_h_g_WP As Decimal | ||||
|         Dim P_rd_mot As Decimal | ||||
|         'Dim Q_h_f_hp as decimal 'DIN 에서는 Q_h_f로 표기 | ||||
|         'Dim Delta_p_prim as decimal, Delta_p_sek as decimal | ||||
|         Dim Phi_prim_aux As Decimal, Phi_sek_aux As Decimal, t_ON_aux As Decimal | ||||
|         Dim theta_h_s As Decimal | ||||
|         Dim COP As Decimal | ||||
|  | ||||
|         Q_h_g_s = 0 | ||||
|         Q_h_g_WP = 0 '전기히트펌프인 경우 0  가스히트펌프는 ? | ||||
|         P_rd_mot = 0 | ||||
|         Q_h_f_hp = 0 | ||||
|  | ||||
|         'eta_aux = 0.3 | ||||
|         'Delta_p_prim = 40 'kPa 1차측 | ||||
|         'Delta_p_sek = 10 'kPa 2차측 | ||||
|  | ||||
|         'MsgBox(i_count_hp) | ||||
|  | ||||
|         'i_count_hp = 0  '//신재생 줄번호는 무조건 0이된다. 20100127 '//연습용데이터 문제있음 | ||||
|         ' Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) | ||||
|  | ||||
|         Phi_g = TOSG(Dr신재생.지열히트펌프용량) '  Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(0, i_count_hp - 1) | ||||
|  | ||||
|         If Dr신재생.가동연료 <> "전기" And i_HeatCool = 1 And Dr신재생.열교환기설치여부 = "예" Then ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(5, i_count_hp - 1) = "예" Then | ||||
|             P_rd_mot = 0.4 | ||||
|         End If | ||||
|  | ||||
|         If Q_hp_outg < (Phi_g * t_hp) * (1 + P_rd_mot) Then | ||||
|             Q_h_outg = Q_hp_outg | ||||
|         Else | ||||
|             Q_h_outg = Phi_g * t_hp * (1 + P_rd_mot) | ||||
|         End If | ||||
|  | ||||
|         If i_HeatCool = 1 Or i_HeatCool = 3 Then '난방 1 , 냉방 2, 급탕 3 | ||||
|             '난방, 급탕 | ||||
|             If Dr신재생.팽창탱크설치여부 = "예" Then ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(6, i_count_hp - 1) = "예" Then | ||||
|                 f_Verwindung = 1.2 | ||||
|                 V = TOSG(Dr신재생.팽창탱크체적) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(7, i_count_hp - 1) | ||||
|                 q_B_S = TOSG(0.4 + 0.14 * V ^ 0.45) '(51) | ||||
|                 theta_h_s = theta_VA '급수온도로 적용 | ||||
|                 Q_h_g_s = f_Verwindung * (theta_h_s - theta_i) / 45 * d_h_mth * q_B_S '(49) 외부완충(팽창탱크 유무) | ||||
|  | ||||
|             End If | ||||
|  | ||||
|             Q_h_g = Q_h_g_s + Q_h_g_WP | ||||
|             COP = TOSG(Dr신재생.열성능비난방) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(1, i_count_hp - 1) | ||||
|  | ||||
|         Else | ||||
|             '냉방 | ||||
|  | ||||
|             COP = TOSG(Dr신재생.열성능비냉방) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(2, i_count_hp - 1) | ||||
|  | ||||
|         End If | ||||
|  | ||||
|  | ||||
|         If Dr신재생.가동연료 = "전기" Then ' Worksheets("신재생기기").Range("신재생및열병합기기종류1").Offset(1, i_count_hp - 1) = "전기" Then | ||||
|             Q_h_f_hp = (Q_h_outg + Q_h_g) / COP | ||||
|             '    Q_h_in = Q_h_outg + Q_h_g - Q_h_f_hp '월간 전기히트펌프(재생에너지유입량) | ||||
|         Else | ||||
|             Q_h_f_hp = Q_h_outg / COP | ||||
|             '    If i_HeatCool = 1 And Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(5, i_count_hp - 1) = "예" Then | ||||
|             '        P_rd_mot = 0.4 | ||||
|             '    End If | ||||
|             '    Q_h_in = Q_h_outg + Q_h_g - Q_h_f_hp * (1 + P_rd_mot) '월간 가스히트펌프(재생에너지유입량) | ||||
|         End If | ||||
|  | ||||
|         'Q_h_f = Q_h_outg + Q_h_g - k_rd_g * Q_h_g_aux - Q_h_in '월간(A.1) 전기히트펌프(난방요구량 충당) | ||||
|         'Q_h_f = (Q_h_outg + Q_h_g - k_rd_g * Q_h_g_aux - Q_h_in) / (1 + P_rd_mot) '월간(A.2) 가스히트펌프(난방요구량 충당) | ||||
|  | ||||
|  | ||||
|         '보조에너지 | ||||
|  | ||||
|  | ||||
|         'Phi_prim_aux = Delta_p_prim * V_dot / (eta_aux * 3600) '(89) 사용자 입력항목이므로 확인 요망 | ||||
|         'Phi_sek_aux = Delta_p_sek * V_dot / (eta_aux * 3600) '(89) 사용자 입력항목이므로 확인 요망 | ||||
|  | ||||
|         t_ON_aux = Q_h_outg / (Phi_g) '(81) | ||||
|         Phi_prim_aux = TOSG(Dr신재생.펌프용량1차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(3, i_count_hp - 1) | ||||
|         Phi_sek_aux = TOSG(Dr신재생.펌프용량2차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(4, i_count_hp - 1) | ||||
|  | ||||
|         Q_h_g_aux = TOSG((Phi_prim_aux + Phi_sek_aux) * 0.001 * t_ON_aux) '(88) | ||||
|  | ||||
|         '//열에너지생산량 (지열) | ||||
|         Result.생산E(i_hp_month).지열생산량 += Q_h_f_hp | ||||
|         'DSETR.TReqUse.Rows(79)("M" & Format(i_hp_month, "00")) = CSng(DSETR.TReqUse.Rows(79)("M" & Format(i_hp_month, "00"))) + Q_h_f_hp 'DrT생산.열생산량지열 += Q_h_f_hp | ||||
|  | ||||
|         '100 : Total >> DrT생산.단위면적당생산량지열 | ||||
|         Select Case i_system_hp | ||||
|             Case 1 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.H) | ||||
|                 'DSETR.TReqUse.Rows(100)("M00") = CSng(DSETR.TReqUse.Rows(100)("M00")) + Q_h_f_hp / CSng(DSETR.TReqUse.Rows(10)("M00")) ' DrT요구량.난방사용면적 ' Sheets("계산결과").Cells(15, 7) | ||||
|             Case 2 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.C) | ||||
|                 'DSETR.TReqUse.Rows(100)("M00") = CSng(DSETR.TReqUse.Rows(100)("M00")) + Q_h_f_hp / CSng(DSETR.TReqUse.Rows(15)("M00")) 'DrT요구량.냉방사용면적 '("계산결과").Cells(20, 7) | ||||
|             Case 3 | ||||
|                 Result.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result.사용면적.W) | ||||
|         End Select | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Overridable Sub Calc_CogenerationSystemEN(ByVal Dr신재생 As DS.tbl_newRow, ByVal i_chp_month As Integer, ByVal Q_h_outg As Decimal, ByVal t_chp As Integer, ByRef Q_chp_gen_out As Decimal, ByRef E_chp_gen_in As Decimal) | ||||
|         'EN15316-4-4_2007 5.6.2에서 시작 | ||||
|         'Dim Wmsg As New System.Text.StringBuilder | ||||
|         'Wmsg.AppendLine("Calc_CogenerationSystemEN 이 함수의경우") | ||||
|         'Wmsg.AppendLine("i_count_chp 에따라서 열을 할당해야한다.... 지만..아직 이 파라미터값을 모르게삳") | ||||
|         'Wmsg.AppendLine("사용하는곳의 참조확인을해서 저곳이 신재생기기 코드값이 바로오는건지 다른값인지 확인해봐야겠다") | ||||
|         'MsgBox(Wmsg.ToString) | ||||
|  | ||||
|         Dim Q_dot_T_chp As Decimal | ||||
|         Dim eta_T_chp_an As Decimal, eta_el_chp_an As Decimal | ||||
|         Dim E_el_chp_out As Decimal | ||||
|  | ||||
|         ' Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) | ||||
|  | ||||
|         Q_dot_T_chp = TOSG(Dr신재생.열생산능력) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(0, i_count_chp - 1) | ||||
|         eta_T_chp_an = TOSG(Dr신재생.열생산효율) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(1, i_count_chp - 1) | ||||
|         eta_el_chp_an = TOSG(Dr신재생.발전효율) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(2, i_count_chp - 1) | ||||
|  | ||||
|         If Q_h_outg > (Q_dot_T_chp * t_chp) Then | ||||
|             Q_chp_gen_out = Q_dot_T_chp * t_chp | ||||
|         Else | ||||
|             Q_chp_gen_out = Q_h_outg | ||||
|         End If | ||||
|  | ||||
|         E_chp_gen_in = Q_chp_gen_out / (eta_T_chp_an / 100) | ||||
|         E_el_chp_out = E_chp_gen_in * eta_el_chp_an / 100 | ||||
|  | ||||
|         '//전기생산량 열병합 | ||||
|         Result.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out | ||||
|         'DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00")) = CSng(DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00"))) + E_el_chp_out ' Sheets("계산결과").Cells(96, 7 + i_chp_month) = E_el_chp_out | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										780
									
								
								ArinWarev1/Calculator/Result/C1차소요량.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										780
									
								
								ArinWarev1/Calculator/Result/C1차소요량.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,780 @@ | ||||
| Public Class C1차소요량 | ||||
|     Public Mon As String | ||||
|     Private ErrMsg As String = "1차에너지소요량 계산되지 않았습니다" | ||||
|     Private MIdx As Integer | ||||
|  | ||||
|     '//M00 일떄의 합계식이 추가되지않았따 | ||||
|     '//해당부분은 주로 합계식에서 사용된다. | ||||
|  | ||||
|     Public Sub Calc_Summary() | ||||
|  | ||||
|         If MIdx <> 0 Then | ||||
|             MsgBox("Calc 계산식은 0번만 가능합니다") | ||||
|             Return | ||||
|         End If | ||||
|  | ||||
|         Dim i1, i2, i3, i4, i5, i6 As Decimal | ||||
|  | ||||
|         i1 = 0 : i2 = 0 : i3 = 0 : i4 = 0 : i5 = 0 | ||||
|         For i As Integer = 1 To 12 | ||||
|             i1 += Result.일차E소요량(i).난방등유 | ||||
|             i2 += Result.일차E소요량(i).난방LNG | ||||
|             i3 += Result.일차E소요량(i).난방LPG | ||||
|             i4 += Result.일차E소요량(i).난방지역 | ||||
|             i5 += Result.일차E소요량(i).난방전력 | ||||
|         Next | ||||
|         Me.난방등유 = i1 | ||||
|         Me.난방LNG = i2 | ||||
|         Me.난방LPG = i3 | ||||
|         Me.난방지역 = i4 | ||||
|         Me.난방전력 = i5 | ||||
|  | ||||
|         i1 = 0 : i2 = 0 : i3 = 0 : i4 = 0 : i5 = 0 : i6 = 0 | ||||
|         For i As Integer = 1 To 12 | ||||
|             i1 += Result.일차E소요량(i).냉방등유 | ||||
|             i2 += Result.일차E소요량(i).냉방LNG | ||||
|             i3 += Result.일차E소요량(i).냉방LPG | ||||
|             i4 += Result.일차E소요량(i).냉방지역난방열 | ||||
|             i5 += Result.일차E소요량(i).냉방지역냉방열 | ||||
|             i6 += Result.일차E소요량(i).냉방전력 | ||||
|         Next | ||||
|         Me.냉방등유 = i1 | ||||
|         Me.냉방LNG = i2 | ||||
|         Me.냉방LPG = i3 | ||||
|         Me.냉방지역난방열 = i4 | ||||
|         Me.냉방지역냉방열 = i5 | ||||
|         Me.냉방전력 = i6 | ||||
|  | ||||
|         i1 = 0 : i2 = 0 : i3 = 0 : i4 = 0 : i5 = 0 | ||||
|         For i As Integer = 1 To 12 | ||||
|             i1 += Result.일차E소요량(i).급탕등유 | ||||
|             i2 += Result.일차E소요량(i).급탕LNG | ||||
|             i3 += Result.일차E소요량(i).급탕LPG | ||||
|             i4 += Result.일차E소요량(i).급탕지역 | ||||
|             i5 += Result.일차E소요량(i).급탕전력 | ||||
|         Next | ||||
|         Me.급탕등유 = i1 | ||||
|         Me.급탕LNG = i2 | ||||
|         Me.급탕LPG = i3 | ||||
|         Me.급탕지역 = i4 | ||||
|         Me.급탕전력 = i5 | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pdsetr As DSR, ByRef presult As CResult, Optional ByVal pmIdx As Integer = 0) | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|         MIdx = pmIdx | ||||
|         Mon = "M" & Format(pmIdx, "00") | ||||
|     End Sub | ||||
|  | ||||
|     ReadOnly Property 소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.일차E소요량(i).소요량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Me.난방소요량 + Me.냉방소요량 + Me.급탕소요량 + Me.조명소요량 + Me.환기소요량 - (Result.생산E(MIdx).태양광전력생산량 * Result.E변환계수.전력) - (Result.생산E(MIdx).열병합전력생산량 * Result.E변환계수.전력) | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 단위면적() As Decimal | ||||
|         Get | ||||
|             If MIdx <> 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방면적 + Me.냉방면적 + Me.급탕면적 + Me.조명면적 + Me.환기면적 | ||||
|             End If | ||||
|  | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
| #Region "난방" | ||||
|     ReadOnly Property 난방소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.난방등유 * Result.E변환계수.등유 + Me.난방LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.난방LPG * Result.E변환계수.LPG + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.난방전력 * Result.E변환계수.전력 | ||||
|                 Try | ||||
|                     Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                     (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result.E변환계수.전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|             Else | ||||
|                 Return Me.난방등유 * Result.E변환계수.등유 + Me.난방LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.난방LPG * Result.E변환계수.LPG + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.난방전력 * Result.E변환계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 난방소요량2() As Decimal   '//140112(?) | ||||
|         Get | ||||
|  | ||||
|             Dim 건물용도 As Integer = CInt(DSET1.tbl_Desc.Rows(0)("isjugo")) | ||||
|  | ||||
|             If MIdx = 0 Then | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|  | ||||
|                     Dim R As Decimal = Me.난방등유 * Result.E변환계수.지역난방 + Me.난방LNG * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방LPG * Result.E변환계수.지역난방 + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방전력 * Result.E변환계수.전력 | ||||
|                     Try | ||||
|                         Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                         (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result.E변환계수.전력 | ||||
|                     Catch ex As Exception | ||||
|  | ||||
|                     End Try | ||||
|  | ||||
|                 Else | ||||
|                     Dim R As Decimal = Me.난방등유 * Result.E변환계수.등유 + Me.난방LNG * Result.E변환계수.LNG + _ | ||||
|                     Me.난방LPG * Result.E변환계수.LPG + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방전력 * Result.E변환계수.전력 | ||||
|                     Try | ||||
|                         Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                         (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result.E변환계수.전력 | ||||
|                     Catch ex As Exception | ||||
|  | ||||
|                     End Try | ||||
|                 End If | ||||
|  | ||||
|                  | ||||
|             Else | ||||
|  | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     Return Me.난방등유 * Result.E변환계수.지역난방 + Me.난방LNG * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방LPG * Result.E변환계수.지역난방 + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방전력 * Result.E변환계수.전력 | ||||
|                 Else | ||||
|                     Return Me.난방등유 * Result.E변환계수.등유 + Me.난방LNG * Result.E변환계수.LNG + _ | ||||
|                     Me.난방LPG * Result.E변환계수.LPG + Me.난방지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.난방전력 * Result.E변환계수.전력 | ||||
|                 End If | ||||
|  | ||||
|  | ||||
|  | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     Property 난방등유() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방등유")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("난방등유") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 난방LNG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방LNG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("난방LNG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 난방LPG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방LPG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("난방LPG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     'Property 난방펠렛() As Decimal | ||||
|     '    Get | ||||
|     '        Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|     '        If DR.GetUpperBound(0) = -1 Then | ||||
|     '            MsgBox(ErrMsg,MsgBoxStyle.Information,"C1차소요량") | ||||
|     '            Return 0 | ||||
|     '        Else | ||||
|     '            Return TOSG(DR(0)("난방펠렛")) | ||||
|     '        End If | ||||
|     '    End Get | ||||
|     '    Set(ByVal value As Decimal) | ||||
|     '        Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|     '        If DR.GetUpperBound(0) = -1 Then | ||||
|     '            MsgBox(ErrMsg,MsgBoxStyle.Information,"C1차소요량") | ||||
|     '        Else | ||||
|     '            DR(0)("난방펠렛") = value | ||||
|     '        End If | ||||
|     '    End Set | ||||
|     'End Property | ||||
|     Property 난방지역() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방지역")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("난방지역") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 난방전력() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방전력")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("난방전력") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 난방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방소요량 / Result.사용면적.H | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 난방면적2() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방소요량2 / Result.사용면적.H | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
| #End Region | ||||
|  | ||||
| #Region "냉방" | ||||
|     ReadOnly Property 냉방소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.냉방등유 * Result.E변환계수.등유 + Me.냉방LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.냉방LPG * Result.E변환계수.LPG + Me.냉방지역난방열 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.냉방지역냉방열 * Result.E변환계수.지역냉방 + Me.냉방전력 * Result.E변환계수.전력 | ||||
|                 Try | ||||
|                     Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                     (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.냉방전력 * Result.E변환계수.전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|             Else | ||||
|                 Return Me.냉방등유 * Result.E변환계수.등유 + Me.냉방LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.냉방LPG * Result.E변환계수.LPG + Me.냉방지역난방열 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.냉방지역냉방열 * Result.E변환계수.지역냉방 + Me.냉방전력 * Result.E변환계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     Property 냉방등유() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방등유")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방등유") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방LNG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방LNG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방LNG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방펠렛() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방펠렛")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방펠렛") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방LPG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방LPG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방LPG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방지역난방열() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방지역")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방지역") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방지역냉방열() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방지역2")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방지역2") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방전력() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방전력")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("냉방전력") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 냉방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.C = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.냉방소요량 / Result.사용면적.C | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| #Region "급탕" | ||||
|     ReadOnly Property 급탕소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.급탕등유 * Result.E변환계수.등유 + Me.급탕LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.급탕LPG * Result.E변환계수.LPG + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.급탕전력 * Result.E변환계수.전력 | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\급탕소요량1.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("태양광전력생산량  열병합전력생산량    난방전력    냉방전력    급탕전력    조명전력    환기전력    전력변환계수") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(Result.생산E(0).태양광전력생산량.ToString() + vbTab + Result.생산E(0).열병합전력생산량.ToString() + vbTab + _ | ||||
|                 '                난방전력.ToString() + vbTab + 냉방전력.ToString() + vbTab + 급탕전력.ToString() + vbTab + 조명전력.ToString() + vbTab + _ | ||||
|                 '                환기전력.ToString() + vbTab + Result.E변환계수.전력.ToString()) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|                 Try | ||||
|                     Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                     (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result.E변환계수.전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|             Else | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\급탕소요량2.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("MIDX  급탕등유  급탕LNG   급탕LPG   급탕지역    급탕전력") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(MIdx.ToString() + vbTab + 급탕등유.ToString() + vbTab + 급탕LNG.ToString() + vbTab + 급탕LPG.ToString() + vbTab + 급탕지역.ToString() + vbTab + 급탕전력.ToString()) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|  | ||||
|                 Return Me.급탕등유 * Result.E변환계수.등유 + Me.급탕LNG * Result.E변환계수.LNG + _ | ||||
|                 Me.급탕LPG * Result.E변환계수.LPG + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                 Me.급탕전력 * Result.E변환계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 급탕소요량2() As Decimal | ||||
|         Get | ||||
|             Dim 건물용도 As Integer = CInt(DSET1.tbl_Desc.Rows(0)("isjugo")) | ||||
|  | ||||
|             If MIdx = 0 Then | ||||
|                 If 건물용도 < 10 Then | ||||
|                     Dim R As Decimal = Me.급탕등유 * Result.E변환계수.지역난방 + Me.급탕LNG * Result.E변환계수.지역난방 + _ | ||||
|                       Me.급탕LPG * Result.E변환계수.지역난방 + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                       Me.급탕전력 * Result.E변환계수.전력 | ||||
|                     Try | ||||
|                         Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                         (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result.E변환계수.전력 | ||||
|                     Catch ex As Exception | ||||
|  | ||||
|                     End Try | ||||
|                 Else | ||||
|                     Dim R As Decimal = Me.급탕등유 * Result.E변환계수.등유 + Me.급탕LNG * Result.E변환계수.LNG + _ | ||||
|                     Me.급탕LPG * Result.E변환계수.LPG + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.급탕전력 * Result.E변환계수.전력 | ||||
|                     Try | ||||
|                         Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                         (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result.E변환계수.전력 | ||||
|                     Catch ex As Exception | ||||
|  | ||||
|                     End Try | ||||
|                 End If | ||||
|              | ||||
|             Else | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     Return Me.급탕등유 * Result.E변환계수.지역난방 + Me.급탕LNG * Result.E변환계수.지역난방 + _ | ||||
|                     Me.급탕LPG * Result.E변환계수.지역난방 + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.급탕전력 * Result.E변환계수.전력 | ||||
|                 Else | ||||
|                     Return Me.급탕등유 * Result.E변환계수.등유 + Me.급탕LNG * Result.E변환계수.LNG + _ | ||||
|                     Me.급탕LPG * Result.E변환계수.LPG + Me.급탕지역 * Result.E변환계수.지역난방 + _ | ||||
|                     Me.급탕전력 * Result.E변환계수.전력 | ||||
|                 End If | ||||
|                  | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     Property 급탕등유() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕등유")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕등유") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕LNG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕LNG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕LNG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕펠렛() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕펠렛")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕펠렛") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕LPG() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕LPG")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕LPG") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕지역() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕지역")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕지역") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕전력() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕전력")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량1Row = CType(DSETR.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "C1차소요량") | ||||
|             Else | ||||
|                 DR(0)("급탕전력") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 급탕면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.W = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.급탕소요량 / Result.사용면적.W | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕면적2() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.W = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.급탕소요량2 / Result.사용면적.W | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| #Region "조명부분(읽기전용)" | ||||
|     ReadOnly Property 조명소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = 조명전력 * Result.E변환계수.전력 | ||||
|  | ||||
|                 Try | ||||
|                     Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                     (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.조명전력 * Result.E변환계수.전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return 조명전력 * Result.E변환계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 조명전력() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then   '//합계필드라면 12월의 합계를 반환한다. | ||||
|                 Dim i1 As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     i1 += Result.일차E소요량(i).조명전력 | ||||
|                 Next | ||||
|                 Return i1 | ||||
|             Else | ||||
|                 Return Result.E소요량(Me.MIdx).조명S | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 조명면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.L = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.조명소요량 / Result.사용면적.L | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
| #End Region | ||||
|  | ||||
| #Region "환기부분(읽기전용)" | ||||
|     ReadOnly Property 환기소요량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = 환기전력 * Result.E변환계수.전력 | ||||
|                 Try | ||||
|                     Return R - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / _ | ||||
|                     (Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.환기전력 * Result.E변환계수.전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|             Else | ||||
|                 Return 환기전력 * Result.E변환계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 환기전력() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then   '//합계필드라면 12월의 합계를 반환한다. | ||||
|                 Dim i1 As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     i1 += Result.일차E소요량(i).환기전력 | ||||
|                 Next | ||||
|                 Return i1 | ||||
|             Else | ||||
|                 Return Result.E소요량(Me.MIdx).환기S | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 환기면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.V = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.환기소요량 / Result.사용면적.V | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										452
									
								
								ArinWarev1/Calculator/Result/CCo2발생량.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										452
									
								
								ArinWarev1/Calculator/Result/CCo2발생량.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,452 @@ | ||||
| Public Class CCo2발생량 | ||||
|     Public Mon As String | ||||
|     Private ErrMsg As String = "에너지소요량 계산되지 않았습니다" | ||||
|     Private MIdx As Integer | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef presult As CResult, Optional ByVal pmIdx As Integer = 0) | ||||
|         Result = presult | ||||
|         MIdx = pmIdx | ||||
|         Mon = "M" & Format(MIdx, "00") | ||||
|     End Sub | ||||
|     ReadOnly Property 발생량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then   '//최종합계는 저람량을 제하지않는다? | ||||
|                 Return Me.난방발생량 + Me.냉방발생량 + Me.급탕발생량 + Me.조명발생량 + Me.환기발생량 | ||||
|             Else | ||||
|                 Return Me.난방발생량 + Me.냉방발생량 + Me.급탕발생량 + Me.조명발생량 + Me.환기발생량 - Me.저감량태양광 - Me.저감량열병합 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 단위면적() As Decimal | ||||
|         Get '//월구분없음 실제로는 최종합 M00 에만 값이 있다. | ||||
|             Return Me.난방면적 + Me.냉방면적 + Me.급탕면적 + Me.조명면적 + Me.환기면적 | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
| #Region "난방" | ||||
|     ReadOnly Property 난방발생량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.난방등유 + Me.난방LNG + Me.난방LPG + Me.난방지역 + Me.난방전력 | ||||
|                 Try | ||||
|                     Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.난방전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return Me.난방등유 + Me.난방LNG + Me.난방LPG + Me.난방지역 + Me.난방전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방등유() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).난방등유 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).난방등유 * Result.Co2배출계수.등유 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방LNG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).난방LNG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).난방LNG * Result.Co2배출계수.LNG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방LPG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).난방LPG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).난방LPG * Result.Co2배출계수.LPG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방지역() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).난방지역 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).난방지역 * Result.Co2배출계수.지역난방 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방전력() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).난방전력 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).난방전력 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     'ReadOnly Property 난방펠렛() As Decimal | ||||
|     '    Get | ||||
|     '        If Me.MIdx = 0 Then | ||||
|     '            Dim Res As Decimal = 0 | ||||
|     '            For i As Short = 1 To 12 | ||||
|     '                Res += Result.Co2발생량(i).난방펠렛 | ||||
|     '            Next | ||||
|     '            Return Res | ||||
|     '        Else | ||||
|     '            Return Result.일차E소요량(MIdx).난방펠렛 * Result.Co2배출계수.펠렛 | ||||
|     '        End If | ||||
|     '    End Get | ||||
|     'End Property | ||||
|     ReadOnly Property 난방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방발생량 / Result.사용면적.H | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
|     ReadOnly Property 냉방발생량() As Decimal | ||||
|         Get | ||||
|             Dim R As Decimal = Me.냉방등유 + Me.냉방LNG + Me.냉방LPG + Me.냉방지역난방열 + Me.냉방지역냉방열 + Me.냉방전력 | ||||
|             If MIdx = 0 Then | ||||
|                 Try | ||||
|                     Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.냉방전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return R | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방등유() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방등유 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방등유 * Result.Co2배출계수.등유 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방LNG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방LNG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방LNG * Result.Co2배출계수.LNG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     'ReadOnly Property 냉방펠렛() As Decimal | ||||
|     '    Get | ||||
|     '        If Me.MIdx = 0 Then | ||||
|     '            Dim Res As Decimal = 0 | ||||
|     '            For i As Short = 1 To 12 | ||||
|     '                Res += Result.Co2발생량(i).냉방펠렛 | ||||
|     '            Next | ||||
|     '            Return Res | ||||
|     '        Else | ||||
|     '            Return Result.일차E소요량(MIdx).냉방펠렛 * Result.Co2배출계수.펠렛 | ||||
|     '        End If | ||||
|     '    End Get | ||||
|     'End Property | ||||
|     ReadOnly Property 냉방LPG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방LPG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방LPG * Result.Co2배출계수.LPG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방지역난방열() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방지역난방열 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방지역난방열 * Result.Co2배출계수.지역난방 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방지역냉방열() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방지역냉방열 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방지역냉방열 * Result.Co2배출계수.지역냉방 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방전력() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).냉방전력 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).냉방전력 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.C = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.냉방발생량 / Result.사용면적.C | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 급탕발생량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.급탕등유 + Me.급탕LNG + Me.급탕LPG + Me.급탕지역 + Me.급탕전력 | ||||
|                 Try | ||||
|                     Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.급탕전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return Me.급탕등유 + Me.급탕LNG + Me.급탕LPG + Me.급탕지역 + Me.급탕전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕등유() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).급탕등유 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).급탕등유 * Result.Co2배출계수.등유 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     'ReadOnly Property 급탕펠렛() As Decimal | ||||
|     '    Get | ||||
|     '        If Me.MIdx = 0 Then | ||||
|     '            Dim Res As Decimal = 0 | ||||
|     '            For i As Short = 1 To 12 | ||||
|     '                Res += Result.Co2발생량(i).급탕펠렛 | ||||
|     '            Next | ||||
|     '            Return Res | ||||
|     '        Else | ||||
|     '            Return Result.일차E소요량(MIdx).급탕펠렛 * Result.Co2배출계수.펠렛 | ||||
|     '        End If | ||||
|     '    End Get | ||||
|     'End Property | ||||
|     ReadOnly Property 급탕LNG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).급탕LNG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).급탕LNG * Result.Co2배출계수.LNG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕LPG() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).급탕LPG | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).급탕LPG * Result.Co2배출계수.LPG | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕지역() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).급탕지역 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).급탕지역 * Result.Co2배출계수.지역난방 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕전력() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).급탕전력 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).급탕전력 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.W = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.급탕발생량 / Result.사용면적.W | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 조명발생량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.조명전력 | ||||
|                 Try | ||||
|                     Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.조명전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return Me.조명전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 조명전력() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).조명전력 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).조명전력 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 조명면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.L = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.조명발생량 / Result.사용면적.L | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 환기발생량() As Decimal | ||||
|         Get | ||||
|             If MIdx = 0 Then | ||||
|                 Dim R As Decimal = Me.환기전력 | ||||
|                 Try | ||||
|                     Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.환기전력 | ||||
|                 Catch ex As Exception | ||||
|  | ||||
|                 End Try | ||||
|  | ||||
|             Else | ||||
|                 Return Me.환기전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 환기전력() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).환기전력 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.일차E소요량(MIdx).환기전력 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 환기면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.V = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.환기발생량 / Result.사용면적.V | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 저감량태양광() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).저감량태양광 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.생산E(MIdx).태양광전력생산량 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 저감량열병합() As Decimal | ||||
|         Get | ||||
|             If Me.MIdx = 0 Then | ||||
|                 Dim Res As Decimal = 0 | ||||
|                 For i As Short = 1 To 12 | ||||
|                     Res += Result.Co2발생량(i).저감량열병합 | ||||
|                 Next | ||||
|                 Return Res | ||||
|             Else | ||||
|                 Return Result.생산E(MIdx).열병합전력생산량 * Result.Co2배출계수.전력 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| End Class | ||||
							
								
								
									
										48
									
								
								ArinWarev1/Calculator/Result/CResult.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								ArinWarev1/Calculator/Result/CResult.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| Public Class CResult | ||||
|  | ||||
|  | ||||
|     Public Zones As CZones | ||||
|  | ||||
|     Public E요구량(12) As C에너지요구량 | ||||
|     Public E소요량(12) As C에너지소요량 | ||||
|     Public 일차E소요량(12) As C1차소요량 | ||||
|     Public 생산E(12) As C생산에너지 | ||||
|     Public Co2발생량(12) As CCo2발생량 | ||||
|     Public E분석(12) As C에너지분석  '//여기는 유일하게 0번 인덱스를 쓸수없다 | ||||
|  | ||||
|     Public Co2배출계수 As CCo2배출계수 | ||||
|     Public E변환계수 As C1차에너지변환계수 | ||||
|  | ||||
|     Public 사용면적 As C사용면적 | ||||
|     Public 최대부하 As C최대냉난방부하 | ||||
|  | ||||
|     Private DSETR As DSR | ||||
|     Private DSET As DS | ||||
|     Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR) | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|  | ||||
|         '//공용 | ||||
|         Co2배출계수 = New CCo2배출계수 | ||||
|         E변환계수 = New C1차에너지변환계수 | ||||
|  | ||||
|         '//단일 | ||||
|         사용면적 = New C사용면적(DSET, DSETR, Me) | ||||
|         최대부하 = New C최대냉난방부하(DSETR) | ||||
|  | ||||
|         '//서브추가항목 | ||||
|         Zones = New CZones(DSET, DSETR, Me) | ||||
|  | ||||
|         '//월별로 들어가는 배열항목 | ||||
|         For i As Integer = 0 To 12 | ||||
|             Me.E요구량(i) = New C에너지요구량(Me, i) | ||||
|             Me.E소요량(i) = New C에너지소요량(DSETR, Me, i) | ||||
|             Me.일차E소요량(i) = New C1차소요량(DSETR, Me, i) | ||||
|             Me.생산E(i) = New C생산에너지(DSETR, Me, i) | ||||
|             Me.Co2발생량(i) = New CCo2발생량(Me, i) | ||||
|             Me.E분석(i) = New C에너지분석(DSETR, Me, i) | ||||
|         Next | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										71
									
								
								ArinWarev1/Calculator/Result/CZones.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								ArinWarev1/Calculator/Result/CZones.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
|  | ||||
| ''' <summary> | ||||
| ''' 각존의 데이터를 참조한다 | ||||
| ''' </summary> | ||||
| Public Class CZones | ||||
|     Dim ErrMsg As String = "최대냉난방부하가 계산되지 않았습니다" | ||||
|     Public Items() As Citem | ||||
|  | ||||
|     Private DSET As DS | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult)   '//존은초기화값을 가지고 생성한다. | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|         ReDim Items(Me.CountR)  '//결과내의 존을 초기화한다. | ||||
|         Dim idx As Integer = 0 | ||||
|         For Each It As DSR.최대냉난방부하Row In DSETR.최대냉난방부하.Select("zone<>'00'") | ||||
|             Items(idx) = New Citem(DSET, DSETR, Result, idx, It.Zone) | ||||
|             idx += 1 | ||||
|         Next | ||||
|         '//해당존의 코드값을 가지고 결과가 게산되어있따. | ||||
|     End Sub | ||||
|     Public Function Count() As Integer | ||||
|         Return DSET.tbl_zone.Rows.Count '//현재 시스템의 존 카운터를 반환 | ||||
|     End Function | ||||
|     Public Function CountR() As Integer | ||||
|         Return DSETR.최대냉난방부하.Select("zone<>'00'").GetUpperBound(0) + 1 '//계산결과내의 존의 갯수를 반환 | ||||
|     End Function | ||||
|  | ||||
|     Public Class Citem | ||||
|         Public Index As Integer | ||||
|         Public Code As String | ||||
|         Public 최대냉난방부하 As C최대냉난방부하.Citem | ||||
|         Public 월에너지분석(11) As C에너지분석    '//이존의 12달의 내역을 참조한다. | ||||
|         Private DSETR As DSR | ||||
|         Private DSET As DS | ||||
|         Private Result As CResult | ||||
|         Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult, ByVal pidx As Integer, ByVal pcode As String) | ||||
|             DSET = pds | ||||
|             DSETR = pdsetr | ||||
|             Result = presult | ||||
|             Me.Index = pidx | ||||
|             Me.Code = pcode | ||||
|             최대냉난방부하 = New C최대냉난방부하.Citem(DSETR, pcode) | ||||
|  | ||||
|             Dim Idx As Integer = 0 | ||||
|             For Each DR As C에너지분석 In Me.월에너지분석 | ||||
|                 DR = New C에너지분석(DSETR, Result, Idx, pcode) | ||||
|                 Idx += 1 | ||||
|             Next | ||||
|         End Sub | ||||
|         Public Function Name() As String | ||||
|             Dim dR() As DataRow = DSET.tbl_zone.Select("code='" & Me.Code & "'") | ||||
|             If dR.GetUpperBound(0) = -1 Then | ||||
|                 Return "존재하지않는 Zone 입니다" | ||||
|             Else | ||||
|                 Return dR(0)("설명").ToString | ||||
|             End If | ||||
|         End Function | ||||
|         Public Function Row() As DS.tbl_zoneRow | ||||
|             Dim dR() As DS.tbl_zoneRow = CType(DSET.tbl_zone.Select("code='" & Me.Code & "'"), DS.tbl_zoneRow()) | ||||
|             If dR.GetUpperBound(0) = -1 Then | ||||
|                 Return Nothing | ||||
|             Else | ||||
|                 Return dR(0) | ||||
|             End If | ||||
|         End Function | ||||
|     End Class | ||||
| End Class | ||||
|  | ||||
							
								
								
									
										75
									
								
								ArinWarev1/Calculator/Result/C범용.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ArinWarev1/Calculator/Result/C범용.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| Public Class CCo2배출계수 | ||||
|     Public Sub New() | ||||
|  | ||||
|     End Sub | ||||
|     ReadOnly Property 등유() As Decimal | ||||
|         Get | ||||
|             Return 0.259 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property LNG() As Decimal | ||||
|         Get | ||||
|             Return 0.202 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property LPG() As Decimal | ||||
|         Get | ||||
|             Return 0.227 | ||||
|         End Get | ||||
|     End Property | ||||
|     'ReadOnly Property 펠렛() As Decimal | ||||
|     '    Get | ||||
|     '        Return 0.0    '//나중에 지정하세요. | ||||
|     '    End Get | ||||
|     'End Property | ||||
|     ReadOnly Property 지역난방() As Decimal | ||||
|         Get | ||||
|             Return 0.164 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 지역냉방() As Decimal | ||||
|         Get | ||||
|             Return 0.14 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 전력() As Decimal | ||||
|         Get | ||||
|             Return 0.4691 | ||||
|         End Get | ||||
|     End Property | ||||
| End Class | ||||
| Public Class C1차에너지변환계수 | ||||
|     Public Sub New() | ||||
|  | ||||
|     End Sub | ||||
|     ReadOnly Property 등유() As Decimal | ||||
|         Get | ||||
|             Return 1.1 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property LNG() As Decimal | ||||
|         Get | ||||
|             Return 1.1 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property LPG() As Decimal | ||||
|         Get | ||||
|             Return 1.1 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 지역난방() As Decimal | ||||
|         Get | ||||
|             Return 0.728 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 지역냉방() As Decimal | ||||
|         Get | ||||
|             Return 0.937 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 전력() As Decimal | ||||
|         Get | ||||
|             Return 2.75 | ||||
|         End Get | ||||
|     End Property | ||||
| End Class | ||||
							
								
								
									
										412
									
								
								ArinWarev1/Calculator/Result/C사용면적.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										412
									
								
								ArinWarev1/Calculator/Result/C사용면적.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,412 @@ | ||||
| ''' <summary> | ||||
| ''' 전체존의 사용면적을 계산및 확인(냉,난,조,급,환) | ||||
| ''' </summary> | ||||
| ''' <remarks>전체존의 사용면적을 계산및 확인(냉,난,조,급,환)</remarks> | ||||
| Public Class C사용면적 | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 난방 | ||||
|     ''' </summary> | ||||
|     ''' <remarks>난방</remarks> | ||||
|     Property H() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("H")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("H") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 냉방 | ||||
|     ''' </summary> | ||||
|     ''' <remarks>냉방</remarks> | ||||
|     Property C() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("C")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("C") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 조명 | ||||
|     ''' </summary> | ||||
|     ''' <remarks>조명</remarks> | ||||
|     Property L() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("L")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("L") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 급탕 | ||||
|     ''' </summary> | ||||
|     ''' <remarks>급탕</remarks> | ||||
|     Property W() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("W")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("W") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 환기 | ||||
|     ''' </summary> | ||||
|     ''' <remarks>환기</remarks> | ||||
|     Property V() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("V")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("V") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 난방_WF | ||||
|     ''' </summary> | ||||
|     ''' <remarks>난방</remarks> | ||||
|     Property H_WF() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("H_WF")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("H_WF") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 냉방_WF | ||||
|     ''' </summary> | ||||
|     ''' <remarks>냉방</remarks> | ||||
|     Property C_WF() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("C_WF")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("C_WF") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 조명_WF | ||||
|     ''' </summary> | ||||
|     ''' <remarks>조명</remarks> | ||||
|     Property L_WF() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("L_WF")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("L_WF") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 급탕_WF | ||||
|     ''' </summary> | ||||
|     ''' <remarks>급탕</remarks> | ||||
|     Property W_WF() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("W_WF")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("W_WF") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ''' <summary> | ||||
|     ''' 환기_WF | ||||
|     ''' </summary> | ||||
|     ''' <remarks>환기</remarks> | ||||
|     Property V_WF() As Decimal | ||||
|         Get | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DSETR.사용면적(0)("V_WF")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             If DSETR.사용면적.Rows.Count = 0 Then | ||||
|                 LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다") | ||||
|             Else | ||||
|                 DSETR.사용면적(0)("V_WF") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     Public Overridable Sub Calc() | ||||
|  | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|         pLog.Add(">> C사용면적.Calc") | ||||
|         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||
|  | ||||
|         Dim A_H As Decimal = 0 | ||||
|         Dim A_C As Decimal = 0 | ||||
|         Dim A_L As Decimal = 0 | ||||
|         Dim A_W As Decimal = 0 | ||||
|         Dim A_V As Decimal = 0 | ||||
|         '//용도별 면적가중치(wf) 추가 '2012.07.01 | ||||
|         Dim A_H_wf As Decimal = 0 | ||||
|         Dim A_C_wf As Decimal = 0 | ||||
|         Dim A_L_wf As Decimal = 0 | ||||
|         Dim A_W_wf As Decimal = 0 | ||||
|         Dim A_V_wf As Decimal = 0 | ||||
|         Dim day_year As Decimal | ||||
|         '//'2012.07.01 | ||||
|  | ||||
|         If DSETR.사용면적.Rows.Count = 0 Then   '//데결과가 없으면 신규줄을 기록한다. | ||||
|             Dim Dr As DSR.사용면적Row = DSETR.사용면적.New사용면적Row | ||||
|             Dr.H = 0 : Dr.C = 0 : Dr.L = 0 : Dr.W = 0 : Dr.V = 0 | ||||
|             DSETR.사용면적.Add사용면적Row(Dr) | ||||
|             DSETR.AcceptChanges() | ||||
|         End If | ||||
|  | ||||
|         '//건물용도 | ||||
|         Dim 건물용도 As Integer = CInt(DSET.tbl_Desc.Rows(0)("isjugo")) | ||||
|  | ||||
|         '//A_H,C,W,L,V 의 누적값을 계산(사용면적)  '//모든존을 대상으로 | ||||
|  | ||||
|         For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") | ||||
|  | ||||
|             Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "'")(0), DS.tbl_profileRow) | ||||
|  | ||||
|             Dim offset As Integer = 1 | ||||
|             If Dr프로필.code = "0016" Then | ||||
|                 If Dr존.조명부하산출방법 = "입력치" Then | ||||
|                     If Dr존.조명에너지부하율입력치 > 10 Then | ||||
|                         offset = ((Dr존.조명에너지부하율입력치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율입력치 | ||||
|                     End If | ||||
|                 ElseIf Dr존.조명부하산출방법 = "계산치" Then | ||||
|                     If Dr존.조명에너지부하율계산치 > 10 Then | ||||
|                         offset = ((Dr존.조명에너지부하율계산치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율계산치 | ||||
|                     End If | ||||
|                 End If | ||||
|             End If | ||||
|  | ||||
|             pLog.Add(String.Format(">> Zone({0})Row Offset={1}", Dr존.code, offset)) | ||||
|  | ||||
|             '//냉난방(HC) 이거나 난방(H)일경우 난방면적 누적 | ||||
|             If Dr존.냉난방방식.IndexOf("난") <> -1 OrElse Dr존.냉난방공조.IndexOf("난") <> -1 Then | ||||
|                 A_H += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) | ||||
|                 If 건물용도 < 10 Then '//주거일경우에 | ||||
|  | ||||
|                     '//연 | ||||
|  | ||||
|                     A_H_wf = A_H | ||||
|  | ||||
|                 Else | ||||
|                     day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12) | ||||
|                     'A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3)) | ||||
|  | ||||
|                     A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3) | ||||
|  | ||||
|                     'If Dr프로필.code <> "0010" Then | ||||
|                     '    A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3) | ||||
|                     'Else | ||||
|                     '    A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)) / (0.583 / 0.314), 3)  '//전산실 용도에 따른 난방 가중치 적용 | ||||
|                     'End If | ||||
|  | ||||
|                 End If | ||||
|  | ||||
|                 pLog.Add(String.Format(">> Zone({0})Row A_H_wf={1}", Dr존.code, A_H_wf)) | ||||
|             End If | ||||
|  | ||||
|  | ||||
|  | ||||
|             '//냉난방(hC) 이거나 냉방(C)일경우 냉방면적 누적 | ||||
|             If Dr존.냉난방방식.IndexOf("냉") <> -1 OrElse Dr존.냉난방공조.IndexOf("냉") <> -1 Then | ||||
|                 A_C += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     A_C_wf = A_C | ||||
|                 Else | ||||
|                     day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12) | ||||
|                     'A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3)) | ||||
|  | ||||
|                     A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3) | ||||
|  | ||||
|                     'If Dr프로필.code <> "0010" Then | ||||
|                     '    A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3) | ||||
|                     'Else | ||||
|                     '    A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)) / (0.045 / 0.314), 3)  '//전산실 용도에 따른 냉방 가중치 적용 | ||||
|                     'End If | ||||
|  | ||||
|                 End If | ||||
|  | ||||
|                 pLog.Add(String.Format(">> Zone({0})Row A_C={1},A_C_wf={2}", Dr존.code, A_C, A_C_wf)) | ||||
|             End If | ||||
|  | ||||
|  | ||||
|  | ||||
|             '//급탕요구량이 있다면 급탕면적 누적 | ||||
|             If TOSG(Dr프로필.일일급탕요구량) > 0 Then | ||||
|  | ||||
|                 A_W += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) | ||||
|  | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     A_W_wf = A_W | ||||
|                 Else | ||||
|                     day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12) | ||||
|                     'A_W_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일급탕요구량) * Math.Round(day_year / (30 * 250), 3))  160211 소수점오류인한 수정 | ||||
|                     A_W_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일급탕요구량) * (day_year / (30 * 250)), 3) | ||||
|                 End If | ||||
|  | ||||
|                 pLog.Add(String.Format(">> Zone({0})Row A_W={1},A_W_wf={2}", Dr존.code, A_W, A_W_wf)) | ||||
|  | ||||
|             End If | ||||
|  | ||||
|             '//조명의 에너지부하율값이 있으면 조명면적 누적 | ||||
|             If Dr존.조명에너지부하율계산치 <> "0" OrElse Dr존.조명에너지부하율입력치 <> "0" Then | ||||
|                 A_L += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     '//가스를쓰는 난방 급탕은 계가 발생 | ||||
|                     A_L_wf = A_L | ||||
|                 Else | ||||
|                     day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12) | ||||
|                     'A_L_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일사용시간) * Math.Round(day_year / (9 * 250), 3) * offset) | ||||
|                     A_L_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일사용시간) * (day_year / (9 * 250)), 3) * offset | ||||
|                 End If | ||||
|  | ||||
|                 pLog.Add(String.Format(">> Zone({0})Row A_L={1},A_L_wf={2}", Dr존.code, A_L, A_L_wf)) | ||||
|             End If | ||||
|  | ||||
|             '//냉난방공조를 사용하고있다면 환기면적 누적(ZZ:기능없음) | ||||
|             If (Dr존.냉난방공조 <> "기능없음") Then | ||||
|                 A_V += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) | ||||
|  | ||||
|                 If 건물용도 < 10 Then | ||||
|                     A_V_wf = A_V | ||||
|                 Else | ||||
|                     day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12) | ||||
|                     'A_V_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3)) | ||||
|                     A_V_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3) | ||||
|                 End If | ||||
|  | ||||
|                 pLog.Add(String.Format(">> Zone({0})Row A_V={1},A_V_wf={2}", Dr존.code, A_V, A_V_wf)) | ||||
|  | ||||
|             End If | ||||
|  | ||||
|         Next | ||||
|  | ||||
|         '//저장소에 보관한다. | ||||
|         '//가중치 없는 사용면적 | ||||
|         Result.사용면적.H = A_H | ||||
|         Result.사용면적.C = A_C | ||||
|         Result.사용면적.L = A_L | ||||
|         Result.사용면적.W = A_W | ||||
|         Result.사용면적.V = A_V | ||||
|  | ||||
|         pLog.Add("C사용면적.CALC 결과 : 가중치없음") | ||||
|         pLog.Add(String.Format("H={0},C={1},L={2},W={3},V={4}", A_H, A_C, A_L, A_W, A_V)) | ||||
|  | ||||
|  | ||||
|         '// 가중치 있는 사용면적 '2013.07.01 | ||||
|         Result.사용면적.H_WF = A_H_wf | ||||
|         Result.사용면적.C_WF = A_C_wf | ||||
|         Result.사용면적.L_WF = A_L_wf | ||||
|         Result.사용면적.W_WF = A_W_wf | ||||
|         Result.사용면적.V_WF = A_V_wf | ||||
|  | ||||
|         pLog.Add("C사용면적.CALC 결과 : 가중치적용") | ||||
|         pLog.Add(String.Format("H_wf={0},C_wf={1},L_wf={2},W_wf={3},V_wf={4}", A_H_wf, A_C_wf, A_L_wf, A_W_wf, A_V_wf)) | ||||
|     End Sub | ||||
|  | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Private DSET As DS | ||||
|     Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult) | ||||
|  | ||||
|         If Not pLog Is Nothing Then | ||||
|             pLog.Add("New C사용면적", True) | ||||
|         End If | ||||
|  | ||||
|         DSET = pds | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										272
									
								
								ArinWarev1/Calculator/Result/C생산에너지.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										272
									
								
								ArinWarev1/Calculator/Result/C생산에너지.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,272 @@ | ||||
| '// 0월합계에대한 처리는 하였음 | ||||
| '// 완료일자 : 2010-03-08 | ||||
|  | ||||
| Public Class C생산에너지 | ||||
|     Public Mon As String | ||||
|     Private MIdx As Integer | ||||
|     Private ErrMsg As String = "에너지소요량 계산되지 않았습니다" | ||||
|  | ||||
|     'Public Sub Calc_Summary() | ||||
|     '    '// | ||||
|     '    If MIdx <> 0 Then | ||||
|     '        MsgBox("계산식은 0번 합계배열만 가능합니다") | ||||
|     '        Return | ||||
|     '    End If | ||||
|  | ||||
|     '    Dim I1 as decimal = 0 | ||||
|     '    Dim I2 as decimal = 0 | ||||
|     '    Dim I3 as decimal = 0 | ||||
|     '    Dim I4 as decimal = 0 | ||||
|     '    Dim I5 as decimal = 0 | ||||
|     '    Dim I6 as decimal = 0 | ||||
|     '    For i As Integer = 1 To 12 | ||||
|     '        '//12월을 다더해서 0번열에 기록한다. | ||||
|     '        I1 += Result.생산E(i).태양광전력생산량 | ||||
|     '        I2 += Result.생산E(i).열병합전력생산량 | ||||
|     '        I3 += Result.생산E(i).태양열생산량 | ||||
|     '        I4 += Result.생산E(i).지열생산량 | ||||
|     '        I5 += Result.생산E(i).면적당생산량태양열 | ||||
|     '        I6 += Result.생산E(i).면적당생산량지열 | ||||
|     '    Next | ||||
|     '    Me.태양광전력생산량 = I1 | ||||
|     '    Me.열병합전력생산량 = I2 | ||||
|     '    Me.태양열생산량 = I3 | ||||
|     '    Me.지열생산량 = I4 | ||||
|     '    Me.면적당생산량태양열 = I5 | ||||
|     '    Me.면적당생산량지열 = I6 | ||||
|     'End Sub | ||||
|  | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pdsetr As DSR, ByRef presult As CResult, Optional ByVal pmIdx As Integer = 0) | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|         MIdx = pmIdx | ||||
|         Mon = "M" & Format(MIdx, "00") | ||||
|     End Sub | ||||
|     Property 태양광전력생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).태양광전력생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("전력태양광")) | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 '    MsgBox("태양광기록(" & Mon & ")") | ||||
|                 DR(0)("전력태양광") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 열병합전력생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).열병합전력생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("전력열병합")) | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("전력열병합") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 신재생열병합전력생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).신재생열병합전력생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("신재생열병합전력생산량")) | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("신재생열병합전력생산량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     Property 신재생면적당열생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).신재생면적당열생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("신재생면적당열생산량")) | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("신재생면적당열생산량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|  | ||||
|     Property 태양열생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).태양열생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("생산량태양열")) | ||||
|                 End If | ||||
|  | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("생산량태양열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 지열생산량() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).지열생산량 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("생산량지열")) | ||||
|  | ||||
|                 End If | ||||
|  | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("생산량지열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 면적당생산량태양열() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).면적당생산량태양열 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("면적당생산량태양열")) | ||||
|  | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("면적당생산량태양열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 면적당생산량지열() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 'MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 If MIdx = 0 Then   '//0월이면 모든월의 합계를 반환한다. | ||||
|                     Dim Res As Decimal = 0 | ||||
|                     For i As Short = 1 To 12 | ||||
|                         Res += Result.생산E(i).면적당생산량지열 | ||||
|                     Next | ||||
|                     Return Res | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("면적당생산량지열")) | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.생산에너지Row = CType(DSETR.생산에너지.Select("mon='" & Mon & "'"), DSR.생산에너지Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("면적당생산량지열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
| End Class | ||||
|  | ||||
							
								
								
									
										355
									
								
								ArinWarev1/Calculator/Result/C에너지분석.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										355
									
								
								ArinWarev1/Calculator/Result/C에너지분석.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,355 @@ | ||||
| Public Class C에너지분석 | ||||
|     Public ZZone As String | ||||
|     Public Mon As String | ||||
|     Private ErrMsg As String = "월에너지분석이 계산되지 않았습니다" | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pdsetr As DSR, ByRef presult As CResult, ByVal mIdx As Integer, Optional ByVal pZone As String = "00") | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|         Me.ZZone = pZone | ||||
|         Mon = "M" & Format(mIdx, "00") | ||||
|     End Sub | ||||
|     ReadOnly Property 에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "에너지요구량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return 난방에너지요구량열(CStr(IIf(Zone <> "00", Zone, ZZone))) + _ | ||||
|                 난방에너지요구량공조환기(CStr(IIf(Zone <> "00", Zone, ZZone))) + _ | ||||
|                 냉방에너지요구량열(CStr(IIf(Zone <> "00", Zone, ZZone))) + _ | ||||
|                 냉방에너지요구량공조환기(CStr(IIf(Zone <> "00", Zone, ZZone))) + _ | ||||
|                 조명에너지요구량(CStr(IIf(Zone <> "00", Zone, ZZone))) + _ | ||||
|                 급탕에너지요구량(CStr(IIf(Zone <> "00", Zone, ZZone))) | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 면적당에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Return Me.난방단위면적당요구량 + Me.냉방단위면적당요구량 + Me.조명단위면적당요구량 + Me.급탕단위면적당요구량 | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Return Me.난방에너지요구량열(IIf(Zone <> "00", Zone, ZZone).ToString) + Me.난방에너지요구량공조환기(IIf(Zone <> "00", Zone, ZZone).ToString) | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 난방단위면적당요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방에너지요구량 / Result.사용면적.H | ||||
|             End If | ||||
|             ' Return Me.난방에너지요구량열(Zone) + Me.난방에너지요구량공조환기(Zone) | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|  | ||||
|     Property 난방에너지요구량열(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "난방에너지요구량열") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방요구량열")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "난방에너지요구량열") | ||||
|             Else | ||||
|                 DR(0)("난방요구량열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 난방에너지요구량공조환기(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "난방에너지요구량공조환기") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방요구량공조")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "난방에너지요구량공조환기") | ||||
|             Else | ||||
|                 DR(0)("난방요구량공조") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 냉방에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Return Me.냉방에너지요구량열(CStr(IIf(Zone <> "00", Zone, ZZone))) + Me.냉방에너지요구량공조환기(CStr(IIf(Zone <> "00", Zone, ZZone))) | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 냉방단위면적당요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.냉방에너지요구량 / Result.사용면적.C | ||||
|             End If | ||||
|             ' Return Me.난방에너지요구량열(Zone) + Me.난방에너지요구량공조환기(Zone) | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|  | ||||
|     Property 냉방에너지요구량열(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|  | ||||
|  | ||||
|  | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "냉방에너지요구량열") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방요구량열")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "냉방에너지요구량열") | ||||
|             Else | ||||
|                 DR(0)("냉방요구량열") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방에너지요구량공조환기(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "냉방에너지요구량공조환기") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방요구량공조")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "냉방에너지요구량공조환기") | ||||
|             Else | ||||
|                 DR(0)("냉방요구량공조") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     Property 조명에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "조명에너지요구량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("조명요구량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "조명에너지요구량") | ||||
|             Else | ||||
|                 DR(0)("조명요구량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 조명단위면적당요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.L = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.조명에너지요구량 / Result.사용면적.L | ||||
|             End If | ||||
|             ' Return Me.난방에너지요구량열(Zone) + Me.난방에너지요구량공조환기(Zone) | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     Property 급탕에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "급탕요구량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("급탕요구량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "급탕요구량") | ||||
|             Else | ||||
|                 DR(0)("급탕요구량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 급탕단위면적당요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.W = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.급탕에너지요구량 / Result.사용면적.W | ||||
|             End If | ||||
|             ' Return Me.난방에너지요구량열(Zone) + Me.난방에너지요구량공조환기(Zone) | ||||
|         End Get | ||||
|     End Property | ||||
|     Property 공조풍량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "공조풍량") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("공조풍량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "공조풍량") | ||||
|             Else | ||||
|                 DR(0)("공조풍량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 공조에너지요구량난방(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "공조에너지요구량난방") | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("공조요구량난방")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg, MsgBoxStyle.Information, "공조에너지요구량난방") | ||||
|             Else | ||||
|                 DR(0)("공조요구량난방") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 공조에너지요구량냉방(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("공조요구량냉방")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("공조요구량냉방") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 공조에너지요구량가습(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("공조요구량가습")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("공조요구량가습") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 환기에너지요구량(Optional ByVal Zone As String = "00") As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone = "00", ZZone, Zone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("환기요구량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("환기요구량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Public Sub Calc() | ||||
|         '//Zone 이 00일떄만 계산된다 | ||||
|  | ||||
|         '//여기데이터는 12개가 미리존재한다 그러므로 현재 속한 월말 계산하면된다 | ||||
|         '//현재 월 존에해당하는 데이터가없다면 생성해준다. | ||||
|         Dim Drow As DSR.월별에너지분석Row | ||||
|         If DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='00'").GetUpperBound(0) = -1 Then | ||||
|             Drow = DSETR.월별에너지분석.New월별에너지분석Row | ||||
|             Drow.존 = "00" | ||||
|             Drow.월 = Mon | ||||
|             DSETR.월별에너지분석.Add월별에너지분석Row(Drow) '//기본줄을 추가함 | ||||
|             DSETR.AcceptChanges() | ||||
|         End If | ||||
|  | ||||
|         Dim a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 As Decimal | ||||
|         a2 = 0 : a3 = 0 : a4 = 0 : a5 = 0 : a6 = 0 | ||||
|         a7 = 0 : a8 = 0 : a9 = 0 : a10 = 0 : a11 = 0 : a12 = 0 | ||||
|         For Each Dr As DSR.월별에너지분석Row In DSETR.월별에너지분석.Select("월='" & Mon & "' and 존 <> '00'", "존") | ||||
|             '//존별로  에너지요구량 최상단 합데이터를 갱신한다. | ||||
|             'Dr.에너지요구량 = Dr.난방요구량열 + Dr.난방요구량공조 + Dr.냉방요구량열 + Dr.냉방요구량공조 + Dr.조명요구량 + Dr.급탕요구량 | ||||
|             'a1 = a1 + Dr.에너지요구량 | ||||
|             a2 = a2 + Dr.난방요구량열 | ||||
|             a3 = a3 + Dr.난방요구량공조 | ||||
|             a4 = a4 + Dr.냉방요구량열 | ||||
|             a5 = a5 + Dr.냉방요구량공조 | ||||
|             a6 = a6 + Dr.조명요구량 | ||||
|             a7 = a7 + Dr.급탕요구량 | ||||
|             a8 = a8 + Dr.공조풍량 | ||||
|             a9 = a9 + Dr.공조요구량난방 | ||||
|             a10 = a10 + Dr.공조요구량냉방 | ||||
|             a11 = a11 + Dr.공조요구량가습 | ||||
|             a12 = a12 + Dr.환기요구량 | ||||
|         Next | ||||
|  | ||||
|         'Me.에너지요구량 = a2 + a3 + a4 + a5 + a6 + a7 ㅇ건 Readonlye 로 계산한다. | ||||
|  | ||||
|         Me.난방에너지요구량열 = a2 | ||||
|         Me.난방에너지요구량공조환기 = a3 | ||||
|         Me.냉방에너지요구량열 = a4 | ||||
|         Me.냉방에너지요구량공조환기 = a5 | ||||
|         Me.조명에너지요구량 = a6 | ||||
|         Me.급탕에너지요구량 = a7 | ||||
|         Me.공조풍량 = a8 | ||||
|         Me.공조에너지요구량난방 = a9 | ||||
|         Me.공조에너지요구량냉방 = a10 | ||||
|         Me.공조에너지요구량가습 = a11 | ||||
|         Me.환기에너지요구량 = a12 | ||||
|         ' Next | ||||
|  | ||||
|     End Sub | ||||
| End Class | ||||
							
								
								
									
										401
									
								
								ArinWarev1/Calculator/Result/C에너지소요량.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										401
									
								
								ArinWarev1/Calculator/Result/C에너지소요량.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,401 @@ | ||||
| Public Class C에너지소요량 | ||||
|  | ||||
|  | ||||
|     Dim Midx As Integer | ||||
|     Public Mon As String | ||||
|     Private ErrMsg As String = "에너지소요량 계산되지 않았습니다" | ||||
|     Private DSETR As DSR | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef pdsetr As DSR, ByRef presult As CResult, Optional ByVal pmIdx As Integer = 0) | ||||
|         DSETR = pdsetr | ||||
|         Result = presult | ||||
|         Mon = "M" & Format(pmIdx, "00") | ||||
|         Me.Midx = pmIdx | ||||
|     End Sub | ||||
|  | ||||
|     Public Sub Calc_Summary() | ||||
|         If Midx <> 0 Then | ||||
|             MsgBox("계산식은 0번 합계필드만 가능합니다.", MsgBoxStyle.Critical, "확인") | ||||
|             Return | ||||
|         End If | ||||
|         Dim I10 As Decimal = 0 | ||||
|         Dim I20 As Decimal = 0 | ||||
|         Dim I30 As Decimal = 0 | ||||
|         Dim I40 As Decimal = 0 | ||||
|         Dim I50 As Decimal = 0 | ||||
|         Dim I60 As Decimal = 0 | ||||
|  | ||||
|         Dim IH As Decimal = 0 | ||||
|         Dim IC As Decimal = 0 | ||||
|         Dim IL As Decimal = 0 | ||||
|         Dim IW As Decimal = 0 | ||||
|         Dim IV As Decimal = 0 | ||||
|  | ||||
|         Dim I4 As Decimal = 0 '//난방 | ||||
|         Dim I5 As Decimal = 0 '//냉방 | ||||
|         Dim I6 As Decimal = 0 '//조명 | ||||
|         Dim I7 As Decimal = 0 '//급탕 | ||||
|         Dim I8 As Decimal = 0 '//환기 | ||||
|  | ||||
|         For i As Integer = 1 To 12 | ||||
|             '//12월을 다더해서 0번열에 기록한다. | ||||
|             I10 += Result.E소요량(i).난방 | ||||
|             I20 += Result.E소요량(i).난방보조 | ||||
|             I30 += Result.E소요량(i).냉방 | ||||
|             I40 += Result.E소요량(i).냉방보조 | ||||
|             I50 += Result.E소요량(i).급탕 | ||||
|             I60 += Result.E소요량(i).급탕보조 | ||||
|  | ||||
|             IH += Result.E소요량(i).난방S | ||||
|             IC += Result.E소요량(i).냉방S | ||||
|             IL += Result.E소요량(i).조명S | ||||
|             IW += Result.E소요량(i).급탕S | ||||
|             IV += Result.E소요량(i).환기S | ||||
|  | ||||
|             I4 += Result.일차E소요량(i).난방전력 | ||||
|             I5 += Result.일차E소요량(i).냉방전력 | ||||
|             I6 += Result.일차E소요량(i).조명전력 | ||||
|             I7 += Result.일차E소요량(i).급탕전력 | ||||
|             I8 += Result.일차E소요량(i).환기전력 | ||||
|         Next | ||||
|  | ||||
|         Me.난방 = I10 | ||||
|         Me.난방보조 = I20 | ||||
|         Me.냉방 = I30 | ||||
|         Me.냉방보조 = I40 | ||||
|         Me.급탕 = I50 | ||||
|         Me.급탕보조 = I60 | ||||
|  | ||||
|         If (I4 + I5 + I6 + I7 + I8 <> 0) Then | ||||
|             Me.난방S = IH - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I4 | ||||
|             Me.냉방S = IC - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I5 | ||||
|             Me.조명S = IL - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I6 | ||||
|             Me.급탕S = IW - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I7 | ||||
|             Me.환기S = IV - (Result.생산E(0).태양광전력생산량 + Result.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I8 | ||||
|         End If | ||||
|          | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
|     ReadOnly Property 소요량() As Decimal | ||||
|         Get | ||||
|             Return 난방S + 냉방S + 조명S + 환기S + 급탕S | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     ReadOnly Property 면적소요량() As Decimal | ||||
|         Get | ||||
|             Return 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적 | ||||
|         End Get | ||||
|  | ||||
|     End Property | ||||
|     Property 난방S() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then | ||||
|                 Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("난방")) | ||||
|                 End If | ||||
|             Else | ||||
|                 Return 난방 + 난방보조 | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("난방") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|  | ||||
|     Property 난방() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("난방에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 난방보조() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("난방보조에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("난방보조에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 난방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.H = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.난방S / Result.사용면적.H | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     Property 냉방S() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then | ||||
|                 Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("냉방")) | ||||
|                 End If | ||||
|             Else | ||||
|                 Return 냉방 + 냉방보조 | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("냉방") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("냉방에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 냉방보조() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return TOSG(DR(0)("냉방보조에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("냉방보조에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 냉방면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.C = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.냉방S / Result.사용면적.C | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     Property 조명S() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then | ||||
|                 Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("조명")) | ||||
|                 End If | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).조명에너지요구량 | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("조명") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 조명면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.L = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return Me.조명S / Result.사용면적.L | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
|     Property 급탕S() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then | ||||
|                 Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("급탕")) | ||||
|                 End If | ||||
|             Else | ||||
|                 Return 급탕 + 급탕보조 | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("급탕") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\급탕에너지소요량.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("Mon   급탕에너지소요량") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(Mon + vbTab + DR(0)("급탕에너지소요량").ToString) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|  | ||||
|                 Return TOSG(DR(0)("급탕에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("급탕에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     Property 급탕보조() As Decimal | ||||
|         Get | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|                 Return 0 | ||||
|             Else | ||||
|  | ||||
| #If DEBUG Then | ||||
|                 'Dim f As String = "c:\temp\1\급탕보조에너지소요량.txt" | ||||
|                 'Dim b As New System.Text.StringBuilder | ||||
|                 'If System.IO.File.Exists(f) = False Then | ||||
|                 '    b.AppendLine("Mon   급탕보조에너지소요량") | ||||
|                 'End If | ||||
|                 'b.AppendLine(Mon + vbTab + DR(0)("급탕보조에너지소요량").ToString) | ||||
|                 'My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
| #End If | ||||
|  | ||||
|                 Return TOSG(DR(0)("급탕보조에너지소요량")) | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("급탕보조에너지소요량") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 급탕면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.W = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|  | ||||
|                 '#If DEBUG Then | ||||
|                 '                Dim f As String = "c:\temp\1\급탕면적.txt" | ||||
|                 '                Dim b As New System.Text.StringBuilder | ||||
|                 '                If System.IO.File.Exists(f) = False Then | ||||
|                 '                    b.AppendLine("급탕S   사용면적") | ||||
|                 '                End If | ||||
|                 '                b.AppendLine(급탕S.ToString() + vbTab + Result.사용면적.W.ToString) | ||||
|                 '                My.Computer.FileSystem.WriteAllText(f, b.ToString, True) | ||||
|                 '#End If | ||||
|  | ||||
|                 Return 급탕S / Result.사용면적.W | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     Property 환기S() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then | ||||
|                 Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("환기")) | ||||
|                 End If | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).환기에너지요구량 | ||||
|             End If | ||||
|         End Get | ||||
|         Set(ByVal value As Decimal) | ||||
|             Dim DR() As DSR.에너지소요량Row = CType(DSETR.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row()) | ||||
|             If DR.GetUpperBound(0) = -1 Then | ||||
|                 MsgBox(ErrMsg) | ||||
|             Else | ||||
|                 DR(0)("환기") = value | ||||
|             End If | ||||
|         End Set | ||||
|     End Property | ||||
|     ReadOnly Property 환기면적() As Decimal | ||||
|         Get | ||||
|             If Result.사용면적.V = 0 Then | ||||
|                 Return 0 | ||||
|             Else | ||||
|                 Return 환기S / Result.사용면적.V | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| End Class | ||||
							
								
								
									
										224
									
								
								ArinWarev1/Calculator/Result/C에너지요구량.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								ArinWarev1/Calculator/Result/C에너지요구량.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,224 @@ | ||||
| Public Class C에너지요구량 | ||||
|  | ||||
|     Dim Midx As Integer | ||||
|     Public Mon As String | ||||
|     Private ErrMsg As String = "에너지요구량 계산되지 않았습니다" | ||||
|     Private Result As CResult | ||||
|     Public Sub New(ByRef presult As CResult, Optional ByVal pmIdx As Integer = 0) | ||||
|         Result = presult | ||||
|         Mon = "M" & Format(pmIdx, "00") | ||||
|         Me.Midx = pmIdx | ||||
|     End Sub | ||||
|  | ||||
|     ReadOnly Property 요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return 난방요구량 + 냉방요구량 + 조명요구량 + 급탕요구량 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 면적당요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).면적당요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return 난방면적 + 냉방면적 + 조명면적 + 급탕면적 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|  | ||||
| #Region "난방요구량" | ||||
|     ReadOnly Property 난방요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).난방요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Me.난방열 + Me.난방공조 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방열() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E분석(i).난방에너지요구량열 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).난방에너지요구량열 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방공조() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E분석(i).난방에너지요구량공조환기 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).난방에너지요구량공조환기 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 난방면적() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).난방면적 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 If Result.사용면적.H = 0 Then | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return Me.난방요구량 / Result.사용면적.H | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| #Region "냉방요구량" | ||||
|     ReadOnly Property 냉방요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).냉방요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Me.냉방열 + Me.냉방공조 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방열() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E분석(i).냉방에너지요구량열 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).냉방에너지요구량열 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방공조() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E분석(i).냉방에너지요구량공조환기 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).냉방에너지요구량공조환기 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 냉방면적() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).냉방면적 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 If Result.사용면적.C = 0 Then | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return Me.냉방요구량 / Result.사용면적.C | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| #Region "조명요구량" | ||||
|     ReadOnly Property 조명요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).조명요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).조명에너지요구량 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 조명면적() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).조명면적 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 If Result.사용면적.L = 0 Then | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return Me.조명요구량 / Result.사용면적.L | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| #Region "급탕요구량" | ||||
|     ReadOnly Property 급탕요구량() As Decimal | ||||
|         Get | ||||
|             If Midx = 0 Then   '//누적데이터 | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).급탕요구량 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 Return Result.E분석(Midx).급탕에너지요구량 | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
|     ReadOnly Property 급탕면적() As Decimal | ||||
|         Get            '//월별 에너지분석에서 난방요구량 | ||||
|             If Midx = 0 Then | ||||
|                 Dim R As Decimal = 0 | ||||
|                 For i As Integer = 1 To 12 | ||||
|                     R += Result.E요구량(i).급탕면적 | ||||
|                 Next | ||||
|                 Return R | ||||
|             Else | ||||
|                 If Result.사용면적.W = 0 Then | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return Me.급탕요구량 / Result.사용면적.W | ||||
|                 End If | ||||
|             End If | ||||
|         End Get | ||||
|     End Property | ||||
| #End Region | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										264
									
								
								ArinWarev1/Calculator/Result/C최대냉난방부하.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										264
									
								
								ArinWarev1/Calculator/Result/C최대냉난방부하.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,264 @@ | ||||
|  | ||||
| Public Class C최대냉난방부하 | ||||
|     Private DSETR As DSR | ||||
|     Public Sub New(ByRef pdsetr As DSR)   '//존은초기화값을 가지고 생성한다. | ||||
|         DSETR = pdsetr | ||||
|     End Sub | ||||
|     Public Function Item(Optional ByVal ZoneCode As String = "00") As Citem | ||||
|         Return New Citem(DSETR, ZoneCode) | ||||
|     End Function | ||||
|  | ||||
|     Public Sub Calc_Summary() | ||||
|         '//Zone 이 00일떄만 계산된다 | ||||
|  | ||||
|         Dim a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 As Decimal | ||||
|         a1 = 0 : a2 = 0 : a3 = 0 : a4 = 0 : a5 = 0 : a6 = 0 | ||||
|         a7 = 0 : a8 = 0 : a9 = 0 : a10 = 0 | ||||
|         Dim Exist As Boolean = False | ||||
|  | ||||
|         For Each Dr As DSR.최대냉난방부하Row In DSETR.최대냉난방부하.Select("Zone <> '00'", "Zone") | ||||
|             If Exist = False Then Exist = True | ||||
|             ' Dr.최대냉난방부하 = Dr.최대난방기기부하 + Dr.최대냉방기기부하 | ||||
|             a1 += Dr.최대난방기기부하 | ||||
|             a2 += Dr.최대난방실내부하 | ||||
|             'a3 += Dr.난방최대가동시간 | ||||
|             a4 += Dr.최대가열성능 | ||||
|             a5 += Dr.최대냉방기기부하 | ||||
|             a6 += Dr.최대냉방실내부하 | ||||
|             'a7 += Dr.냉방최대가동시간 | ||||
|             a8 += Dr.최대냉각성능 | ||||
|             a9 += Dr.최대가습성능 | ||||
|             a10 += Dr.공조풍량 | ||||
|         Next | ||||
|  | ||||
|         If Exist = False Then | ||||
|             MsgBox("각존별 계산이 되어있지않아서 값을 계산할 수 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|             Return | ||||
|         End If | ||||
|  | ||||
|         Me.Item("00").최대난방기기부하 = a1 | ||||
|         Me.Item("00").최대난방실내부하 = a2 | ||||
|         Me.Item("00").일일난방최대가동시간 = a3 | ||||
|         Me.Item("00").최대가열성능 = a4 | ||||
|         Me.Item("00").최대냉방기기부하 = a5 | ||||
|         Me.Item("00").최대냉방실내부하 = a6 | ||||
|         Me.Item("00").일일냉방최대가동시간 = a7 | ||||
|         Me.Item("00").최대냉각성능 = a8 | ||||
|         Me.Item("00").최대가습성능 = a9 | ||||
|         Me.Item("00").공조풍량 = a10 | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Public Class Citem | ||||
|         Private Zone As String | ||||
|         Dim ErrMsg As String = "최대냉난방부하가 계산되지 않았습니다" | ||||
|         Private DSETR As DSR | ||||
|         Public Sub New(ByRef pdsetr As DSR, Optional ByVal pZone As String = "00")   '//존은초기화값을 가지고 생성한다. | ||||
|             DSETR = pdsetr | ||||
|             Zone = pZone | ||||
|         End Sub | ||||
|         ReadOnly Property 최대냉난방부하() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(Me.최대난방기기부하 + Me.최대냉방기기부하) | ||||
|                 End If | ||||
|             End Get | ||||
|         End Property | ||||
|         Property 최대난방기기부하() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대난방기기부하")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대난방기기부하") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대난방실내부하() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대난방실내부하")) | ||||
|                 End If | ||||
|  | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대난방실내부하") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 일일난방최대가동시간() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("난방최대가동시간")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("난방최대가동시간") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대가열성능() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대가열성능")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대가열성능") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대냉방기기부하() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대냉방기기부하")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대냉방기기부하") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대냉방실내부하() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대냉방실내부하")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대냉방실내부하") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 일일냉방최대가동시간() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("냉방최대가동시간")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("냉방최대가동시간") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대냉각성능() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대냉각성능")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대냉각성능") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 최대가습성능() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("최대가습성능")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("최대가습성능") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|         Property 공조풍량() As Decimal | ||||
|             Get | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                     Return 0 | ||||
|                 Else | ||||
|                     Return TOSG(DR(0)("공조풍량")) | ||||
|                 End If | ||||
|             End Get | ||||
|             Set(ByVal value As Decimal) | ||||
|                 Dim DR() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row()) | ||||
|                 If DR.GetUpperBound(0) = -1 Then | ||||
|                     MsgBox(ErrMsg) | ||||
|                 Else | ||||
|                     DR(0)("공조풍량") = value | ||||
|                 End If | ||||
|             End Set | ||||
|         End Property | ||||
|     End Class | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										899
									
								
								ArinWarev1/Calculator/Summary/CSummary.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										899
									
								
								ArinWarev1/Calculator/Summary/CSummary.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,899 @@ | ||||
| Public Class CSummary | ||||
|  | ||||
|     Public Sub New() | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 모든 집계데이터를 갱신합니다. | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub All() | ||||
|  | ||||
|         ''TMon() | ||||
|         '/// | ||||
|  | ||||
|         Work_msg("최종데이터 집계중...") | ||||
|         Frm_Work.ProgressBar1.Maximum = 12 | ||||
|         Frm_Work.ProgressBar1.Minimum = 0 | ||||
|         Frm_Work.ProgressBar1.Value = 0 | ||||
|         Frm_Work.ProgressBar1.Visible = False | ||||
|         Frm_Work.TopMost = True | ||||
|         Frm_Work.Show() | ||||
|  | ||||
|  | ||||
|         For Each Dr As C에너지분석 In Result.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다. '//LoadOfZone 에서 계산완료한다. | ||||
|             Dr.Calc() | ||||
|         Next | ||||
|         Result.최대부하.Calc_Summary()    '//최대냉난방부하(합계-zone='00') 계산 | ||||
|         'Result.생산E(0).Calc_Summary()    '//합계필드(M00)에데이터를 누적합니다. | ||||
|         Result.일차E소요량(0).Calc_Summary()   '//1차소요량의 합계데이터를 계산 | ||||
|         Result.E소요량(0).Calc_Summary()   '//1차소요량의 합계데이터를 계산 | ||||
|  | ||||
|         'TReqUse_M01M12() '//이것들은 현재 사용하지 않고있다. | ||||
|         'TReqUse_M00()    '//현재 사용하지않고있따. | ||||
|  | ||||
|         Me.Make_ResultSheet()    '//최종결과를 보여주는 시트를 작성한다. | ||||
|         DSETR.AcceptChanges()   '//변경된모든내용을 적용함 | ||||
|     End Sub | ||||
|  | ||||
| #Region "미사용개체" | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 1월부터 10월까지 집계데이터를 계산한다. | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub TReqUse_M01M12() | ||||
|         Dim MOn As String | ||||
|         For i As Short = 1 To 12 | ||||
|             'MOn = "M" & Format(i, "00") | ||||
|             'Dim DR() As DSR.TReqUseRow = CType(DSETR.TReqUse.Select("", "code"), DSR.TReqUseRow()) | ||||
|  | ||||
|  | ||||
|             ''//////////////////////////////////// | ||||
|             ''         연간 Co2 배출량 | ||||
|             ''//////////////////////////////////// | ||||
|  | ||||
|             ''조명/환기에너지소요량 | ||||
|             'DR(56 - 1)(MOn) = CType(DSETR.월별에너지분석.Select("월='" & MOn & "' and 존='00'")(0), DSR.월별에너지분석Row).조명요구량 | ||||
|             'DR(57 - 1)(MOn) = CType(DSETR.월별에너지분석.Select("월='" & MOn & "' and 존='00'")(0), DSR.월별에너지분석Row).환기요구량 | ||||
|  | ||||
|             ''//SUMProduct 계산 | ||||
|             'Dim Acc1 as decimal = 0 | ||||
|             'Dim Acc2 as decimal = 0 | ||||
|             'For j As Short = 41 To 57 | ||||
|             '    Acc1 += Ru(j, MOn) * Ru(j, "sign") | ||||
|             'Next | ||||
|             'For j As Short = 58 To 59 | ||||
|             '    Acc2 += Ru(j, MOn) * Ru(j, "sign") | ||||
|             'Next | ||||
|             'Ru(ResultRow.CO2_연간배출량, MOn) = Acc1 - Acc2 '//최상단 합계(연가Co2배출량 | ||||
|  | ||||
|             ''//Excel 67번줄데이터가 필요하므로 먼저계산한다..해당데이터는 마지막(64번줄에 할당함) | ||||
|             ''//(I95+I96)/(I76+I82+I88+I90+I92)*$C$76 | ||||
|             'Ru(64, MOn) = (Ru(58, MOn) + Ru(59, MOn)) / (Ru(45, MOn) + Ru(50, MOn) + Ru(55, MOn) + Ru(56, MOn) + Ru(57, MOn)) * Ru(45, "sign") | ||||
|  | ||||
|             ''//난방에너지소요량(계수(sign)* Sumproduct) | ||||
|             'Dim ACc_Nan as decimal = 0 | ||||
|             'For j As Short = 41 To 45 | ||||
|             '    ACc_Nan += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|             'Dim ACc_Naeng as decimal = 0 | ||||
|             'For j As Short = 46 To 50 | ||||
|             '    ACc_Naeng += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|             'Dim ACc_KUb as decimal = 0 | ||||
|             'For j As Short = 51 To 55 | ||||
|             '    ACc_KUb += CSng(DR(j - 1)(MOn)) * CSng(DR(j - 1)("sign")) | ||||
|             'Next | ||||
|  | ||||
|  | ||||
|             ''//67>64 | ||||
|             ''IF(csng(ru(7,"00"))=0,0,(ACc_Nan-ru(45,mon)*ru(64,mon))/$H$15)+IF($H$20=0,0,(SUMPRODUCT($C$78:$C$82,I78:I82)-I82*I67)/$H$20)+IF($H$26=0,0,(SUMPRODUCT($C$84:$C$88,I84:I88)-I88*I67)/$H$26)+IF($H$23=0,0,($C$90*I90-I90*I67)/$H$23)+IF($H$27=0,0,($C$92*I92-I92*I67)/$H$27) | ||||
|             ''IF(csng(ru(7))=0,0,(ACc_Nan-ru(45,mon)*ru(64,mon))/ru(7))+IF(ru(12)=0,0,(acc_naeng-ru(50,mon)*ru(64,mon))/ru(12))+IF(ru(18)=0,0,(acc_kub-ru(55,mon)*ru(64,mon))/ru(18))+IF(ru(15)=0,0,(ru(56,"sign")*ru(56,mon)-ru(56,mon)*ru(64,mon))/ru(15))+IF(ru(19)=0,0,(ru(57,"sign")*ru(57,mon)-ru(57,mon)*ru(64,mon))/ru(19)) | ||||
|  | ||||
|             ''//단위면적당Co2배출량) | ||||
|             'If Ru(ResultRow.요구량_난방_사용면적) = 0 Then | ||||
|             '    Ru(ResultRow.CO2_단위면적당배출량, MOn) = 0 | ||||
|             'Else | ||||
|             '    '(ACc_Nan-ru(45,mon)*ru(64,mon))/ru(7))+IF(ru(12)=0,0,(acc_naeng-ru(50,mon)*ru(64,mon))/ru(12))+IF(ru(18)=0,0,(acc_kub-ru(55,mon)*ru(64,mon))/ru(18))+IF(ru(15)=0,0,(ru(56,"sign")*ru(56,mon)-ru(56,mon)*ru(64,mon))/ru(15))+IF(ru(19)=0,0,(ru(57,"sign")*ru(57,mon)-ru(57,mon)*ru(64,mon))/ru(19) | ||||
|             '    Ru(ResultRow.CO2_단위면적당배출량, MOn) = (ACc_Nan - Ru(45, MOn) * Ru(64, MOn)) / Ru(7) + CSng(IIf(Ru(12) = 0, 0, (ACc_Naeng - Ru(50, MOn) * Ru(64, MOn)) / Ru(12))) + CSng(IIf(Ru(18) = 0, 0, (ACc_KUb - Ru(55, MOn) * Ru(64, MOn)) / Ru(18))) + CSng(IIf(Ru(15) = 0, 0, (Ru(56, "sign") * Ru(56, MOn) - Ru(56, MOn) * Ru(64, MOn)) / Ru(15))) + CSng(IIf(Ru(19) = 0, 0, (Ru(57, "sign") * Ru(57, MOn) - Ru(57, MOn) * Ru(64, MOn)) / Ru(19))) | ||||
|             'End If | ||||
|         Next | ||||
|     End Sub | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' 에너지요구량및소요량 테이블의 M00(합계)를 누적(M01~M12)로 채웁니다. 그렇지않은건 이후에 합계프로시져별도로 생성함 | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Sub TReqUse_M00() | ||||
|         ''//LT(LineType 이 SL  Sum Line 인경우가져와서 m00 = m01~m12 한다 | ||||
|         'Dim DR() As DSR.TReqUseRow = CType(DSETR.TReqUse.Select("", "code"), DSR.TReqUseRow()) | ||||
|         'For Each Drs As DSR.TReqUseRow In DSETR.TReqUse.Select("lt='SL'") | ||||
|         '    Drs.M00 = Drs.M01 + Drs.M02 + Drs.M03 + Drs.M04 + Drs.M05 + Drs.M06 + Drs.M07 + Drs.M08 + Drs.M09 + Drs.M10 + Drs.M11 + Drs.M12 | ||||
|         'Next | ||||
|  | ||||
|         ''//커스텀 합계필드 계산 | ||||
|  | ||||
|         ''자주사용되는 SUM(1~12)를 미리 계산해둔다 | ||||
|         'Dim L45, L50, L55, L56, L57, L22, L27, L31, L33, L37 as decimal : Dim Drow As DSR.TReqUseRow | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(45 - 1), DSR.TReqUseRow) | ||||
|         'L45 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(50 - 1), DSR.TReqUseRow) | ||||
|         'L50 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(55 - 1), DSR.TReqUseRow) | ||||
|         'L55 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(56 - 1), DSR.TReqUseRow) | ||||
|         'L56 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(57 - 1), DSR.TReqUseRow) | ||||
|         'L57 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(22 - 1), DSR.TReqUseRow) | ||||
|         'L22 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(27 - 1), DSR.TReqUseRow) | ||||
|         'L27 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(31 - 1), DSR.TReqUseRow) | ||||
|         'L31 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(33 - 1), DSR.TReqUseRow) | ||||
|         'L33 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(37 - 1), DSR.TReqUseRow) | ||||
|         'L37 = Drow.M01 + Drow.M02 + Drow.M03 + Drow.M04 + Drow.M05 + Drow.M06 + Drow.M07 + Drow.M08 + Drow.M09 + Drow.M10 + Drow.M11 + Drow.M12 | ||||
|  | ||||
|         ''//실제 데이터 집계 | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(45 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L45 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L45 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(50 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L50 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 ' | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L50 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(55 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L55 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L55 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(56 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L56 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L56 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(57 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = L57 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then Drow.M00 = L57 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(22 - 1), DSR.TReqUseRow) | ||||
|         '' If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L22 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         'Drow.COLG = L22 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L45 | ||||
|         ''    End If | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(27 - 1), DSR.TReqUseRow) | ||||
|         '' If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L27 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|         'Drow.COLG = L27 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L50 | ||||
|         '' End If | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(31 - 1), DSR.TReqUseRow) | ||||
|         ''  If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L31 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         'Drow.COLG = L31 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L56 | ||||
|         ''        End If | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(33 - 1), DSR.TReqUseRow) | ||||
|         ''If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L33 - (DR(58 - 1).M00 + DR(59 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         'Drow.COLG = L33 - (DR(58 - 1).M00) / (L45 + L50 + L55 + L56 + L57) * L55 | ||||
|         '' End If | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(20 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = DR(22 - 1).M00 + DR(27 - 1).M00 + DR(31 - 1).M00 + DR(33 - 1).M00 + DR(37 - 1).M00 | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(26 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(7 - 1).M00 = 0, 0, DR(22 - 1).M00 / DR(7 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(30 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(12 - 1).M00 = 0, 0, DR(27 - 1).M00 / DR(12 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(32 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(15 - 1).M00 = 0, 0, DR(31 - 1).M00 / DR(15 - 1).M00)) | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(36 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = CSng(IIf(DR(18 - 1).M00 = 0, 0, DR(33 - 1).M00 / DR(18 - 1).M00)) | ||||
|  | ||||
|  | ||||
|         ''=SUM(I58:T58)-(H95+H96)/(SUM(I76:T76)+SUM(I82:T82)+SUM(I88:T88)+SUM(I90:T90)+SUM(I92:T92))*SUM(I92:T92) | ||||
|         ''=L37-(ru(58)+ru(59))/(L45+L50+L55+L56+L57)*L57 | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(37 - 1), DSR.TReqUseRow)    '//환기에너지소요량(X) | ||||
|         ''    If (L45 + L50 + L55 + L56 + L57) <> 0 Then | ||||
|         'Drow.M00 = L37 - (Ru(58) + Ru(59)) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         'Drow.COLG = L37 - (Ru(58)) / (L45 + L50 + L55 + L56 + L57) * L57 | ||||
|         ''    End If | ||||
|  | ||||
|  | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(38 - 1), DSR.TReqUseRow)    '//환기에너지 단위면적당 소요량 | ||||
|         'Drow.M00 = CSng(IIf(Ru(19) = 0, 0, Ru(37) / Ru(19))) | ||||
|  | ||||
|         ''// | ||||
|         'Drow = CType(DSETR.TReqUse.Rows(21 - 1), DSR.TReqUseRow) | ||||
|         'Drow.M00 = DR(26 - 1).M00 + DR(30 - 1).M00 + DR(32 - 1).M00 + DR(36 - 1).M00 + DR(38 - 1).M00 | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|  | ||||
| #End Region | ||||
|  | ||||
|     Public Sub Make_ResultSheet() | ||||
|         '//에너지요구량 | ||||
|         DSETR.TReqUse.Clear() | ||||
|         DSETR.TReqUse.AcceptChanges() | ||||
|  | ||||
|         Dim Array As New ArrayList | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("100", "에너지요구량", "[kWh]", "Qb", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).면적당요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("100", "단위면적당 에너지 요구량", "[kWh/m²]", "Σ(Qb / Ab)", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량", "[kWh]", "QH,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량(열)", "[kWh]", "Qh,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방공조) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "난방에너지 요구량(공조,환기)", "[kWh]", "Qh*,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QH,b / AH", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(난방)", "[m²]", "AH", "=", Result.사용면적.H, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량", "[kWh]", "QC,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량(열)", "[kWh]", "Qc,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방공조) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "냉방에너지 요구량(공조,환기)", "[kWh]", "Qc*,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QC,b / AC", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(냉방)", "[m²]", "AC", "=", Result.사용면적.C, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).조명요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "조명에너지 요구량", "[kWh]", "QL,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).조명면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QL,b / AL", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(조명)", "[m²]", "AL", "=", Result.사용면적.L, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).급탕요구량) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "급탕에너지 요구량", "[kWh]", "QW,b", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E요구량(i).급탕면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QW,b / AW", "=", Array, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(급탕)", "[m²]", "AW", "=", Result.사용면적.W, "N1") | ||||
|         Set_ReqUseRow("110", "사용면적(환기)", "[m²]", "AV", "=", Result.사용면적.V, "N1") | ||||
|  | ||||
|         '//에너지소요량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("200", "에너지소요량", "[kWh]", "Qf", "", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).면적소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("200", "단위면적당 에너지 소요량", "[kWh/m²]", "Σ(Qf / Ab)", "", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "QH,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "Qh,f", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "난방보조에너지 소요량", "[kWh]", "Qh,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QH,f / AH", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "QC,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "Qc,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "냉방보조에너지 소요량", "[kWh]", "Qc,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QC,f / AC", "=", Array, "N1") | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).조명S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "조명에너지 소요량", "[kWh]", "QL,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).조명면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QL,f / AL", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "QW,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "Qw,f", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕보조) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "급탕보조에너지 소요량", "[kWh]", "Qw,aux", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).급탕면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QW,f / AW", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).환기S) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "환기에너지 소요량", "[kWh]", "QV,aux", "=", Array)    '//36 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.E소요량(i).환기면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QV.aux / AV", "=", Array, "N1") | ||||
|  | ||||
|         '//1차에너지 소요량(10-02 추가) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("300", "1차에너지 소요량", "[kWh]", "", "", Array)   '//38 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).단위면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("300", "단위면적당 1차에너지 소요량", "[kWh/m²]", "", "", Array, "N1")    '//39 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방 1차에너지 소요량", "", "", "", Array)  '//40 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.614", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//45 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).난방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).난방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//46 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "냉방 1차에너지 소요량", "", "", "", Array)  '//47 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array)  '//48 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//50 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방지역난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.614", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방지역냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역냉방열 소요량", "[kWh]", Pub.Result.E변환계수.지역냉방.ToString("N3"), "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//52 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).냉방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).냉방면적) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//53 | ||||
|  | ||||
|        | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "급탕 1차에너지 소요량", "", "", "", Array)  '//54 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array)  '//55 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//57 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.614", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//59 | ||||
|  | ||||
|         'Array.Clear() '//--펠렛 100727 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.일차E소요량(i).급탕펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).급탕면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//60 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "조명 1차에너지 소요량", "", "", "", Array)  '//61 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//62 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).조명면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//63 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기소요량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "환기 1차에너지 소요량", "", "", "", Array)  '//64 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//65 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.일차E소요량(i).환기면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1")  '//66 | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).태양광전력생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전기에너지 생산량(태양광)", "[kWh]", CStr(Result.E변환계수.전력), "=", Array)    '//67 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).열병합전력생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "전기에너지 생산량(열병합)", "[kWh]", CStr(Result.E변환계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).태양열생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "열에너지 생산량(태양열)", "[kWh]", "", "=", Array)  '//69 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).지열생산량) | ||||
|         Next | ||||
|         Set_ReqUseRow("310", "열에너지 생산량(지열)", "[kWh]", "", "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).면적당생산량태양열) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 생산량(태양열)", "[kWh]", "", "=", Array, "N1")    '//71 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.생산E(i).면적당생산량지열) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("310", "단위면적당 생산량(지열)", "[kWh]", "", "=", Array, "N1")  '//72 | ||||
|  | ||||
|  | ||||
|         '//CO2배출량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("400", "연간 CO2 배출량", "[kg CO2]", "", "", Array)  '//73 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).단위면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("400", "단위면적당 CO2 배출량", "[kg CO2/m²]", "", "", Array, "N1")    '//74 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방 CO2 발생량", "", "", "", Array)  '//75 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역냉방), "=", Array) | ||||
|  | ||||
|         'Array.Clear() '//펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).난방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "펠렛 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).난방면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "냉방 CO2 발생량", "", "", "", Array)  '//82 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방지역난방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방지역냉방열) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역냉방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역냉방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         'Array.Clear() '//낸ㅇ방펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).냉방펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).냉방면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "급탕 CO2 발생량", "", "", "", Array)  '//89 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕등유) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.등유), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕LNG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LNG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕LPG) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.LPG), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕지역) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.지역난방), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         'Array.Clear() '//급탕펠렛 | ||||
|         'For i As Integer = 0 To 12 | ||||
|         '    Array.Add(Result.Co2발생량(i).급탕펠렛) | ||||
|         'Next | ||||
|         'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.펠렛), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).급탕면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "조명 CO2 발생량", "", "", "", Array)  '//96 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).조명면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기발생량) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "환기 CO2 발생량", "", "", "", Array)  '//99 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기전력) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).환기면적) | ||||
|         Next | ||||
|  | ||||
|         Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1") | ||||
|  | ||||
|         '//CO2저감량 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).저감량태양광) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 저감량(태양광)", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) '//102 | ||||
|         Array.Clear() | ||||
|         For i As Integer = 0 To 12 | ||||
|             Array.Add(Result.Co2발생량(i).저감량열병합) | ||||
|         Next | ||||
|         Set_ReqUseRow("410", "전력 CO2 저감량(열병합)", "[kg CO2]", CStr(Result.Co2배출계수.전력), "=", Array) '//103 | ||||
|         DSETR.AcceptChanges() | ||||
|  | ||||
|     End Sub | ||||
|  | ||||
|     Private Sub Set_ReqUseRow(ByVal GRP As String, ByVal desc As String, ByVal unit As String, ByVal sign As String, ByVal eq As String, ByVal Value As ArrayList, Optional ByVal F As String = "N0") | ||||
|         Dim DR As DSR.TReqUseRow : DR = DSETR.TReqUse.NewTReqUseRow | ||||
|  | ||||
|         DR.Code = Format(DSETR.TReqUse.Rows.Count + 1, "000") | ||||
|         DR.GRP = GRP  '//그룹 출력할떄 그룹으로 뽑는다. | ||||
|         DR.Desc = desc  '//설명 | ||||
|         DR.UNIT = unit  '//단위 | ||||
|         DR.SIGN = sign    '//기호 | ||||
|         DR.EQ = eq    '//등호 = | ||||
|         DR.M00 = TOSG(Value.Item(0)) | ||||
|         DR.M01 = TOSG(Value.Item(1)) | ||||
|         DR.M02 = TOSG(Value.Item(2)) | ||||
|         DR.M03 = TOSG(Value.Item(3)) | ||||
|         DR.M04 = TOSG(Value.Item(4)) | ||||
|         DR.M05 = TOSG(Value.Item(5)) | ||||
|         DR.M06 = TOSG(Value.Item(6)) | ||||
|         DR.M07 = TOSG(Value.Item(7)) | ||||
|         DR.M08 = TOSG(Value.Item(8)) | ||||
|         DR.M09 = TOSG(Value.Item(9)) | ||||
|         DR.M10 = TOSG(Value.Item(10)) | ||||
|         DR.M11 = TOSG(Value.Item(11)) | ||||
|         DR.M12 = TOSG(Value.Item(12)) | ||||
|         DR.F = F | ||||
|         DSETR.TReqUse.AddTReqUseRow(DR) | ||||
|     End Sub | ||||
|     Private Sub Set_ReqUseRow(ByVal GRP As String, ByVal desc As String, ByVal unit As String, ByVal sign As String, ByVal eq As String, ByVal Value As Decimal, Optional ByVal F As String = "N0") | ||||
|         Dim DR As DSR.TReqUseRow : DR = DSETR.TReqUse.NewTReqUseRow | ||||
|  | ||||
|         DR.Code = Format(DSETR.TReqUse.Rows.Count + 1, "000") | ||||
|         DR.GRP = GRP  '//그룹 출력할떄 그룹으로 뽑는다. | ||||
|         DR.Desc = desc  '//설명 | ||||
|         DR.UNIT = unit  '//단위 | ||||
|         DR.SIGN = sign    '//기호 | ||||
|         DR.EQ = eq    '//등호 = | ||||
|         DR.M00 = Value | ||||
|         DR.F = F | ||||
|         'DR.M01 = CSng(Value.Item(1)) | ||||
|         'DR.M02 = CSng(Value.Item(2)) | ||||
|         'DR.M03 = CSng(Value.Item(3)) | ||||
|         'DR.M04 = CSng(Value.Item(4)) | ||||
|         'DR.M05 = CSng(Value.Item(5)) | ||||
|         'DR.M06 = CSng(Value.Item(6)) | ||||
|         'DR.M07 = CSng(Value.Item(7)) | ||||
|         'DR.M08 = CSng(Value.Item(8)) | ||||
|         'DR.M09 = CSng(Value.Item(9)) | ||||
|         'DR.M10 = CSng(Value.Item(10)) | ||||
|         'DR.M11 = CSng(Value.Item(11)) | ||||
|         'DR.M12 = CSng(Value.Item(12)) | ||||
|         DSETR.TReqUse.AddTReqUseRow(DR) | ||||
|     End Sub | ||||
|  | ||||
| End Class | ||||
							
								
								
									
										822
									
								
								ArinWarev1/Calculator/Zone/CZone.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										822
									
								
								ArinWarev1/Calculator/Zone/CZone.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,822 @@ | ||||
| Public Class CZone | ||||
|  | ||||
|     Public Event PBarSet(ByVal min As Integer, ByVal max As Integer) '//프로그레시브바 초기화 | ||||
|     Public Event Message(ByVal Msg As String)    '//메세지표시 | ||||
|     Public Event PBarVal(ByVal Value As Integer) '//프로그레시브 값설정 | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' (main)에너지요구량 계산 | ||||
|     ''' </summary> | ||||
|     ''' <param name="Calc_Use">에너지소요량을 추가로 계산하려면 True 를 입력</param> | ||||
|     ''' <param name="Log">로그가 입력될 스트링빌더</param> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Overridable Function Calc_LoadOfZones() As Boolean | ||||
|         Dim Title As String = "에너지요구량을 계산합니다" | ||||
|         RaiseEvent Message(Title & vbCrLf & "잠시만 기다려주세요") | ||||
|         RaiseEvent PBarSet(0, 100) | ||||
|  | ||||
|         RaiseEvent Message(Title & vbCrLf & "데이터저장소를 확보하는중.") | ||||
|         'i_count_OpWe As Integer, d_we_month As Integer, Q_h_b_we as decimal,  ==================================2010.2.21 삭제 | ||||
|  | ||||
|         Dim t_24 As Integer, f_wind As Integer, t_NA As Integer, t_h_op_d As Integer, i_count_Is As Integer | ||||
|         Dim Delta_theta_er As Decimal, Delta_theta_i_NA As Decimal, Delta_theta_i_WE As Decimal, theta_i As Decimal, theta_i_h As Decimal, theta_i_c As Decimal, F_f As Decimal, F__F As Decimal, F_W As Decimal, F_S As Decimal, F_V As Decimal, h_r As Decimal, c_p_arhoa As Decimal, e_wind As Decimal, n_50 As Decimal, n_ue As Decimal, n_mech As Decimal, n_inf As Decimal, A_B As Decimal, A_u As Decimal, h_u As Decimal, V As Decimal, V_ue As Decimal | ||||
|         Dim H_V_inf As Decimal, H_V_mech As Decimal, H_V_ue As Decimal, H_V_z As Decimal, theta_z As Decimal, theta_u As Decimal, H_T_D As Decimal, H_T_iu As Decimal, H_T_iz As Decimal, H_T_s As Decimal, Delta_U_WB As Decimal, H_V_mech_theta As Decimal, theta_i_h_soll As Decimal, theta_i_c_soll As Decimal, theta_V_mech As Decimal ', theta_e_min as decimal, theta_e_max as decimal | ||||
|         Dim C_wirk As Decimal, tau As Decimal, a As Decimal, a_tb As Decimal, A_beheizt As Decimal, f_we As Decimal, f_NA As Decimal, f_tb As Decimal, Q_h_max As Decimal, theta_i_NA As Decimal, eta_V_mech As Decimal, theta_V_mech_RLT As Decimal | ||||
|         Dim Q_V_inf_sink As Decimal, Q_V_mech_sink As Decimal, Q_V_z_sink As Decimal, Q_V_sink As Decimal, Q_T_e_sink As Decimal, Q_T_u_sink As Decimal, Q_T_z_sink As Decimal, Q_T_s_sink As Decimal, Q_T_sink As Decimal, Q_S_sink As Decimal, R_se As Decimal, Q_source As Decimal, Q_sink As Decimal, Q_I_source As Decimal | ||||
|         Dim Q_V_inf_source As Decimal, Q_V_mech_source As Decimal, Q_V_z_source As Decimal, Q_V_source As Decimal, Q_T_e_source As Decimal, Q_T_u_source As Decimal, Q_T_z_source As Decimal, Q_T_s_source As Decimal, Q_T_source As Decimal, Q_S_source As Decimal | ||||
|         Dim Q_I_source_p As Decimal, Q_I_source_fac As Decimal, Q_I_L As Decimal, Q_l_b As Decimal, Q_w_b As Decimal, gamma As Decimal, eta As Decimal, Q_h_b As Decimal, Q_h_b_op As Decimal, g_TI As Decimal | ||||
|         Dim V_mech As Decimal | ||||
|         'Dim d_op_month As Integer, theta_e_month as decimal | ||||
|         'Dim A_H as decimal, A_C as decimal, A_L as decimal, A_W as decimal, A_V as decimal | ||||
|         Dim Q_vh_b_op As Decimal | ||||
|         Dim g_blinds As Decimal, tau_e_B As Decimal, rho_e_B As Decimal, U_blinds As Decimal, tau_e_B_corr As Decimal, rho_e_B_corr As Decimal 'EN 13363-1 적용 | ||||
|         Dim g As Decimal, alpa As Decimal | ||||
|         'Dim i_sub_wall As Integer | ||||
|         Dim V_mech_outdoor As Decimal | ||||
|  | ||||
|         '//2010.02.04추가 | ||||
|         Dim i_count_AHU As Integer | ||||
|         Dim Phi As Decimal | ||||
|         '//2010.02.21추가 | ||||
|         Dim d_op_mth As Integer | ||||
|         Dim d_full_mth As Integer | ||||
|         '//2011.04.04 추가 | ||||
|         Dim Q_V_win_sink As Decimal, Q_V_win_source As Decimal, H_V_win As Decimal, n_win As Decimal | ||||
|         Dim zone_count As Decimal '//2012.07.08 추가 | ||||
|  | ||||
|  | ||||
|         Dim priod_value As Single = 0 | ||||
|         Dim age As Single '//준공연도에 의한 경년변화값 | ||||
|         For Each DRpriod As DS.tbl_DescRow In DSET.tbl_Desc.Select("cname<>'0'", "cname") | ||||
|             priod_value = CSng(DRpriod.priod) | ||||
|         Next | ||||
|         If priod_value = 0 Then | ||||
|             age = 1 | ||||
|         Else | ||||
|             age = 1 / (1 - priod_value * 0.0012) | ||||
|         End If | ||||
|  | ||||
|  | ||||
|  | ||||
|         RaiseEvent Message(Title & vbCrLf & "저장소 기본값을 설정하는중.") | ||||
|         t_24 = 24 | ||||
|         F_f = 0.5 '구조체와 하늘과의 형태계수 | ||||
|         F__F = 0.7 '창 프레임 감소계수 __필요 | ||||
|         F_W = 0.9 '수직입사가 아닌경우에 대한 감소계수 | ||||
|         F_S = 1 '주변환경에 의한 그늘짐 | ||||
|         F_V = 1 '0.9 '우선 먼지팩터는 없는 것으로 가정 | ||||
|         h_r = 5 * 0.9 '= 5*e(모를경우 e=0.9) | ||||
|         Delta_theta_er = 10 | ||||
|         Delta_theta_i_NA = 4 '(용도별조건) | ||||
|         'theta_i = 21 | ||||
|         'theta_i_h = 21 | ||||
|         theta_i_h_soll = 20 | ||||
|         theta_i_c = 24 | ||||
|         theta_i_c_soll = 26 | ||||
|         theta_V_mech_RLT = 27 | ||||
|         'theta_e_min = -11.3 | ||||
|         'theta_e_max = 31.5 | ||||
|         c_p_arhoa = 0.34    '//먼지모름 | ||||
|         'n_50 = 1.5 | ||||
|         n_ue = 0.6 | ||||
|         e_wind = 0.07 | ||||
|         f_wind = 15 | ||||
|         R_se = 0.043 '외기에 직접 열전달저항 확인요망 | ||||
|         g_TI = 0.35 '(2-113) | ||||
|         alpa = 0.4 '우선 0.4으로 설정 표면흡수율 도표 2-6 참조 | ||||
|         n_mech = 1 '임시 | ||||
|         A_u = 1 | ||||
|         h_u = 1 '임시 | ||||
|  | ||||
|         RaiseEvent Message(Title & vbCrLf & "결과저장소 초기화") | ||||
|  | ||||
|         Work_msg("요구량계산중...") | ||||
|         Frm_Work.ProgressBar1.Maximum = 26 | ||||
|         Frm_Work.ProgressBar1.Minimum = 0 | ||||
|         Frm_Work.ProgressBar1.Value = 0 | ||||
|         Frm_Work.TopMost = True | ||||
|         Frm_Work.Show() | ||||
|  | ||||
|         '///////////////////////////////////////////////////// | ||||
|         For i_count_HeatCool As Integer = 1 To 2 '(1)   루프회전 난방/냉방 구분해서 회전한다. 둘의 산식이 거의 비슷하므로 루프를 이용해서 계산 | ||||
|  | ||||
|             For i_count_month As Short = 0 To 12 '(2)    --월전체의 루프? | ||||
|  | ||||
|                 Work_msg("요구량계산중..." & CStr(IIf(i_count_HeatCool = 1, "난방", "냉방")) & "(" & i_count_month & "/12)") : Work_plus() | ||||
|                 Dim Mon As String = "M" & Format(i_count_month, "00")   '//저장소의 필드명이 M00 식으로되어있다. | ||||
|  | ||||
|                 If i_count_month = 0 Then '//난방이라면? '//최소외기온도 난방기(theta_e_min) | ||||
|                     Calc.Pub.theta_e(i_count_month) = TOSG(IIf(i_count_HeatCool = 1, Calc.Pub.theta_e_min, Calc.Pub.theta_e_max)) | ||||
|                 End If | ||||
|  | ||||
|                 '//존 루프 | ||||
|                 For Each DR존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code") ' DSET.tbl_zone.Rows.Count '(3) | ||||
|                     '//방식이나 공조는 ZZ는 사용안함이다 V=환기  외기부하처리여부의경우 0001 은 예이다. | ||||
|                     zone_count = TOSG(DR존.입력존의수) | ||||
|                     If DR존.냉난방방식 <> "기능없음" Or (DR존.냉난방공조 <> "기능없음" And (DR존.냉난방공조 <> "환기" Or DR존.외기부하처리여부 = "예")) Then | ||||
|                         Q_vh_b_op = 0 | ||||
|  | ||||
|                         '//i_count_OpWe 1은 평일 2는 주말이다ㅡㅡ/ | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         'For i_count_OpWe = 1 To 2 | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         Q_V_inf_sink = 0 | ||||
|                         Q_V_inf_source = 0 | ||||
|                         Q_V_mech_sink = 0 | ||||
|                         Q_V_mech_source = 0 | ||||
|                         Q_V_z_sink = 0 | ||||
|                         Q_V_z_source = 0 | ||||
|                         Q_V_win_sink = 0 '//2011.04.04 추가 | ||||
|                         Q_V_win_source = 0 '//2011.04.04 추가 | ||||
|  | ||||
|                         Q_T_e_sink = 0 | ||||
|                         Q_T_e_source = 0 | ||||
|                         Q_T_u_sink = 0 | ||||
|                         Q_T_u_source = 0 | ||||
|                         Q_T_z_sink = 0 | ||||
|                         Q_T_z_source = 0 | ||||
|                         Q_T_s_sink = 0 | ||||
|                         Q_T_s_source = 0 | ||||
|  | ||||
|                         A_B = TOSG(DR존.면적) * zone_count ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|                         V = TOSG(DR존.순실체적) * zone_count ' Worksheets("입력존").Range("체적1").Offset(0, i_count_zone - 1) | ||||
|                         V_ue = A_u * h_u | ||||
|                         'Log.AppendLine("               >>  V_ue = A_u * h_u =  // au와 hu 는 선언부에서 1값으로 고정되어있음 v_ue는 항상 1") | ||||
|  | ||||
|                         '//존의 프로필설정에대한 실제 프로필의 데이터를 가져옴 | ||||
|                         Dim DR프로필() As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'"), DS.tbl_profileRow()) | ||||
|                         If DR프로필.GetUpperBound(0) = -1 Then | ||||
|                             MsgBox("존=" & DR존.code & " 의 프로필=" & DR존.프로필 & " 의 데이터가 존재하지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                         Else | ||||
|                             'Log.AppendLine("               >>  존의 프로필코드(" & DR존.프로필 & ") 에 해당하는 프로필정보를 가져옵니다") | ||||
|                             t_h_op_d = TOIT(DR프로필(0).운전시간난방) '  Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile) | ||||
|                             '===================================================================================2010.2.21 추가 | ||||
|                             If i_count_month = 0 Then | ||||
|                                 d_op_mth = 0 | ||||
|                             Else | ||||
|                                 d_op_mth = CInt(TOSG(DR프로필(0)("day" & Format(i_count_month, "00")))) | ||||
|                             End If | ||||
|                             '===================================================================================2010.2.21 추가 | ||||
|                             theta_i_h_soll = TOSG(DR프로필(0).난방설정온도) ' Worksheets("설정조건").Range("난방설정온도1").Offset(0, i_count_profile) | ||||
|                             theta_i_c_soll = TOSG(DR프로필(0).냉방설정온도) ' Worksheets("설정조건").Range("냉방설정온도1").Offset(0, i_count_profile) | ||||
|                             Delta_theta_i_NA = TOSG(DR프로필(0).야간최저허용온도) ' Worksheets("설정조건").Range("야간최저허용온도1").Offset(0, i_count_profile) | ||||
|                             Delta_theta_i_WE = TOSG(DR프로필(0).주말최저허용온도) ' Worksheets("설정조건").Range("주말최저허용온도1").Offset(0, i_count_profile) | ||||
|                             '  If i_count_OpWe = 1 Then=============================================================2010.2.21 삭제 | ||||
|                             'Log.AppendLine("               >>  i_count_OpWe = 1 >> Q_I_source_p/Q_I_source_fac/V_mech 계산됨") | ||||
|                             Q_I_source_p = TOSG(DR프로필(0).사람) * A_B '  Worksheets("설정조건").Range("사람1").Offset(0, i_count_profile) * A_B '(2-118) | ||||
|                             Q_I_source_fac = TOSG(DR프로필(0).작업보조기기) * A_B ' Worksheets("설정조건").Range("작업보조기기1").Offset(0, i_count_profile) * A_B '(2-119) | ||||
|                             V_mech = TOSG(DR프로필(0).최소도입외기량) * A_B '  Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) * A_B | ||||
|                             '    Else   '=============================================================2010.2.21 삭제 | ||||
|                             '    Log.AppendLine("               >>  i_count_OpWe <> 1 >> Q_I_source_p/Q_I_source_fac 는 0입니다") | ||||
|                             '    Q_I_source_p = 0 '주말 사람없음 | ||||
|                             '    Q_I_source_fac = 0 '주말 기기발열 없음 | ||||
|                             'End If | ||||
|                             'Q_I_L = 0 'mu_L*Q_I_L_elektr (2-123)추후 추가 | ||||
|                         End If | ||||
|  | ||||
|                         V_mech_outdoor = 1 '외기처리 관련 (ZZ=사용안함 Y=예) | ||||
|                         If DR존.냉난방방식 <> "기능없음" And DR존.냉난방공조 <> "기능없음" And DR존.외기부하처리여부 = "예" Then | ||||
|                             If i_count_HeatCool = 1 Then    '//난방이라면 | ||||
|                                 If DR존.냉난방공조 <> "난방" AndAlso DR존.냉난방공조 <> "냉난방" Then '난방/냉난방 이 아니면! | ||||
|                                     If theta_i_h_soll > Calc.Pub.theta_e(i_count_month) Then    '//난방설정온도 > 외기온도(난방기) | ||||
|                                         Q_vh_b_op = V_mech * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) * t_h_op_d * c_p_arhoa * d_op_mth '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                                         V_mech_outdoor = 0 ' 외기처리된 상태인 경우 | ||||
|                                         'Log.AppendLine("               >>  외기처리됨") | ||||
|                                     End If | ||||
|                                 End If | ||||
|                             Else | ||||
|                                 If DR존.냉난방공조 <> "냉방" AndAlso DR존.냉난방공조 <> "냉난방" Then '냉방/냉난방이 아닐경우 | ||||
|                                     If theta_i_c_soll < Calc.Pub.theta_e(i_count_month) Then | ||||
|                                         Q_vh_b_op = V_mech * (Calc.Pub.theta_e(i_count_month) - theta_i_c_soll) * t_h_op_d * c_p_arhoa * d_op_mth '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                                         V_mech_outdoor = 0 ' 외기처리된 상태인 경우 | ||||
|                                         'Log.AppendLine("               >>  외기처리됨") | ||||
|                                     End If | ||||
|                                 End If | ||||
|                             End If | ||||
|                         End If | ||||
|  | ||||
|  | ||||
|  | ||||
|                         n_50 = TOSG(DR존.침기율)    '//tosg 는 빈값일경우 0을 반환 | ||||
|                         n_inf = n_50 * e_wind '(2-59) 환기기기 없는 경우 | ||||
|                         'n_inf = n_50 * e_wind * (1 + f_V_mech * t_V_mech / 24) '(2-60) 급기 및 배기에 대한 환기회수 필요 | ||||
|                         '///////////////////////////////////////////////////////////////////////////////////////////////////////2011.04.04 추가 | ||||
|                         'If n_nutz < 1.2 Then | ||||
|                         '    Delta_n_win = n_nutz - (n_nutz - 0.2) * n_inf - 0.1 | ||||
|                         'Else | ||||
|                         '    Delta_n_win = n_nutz - n_inf - 0.1 | ||||
|                         'End If | ||||
|                         'If Delta_n_win < 0 Then | ||||
|                         '    Delta_n_win = 0 | ||||
|                         'End If | ||||
|                         'n_win = 0.1 + Delta_n_win * t_h_op_d / 24 | ||||
|                         n_win = 0.1 ' 최소외기 도입량은 환기기기 유무와 상관없이 적용되는 것으로 평가하기 때문에 자연환기 기본값만 적용 | ||||
|                         '///////////////////////////////////////////////////////////////////////////////////////////////////////2011.04.04 추가 | ||||
|  | ||||
|  | ||||
|                         H_T_D = 0 | ||||
|                         H_T_iu = 0 | ||||
|                         H_T_iz = 0 | ||||
|  | ||||
|  | ||||
|                         Dim Drow프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                         If DR존.조명부하산출방법 = "계산치" Then | ||||
|                             Q_I_L = TOSG(DR존.조명에너지부하율계산치) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         Else | ||||
|                             Q_I_L = TOSG(DR존.조명에너지부하율입력치) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         End If | ||||
|                         'Q_I_L = TOSG(IIf(DR존.조명부하산출방법 = "계산치", TOSG(DR존.조명에너지부하율계산치), TOSG(DR존.조명에너지부하율입력치))) * TOSG(Drow프로필.일일사용시간) * A_B | ||||
|                         Q_w_b = TOSG(Drow프로필.일일급탕요구량) * A_B * d_op_mth | ||||
|                         '===================================2010.2.21 삭제 | ||||
|                         'If DR존.조명부하산출방법 = "CALC" Then    '//OpWe의 2번은 주말인거 같다. | ||||
|                         '    '//부하율계산치?입력치구분 | ||||
|                         '    Q_w_b = TOSG(DR존.급탕요구량) * A_B * Calc.Pub.d_op_mth(i_count_month) | ||||
|                         'Else | ||||
|                         '    Q_I_L = 0 '주말 소등으로 설정 | ||||
|                         '    Q_w_b = 0 '주말은 급탕사용안함 | ||||
|                         'End If | ||||
|                         '===================================2010.2.21 삭제 | ||||
|  | ||||
|                         'Log.AppendLine("               >>  현재존을 사용하는 각 입력면(" & DSET.tbl_myoun.Select("존분류='" & DR존.code & "'").GetUpperBound(0) & ")으로부터 데이터를 누적") | ||||
|                         For Each Dr입력면 As DS.tbl_myounRow In DSET.tbl_myoun.Select("존분류='" & DR존.code & "'") | ||||
|                             If Dr입력면.code <> "0" Then | ||||
|                                 If DR존.열교가산치 = "내단열" Then | ||||
|                                     Delta_U_WB = 0.15                            '내단열(=0001) Worksheets("입력존").Range("열교1").Offset(0, i_count_zone - 1) = "내단열" Then | ||||
|                                 Else | ||||
|                                     Delta_U_WB = 0.1                               '내단열(=0001) Worksheets("입력존").Range("열교1").Offset(0, i_count_zone - 1) = "내단열" Then | ||||
|                                 End If | ||||
|                                 Select Case Dr입력면.건축부위방식.Trim ' Case Worksheets("입력면").Range("입력부위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                     Case "외벽" '"외벽" | ||||
|                                         'Dr입력면.열관류율 >> Calc.Get_열관류율(Dr입력면) | ||||
|                                         H_T_D = H_T_D + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) * zone_count + Delta_U_WB * TOSG(Dr입력면.건축부위면적) * zone_count ' Worksheets("입력면").Range("부위면적" & i_sub_wall & "").Offset(0, i_count_wall) '(2-44) Delta_U_WB는 외단열 0.1, 내단열 0.15 | ||||
|                                     Case "외부창", "내부창" '=================2010.03.20 수정 | ||||
|                                         If Dr입력면.블라인드유무 = "유" Then ' '0001(=유) Range("에너지투과율" & i_sub_wall & "").Offset(3, i_count_wall) = "유" Then    | ||||
|                                             If Calc.Get_열관류율(Dr입력면) = 0 Then | ||||
|                                                 MsgBox("블라인드 사용이지만 열관류율 수치가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                             Else | ||||
|                                                 Select Case Dr입력면.블라인드위치.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(4, i_count_wall) | ||||
|                                                     Case "내부" '"내부" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 30)) | ||||
|                                                     Case "중간" '중간" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 3)) | ||||
|                                                     Case "외부" ' '외부" | ||||
|                                                         U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(Dr입력면) * age) + 1 / 5 + 1 / 10)) | ||||
|                                                 End Select | ||||
|                                             End If | ||||
|  | ||||
|                                         Else | ||||
|                                             U_blinds = Calc.Get_열관류율(Dr입력면) * age 'Worksheets("입력면").Range("열관류율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                         End If | ||||
|  | ||||
|                                         '=========================================================================================================2010.03.20 수정 | ||||
|                                         If Dr입력면.건축부위방식.Trim = "외부창" Then | ||||
|                                             H_T_D = H_T_D + U_blinds * TOSG(Dr입력면.건축부위면적) * zone_count + Delta_U_WB * TOSG(Dr입력면.건축부위면적) * zone_count '(2-44) Delta_U_WB는 외단열 0.1, 내단열 0.15 | ||||
|                                         Else | ||||
|                                             H_T_iu = H_T_iu + U_blinds * TOSG(Dr입력면.건축부위면적) * zone_count | ||||
|                                         End If | ||||
|                                         '=========================================================================================================2010.03.20 수정 | ||||
|                                     Case "내벽" ' "내벽" | ||||
|                                         H_T_iu = H_T_iu + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) * zone_count '(2-48) | ||||
|                                     Case "간벽" '"간벽" | ||||
|                                         H_T_iz = H_T_iz + Calc.Get_열관류율(Dr입력면) * age * TOSG(Dr입력면.건축부위면적) * zone_count '(2-52) | ||||
|                                     Case Else | ||||
|                                         MsgBox("입력면 건축부위방식이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                         Return False | ||||
|                                 End Select | ||||
|                             End If | ||||
|                         Next | ||||
|  | ||||
|  | ||||
|                         If H_T_D = 0 Then | ||||
|                             H_V_inf = 0 | ||||
|                         Else | ||||
|                             H_V_inf = n_inf * V * c_p_arhoa '(2-58) c_p_arhoa는 0.34 V는 존의 체적 | ||||
|                         End If | ||||
|                         H_V_win = n_win * V * c_p_arhoa '//2011.04.04 추가 | ||||
|                         H_V_mech = V_mech * c_p_arhoa 'n_mech * V * c_p_arhoa '(2-83) | ||||
|                         H_V_ue = n_ue * V_ue * c_p_arhoa '(2-94) | ||||
|                         'H_V_z = n_z_d * c_p_arhoa '(2-99) | ||||
|  | ||||
|                         If DR존.열저장능력 = "" Then | ||||
|                             MsgBox(DR존.설명 & "의 열저장능력이 입력되어 있지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                             C_wirk = 0 | ||||
|                         Else | ||||
|                             C_wirk = TOSG(DR존.열저장능력) * A_B ' .Worksheets("입력존").Range("열저장능력1").Offset(0, i_count_zone - 1) * A_B | ||||
|                         End If | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             H_V_mech_theta = 0 'H_V_mech * (theta_i_h_soll - theta_V_mech) / 6 '(2-130) 우선 고려안함 | ||||
|                         Else | ||||
|                             H_V_mech_theta = 0 'H_V_mech * (theta_i_c_soll - theta_V_mech) / 6 '(2-130) | ||||
|                         End If | ||||
|                         tau = C_wirk / ((H_T_D + H_T_iu + H_T_iz) + (H_V_inf + H_V_mech + H_V_ue + H_V_win) + H_V_mech_theta) '(2-22, 129) 추후 H_V_z 추가 '//2011.04.04 H_V_win 추가 | ||||
|                         If tau < 48 Then tau = 48 | ||||
|  | ||||
|                         a = 1 + tau / 16 '(2-25) | ||||
|  | ||||
|                         a_tb = 1 ' =A_beheizt / A_B 'A_beheizt는 난방면적, A_B는 전용면적 | ||||
|  | ||||
|                         t_NA = 24 - t_h_op_d | ||||
|                         f_tb = TOSG(0.8 * (1 - Math.Exp(-Q_h_max / (A_B * 35))) * a_tb ^ 2) '(2-34) | ||||
|  | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'If i_count_OpWe = 1 Then | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         Select Case DR존.야간운전방식.Trim '공통1002 Worksheets("입력존").Range("야간가동1").Offset(0, i_count_zone - 1) | ||||
|                             Case "정상가동" '정상가동" | ||||
|                                 f_NA = 0 | ||||
|                             Case "감소가동" '감소가동" | ||||
|                                 f_NA = TOSG(0.13 * t_NA * Math.Exp(-tau / 250) / 24) '(2-28) 감소가동 | ||||
|                             Case "가동정지" '가동정지" | ||||
|                                 f_NA = TOSG(0.26 * t_NA * Math.Exp(-tau / 250) / 24) '(2-29) 가동정지 | ||||
|                         End Select | ||||
|                         theta_i_h = theta_i_h_soll - f_NA * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) | ||||
|                         If theta_i_h < theta_i_h_soll - Delta_theta_i_NA * t_NA / 24 Then theta_i_h = theta_i_h_soll - Delta_theta_i_NA * t_NA / 24 '(2-27) 야간감소 | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'Else | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         Select Case DR존.주말운전방식.Trim ' Worksheets("입력존").Range("주말가동1").Offset(0, i_count_zone - 1) | ||||
|                             Case "정상가동" '정상가동" | ||||
|                                 f_we = 0 | ||||
|                             Case "감소가동" '감소가동" | ||||
|                                 f_we = TOSG(0.2 * (1 - 0.4 * tau / 250)) '(2-31) 난방감소 | ||||
|                             Case "가동정지" '가동정지" | ||||
|                                 f_we = TOSG(0.3 * (1 - 0.2 * tau / 250)) '(2-32) 난방정지식 | ||||
|                         End Select | ||||
|                         theta_i_h = theta_i_h_soll - f_we * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month)) | ||||
|                         If theta_i_h < theta_i_h_soll - Delta_theta_i_WE Then theta_i_h = theta_i_h_soll - Delta_theta_i_WE '(2-30) 주말감소식 변형 | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             theta_i = theta_i_h | ||||
|                             theta_z = theta_i_h | ||||
|                             theta_u = TOSG(theta_i_h_soll - 0.7 * (theta_i_h_soll - Calc.Pub.theta_e(i_count_month))) | ||||
|                         Else | ||||
|                             theta_i = theta_i_c_soll '24'에너지 사용량 계산할때 24 사용 | ||||
|                             theta_z = theta_i_c_soll | ||||
|                             theta_u = TOSG(theta_i_c_soll - 0.7 * (theta_i_c_soll - Calc.Pub.theta_e(i_count_month))) | ||||
|                         End If | ||||
|  | ||||
|                         'theta_i_h = theta_i_h_soll - f_tb * (theta_i_h_soll - theta_e(i_count_month)) '(2-33) 공간적제한 | ||||
|                         'theta_i_h = theta_i_NA - f_tb * (theta_i_NA - theta_e(i_count_month)) '(2-35) 공간적 시간적 제한 | ||||
|  | ||||
|                         'theta_V_mech = theta_e(i_count_month) '(2-90) 공조처리 없는 경우 | ||||
|                         'theta_V_mech = theta_e(i_count_month) + eta_V_mech * (theta_i - theta_e(i_count_month)) '(2-91) 비제어적 열교환 eta_V_mech은 사용자입력 | ||||
|                         theta_V_mech_RLT = TOSG(IIf(i_count_HeatCool = 1, 27, 16)) | ||||
|  | ||||
|                         theta_V_mech = Calc.Pub.theta_e(i_count_month) 'theta_V_mech_RLT '(2-92) 공조처리된 급기온도(도표 3-3, 3-4, 7-5) 난방 27, 냉방 16으로 설정 | ||||
|  | ||||
|  | ||||
|                         '=======================================================================2010.02.04 추가부분 시작 | ||||
|                         If DR존.냉난방공조처리시스템 <> "0" And DR존.냉난방공조 = "환기" Then   '//냉난방공조처리시스템이 선택되어있고 공조가 환기라면 | ||||
|                             '//공조처리스템과 일치하는 공조기기(tbl_kongjo) 를 찾아서 계산한다. | ||||
|                             Dim DR() As DS.tbl_kongjoRow = CType(DSET.tbl_kongjo.Select("code='" & DR존.냉난방공조처리시스템 & "' and code <> '0'"), DS.tbl_kongjoRow()) | ||||
|                             If DR.GetUpperBound(0) = 0 Then | ||||
|                                 Select Case DR(0).열교환기유형.Trim | ||||
|                                     Case "현열교환", "전열교환" '//현열교환,전열교환 | ||||
|                                         Phi = TOSG(DR(0).열회수율) ' Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) | ||||
|                                     Case Else | ||||
|                                         Phi = 0 | ||||
|                                 End Select | ||||
|                                 theta_V_mech = Calc.Pub.theta_e(i_count_month) + Phi * (theta_i - Calc.Pub.theta_e(i_count_month)) | ||||
|                             Else | ||||
|                                 MsgBox(DR존.설명 & "존의 냉난방공조처리스템(" & DR존.냉난방공조처리시스템 & ") 의값이 일치하지않습니다", MsgBoxStyle.Critical, "확인") | ||||
|                             End If | ||||
|                         End If | ||||
|                         '=======================================================================2010.02.04 추가부분 끝 | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_V_inf_sink = H_V_inf * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-56) | ||||
|                             Q_V_win_sink = H_V_win * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '//2011.04.04 추가 | ||||
|                         Else | ||||
|                             Q_V_inf_source = H_V_inf * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2- | ||||
|                             Q_V_win_source = H_V_win * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '//2011.04.04 추가 | ||||
|                         End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'If i_count_OpWe = 1 Then | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         If theta_i > theta_V_mech Then | ||||
|                             Q_V_mech_sink = H_V_mech * V_mech_outdoor * (theta_i - theta_V_mech) * t_h_op_d '(2-81) | ||||
|                         Else | ||||
|                             Q_V_mech_source = H_V_mech * V_mech_outdoor * (theta_V_mech - theta_i) * t_h_op_d '(2- | ||||
|                         End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|                         'Else | ||||
|                         'If theta_i > theta_V_mech Then | ||||
|                         '    Q_V_mech_sink = 0 | ||||
|                         'Else | ||||
|                         '    Q_V_mech_source = 0 | ||||
|                         'End If | ||||
|                         'End If | ||||
|                         '================================================2010.2.21 삭제 | ||||
|  | ||||
|                         If theta_i > theta_z Then | ||||
|                             Q_V_z_sink = H_V_z * (theta_i - theta_z) * t_24 '(2-97) | ||||
|                         Else | ||||
|                             Q_V_z_source = H_V_z * (theta_z - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         Q_V_sink = Q_V_inf_sink + Q_V_mech_sink + Q_V_z_sink + Q_V_win_sink '(2-13) '//2011.04.04 추가 | ||||
|                         Q_V_source = Q_V_inf_source + Q_V_mech_source + Q_V_z_source + Q_V_win_source '(2-  '//2011.04.04 추가 | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_T_e_sink = H_T_D * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-42) | ||||
|                         Else | ||||
|                             Q_T_e_source = H_T_D * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > theta_u Then | ||||
|                             Q_T_u_sink = H_T_iu * (theta_i - theta_u) * t_24 '(2-46) | ||||
|                         Else | ||||
|                             Q_T_u_source = H_T_iu * (theta_u - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > theta_z Then | ||||
|                             Q_T_z_sink = H_T_iz * (theta_i - theta_z) * t_24 '(2-50) | ||||
|                         Else | ||||
|                             Q_T_z_source = H_T_iz * (theta_z - theta_i) * t_24 '(2- | ||||
|                         End If | ||||
|  | ||||
|                         If theta_i > Calc.Pub.theta_e(i_count_month) Then | ||||
|                             Q_T_s_sink = H_T_s * (theta_i - Calc.Pub.theta_e(i_count_month)) * t_24 '(2-53) 추후수정 | ||||
|                         Else | ||||
|                             Q_T_s_source = H_T_s * (Calc.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2-53) 추후수정 | ||||
|                         End If | ||||
|  | ||||
|                         Q_T_sink = Q_T_e_sink + Q_T_u_sink + Q_T_z_sink + Q_T_s_sink '(2-12) | ||||
|                         Q_T_source = Q_T_e_source + Q_T_u_source + Q_T_z_source + Q_T_s_source '(2-12) | ||||
|  | ||||
|                         Q_S_sink = 0 | ||||
|                         Q_S_source = 0 | ||||
|  | ||||
|                         For Each DRF입력면 As DS.tbl_myounRow In DSET.tbl_myoun.Select("존분류='" & DR존.code & "' and code <> '0'")    '//해당존을 사용하는 모든 입력면을 가져옴 | ||||
|                             Select Case DRF입력면.방위.Trim ' Worksheets("입력면").Range("방위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                 Case "수평" '"수평" | ||||
|                                     i_count_Is = 0 | ||||
|                                 Case "남" '"남" | ||||
|                                     i_count_Is = 1 | ||||
|                                 Case "남동" '"남동" | ||||
|                                     i_count_Is = 2 | ||||
|                                 Case "남서" '"남서" | ||||
|                                     i_count_Is = 3 | ||||
|                                 Case "동" '"동" | ||||
|                                     i_count_Is = 4 | ||||
|                                 Case "서" '"서" | ||||
|                                     i_count_Is = 5 | ||||
|                                 Case "북동" '"북동" | ||||
|                                     i_count_Is = 6 | ||||
|                                 Case "북서" '"북서" | ||||
|                                     i_count_Is = 7 | ||||
|                                 Case "북" '"북" | ||||
|                                     i_count_Is = 8 | ||||
|                                     '==========================================================2010.03.20 추가 | ||||
|                                 Case Else | ||||
|                                     i_count_Is = -1 | ||||
|                                     '==========================================================2010.03.20 추가 | ||||
|                             End Select | ||||
|  | ||||
|                             If i_count_Is <> -1 Then '=====================================2010.03.20 추가 | ||||
|  | ||||
|  | ||||
|                                 Select Case DRF입력면.건축부위방식.Trim ' Range("입력부위" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                     Case "외벽" '외벽 | ||||
|                                         If alpa * Calc.Pub.I_s(i_count_Is, i_count_month) < F_f * h_r * Delta_theta_er Then | ||||
|                                             Q_S_sink = Q_S_sink + R_se * Calc.Get_열관류율(DRF입력면) * age * TOSG(DRF입력면.건축부위면적) * zone_count * (F_f * h_r * Delta_theta_er - alpa * Calc.Pub.I_s(i_count_Is, i_count_month)) * t_24 '(2-111) | ||||
|                                         Else | ||||
|                                             'Log.AppendLine("외벽 if else = " & Q_S_source) | ||||
|                                             Q_S_source = Q_S_source + R_se * Calc.Get_열관류율(DRF입력면) * age * TOSG(DRF입력면.건축부위면적) * zone_count * (alpa * Calc.Pub.I_s(i_count_Is, i_count_month) - F_f * h_r * Delta_theta_er) * t_24 '(2- | ||||
|                                             'Log.AppendLine(">>" & Q_S_source) | ||||
|                                         End If | ||||
|  | ||||
|                                     Case "외부창", "내부창" '=====================================2010.03.20 수정 | ||||
|                                         If TOSG(DRF입력면.수평차양각) < 67.5 Then 'Range("에너지투과율" & i_sub_wall & "").Offset(1, i_count_wall) < 67.5 Then | ||||
|  | ||||
|                                             If DRF입력면.블라인드유무 = "유" Then ' Range("에너지투과율" & i_sub_wall & "").Offset(3, i_count_wall) = "유" Then | ||||
|                                                 Select Case DRF입력면.블라인드빛종류.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(6, i_count_wall) | ||||
|                                                     Case "불투과(t=0.0)" '불투과(t=0.0)" | ||||
|                                                         tau_e_B = 0 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim ' Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" '흰색" | ||||
|                                                                 rho_e_B = 0.7 | ||||
|                                                             Case "밝은색" '밝은색" | ||||
|                                                                 rho_e_B = 0.5 | ||||
|                                                             Case "어두운색" '어두운색" | ||||
|                                                                 rho_e_B = 0.3 | ||||
|                                                             Case "검은색" '검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("불투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                     Case "약투과(t=0.2)" '약투과(t=0.2)" | ||||
|                                                         tau_e_B = 0.2 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" | ||||
|                                                                 rho_e_B = 0.6 | ||||
|                                                             Case "밝은색" | ||||
|                                                                 rho_e_B = 0.4 | ||||
|                                                             Case "어두운색" | ||||
|                                                                 rho_e_B = 0.2 | ||||
|                                                             Case "검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("약투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                     Case "반투과(t=0.4)" '반투과(t=0.4)" | ||||
|                                                         tau_e_B = 0.4 | ||||
|                                                         Select Case DRF입력면.블라인드색상.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(7, i_count_wall) | ||||
|                                                             Case "흰색" | ||||
|                                                                 rho_e_B = 0.4 | ||||
|                                                             Case "밝은색" | ||||
|                                                                 rho_e_B = 0.3 | ||||
|                                                             Case "어두운색" | ||||
|                                                                 rho_e_B = 0.2 | ||||
|                                                             Case "검은색" | ||||
|                                                                 rho_e_B = 0.1 | ||||
|                                                             Case Else | ||||
|                                                                 MsgBox("반투과 블라인드색상이 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                         End Select | ||||
|                                                 End Select | ||||
|  | ||||
|                                                 If DRF입력면.블라인드각도 = "45도" Then ' Range("에너지투과율" & i_sub_wall & "").Offset(5, i_count_wall) = "45도" Then | ||||
|                                                     tau_e_B_corr = TOSG(0.65 * tau_e_B + 0.15 * rho_e_B) | ||||
|                                                     rho_e_B_corr = TOSG(rho_e_B * (0.75 + 0.7 * tau_e_B)) | ||||
|                                                     tau_e_B = tau_e_B_corr | ||||
|                                                     rho_e_B = rho_e_B_corr | ||||
|                                                 End If | ||||
|  | ||||
|                                                 g = TOSG(DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|                                                 If DRF입력면.블라인드위치.Trim <> "" AndAlso Calc.Get_열관류율(DRF입력면) = 0 Then | ||||
|                                                     MsgBox(DRF입력면.설명 & "의 열관류율이 0입니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                 Else | ||||
|                                                     Select Case DRF입력면.블라인드위치.Trim 'Range("에너지투과율" & i_sub_wall & "").Offset(4, i_count_wall) | ||||
|                                                         Case "내부" '내부" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 30)) | ||||
|                                                             g_blinds = g * (1 - g * rho_e_B - (1 - tau_e_B - rho_e_B) * U_blinds / 30) | ||||
|                                                         Case "중간" '중간" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 3)) | ||||
|                                                             g_blinds = g * tau_e_B + g * ((1 - tau_e_B - rho_e_B) + (1 - g) * rho_e_B) * U_blinds / 3 | ||||
|                                                         Case "외부" '외부" | ||||
|                                                             U_blinds = TOSG(1 / (1 / (Calc.Get_열관류율(DRF입력면) * age) + 1 / 5 + 1 / 10)) | ||||
|                                                             g_blinds = tau_e_B * g + (1 - tau_e_B - rho_e_B) * U_blinds / 10 + tau_e_B * (1 - g) * g / 5 | ||||
|                                                         Case Else | ||||
|                                                             MsgBox("블라인드위치가 없습니다", MsgBoxStyle.Critical, "확인") | ||||
|                                                     End Select | ||||
|                                                 End If | ||||
|                                                 '===========================================================================2010.02.27 추가 | ||||
|                                                 If i_count_month = 0 Then | ||||
|                                                     If i_count_HeatCool = 1 Then | ||||
|                                                         g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, 1 - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, 1 - 1) * g_blinds | ||||
|                                                     Else | ||||
|                                                         g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, 7 - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, 7 - 1) * g_blinds | ||||
|                                                     End If | ||||
|                                                 Else | ||||
|                                                     g_blinds = (1 - Calc.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1)) * g + Calc.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1) * g_blinds | ||||
|                                                 End If | ||||
|                                                 '===========================================================================2010.02.27 추가 | ||||
|  | ||||
|                                             Else | ||||
|                                                 g_blinds = TOSG(DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall) | ||||
|  | ||||
|                                             End If | ||||
|                                             Q_S_source = TOSG(Q_S_source + F__F * TOSG(DRF입력면.건축부위면적) * zone_count * F_S * F_W * F_V * g_blinds * Math.Cos(1.33 * TOSG(DRF입력면.수평차양각) * 3.141592 / 180) * (1 - TOSG(DRF입력면.수직차양각) / 300) * Calc.Pub.I_s(i_count_Is, i_count_month) * t_24) '(2-113) | ||||
|                                         End If | ||||
|                                 End Select | ||||
|                             End If '==========================================================2010.03.20 추가 | ||||
|                         Next | ||||
|  | ||||
|                         Q_I_source = Q_I_source_p + Q_I_source_fac + Q_I_L '(2-20) | ||||
|                         Q_source = Q_S_source + Q_T_source + Q_V_source + Q_I_source '(2-16) | ||||
|                         If i_count_month = 0 AndAlso i_count_HeatCool = 1 Then Q_source = 0 ' 난방 최대부하 계산 | ||||
|                         Q_sink = Q_T_sink + Q_V_sink + Q_S_sink '(2-11) Q_I_sink는 현재 고려안함 | ||||
|  | ||||
|                         If Q_sink = 0 Then | ||||
|                             eta = 0 | ||||
|                         Else | ||||
|                             gamma = Q_source / Q_sink '(2-21) | ||||
|                             'If gamma > 1.1 And a > 100 Then | ||||
|                             If gamma ^ a > 1000000 Then | ||||
|                                 eta = 1 / gamma | ||||
|                             Else | ||||
|                                 If gamma = 1 Then | ||||
|                                     eta = a / (a + 1) '(2-24) | ||||
|                                 Else | ||||
|                                     eta = TOSG((1 - gamma ^ a) / (1 - gamma ^ (a + 1))) '(2-23) | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             If 1 - (eta * gamma) < 0.01 Then eta = 1 / gamma '(2-137) | ||||
|                             If (1 - eta) * gamma < 0.01 Then eta = 1 '(2-138) | ||||
|                             'If V_mech >= Q_C_max / (c_p_arhoa * (theta_i - theta_mech)) Then eta = 1 '(2-139) 추후 고민 | ||||
|                         End If | ||||
|  | ||||
|                         If i_count_HeatCool = 1 Then | ||||
|                             Q_h_b = Q_sink - eta * Q_source '(2-1) | ||||
|                         Else | ||||
|                             Q_h_b = (1 - eta) * Q_source '(2-7) | ||||
|                         End If | ||||
|  | ||||
|  | ||||
|                         If Q_h_b < 0.001 Then Q_h_b = 0 '1W 미만 제거 | ||||
|  | ||||
|                         '========================================================2010.2.21 수정 And i_count_OpWe = 1  삭제 | ||||
|                         If i_count_month = 0 Then | ||||
|                             If t_h_op_d <> 0 Then | ||||
|                                 Q_h_b_op = Q_h_b / t_h_op_d | ||||
|                             Else | ||||
|                                 Q_h_b_op = Q_h_b | ||||
|                             End If | ||||
|                         Else | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'If i_count_OpWe = 1 Then | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             Q_h_b_op = Q_h_b * d_op_mth | ||||
|                             ' MsgBox(i_count_month & "    " & Q_h_b & "     " & d_op(i_count_month) & "     " & Q_h_b_op) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'Else | ||||
|                             'Q_h_b_we = Q_h_b * Calc.Pub.d_we(i_count_month) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             Dim DRProf As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|                             If DR존.조명부하산출방법 = "계산치" Then 'Worksheets("조명").Range("조명부하산출방법1").Offset(0, i_count_zone - 1) = "계산치" Then | ||||
|                                 Q_l_b = TOSG(DR존.조명에너지부하율계산치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth | ||||
|                             Else | ||||
|                                 Q_l_b = TOSG(DR존.조명에너지부하율입력치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth | ||||
|                             End If | ||||
|                             Q_w_b = TOSG(DRProf.일일급탕요구량) * A_B * d_op_mth 'Worksheets("입력존").Range("일일급탕요구량1").Offset(0, i_count_zone - 1) * A_B * d_op(i_count_month) | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                             'End If | ||||
|                             '=================================================2010.2.21 삭제 | ||||
|                         End If | ||||
|                         'Q_h_b_mth = d_op(i_count_month) * (Q_sink_op - eta_op * Q_source_op) + d_we(i_count_month) * (Q_sink_we - eta_we * Q_source_we) '(2-6) | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                         'Next | ||||
|                         '======================================2010.2.21 삭제 | ||||
|                     Else | ||||
|                         A_B = TOSG(DR존.면적) * zone_count ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1) | ||||
|  | ||||
|                         Q_vh_b_op = 0 | ||||
|                         Q_h_b_op = 0 | ||||
|                         'Q_h_b_we = 0 | ||||
|  | ||||
|                         '//조명부하산출방법이 계산치(0001)일경우 계산치로 그렇지않을경우 입력치로 계산함 | ||||
|                         Dim DRProf As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) | ||||
|  | ||||
|                         If DR존.조명부하산출방법 = "계산치" Then | ||||
|                             Q_l_b = TOSG(DR존.조명에너지부하율계산치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth | ||||
|                         Else | ||||
|                             Q_l_b = TOSG(DR존.조명에너지부하율입력치) * TOSG(DRProf.일일사용시간) * A_B * d_op_mth | ||||
|                         End If | ||||
|  | ||||
|                         Q_w_b = TOSG(DRProf.일일급탕요구량) * A_B * d_op_mth '===============d_op(i_count_month) 2010.2.21 수정 | ||||
|                     End If | ||||
|  | ||||
|                     Dim Dr최대부하 As New C최대냉난방부하.Citem(DR존.code) ' DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & DR존.code & "'")(0), DSR.최대냉난방부하Row) | ||||
|  | ||||
|                     If i_count_HeatCool = 1 Then | ||||
|                         If i_count_month = 0 Then   '//0번시트는최대 냉난방부하 시트이다. | ||||
|                             Dr최대부하.최대난방기기부하 = TOSG((Q_h_b_op) / 1000) ''=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                             'Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(0, i_count_zone - 1) = (Q_h_b_op + Q_h_b_we) / 1000 | ||||
|                             If DR존.야간운전방식 = "가동정지" Then ' Worksheets("입력존").Range("야간가동1").Offset(0, i_count_zone - 1) = "가동정지" Then | ||||
|                                 Dr최대부하.일일난방최대가동시간 = t_h_op_d | ||||
|                                 'Dr최대냉난방부하.난방최대가동시간 = t_h_op_d '  Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(2, i_count_zone - 1) = t_h_op_d | ||||
|                             Else | ||||
|                                 Dr최대부하.일일난방최대가동시간 = 24 | ||||
|                                 'Dr최대냉난방부하.난방최대가동시간 = 24 ' Worksheets("" & i_count_month & "").Range("최대난방부하1").Offset(2, i_count_zone - 1) = 24 | ||||
|                             End If | ||||
|                         Else | ||||
|                             Dim Dr월에너지요구량 As New C에너지분석(i_count_month, DR존.code) | ||||
|  | ||||
|                             'Dim Dr월에너지요구량 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) | ||||
|                             'Dr월에너지요구량 = DSETR.에너지분석및요구량.Rows(i_count_month - 1) '//각 월별 시트에 값을 셋트(에너지분석및요구량 테이블에 들어있다) | ||||
|                             If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "난방" Then    '//냉난방,난방 | ||||
|                                 Dr월에너지요구량.난방에너지요구량열 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Dr월에너지요구량.난방에너지요구량공조환기 = TOSG(Q_vh_b_op / 1000) | ||||
|                                 '  If i_count_month = 1 Then MsgBox("1") | ||||
|                                 'Log.AppendLine("공조값설정=" & CSng(Q_vh_b_op / 1000)) | ||||
|                             ElseIf DR존.냉난방공조 = "냉난방" Or DR존.냉난방공조 = "난방" Then    '//냉난방,난방 | ||||
|                                 Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                 Dr월에너지요구량.난방에너지요구량공조환기 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|  | ||||
|                                 '//오류확인용 존1만 확인한다. | ||||
|                                 'If DR존.code = "0001" Then MsgBox(DR존.냉난방방식 & vbCrLf & DR존.냉난방공조 & vbCrLf & CSng((Q_h_b_op + Q_h_b_we) / 1000), MsgBoxStyle.Information, DR존.code) | ||||
|  | ||||
|                             Else | ||||
|                                 If (DR존.냉난방공조 = "냉방" Or DR존.냉난방공조 = "환기") And DR존.외기부하처리여부 = "예" Then '냉방/환기/"예" Then | ||||
|                                     Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                     ' If i_count_month = 1 Then MsgBox("3") | ||||
|                                     Dr월에너지요구량.난방에너지요구량공조환기 = TOSG(Q_vh_b_op / 1000) | ||||
|                                 Else | ||||
|                                     ' If i_count_month = 1 Then MsgBox("4") | ||||
|                                     Dr월에너지요구량.난방에너지요구량열 = 0 | ||||
|                                     Dr월에너지요구량.난방에너지요구량공조환기 = 0 | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             Dr월에너지요구량.조명에너지요구량 = Q_l_b / 1000 | ||||
|  | ||||
|                             ' Log.AppendLine("i_count_HeatCool=" & i_count_HeatCool & "i_count_month=" & i_count_month & ",급탕에너지요구량=" & CSng(Q_w_b / 1000)) | ||||
|                             Dr월에너지요구량.급탕에너지요구량 = Q_w_b / 1000 | ||||
|                             ' MsgBox("난방요구량" & Dr월에너지요구량.난방요구량공조, MsgBoxStyle.Information, i_count_month & "CZONE") | ||||
|                         End If | ||||
|  | ||||
|                     Else | ||||
|                         If i_count_month = 0 Then | ||||
|                             Dr최대부하.최대냉방기기부하 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                             'Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(0, i_count_zone - 1) = (Q_h_b_op + Q_h_b_we) / 1000 | ||||
|                             If DR존.야간운전방식 = "가동정지" Then  '//가동정지 | ||||
|                                 Dr최대부하.일일냉방최대가동시간 = t_h_op_d ' Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(2, i_count_zone - 1) = t_h_op_d | ||||
|                             Else | ||||
|                                 Dr최대부하.일일냉방최대가동시간 = 24 'Worksheets("" & i_count_month & "").Range("최대냉방부하1").Offset(2, i_count_zone - 1) = 24 | ||||
|                             End If | ||||
|  | ||||
|                         Else | ||||
|                             Dim Dr월에너지요구량 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) | ||||
|                             If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "냉방" Then    '//냉난방/냉방 | ||||
|                                 Dr월에너지요구량.냉방요구량열 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Dr월에너지요구량.냉방요구량공조 = TOSG(Q_vh_b_op / 1000) | ||||
|                             Else | ||||
|                                 If DR존.냉난방공조 = "냉난방" Or DR존.냉난방공조 = "냉방" Then    '//냉난방/냉방 | ||||
|                                     Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                     Dr월에너지요구량.냉방요구량공조 = TOSG((Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제 | ||||
|                                 Else | ||||
|                                     If (DR존.냉난방공조 = "난방" Or DR존.냉난방공조 = "환기") And DR존.냉난방공조 = "예" Then '//난방/환기/예 | ||||
|                                         Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                         Dr월에너지요구량.냉방요구량공조 = TOSG(Q_vh_b_op / 1000) | ||||
|                                     Else | ||||
|                                         Dr월에너지요구량.냉방요구량열 = 0 | ||||
|                                         Dr월에너지요구량.냉방요구량공조 = 0 | ||||
|                                     End If | ||||
|  | ||||
|                                 End If | ||||
|                             End If | ||||
|  | ||||
|                             'MsgBox("냉방요구량" & Dr월에너지요구량.냉방요구량공조, MsgBoxStyle.Information, i_count_month & "CZONE") | ||||
|                         End If | ||||
|                     End If | ||||
|                 Next '(3) | ||||
|  | ||||
|                 Dim CAir As New CAirHandling | ||||
|                 If i_count_month = 0 Then | ||||
|                     CAir.Calc_Max_Power(i_count_HeatCool) '//AIR HANDLING 모듈 에 존재함..역시 내용이 크다 ㅠ_ㅠ | ||||
|                 End If | ||||
|  | ||||
|             Next '(2) | ||||
|         Next '(1) | ||||
|  | ||||
|         Work_msg("에너지분석데이터 집계중...") | ||||
|         Frm_Work.ProgressBar1.Maximum = 13 | ||||
|         Frm_Work.ProgressBar1.Minimum = 0 | ||||
|         Frm_Work.ProgressBar1.Value = 0 | ||||
|         Frm_Work.TopMost = True | ||||
|         Frm_Work.Show() | ||||
|         '//요구량 계산이 완료되었으므로 Summary 계산한다. (이것이 없어서 소요량이 오류났음) | ||||
|         For Each Dr As C에너지분석 In Result.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다. | ||||
|             Work_plus() | ||||
|             Dr.Calc() | ||||
|         Next | ||||
|         DSETR.AcceptChanges() | ||||
|         Return True | ||||
|     End Function | ||||
|  | ||||
|  | ||||
|     ''' <summary> | ||||
|     ''' (main2)소요량 계산 | ||||
|     ''' </summary> | ||||
|     ''' <remarks></remarks> | ||||
|     Public Function Calc_Useage() As Boolean | ||||
|         'Dim d_op_month As Integer | ||||
|         Dim theta_e_month As Decimal | ||||
|         Dim d_full_mth As Integer | ||||
|  | ||||
|         Work_msg("소요량계산중...") | ||||
|         Frm_Work.ProgressBar1.Maximum = 12 | ||||
|         Frm_Work.ProgressBar1.Minimum = 0 | ||||
|         Frm_Work.ProgressBar1.Value = 0 | ||||
|         Frm_Work.TopMost = True | ||||
|         Frm_Work.Show() | ||||
|  | ||||
|         For i_count_month As Short = 1 To 12 '//월별로 난/냉방 소요량을 계산 | ||||
|             Work_msg("소요량계산중..." & "(" & i_count_month & "/12)") : Work_plus() | ||||
|             '===============================================2010.2.21 수정 | ||||
|             'd_op_month = d_op(i_count_month) | ||||
|             d_full_mth = CInt(Calc.Pub.d_full(i_count_month)) | ||||
|             '===============================================2010.2.21 수정 | ||||
|             theta_e_month = Calc.Pub.theta_e(i_count_month) | ||||
|  | ||||
|             '///난방 | ||||
|             Calc.Heating.Calc_WaterheatingSystem(i_count_month, d_full_mth, theta_e_month)  '//급탕소요량 '========2010.2.21 수정 | ||||
|             Calc.AirHandling.Calc_AirHandling(i_count_month, d_full_mth) '//환기? '========2010.2.21 수정 | ||||
|             If Result.E분석(i_count_month).난방에너지요구량 <> 0 Then Calc.Heating.Calc_HeatingSystem(i_count_month, theta_e_month) '//난방소요량 | ||||
|  | ||||
|             '///냉방 | ||||
|             If Result.E분석(i_count_month).냉방에너지요구량 <> 0 Then Calc.Cooling.Calc_CoolingSystem(i_count_month, theta_e_month) | ||||
|         Next | ||||
|         DSETR.AcceptChanges() | ||||
|         Return True | ||||
|     End Function | ||||
|  | ||||
|  | ||||
|  | ||||
| End Class | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Chikyun
					Chikyun