r7,r8 파일손상으로 복구 작업 / 전산실 계수 변경 / R9로 저장 완료.

This commit is contained in:
raytrace
2021-03-03 23:29:33 +09:00
parent 2d3217926a
commit 4fd77f0bb5
33 changed files with 20116 additions and 79 deletions

View File

@@ -281,13 +281,12 @@ Public Class C사용면적
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
'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.503 / 0.314), 3) '//전산실 용도에 따른 난방 가중치 적용
End If
End If
@@ -306,13 +305,12 @@ Public Class C사용면적
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
'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.196 / 0.314), 3) '//전산실 용도에 따른 냉방 가중치 적용
End If
End If

View 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

View 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

File diff suppressed because it is too large Load Diff

View 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>

View 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>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,745 @@
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 의값이 해당 각도의 방향에대한 데이터가된다.
'///만약값이 서울 방향이 남 이엇을경우에는 해당 일사데이터를 찾는게 목적이에요. 여기서 서울의 코드값은 찾을수잇어요
'//그담이 방향 남에 맞는 일사데이터를 찾아야하는데.. 일사데이터 코드로는 못찾으니깐. 이름으로 찾아요.
'//이름 45도를 앞에 붙이기 200915
Dim 일사이름 As String = "45도" & Dr신재생.집열판방위 & "" '//이렇게되면 남(45) 라는 최종이름이 되겟죠?
If Dr신재생.집열판방위 = "수평" Then 일사이름 = "수평면"
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)
If (Q_H_sol_out_m + Q_W_sol_out_m) = 0 Then
H_W_ratio = 0 ' Q_H_sol_out_m / (Q_H_sol_out_m + Q_W_sol_out_m)
Else
H_W_ratio = Q_H_sol_out_m / (Q_H_sol_out_m + Q_W_sol_out_m)
End If
' 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

View File

@@ -0,0 +1,181 @@
''' <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
Dim drArea As DS.tbl_DescRow = CType(DSET1.tbl_Desc.Rows(0), DS.tbl_DescRow)
Dim AreaGrpCode As String = drArea.buildarea
'/그룹코드에서 데이터를 찾아야한다.
Dim drWeatherGrp As DS.weather_groupRow = CType(DSET1.weather_group.Select("code='" + AreaGrpCode + "'")(0), DS.weather_groupRow)
Dim AreaName As String = drWeatherGrp.area
'Dim drtblWeather As DS.tbl_weatherRow = DSET1.tbl_weather.Select("name='" + AreaName + "'")(0)
Return CType(DSET1.tbl_weather.Select("건물위치 ='" & AreaName & "'")(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()
If 기상데이터 Is Nothing Then Return
'//지정된 존에 해당하는 지역정보를 가지고옴(현재기상정보가 존에 할당되어있어서 그렇다)
'//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

View 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

View 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

View 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

View 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

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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

View 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

View 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

View 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

View 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.503 / 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.196 / 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

826
ArinWarev1/ECO2_2020.vbproj Normal file
View File

@@ -0,0 +1,826 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{D5C51BDE-68E5-42BC-B648-DB9CCF044703}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>Eco2Ar.My.MyApplication</StartupObject>
<RootNamespace>Eco2Ar</RootNamespace>
<AssemblyName>Eco2Ar</AssemblyName>
<MyType>WindowsForms</MyType>
<TargetZone>LocalIntranet</TargetZone>
<GenerateManifests>false</GenerateManifests>
<SignManifests>false</SignManifests>
<SignAssembly>false</SignAssembly>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<ManifestCertificateThumbprint>283B51AD9210178E1628176E6D96B5102FED9775</ManifestCertificateThumbprint>
<ManifestKeyFile>ArinWareT4_1_TemporaryKey.pfx</ManifestKeyFile>
<DelaySign>false</DelaySign>
<IsWebBootstrapper>true</IsWebBootstrapper>
<OptionStrict>Off</OptionStrict>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
<ApplicationIcon>002.ico</ApplicationIcon>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
<PublishUrl>ftp://tindevil.com/www/mynetapp/t4/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<InstallUrl>http://tindevil.com/mynetapp/t4/</InstallUrl>
<SupportUrl>http://tindevil.com</SupportUrl>
<ProductName>Energy%28Test Version%29</ProductName>
<PublisherName>Arinware</PublisherName>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>index.htm</WebPage>
<ApplicationRevision>33</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>..\..\..\..\..\eco2\debug_2016\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn>
<PlatformTarget>x86</PlatformTarget>
<WarningsAsErrors>
</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>Full</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>c:\eco2\debug_2016\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn>
<DebugSymbols>true</DebugSymbols>
<PlatformTarget>x86</PlatformTarget>
<WarningsAsErrors>
</WarningsAsErrors>
<DefineConstants>MDI=true</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="FarPoint.CalcEngine, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.Excel, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.PDF, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.PluginCalendar.WinForms, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.Win, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.Win.Chart, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457">
<Private>True</Private>
</Reference>
<Reference Include="FarPoint.Win.Spread, Version=5.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL">
<Private>True</Private>
</Reference>
<Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Interop.Excel.dll</HintPath>
</Reference>
<Reference Include="Interop.VBIDE, Version=5.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Interop.VBIDE.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="Microsoft.ReportViewer.WinForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Import Include="ArinNet" />
<Import Include="CEnergy" />
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="ApplicationEvents.vb" />
<Compile Include="Calculator\Result\C1차소요량.vb" />
<Compile Include="Calculator\Result\CCo2발생량.vb" />
<Compile Include="Calculator\Result\C범용.vb" />
<Compile Include="Calculator\Result\CResult.vb" />
<Compile Include="Calculator\CShared.vb" />
<Compile Include="Calculator\Result\C사용면적.vb" />
<Compile Include="Calculator\Result\CZones.vb" />
<Compile Include="Calculator\Result\C생산에너지.vb" />
<Compile Include="Calculator\Result\C에너지소요량.vb" />
<Compile Include="Calculator\Result\C에너지분석.vb" />
<Compile Include="Calculator\Result\C에너지요구량.vb" />
<Compile Include="Calculator\CSummary.vb" />
<Compile Include="Calculator\Result\C최대냉난방부하.vb" />
<Compile Include="DataSet\Calculator_ALT\CZone_ALT.vb" />
<Compile Include="DataSet\DS.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DS.xsd</DependentUpon>
</Compile>
<Compile Include="DataSet\DS.vb">
<DependentUpon>DS.xsd</DependentUpon>
</Compile>
<Compile Include="DataSet\DS2.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DS2.xsd</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_import.Designer.vb">
<DependentUpon>Frm_import.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_import.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\fSelectWeatherGroup.Designer.vb">
<DependentUpon>fSelectWeatherGroup.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\fSelectWeatherGroup.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\fSelectArea.Designer.vb">
<DependentUpon>fSelectArea.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\fSelectArea.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\frm_monuse.Designer.vb">
<DependentUpon>frm_monuse.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\frm_monuse.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Frm_Export.Designer.vb">
<DependentUpon>Frm_Export.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Frm_Export.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Frm_Upload.Designer.vb">
<DependentUpon>Frm_Upload.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Frm_Upload.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Report_설계개선.Designer.vb">
<DependentUpon>Report_설계개선.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Report_설계개선.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Frm_History.Designer.vb">
<DependentUpon>Frm_History.vb</DependentUpon>
</Compile>
<Compile Include="Frm_History.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module\CMenu.vb" />
<Compile Include="UserControls\YkCtl.Designer.vb">
<DependentUpon>YkCtl.vb</DependentUpon>
</Compile>
<Compile Include="UserControls\YkCtl.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_DisplayGubun.Designer.vb">
<DependentUpon>Frm_DisplayGubun.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_DisplayGubun.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_Filter.Designer.vb">
<DependentUpon>Frm_Filter.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Filter.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_Work.Designer.vb">
<DependentUpon>Frm_Work.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Work.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Report_Total.Designer.vb">
<DependentUpon>Report_Total.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Report_Total.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_ResultMon.Designer.vb">
<DependentUpon>Frm_v20091231_ResultMon.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_ResultMon.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_ResultMax.Designer.vb">
<DependentUpon>Frm_v20091231_ResultMax.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_ResultMax.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_buha.Designer.vb">
<DependentUpon>Frm_v20091231_buha.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_buha.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_RepResult_Admin.Designer.vb">
<DependentUpon>Frm_RepResult_Admin.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_RepResult_Admin.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Report_그래프.Designer.vb">
<DependentUpon>Report_그래프.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Report_그래프.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_Desc.Designer.vb">
<DependentUpon>Frm_Desc.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_Desc.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Report_Graph_auth.Designer.vb">
<DependentUpon>Report_Graph_auth.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Report_Graph_auth.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_nBunbae.Designer.vb">
<DependentUpon>Frm_nBunbae.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_nBunbae.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_Warning.Designer.vb">
<DependentUpon>Frm_Warning.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Warning.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_Calc.Designer.vb">
<DependentUpon>Frm_Calc.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Calc.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_YK.Designer.vb">
<DependentUpon>Frm_YK.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_YK.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Report\Report_pyonga.Designer.vb">
<DependentUpon>Report_pyonga.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Report\Report_pyonga.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module\CLang.vb" />
<Compile Include="DataSet\DSR.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DSR.xsd</DependentUpon>
</Compile>
<Compile Include="DataSet\DSR.vb">
<DependentUpon>DSR.xsd</DependentUpon>
</Compile>
<Compile Include="Calculator\CCooling.vb" />
<Compile Include="Calculator\CHeating.vb" />
<Compile Include="Calculator\CAirHandling.vb" />
<Compile Include="Calculator\Calculator.vb" />
<Compile Include="Module\Enum.vb" />
<Compile Include="Calculator\CRenewable.vb" />
<Compile Include="Calculator\CZone.vb" />
<Compile Include="Forms_Basic\Frm_Intro.Designer.vb">
<DependentUpon>Frm_Intro.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Intro.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module\CForm.Designer.vb">
<DependentUpon>CForm.vb</DependentUpon>
</Compile>
<Compile Include="Module\CForm.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module\Pub.vb" />
<Compile Include="MdiMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="MdiMain.Designer.vb">
<DependentUpon>MdiMain.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_profile.Designer.vb">
<DependentUpon>Frm_v20091231_profile.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_profile.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_Zone.Designer.vb">
<DependentUpon>Frm_Zone.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_Zone.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_kongjo.Designer.vb">
<DependentUpon>Frm_kongjo.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_kongjo.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_kongkub.Designer.vb">
<DependentUpon>Frm_kongkub.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_kongkub.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_Nanbang.Designer.vb">
<DependentUpon>Frm_Nanbang.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_Nanbang.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_NaengBang.Designer.vb">
<DependentUpon>Frm_NaengBang.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_NaengBang.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_Bunbae.Designer.vb">
<DependentUpon>Frm_Bunbae.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_Bunbae.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_New.Designer.vb">
<DependentUpon>Frm_New.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_New.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_Myoun.Designer.vb">
<DependentUpon>Frm_v20091231_Myoun.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_Myoun.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_Common.Designer.vb">
<DependentUpon>Frm_Common.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_Common.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_Weather.Designer.vb">
<DependentUpon>Frm_v20091231_Weather.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Input\Frm_v20091231_Weather.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_About.Designer.vb">
<DependentUpon>Frm_About.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_About.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="UserControls\ArinDv.Designer.vb">
<DependentUpon>ArinDv.vb</DependentUpon>
</Compile>
<Compile Include="UserControls\ArinDv.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="UserControls\MyCmb.Designer.vb">
<DependentUpon>MyCmb.vb</DependentUpon>
</Compile>
<Compile Include="UserControls\MyCmb.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="UserControls\MyTb.Designer.vb">
<DependentUpon>MyTb.vb</DependentUpon>
</Compile>
<Compile Include="UserControls\MyTb.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms_Basic\Frm_FileInfo.Designer.vb">
<DependentUpon>Frm_FileInfo.vb</DependentUpon>
</Compile>
<Compile Include="Forms_Basic\Frm_FileInfo.vb">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Forms_Basic\Frm_DisplayGubun.resx">
<DependentUpon>Frm_DisplayGubun.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Filter.resx">
<DependentUpon>Frm_Filter.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_import.resx">
<DependentUpon>Frm_import.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Work.resx">
<DependentUpon>Frm_Work.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\fSelectWeatherGroup.resx">
<DependentUpon>fSelectWeatherGroup.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\fSelectArea.resx">
<DependentUpon>fSelectArea.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\frm_monuse.resx">
<DependentUpon>frm_monuse.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Frm_Export.resx">
<DependentUpon>Frm_Export.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Frm_Upload.resx">
<DependentUpon>Frm_Upload.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\평가서.rdlc" />
<EmbeddedResource Include="Forms_Report\Report_Total.resx">
<SubType>Designer</SubType>
<DependentUpon>Report_Total.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_ResultMon.resx">
<DependentUpon>Frm_v20091231_ResultMon.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_ResultMax.resx">
<DependentUpon>Frm_v20091231_ResultMax.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_buha.resx">
<DependentUpon>Frm_v20091231_buha.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_RepResult_Admin.resx">
<DependentUpon>Frm_RepResult_Admin.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_그래프.resx">
<DependentUpon>Report_그래프.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\그래프.rdlc" />
<EmbeddedResource Include="Forms_Input\Frm_Desc.resx">
<DependentUpon>Frm_Desc.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_total.rdlc" />
<EmbeddedResource Include="Forms_Basic\Frm_Intro.resx">
<SubType>Designer</SubType>
<DependentUpon>Frm_Intro.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_Graph_auth.resx">
<DependentUpon>Report_Graph_auth.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_Graph_auth.rdlc" />
<EmbeddedResource Include="Forms_Input\Frm_nBunbae.resx">
<DependentUpon>Frm_nBunbae.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Warning.resx">
<DependentUpon>Frm_Warning.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Calc.resx">
<DependentUpon>Frm_Calc.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_YK.resx">
<DependentUpon>Frm_YK.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_pyonga.resx">
<DependentUpon>Report_pyonga.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_설계개선.resx">
<DependentUpon>Report_설계개선.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Report\Report_설계개선.rdlc" />
<EmbeddedResource Include="Frm_History.resx">
<DependentUpon>Frm_History.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Module\CForm.resx">
<DependentUpon>CForm.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="MdiMain.resx">
<SubType>Designer</SubType>
<DependentUpon>MdiMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_profile.resx">
<DependentUpon>Frm_v20091231_profile.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_Zone.resx">
<DependentUpon>Frm_Zone.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_kongjo.resx">
<DependentUpon>Frm_kongjo.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_kongkub.resx">
<DependentUpon>Frm_kongkub.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_Nanbang.resx">
<DependentUpon>Frm_Nanbang.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_NaengBang.resx">
<DependentUpon>Frm_NaengBang.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_Bunbae.resx">
<DependentUpon>Frm_Bunbae.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_New.resx">
<DependentUpon>Frm_New.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_Myoun.resx">
<DependentUpon>Frm_v20091231_Myoun.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_Common.resx">
<DependentUpon>Frm_Common.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Input\Frm_v20091231_Weather.resx">
<DependentUpon>Frm_v20091231_Weather.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_About.resx">
<SubType>Designer</SubType>
<DependentUpon>Frm_About.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms_Basic\Frm_FileInfo.resx">
<DependentUpon>Frm_FileInfo.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="DataSet\DS.xsc">
<DependentUpon>DS.xsd</DependentUpon>
</None>
<None Include="DataSet\DS.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DS.Designer.vb</LastGenOutput>
</None>
<None Include="DataSet\DS.xss">
<DependentUpon>DS.xsd</DependentUpon>
</None>
<None Include="DataSet\DS2.xsc">
<DependentUpon>DS2.xsd</DependentUpon>
</None>
<None Include="DataSet\DS2.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DS2.Designer.vb</LastGenOutput>
</None>
<None Include="DataSet\DS2.xss">
<DependentUpon>DS2.xsd</DependentUpon>
</None>
<None Include="login.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="Resources\user_24.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ref_24.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\user_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\group_24.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\adfav_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\addbk_24.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\addbk_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\wiz_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\paste_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\del_16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\edit_16.png" />
</ItemGroup>
<ItemGroup>
<Content Include="002.ico" />
<Content Include="Template\Sample.tpl">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<BaseApplicationManifest Include="My Project\app.manifest" />
<None Include="DataSet\DSR.xsc">
<DependentUpon>DSR.xsd</DependentUpon>
</None>
<None Include="DataSet\DSR.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DSR.Designer.vb</LastGenOutput>
</None>
<None Include="DataSet\DSR.xss">
<DependentUpon>DSR.xsd</DependentUpon>
</None>
<None Include="Resources\save_16.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0%28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0%28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="001_B.ico" />
<Content Include="9-8.ico" />
<None Include="Resources\폼배경.jpg" />
<None Include="Resources\건물개요.jpg" />
<None Include="ECO2.png" />
<Content Include="icon5.ico" />
<None Include="Resources\select_by_difference.png" />
<None Include="Resources\page_copy.png" />
<Content Include="단축키.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="ReadMe.txt" />
<None Include="Calculator\CD.cd" />
<None Include="Calculator\CD_RESULT.cd" />
<None Include="Resources\default.png" />
<None Include="Resources\apps_32.png" />
<None Include="Resources\new_32.png" />
<None Include="Resources\remov_32.png" />
<None Include="Resources\cancl_32.png" />
<Content Include="Template\ReadMe.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="UpdateList.txt" />
<Content Include="Forms_Input\ReadMe.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="upload.xlsx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="방위2.png" />
<None Include="방위.png" />
<None Include="방위.jpg" />
</ItemGroup>
<ItemGroup>
<PublishFile Include="ADODB">
<Visible>False</Visible>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="Microsoft.ReportViewer.ProcessingObjectModel">
<Visible>False</Visible>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ArinLogin\ArinLogin.vbproj">
<Project>{8B6E4D7F-B484-471A-A419-2FE3451D26A3}</Project>
<Name>ArinLogin</Name>
</ProjectReference>
<ProjectReference Include="..\ArinLog\ArinLog.vbproj">
<Project>{e9e16a98-8f8d-4848-a27e-4571c184fb1a}</Project>
<Name>ArinLog</Name>
</ProjectReference>
<ProjectReference Include="..\ArinNet\ArinNet.vbproj">
<Project>{F0FB4304-F995-446A-99B7-0896A5E07A72}</Project>
<Name>ArinNet</Name>
</ProjectReference>
<ProjectReference Include="..\CEnergy\ArinClassV2\CEnergy.vbproj">
<Project>{2AF28E8C-84F1-4D56-9592-3B0EBDE8DF14}</Project>
<Name>CEnergy</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -322,6 +322,7 @@ Partial Class Frm_V20091231_Weather
Me.dv = New CEnergy.arindv()
Me.Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.건물위치DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.TabPage4 = New System.Windows.Forms.TabPage()
Label39 = New System.Windows.Forms.Label()
Label247 = New System.Windows.Forms.Label()
Label248 = New System.Windows.Forms.Label()
@@ -1430,6 +1431,7 @@ Partial Class Frm_V20091231_Weather
Me.TabControl3.Controls.Add(Me.TabPage10)
Me.TabControl3.Controls.Add(Me.TabPage2)
Me.TabControl3.Controls.Add(Me.TabPage3)
Me.TabControl3.Controls.Add(Me.TabPage4)
Me.TabControl3.Dock = System.Windows.Forms.DockStyle.Fill
Me.TabControl3.Location = New System.Drawing.Point(193, 0)
Me.TabControl3.Name = "TabControl3"
@@ -1496,7 +1498,7 @@ Partial Class Frm_V20091231_Weather
Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 102.0!))
Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 102.0!))
Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 96.0!))
Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 147.0!))
Me.TableLayoutPanel7.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 148.0!))
Me.TableLayoutPanel7.Controls.Add(Me.tb_w12, 3, 5)
Me.TableLayoutPanel7.Controls.Add(Label64, 2, 5)
Me.TableLayoutPanel7.Controls.Add(Label77, 2, 4)
@@ -1530,7 +1532,7 @@ Partial Class Frm_V20091231_Weather
Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel7.RowStyles.Add(New System.Windows.Forms.RowStyle())
Me.TableLayoutPanel7.Size = New System.Drawing.Size(452, 169)
Me.TableLayoutPanel7.Size = New System.Drawing.Size(453, 169)
Me.TableLayoutPanel7.TabIndex = 122
'
'tb_w12
@@ -3856,6 +3858,15 @@ Partial Class Frm_V20091231_Weather
Me.건물위치DataGridViewTextBoxColumn.Name = "건물위치DataGridViewTextBoxColumn"
Me.건물위치DataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
'
'TabPage4
'
Me.TabPage4.Location = New System.Drawing.Point(4, 22)
Me.TabPage4.Name = "TabPage4"
Me.TabPage4.Size = New System.Drawing.Size(935, 507)
Me.TabPage4.TabIndex = 7
Me.TabPage4.Text = "풍속"
Me.TabPage4.UseVisualStyleBackColor = True
'
'Frm_V20091231_Weather
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 12.0!)
@@ -4156,4 +4167,5 @@ Partial Class Frm_V20091231_Weather
Friend WithEvents Label13 As Label
Friend WithEvents ToolStripButton13 As ToolStripButton
Friend WithEvents ToolStripButton8 As ToolStripButton
Friend WithEvents TabPage4 As System.Windows.Forms.TabPage
End Class

View File

@@ -412,48 +412,18 @@
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="bsWGDep3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1397, 17</value>
</metadata>
<metadata name="area2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dvc_area2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="area3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsWGDep2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 56</value>
</metadata>
<metadata name="bsWGDep1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>131, 56</value>
</metadata>
<metadata name="bs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>91, 17</value>
</metadata>
<metadata name="DS1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="DS1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="code.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsw_ilsa.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>155, 17</value>
</metadata>
<metadata name="code.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsw_ilsa.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>155, 17</value>
</metadata>
<metadata name="BindingNavigator1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>655, 17</value>
</metadata>
<metadata name="BindingNavigator1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>655, 17</value>
</metadata>
@@ -532,15 +502,6 @@
<metadata name="bsw_temp.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>252, 17</value>
</metadata>
<metadata name="DataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsw_temp.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>252, 17</value>
</metadata>
<metadata name="BindingNavigator4.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>811, 17</value>
</metadata>
<metadata name="BindingNavigator4.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>811, 17</value>
</metadata>
@@ -619,15 +580,6 @@
<metadata name="bsw_supdo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>360, 17</value>
</metadata>
<metadata name="DataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsw_supdo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>360, 17</value>
</metadata>
<metadata name="BindingNavigator5.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>967, 17</value>
</metadata>
<metadata name="BindingNavigator5.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>967, 17</value>
</metadata>
@@ -706,15 +658,6 @@
<metadata name="bsw_cha.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>473, 17</value>
</metadata>
<metadata name="DataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsw_cha.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>473, 17</value>
</metadata>
<metadata name="BindingNavigator2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1241, 17</value>
</metadata>
<metadata name="BindingNavigator2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1241, 17</value>
</metadata>
@@ -787,15 +730,30 @@
P0ilegWKIwMchCbSyQAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="bsWGDep3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1397, 17</value>
</metadata>
<metadata name="area2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dvc_area2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="area3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="bsWGDep2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 56</value>
</metadata>
<metadata name="bsWGDep1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>131, 56</value>
</metadata>
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1123, 17</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>83</value>
</metadata>

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' 지정되도록 할 수 있습니다.
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.2017.0122.0007")>
<Assembly: AssemblyFileVersion("1.2017.0122.0007")>
<Assembly: AssemblyVersion("1.2017.0122.0009")>
<Assembly: AssemblyFileVersion("1.2017.0122.0009")>

View File

@@ -2481,7 +2481,7 @@
<row><td>Custom</td><td>Express</td><td>&lt;ISProjectDataFolder&gt;</td><td>Default</td><td>2</td><td>1033</td><td>0</td><td>2</td><td>Intel</td><td/><td>1033</td><td>0</td><td>100</td><td>0</td><td>1024</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>DVD-10</td><td>Express</td><td>&lt;ISProjectDataFolder&gt;</td><td>Default</td><td>3</td><td>1033</td><td>0</td><td>2</td><td>Intel</td><td/><td>1033</td><td>0</td><td>8.75</td><td>1</td><td>2048</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>DVD-18</td><td>Express</td><td>&lt;ISProjectDataFolder&gt;</td><td>Default</td><td>3</td><td>1033</td><td>0</td><td>2</td><td>Intel</td><td/><td>1033</td><td>0</td><td>15.83</td><td>1</td><td>2048</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>DVD-5</td><td>Express</td><td>C:\eco2\Setup_2020_200825_Weather66_r7</td><td>Default</td><td>3</td><td>1042</td><td>0</td><td>1</td><td>Intel</td><td/><td>1042</td><td>0</td><td>4.38</td><td>1</td><td>2048</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>DVD-5</td><td>Express</td><td>C:\eco2\Setup_ECO2_2020_20170122_9</td><td>Default</td><td>3</td><td>1042</td><td>0</td><td>1</td><td>Intel</td><td/><td>1042</td><td>0</td><td>4.38</td><td>1</td><td>2048</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>DVD-9</td><td>Express</td><td>&lt;ISProjectDataFolder&gt;</td><td>Default</td><td>3</td><td>1033</td><td>0</td><td>2</td><td>Intel</td><td/><td>1033</td><td>0</td><td>7.95</td><td>1</td><td>2048</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>75805</td><td/><td/><td/><td>3</td></row>
<row><td>SingleImage</td><td>Express</td><td>C:\eco2\Setup_2016_191020_guest_patch</td><td>PackageName</td><td>1</td><td>1042</td><td>0</td><td>1</td><td>Intel</td><td/><td>1042</td><td>0</td><td>0</td><td>0</td><td>0</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>108701</td><td/><td/><td/><td>3</td></row>
<row><td>WebDeployment</td><td>Express</td><td>&lt;ISProjectDataFolder&gt;</td><td>PackageName</td><td>4</td><td>1033</td><td>2</td><td>1</td><td>Intel</td><td/><td>1033</td><td>0</td><td>0</td><td>0</td><td>0</td><td/><td>0</td><td/><td>MediaLocation</td><td/><td>http://</td><td/><td/><td/><td/><td>124941</td><td/><td/><td/><td>3</td></row>