initial commit

This commit is contained in:
raytrace
2018-12-09 20:18:51 +09:00
commit 9aef53ee89
477 changed files with 2867797 additions and 0 deletions

View File

@@ -0,0 +1,866 @@
Public Class CAirHandlingOD
Dim T As String = "공조기기"
''' <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 DSET1.tbl_zone.Select("code<>'0'", "code")
Dim dr최대냉난방부하 As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & Dr존.code & "'")(0), DSR.최대냉난방부하Row)
If Dr존.냉난방공조 = "냉방" Or Dr존.냉난방공조 = "냉난방" Then
A_B = TOSG(T, Dr존.면적) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1)
Dim dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
V_A = TOSG(T, dr프로필.최소도입외기량) * A_B ' Worksheets("설정조건").Range("최소도입외기량1").Offset(0, i_count_profile) * A_B
For Each dr공조처리 As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("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
Delta_h_WRG = 0 '(3.2.5-54) 열 회수기 없음
theta_ZUL_wi = TOSG(T, 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(T, 1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도요구만 우선 적용
Q_dot_h_max = TOSG(T, dr최대냉난방부하.최대난방기기부하) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1)
'--------------------------------------------------------------------------------------------------2010.02.22 수정
If (TOSG(T, dr공조처리.설정치난방) - theta_i_h) > 0 Then
V_dot_mech_m = 1000 * Q_dot_h_max / (c_p_Lrho_L * (TOSG(T, dr공조처리.설정치난방) - theta_i_h))
Else
V_dot_mech_m = 0
End If
'--------------------------------------------------------------------------------------------------2010.02.22 수정
V_dot_star = V_dot_mech_m
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) 증기가습 없음 - 열교환방식으로 수정 추후 검토
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(T, 1.01 * theta_ZUL_wi + 0.008 * (2501 + 1.86 * theta_ZUL_wi)) '(3.2.5-48) 편차가 없는 습도 요구
Delta_h_WRG = 0 '(3.2.5-63) 열 회수기 없음
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(T, dr공조처리.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1)
theta_ZUL_so = theta_c_mech_min '(도표 3.3)
ps_theta_ZUL_so = TOSG(T, Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506))) '(3.2.5-37) 0.01C<=theta<=80C
x_ZUL_so = TOSG(T, 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(T, 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(T, 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
Delta_h_WRG = 0 '(3.2.5-59) 열 회수기 없음
Q_dot_c_max = TOSG(T, dr최대냉난방부하.최대냉방기기부하) ' Worksheets("0").Range("최대냉방부하1").Offset(0, i_count_zone - 1)
'--------------------------------------------------------------------------------------------------2010.02.22 수정
If (theta_i_c - TOSG(T, dr공조처리.설정치냉방)) > 0 Then
V_dot_star = 1000 * Q_dot_c_max / (c_p_Lrho_L * (theta_i_c - TOSG(T, 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_temp_odRow = CType(DSET1.weather_temp_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_temp_odRow)
Dim Drow평균습도 As DS.weather_supdo_odRow = CType(DSET1.weather_supdo_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(i_count_month, "0000") & "'")(0), DS.weather_supdo_odRow)
Dim Mon As String = "M" & Format(i_count_month, "00")
Dim sum_kongjo As Decimal = 0
Dim sum_baeki As Decimal = 0
Dim ea_kongjo As Decimal = 0
Dim ea_baeki As Decimal = 0
For Each Dr공조 As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("code <> '0'", "code")
If Dr공조.급기풍량 <> "" AndAlso Dr공조.급기풍량 <> "0" Then
sum_kongjo += TOSG(T, Dr공조.급기풍량) * TOSG(T, Dr공조.대수)
End If
If Dr공조.배기풍량 <> "" AndAlso Dr공조.배기풍량 <> "0" Then
sum_baeki += TOSG(T, Dr공조.배기풍량) * TOSG(T, Dr공조.대수)
End If
Next
For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code<>'0'", "code")
Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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존.냉난방공조 = "냉난방" Or Dr존.냉난방공조 = "환기" Then
'//존의 프로필과 일치하는 프로필검색후 적용
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
t_V_mech_m = TOSG(T, Dr프로필.운전시간난방) ' Worksheets("설정조건").Range("사용시작시간1").Offset(5, i_count_profile)
V_dot_A = TOSG(T, 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 추가
Q_V_E_ZUL_m = 0
Q_V_E_ABL_m = 0
For Each Dr공조 As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("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
If sum_kongjo = 0 Then
ea_kongjo = 0
Else
ea_kongjo = TOSG(T, Dr공조.급기풍량) * TOSG(T, Dr공조.대수) / sum_kongjo
End If
If sum_baeki = 0 Then
ea_baeki = 0
Else
ea_baeki = TOSG(T, Dr공조.배기풍량) * TOSG(T, Dr공조.대수) / sum_baeki
End If
Q_vh_b = 0
Q_vc_b = 0
Q_vm_b = 0
If Dr공조.급기팬동력 <> "" AndAlso Dr공조.급기팬동력 <> "0" AndAlso Dr공조.급기팬동력 <> "0." Then
Try
eta_ZUL = Math.Round(TOSG(T, Dr공조.급기풍량) * TOSG(T, Dr공조.대수) * (TOSG(T, Dr공조.총압력손실급기팬) / 9.8) / (TOSG(T, Dr공조.급기팬동력) * TOSG(T, Dr공조.대수) * 102 * 3600), 3)
Catch ex As Exception
eta_ZUL = 0
End Try
End If
If Dr공조.배기팬동력 <> "" AndAlso Dr공조.배기팬동력 <> "0" AndAlso Dr공조.배기팬동력 <> "0." Then
Try
Dim a As Double = TOSG(T, Dr공조.배기풍량) * TOSG(T, Dr공조.대수) * (TOSG(T, Dr공조.총압력손실배기팬) / 9.8)
Dim b As Double = (TOSG(T, Dr공조.배기팬동력) * TOSG(T, Dr공조.대수) * 102 * 3600)
eta_ABL = Math.Round(a / b, 3)
Catch ex As Exception
eta_ABL = 0
End Try
End If
Delta_p_star_ZUL = TOSG(T, Dr공조.총압력손실급기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(0, i_count_AHU - 1)
Delta_p_star_ABL = TOSG(T, Dr공조.총압력손실배기팬) ' Worksheets("공조처리시스템").Range("총압력상승1").Offset(1, i_count_AHU - 1)
theta_V_mech_m = TOSG(T, Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1)
theta_h_mech_m = TOSG(T, Dr공조.설정치난방) 'Worksheets("공조처리시스템").Range("공조방식1").Offset(1, i_count_AHU - 1)
theta_c_mech_m = TOSG(T, Dr공조.설정치냉방) ' Worksheets("공조처리시스템").Range("공조방식1").Offset(2, i_count_AHU - 1)
A_B = TOSG(T, 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(T, 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(T, 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(T, psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506)))
x_AUL_j = TOSG(T, 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(T, 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(T, 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(T, psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506)))
x_AUL_j = TOSG(T, 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(T, 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(T, 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(T, psi_AUL_j * Math.Exp(23.621 - 4065 / (theta_AUL_j + 236.2506)))
x_AUL_j = TOSG(T, 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
If (t_V_mech_m = 0) Then
theta_AUL = 0
x_AUL = 0
Else
theta_AUL = theta_AUL / t_V_mech_m
x_AUL = x_AUL / t_V_mech_m
End If
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(T, Result1o.최대부하.Item(Dr존.code).최대냉방실내부하) * 1000 * ea_kongjo / (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 * ea_kongjo Then V_dot_mech_max = V_dot_A * A_B * ea_kongjo
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(T, Drow분석(0).냉방요구량공조) * ea_kongjo - (t_V_mech_m * d_V_mech_m * c_p_Lrho_L * (theta_AUL - theta_c_mech_m) * V_dot_A * A_B) * ea_kongjo / 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 * ea_kongjo) / 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 * ea_kongjo Then V_dot_mech_m = V_dot_A * A_B * ea_kongjo
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 V_dot_mech_m = 0 Then
u = 1 '//??
Else
u = (V_dot_mech_m - V_dot_A * A_B * ea_kongjo) / V_dot_mech_m
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공조.열회수율) / 100 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1) '=====================2010.04.14 수정
Phi_c = TOSG(Dr공조.열회수율_냉방) / 100 '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(T, Drow분석(0).난방요구량공조) > 0 AndAlso ea_kongjo > 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(T, Drow분석(0).난방요구량공조) * ea_kongjo - (theta_i_h_soll - theta_AUL) * c_p_L * rho_L * d_V_mech_m * t_V_mech_m * V_dot_A * A_B * ea_kongjo / 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 * ea_kongjo 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
'//h_B = c_p_L * theta_ZUL_wi + x_ZUL_wi * (r_0 + c_p_L * theta_ZUL_wi)
'//가습기유형은 = 가습불가로 한다 170827
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 + 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 수정
Case Else
'"열회수불가" '열회수불가"
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)
End Select
Q_vh_b = Q_VE_ZU
Q_vm_b = 0
'//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)
'Q_vh_b = Q_VE_B
Else
Q_vh_b = 0
Q_vm_b = 0
End If
'------------------------------------------------------------------------------------------------------------------------------------------
If TOSG(T, Drow분석(0).냉방요구량공조) > 0 AndAlso ea_kongjo > 0 Then ' Sheets("" & i_count_month & "").Cells(11, 7 + i_count_zone) > 0 Then
Q_c_b = TOSG(T, 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 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
Q_c_b = Q_c_b * ea_kongjo
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
Q_c_b = Q_c_b * ea_kongjo
End If
If Q_c_b < 0 Then Q_c_b = 0
If (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) = 0 Then
theta_ZUL_so = 0
Else
theta_ZUL_so = theta_i_c - 1000 * Q_c_b * ea_kongjo / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m) 'd_Nutz=d_V_mech_m 으로 적용
End If
Case "변풍량" '변풍량"
If V_dot_mech_m > V_dot_A * A_B * ea_kongjo 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 * ea_kongjo / (V_dot_mech_m * c_p_Lrho_L * t_V_mech_m * d_V_mech_m)
End If
Q_c_b = Q_c_b * ea_kongjo
End Select
p_S_theta_ZUL_so = TOSG(T, Math.Exp(23.621 - 4065 / (theta_ZUL_so + 236.2506)))
p_95_theta_ZUL_so = TOSG(T, 0.95 * p_S_theta_ZUL_so)
x_95_ZUL_so = TOSG(T, 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 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 * ea_kongjo Then V_dot_mech_m = V_dot_A * A_B * ea_kongjo '===================2011.07.11 추가 ea_kongjo를 추가함
Else
If 0.5911 / (100000 / p_95_theta_ZUL_so - 0.95) > (1 - u) * x_AUL + u * x_ABL_so Then
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
Else
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
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(T, 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(T, 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) 변풍량 시간, 용도로 추후검토
Else
P_V_ZUL_m = 0
End If
If eta_ABL <> 0 Then
P_V_ABL_m = TOSG(T, 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) 변풍량 시간, 용도로 추후검
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
Case "환기용"
If eta_ZUL <> 0 Then
P_V_ZUL_m = V_dot_A * A_B * ea_kongjo * 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_A * A_B * ea_baeki * 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) 정풍량
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
''===========================================================2017.12.25 공조부분 추가
'==========================================================================2010.02.04 추가부분 시작
If Dr존.냉난방공조 = "환기" OrElse (Dr존.냉난방공조 = "난방" AndAlso Dr존.외기부하처리여부 = "") Then '//환기
Dim DR프로필() As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'"), DS.tbl_profile_odRow())
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(DSET1.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).열회수율) / 100 'Worksheets("공조처리시스템").Range("열교환기1").Offset(1, i_count_AHU - 1)
Phi_c = TOSG(DR공조(0).열회수율_냉방) / 100 '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
Result1o.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
Result1o.E분석(i_count_month).환기에너지요구량(Dr존.code) = 0
End If
'==========================================================================2010.02.04 추가부분 끝
''=======================================2017.12.25 공조부분 추가 끝
End If
Next
End Sub
End Class

View File

@@ -0,0 +1,182 @@
''' <remarks>공용으로 사용되는 값을을 이곳에서 설정한다</remarks>
Public Class CSharedOD
Dim T As String = "공용코드"
Public ReadOnly Property 기상데이터() As DS.tbl_weather_odRow
Get
If DSET1.tbl_Desc.Rows.Count = 0 Then
MsgBox("건물개요데이터가 없습니다.", MsgBoxStyle.Critical, "오류")
Return Nothing
Else
Dim 지역코드 As String = DSET1.tbl_Desc.Rows(0)("buildarea").ToString
If 지역코드 = "" Then
MsgBox("지역코드가 설정되어있지 않습니다", MsgBoxStyle.Critical, "확인")
Return Nothing
End If
If 지역코드 = "0" Then
Return Nothing
End If
'//설정된 지역값은 weather_group 의 정보이다. 이 값에서 area 를 취한것이 실제 계산에 적용할 값이다.
If DSET1.weather_group.Select("code='" + 지역코드 + "'").Length < 1 Then
MsgBox("지역코드({0}) 값이 존재하지 않는 코드입니다", MsgBoxStyle.Critical, "확인")
Return Nothing
End If
Dim 적용지역명 As String = DSET1.weather_group.Select("code='" + 지역코드 + "'")(0)("area").ToString()
If String.IsNullOrEmpty(적용지역명) Then
MsgBox("현재 선택된 지역에는 기상정보가 설정되지 않았습니다" + vbCrLf +
"상위/하위 지역 을 다시 확인하시기 바랍니다", MsgBoxStyle.Critical, "확인")
Return Nothing
End If
Dim 지역데이터() As DataRow = DSET1.tbl_weather_od.Select("건물위치 ='" & 적용지역명 & "'")
If 지역데이터.GetUpperBound(0) = -1 Then
MsgBox("건물개요의 지역정보(" + 적용지역명 + ")를 찾을 수 없습니다." + vbCrLf + "지역을 다시 선택하세요", MsgBoxStyle.Critical, "오류")
Return Nothing
Else
Return 지역데이터(0)
End If
End If
End Get
End Property
''' <summary>
''' 오류가있는가?
''' </summary>
Public IsError As Boolean = False
''' <summary>
''' 주6일근무제로 변경
''' </summary>
''' <remarks></remarks>
Public d_full() As Decimal
''' <summary>
''' 외기온도값
''' </summary>
Public theta_e(12) As Decimal
''' <summary>
''' 평균일사값이 들어있다.
''' </summary>
Public I_s(8, 12) As Decimal
''' <summary>
''' 외기온도 난방기(최대)
''' </summary>
Public theta_e_min As Decimal
''' <summary>
''' 외기온도 냉방기(최대)
''' </summary>
Public theta_e_max As Decimal
Public F_sh_gl(7, 11) As Decimal '//2010.02.26 차양감소계수
''' <summary>
''' 클래스 생성자
''' </summary>
Public Sub New()
'//지정된 존에 해당하는 지역정보를 가지고옴(현재기상정보가 존에 할당되어있어서 그렇다)
'//1번째 존에 지역이 설정된걸로 간주한다
If 기상데이터 Is Nothing Then Return
'Dr신재생 = CType(DSET1.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} ' 우선 휴일없는 것으로 설정
'//최소외기온도 설정
If Not 기상데이터.Is난방기Null() Then
theta_e_min = TOSG(T, 기상데이터.난방기)
Else
MsgBox("최소외기온도 확인불가")
theta_e_min = TOSG(T, 기상데이터.난방기)
End If
If Not 기상데이터.Is냉방기Null() Then
theta_e_max = TOSG(T, 기상데이터.냉방기)
Else
MsgBox("최대외기온도 확인불가")
theta_e_max = 0
End If
'//지역의 외기온도값
theta_e(0) = 0
theta_e(1) = TOSG(T, 기상데이터.m01)
theta_e(2) = TOSG(T, 기상데이터.m02)
theta_e(3) = TOSG(T, 기상데이터.m03)
theta_e(4) = TOSG(T, 기상데이터.m04)
theta_e(5) = TOSG(T, 기상데이터.m05)
theta_e(6) = TOSG(T, 기상데이터.m06)
theta_e(7) = TOSG(T, 기상데이터.m07)
theta_e(8) = TOSG(T, 기상데이터.m08)
theta_e(9) = TOSG(T, 기상데이터.m09)
theta_e(10) = TOSG(T, 기상데이터.m10)
theta_e(11) = TOSG(T, 기상데이터.m11)
theta_e(12) = TOSG(T, 기상데이터.m12)
'//월별평균일사(기상데이터) 9개를 가져온다. 그중 최대부하값만 취한다.
'//현재 기상ROW의 CODE 와같은 Weather ilsa 데이터를 가져온다.
'//엑셀의 0 to 8 은 9개의 평균일사 데이터를 의미한다
Dim DRow일사() As DS.weather_ilsa_odRow = CType(DSET1.weather_ilsa_od.Select("pcode='" & 기상데이터.code & "'", "code"), DS.weather_ilsa_odRow())
If DRow일사.GetUpperBound(0) = -1 Then
MsgBox("월별평균일사데이터중 " & 기상데이터.code & "에 해당되는 지역이 없습니다", MsgBoxStyle.Critical, "CShared")
Me.IsError = True
Else
'ReDim I_s(DR일사.GetUpperBound(0), 12)
For i As Short = 0 To 8 'DRow일사.GetUpperBound(0) <- 이식을 사용하려했으나 45도용데이터떄문에 사용못함
Dim DR일사 As DS.weather_ilsa_odRow = DRow일사(i)
I_s(i, 0) = TOSG(T, DR일사.최대부하)
I_s(i, 1) = TOSG(T, DR일사.m01)
I_s(i, 2) = TOSG(T, DR일사.m02)
I_s(i, 3) = TOSG(T, DR일사.m03)
I_s(i, 4) = TOSG(T, DR일사.m04)
I_s(i, 5) = TOSG(T, DR일사.m05)
I_s(i, 6) = TOSG(T, DR일사.m06)
I_s(i, 7) = TOSG(T, DR일사.m07)
I_s(i, 8) = TOSG(T, DR일사.m08)
I_s(i, 9) = TOSG(T, DR일사.m09)
I_s(i, 10) = TOSG(T, DR일사.m10)
I_s(i, 11) = TOSG(T, DR일사.m11)
I_s(i, 12) = TOSG(T, DR일사.m12)
Next
End If
'=============================================================================2010.02.26 추가
Dim DRow차양() As DS.weather_cha_odRow = CType(DSET1.weather_cha_od.Select("pcode='" & 기상데이터.code & "'", "code"), DS.weather_cha_odRow())
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_cha_odRow = DRow차양(i)
F_sh_gl(i, 0) = TOSG(T, DR차양.m01)
F_sh_gl(i, 1) = TOSG(T, DR차양.m02)
F_sh_gl(i, 2) = TOSG(T, DR차양.m03)
F_sh_gl(i, 3) = TOSG(T, DR차양.m04)
F_sh_gl(i, 4) = TOSG(T, DR차양.m05)
F_sh_gl(i, 5) = TOSG(T, DR차양.m06)
F_sh_gl(i, 6) = TOSG(T, DR차양.m07)
F_sh_gl(i, 7) = TOSG(T, DR차양.m08)
F_sh_gl(i, 8) = TOSG(T, DR차양.m09)
F_sh_gl(i, 9) = TOSG(T, DR차양.m10)
F_sh_gl(i, 10) = TOSG(T, DR차양.m11)
F_sh_gl(i, 11) = TOSG(T, DR차양.m12)
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,438 @@
Public Class CalculatorOD
Dim T As String = "계산"
Public WithEvents Zone As CZoneOD '//존에클래스할당
Public WithEvents AirHandling As CAirHandlingOD '//존에클래스할당
Public WithEvents Cooling As CCoolingOD '//존에클래스할당
Public WithEvents Heating As CHeatingOD '//존에클래스할당
Public WithEvents Renewable As CRenewableOD '//존에클래스할당
Public WithEvents Summary As CSummaryOD
Public WithEvents Pub As CSharedOD
Public IsError As Boolean = False
Enum ECalc
All = 0
REq = 1
Use = 2
End Enum
Public Sub New(ByVal Version As String)
Me.IsError = False
Me.Zone = New CZoneOD '//존
Me.AirHandling = New CAirHandlingOD '//공기
Me.Cooling = New CCoolingOD
Me.Heating = New CHeatingOD
Me.Renewable = New CRenewableOD '//신재상
Me.Summary = New CSummaryOD '//계산결과 집계
Me.Pub = New CSharedOD '//공용변수
Me.IsError = Me.Pub.IsError '//공용변수값에 오류확인
'Select Case Version
' Case "2009123100", StartVersion, "2017041400"
' Case Else
' MsgBox("LG계산식에 지원되지않는 버젼(" & StartVersion & "/" & Version & ")입니다", MsgBoxStyle.Critical, "확인")
' Me.IsError = True
'End Select
End Sub
Public Function Start(ByVal CalcType As ECalc, ByRef log As System.Text.StringBuilder) As Boolean
'//계산을 시작 p_CalcUse : 는 소요량 계산도 할건지으 ㅣ플래그 나중에 분리해야겠따.
Setup_Zone9()
'Dim ST As Date = Now
If Me.IsError Then
MsgBox("계산준비중 오류발생", MsgBoxStyle.Critical, "확인")
Return False
End If
log = New System.Text.StringBuilder("")
Dim Cnt As Integer = FixData()
'log.AppendLine(">>데이터보정(" & Cnt.ToString & ")개의 데이터가 보정되었습니다")
'log.AppendLine(">>유효성검사시작")
If Validation() = False Then Return False '//유효성 체크를 수행한다.
'///////////////////////////////////////////////////////////////////////////
' 2017. 12. 19
'///////////////////////////////////////////////////////////////////////////
'//모드난방기기는 헤더적용
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Rows
dr.헤더적용 = True
dr.개별기기적용 = False
Next
DSET1.tbl_nanbangkiki.AcceptChanges()
If CalcType <> ECalc.Use Then
'log.AppendLine(">>계산영역초기화")
Clear_ResultArea() '//과거의 계산영역을 클리어시킨다.
'log.AppendLine(">>각존의 사용면적 계산")
Result1o.사용면적.Calc() '//A_H,C,W,L,V 의 누적값을 계산(사용면적) : 개별프로시져로 할당
'log.AppendLine(">>주계산시작")
End If
Dim Retval As Boolean
Select Case CalcType
Case ECalc.All
Retval = CalcO.Zone.Calc_LoadOfZones
If Retval Then Retval = CalcO.Zone.Calc_Useage
Return Retval
Case ECalc.REq
Return CalcO.Zone.Calc_LoadOfZones
Case ECalc.Use
Return CalcO.Zone.Calc_Useage
End Select
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 DSET1.tbl_myoun.Select("code <> '0'")
If DR면.건축부위방식 = "내벽" Or DR면.건축부위방식 = "간벽" Then
If DR면.방위 <> Null AndAlso DR면.방위 <> "일사없음" Then
RetCnt += 1
DR면.방위 = Null
End If
End If
Next
For Each DR존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'")
If DR존.조명방식.ToString = "0" OrElse DR존.조명방식.ToString = "" Then
RetCnt += 1
Log.AppendLine("Zone " & DR존.설명.ToString & "] 의 조명방식이 없음으로 설정됩니다.")
DR존.조명방식 = "(없음)"
End If
If DR존.인공광원.ToString = "0" OrElse DR존.인공광원.ToString = "" Then
RetCnt += 1
Log.AppendLine("Zone " & DR존.설명.ToString & "] 의 인공광원이 없음으로 설정됩니다.")
DR존.인공광원 = "(없음)"
End If
If DR존.외기부하처리여부.ToString = "0" OrElse DR존.외기부하처리여부.ToString = "" Then
RetCnt += 1
Log.AppendLine("Zone " & DR존.설명.ToString & "] 의 외기부하처리여부가 아니오로 설정됩니다.")
DR존.외기부하처리여부 = "아니오"
End If
'If DR존.조명방식.ToString.Trim = "" Then DR존.조명방식 = "(없음)"
'If DR존.인공광원.ToString.Trim = "" Then DR존.인공광원 = "(없음)"
Next
DSET1.AcceptChanges() '//변경내용 적용
Return RetCnt
End Function
Public Function Validation() As Boolean
'//존이 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, DSET1.tbl_zone, "(없음)") '//데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리
Set_Null(ColumnC, DSET1.tbl_zone, "(없음)") '//공용코드값이 아에없는 데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리
'Set_CheckCommon(ColumnC, DSET1.tbl_zone, CGubun) '//이거는 // 공용코드오류난 데이터 검색하는부분이에요
Set_Null(Columnst, DSET1.tbl_zone, "0")
Title = "신재생에너지"
Columns = New String() {"기기종류", "가동연료", "태양열종류", "집열기유형",
"집열판방위", "태양열시스템의성능", "축열탱크설치장소",
"태양광모듈기울기", "태양광모듈방위",
"태양광모듈종류", "태양광모듈적용타입",
"열교환기설치여부", "팽창탱크설치여부"}
Set_Null(Columns, DSET1.tbl_new, "(없음)")
'Set_Null(Columnst, DSET1.tbl_bunbae, "0")
Title = "난방분배시스템"
Columns = New String() {"생산기기구분", "표준치적용", "배관망유형",
"배관구간방식", "배관설치장소",
"배관설치장소", "지관장소"}
Set_Null(Columns, DSET1.tbl_nbunbae, "(없음)")
'Set_Null(Columnst, DSET1.tbl_bunbae, "0")
Title = "난방기기"
Columns = New String() {"연결된시스템",
"열생산기기방식", "사용연료", "난방급탕구분"}
Columnst = New String() {"배관길이", "펌프동력", "보일러정격출력", "보일러대수", "정격보일러효율"}
Set_Null(Columns, DSET1.tbl_nanbangkiki, "(없음)")
Set_Null(Columnst, DSET1.tbl_nanbangkiki, "0")
Title = "냉방기기"
Columns = New String() {"냉동기방식", "냉동기종류",
"냉동기용량", "열성능비",
"사용연료"}
Columnst = New String() {"연결된시스템", "냉수펌프동력", "냉각수펌프동력"}
Set_Null(Columns, DSET1.tbl_nangbangkiki, "(없음)")
Set_Null(Columnst, DSET1.tbl_nangbangkiki, "0")
Title = "입력면"
Columns = New String() {"건축부위방식", "블라인드유무",
"블라인드위치", "방위", "블라인드빛종류",
"블라인드색상", "블라인드각도"}
Columnst = New String() {"존분류", "대차대조존"}
Set_Null(Columns, DSET1.tbl_myoun, "(없음)")
Set_Null(Columnst, DSET1.tbl_myoun, "0")
'Title = "난방공급시스템"
'Columns = New String() {"열공급시스템", "노출형제어", "바닥난방열제어", _
' "바닥난방열건축부위", "바닥난방전기제어", "바닥난방전기건축부위", "전기난방제어"}
'Columnst = New String() {"열공급생산기기"}
'Set_Null(Columns, DSET1.tbl_kongkub, "(없음)")
'Set_Null(Columnst, DSET1.tbl_kongkub, "0")
Title = "공조처리"
Columns = New String() {"공조방식"}
Set_Null(Columns, DSET1.tbl_kongjo, "(없음)")
'Set_Null(Columnst, DSET1.tbl_bunbae, "0")
'Title = "냉방분배시스템"
''Columns = New String() {"냉매방식", "펌프운전제어유무"}
'Columnst = New String() {"냉동기"}
''Set_Null(Columns, DSET1.tbl_bunbae, "(없음)")
'Set_Null(Columnst, DSET1.tbl_bunbae, "0")
'DSET1.tbl_kongjo.AcceptChanges()
DSET1.AcceptChanges()
'//그값이 존에잇어요?cnrkehlsrp?추가된게?공조기기요
For Each Dr As DS.tbl_zoneRow In DSET1.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
'//부위명 업데이트 171021
For Each drm As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code<>'0'")
If drm.열관류율2 <> "" Then
Dim ykcode As String = drm.열관류율2
Dim dr() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & ykcode & "'")
If dr.GetUpperBound(0) <> -1 Then
Select Case dr(0).면형태
Case "외벽(직접)", "0"
drm.면형태 = "외벽(직접)"
Case "지붕(직접)", "0001"
drm.면형태 = "지붕(직접)"
Case "바닥(직접)", "0002"
drm.면형태 = "바닥(직접)"
Case "외벽(간접)", "0003"
drm.면형태 = "외벽(간접)"
Case "지붕(간접)", "0004"
drm.면형태 = "지붕(간접)"
Case "바닥(간접)", "0005"
drm.면형태 = "바닥(간접)"
Case "간벽", "0006"
drm.면형태 = "간벽"
Case "창(직접)", "창(간접)", "문(직접)", "문(간접)", "세대현관문(직접)", "세대현관문(간접)", "0007", "0008", "0010", "0011", "0012", "0013"
If dr(0).면형태 = "0007" Then
drm.면형태 = "창(직접)"
ElseIf dr(0).면형태 = "0008" Then
drm.면형태 = "창(간접)"
ElseIf dr(0).면형태 = "0010" Then
drm.면형태 = "문(직접)"
ElseIf dr(0).면형태 = "0011" Then
drm.면형태 = "문(간접)"
ElseIf dr(0).면형태 = "0012" Then
drm.면형태 = "세대현관문(직접)"
ElseIf dr(0).면형태 = "0013" Then
drm.면형태 = "세대현관문(간접)"
End If
Case "지중벽", "0009"
drm.면형태 = "지중벽"
Case Else
drm.면형태 = "--"
End Select
End If
Else
drm.면형태 = ""
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) Is DBNull.Value OrElse 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_common_odRow = DSET1.tbl_common_od.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()
DSETR1.Clear() : DSETR1.AcceptChanges() '//기존데이터 클리어
'//0번시트의 결과값을 저장할 장소를 생성한다. Zone=00 은 합계필드이다(이것이 일률적이지않아서 00으로 할당을 따로 해서 나중에 합산작업을 할 예정)
'//00번 존을포함하여 현재 존의 갯수+1개를 생성한다.
'//최대냉난방/E분석
Dim ZoneCode As String
For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("", "code")
If Dr존.code = "0" Then
ZoneCode = "00"
Else
ZoneCode = Dr존.code
End If
Dim Res1 As DSR.최대냉난방부하Row = DSETR1.최대냉난방부하.New최대냉난방부하Row
Res1.Zone = ZoneCode : DSETR1.최대냉난방부하.Add최대냉난방부하Row(Res1)
For ii As Integer = 1 To 12
Dim DrE분석 As DSR.월별에너지분석Row = DSETR1.월별에너지분석.New월별에너지분석Row
DrE분석. = "M" & Format(ii, "00") '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함
DrE분석. = ZoneCode
DSETR1.월별에너지분석.Add월별에너지분석Row(DrE분석)
'MsgBox("M" & Format(ii, "00"), MsgBoxStyle.Information, ZoneCo'de)
Next
Next
' MsgBox(DSETR1.월별에너지분석.Select("월='M01'").GetUpperBound(0))
'//월별로 움직이는데이터
Dim Mon As String
Dim Dr As DataRow
For ii As Integer = 0 To 12
Mon = "M" & Format(ii, "00")
Dr = DSETR1.생산에너지.NewRow
Dr("mon") = Mon '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함
DSETR1.생산에너지.Rows.Add(Dr)
Dr = DSETR1.에너지소요량.NewRow
Dr("mon") = Mon '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함
DSETR1.에너지소요량.Rows.Add(Dr)
Dr = DSETR1.에너지소요량1.NewRow
Dr("mon") = Mon '//정렬을위해서 00숫자형태로 기록한다. 앞으로 모든 월데이터는 그렇게 기록함
DSETR1.에너지소요량1.Rows.Add(Dr)
Next
'//전부다시 구성해야함
DSETR1.AcceptChanges()
End Sub
'''열관류율값ㅇㄹ 반환
Public Function Get_열관류율(ByVal Dr As DS.tbl_myounRow) As Decimal
Return TOSG(T, Dr.열관류율)
'Dim 열관류율2 As String = Dr.열관류율2
'If 열관류율2 = "" OrElse 열관류율2 = "0" Then '//코드가없으므로 입력값그대로 사용
' Return TOSG(T,Dr.열관류율)
'Else '//코드값이잇으므로 값을 찾는다.
' Try
' Dim Drow As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & 열관류율2 & "'")(0)
' Return TOSG(T,Drow.열관류율) '//코드내에 저장된 값을 보낸다
' Catch ex As Exception
' MsgBox("열관류율코드값(" & 열관류율2 & ") 값오류" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Critical, "확인")
' Return 0
' End Try
'End If
End Function
End Class

View File

@@ -0,0 +1,488 @@
Public Class CCoolingOD
Public Overridable Sub Calc_CoolingSystem(ByVal i_count_month As Integer, ByVal theta_e As Decimal)
Dim T As String = "냉방기기"
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 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 수정
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 냉동기용량합 As Decimal = 0
For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code<>'0'", "code")
If IsNumeric(dr냉방.냉동기용량) Then 냉동기용량합 += (dr냉방.냉동기용량 * TOSG(T, dr냉방.대수))
Next
Dim Mon As String = "M" & Format(i_count_month, "00")
For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code<>'0'", "code")
'//이 냉방기가가 존에서 사용되었는지확인한다.
Dim Drow존() As DS.tbl_zoneRow = CType(DSET1.tbl_zone.Select("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 DSET1.tbl_zone.Select("code <> '0'", "code")
Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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존.냉난방방식 = "냉난방" OrElse Dr존.냉난방방식 = "냉방") Then
Q_c_b_i = Result1o.E분석(i_count_month).냉방에너지요구량열(Dr존.code) * (TOSG(T, dr냉방.냉동기용량) * TOSG(T, dr냉방.대수)) / 냉동기용량합 ' 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존.냉난방공조 = "냉난방" 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(T, Drow분석(0).냉방요구량공조) * TOSG(T, dr냉방.냉동기용량) * TOSG(T, dr냉방.대수) / 냉동기용량합 '//2010.11.19 추가
'Else
'Q_c_star_b_i = Result1o.E분석(i_count_month).공조에너지요구량냉방(Dr존.code) * TOSG(T,dr냉방.냉동기용량) / 냉동기용량합 ' 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_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(T, Drow최대(0).난방최대가동시간) * d_op_mth Then
t_h_max = CInt(TOSG(T, Drow최대(0).난방최대가동시간) * 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 CRenewableOD
If dr냉방.연결된시스템.Trim <> "" AndAlso dr냉방.연결된시스템 <> "0" AndAlso dr냉방.연결된시스템 <> "(없음)" Then ' 시스템연결" Then
Dim Dr신재생 As DS.tbl_newRow = CType(DSET1.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(T, dr냉방.열성능비) ' Dr냉방.열성능비
Q_dot_c_outg = TOSG(T, dr냉방.냉동기용량) * TOSG(T, dr냉방.대수) ' dr냉방.냉동기용량
If (Q_dot_c_outg * t_h_max) = 0 Then
k_n = 0 '//170515
Else
k_n = Q_c_outg_total / (Q_dot_c_outg * t_h_max)
End If
If k_n > 1 Then k_n = 1
k_n_index = 100 ' 조건에 없는 압축방식에서 에러 발생 유도함
Select Case dr냉방.냉동기방식 'Dr냉방.냉동기방식
Case "압축식", "압축식(LNG)" '압축식"
T_W_1_i = 32
Select Case dr냉방.냉동기종류 ' Dr냉방.냉동기종류
Case "수냉식" '수냉식"
k_n_index = 7
f_2_av = 1
Case "공냉식" '공냉식"
k_n_index = 4
f_2_av = 1
Case "히트펌프"
k_n_index = 4
f_2_av = 1
End Select
'//이부분정확히 살펴보아야할듯
If k_n = 0 Then k_n = 0.001 ' 부분부하율이 0일 경우 부분부하를 0에서 0.1구간으로 설정
'Dim Drow부분부하() As DS.tbl_buhaRow = DSET1.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 & ")에따른 종류를 확인할 수 없습니다")
Exit For 'Return
Else
f_1_av = TOSG(T, DSET1.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)
l_min_i = TOSG(T, 1.2103 - 0.0162 * (theta_e - 5)) '건구온도에서 -5도로 습구온도 설정 20180901
'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%이상이면 가동하는 것으로 계산하고 최대가동시간 이하로 계산 추후 수정
'//170627 2348
Select Case dr냉방.증발식건식냉각기.Trim
Case "증발식(개방형)"
q_R_elektr = 0.018
Case "증발식(폐쇄형)"
q_R_elektr = 0.033
Case "건식"
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 = 32
l_min_i = TOSG(T, 1.2103 - 0.0162 * (theta_e - 5)) '건구온도에서 -5도로 습구온도 설정 20180901
'f_R_av = (Log(1 - 0.5 / 0.8) * l_min_i / (Log(1 - 0.5 / 0.8) * 0.87)) ^ 2 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정
If (Q_dot_c_outg * t_h_max) = 0 Then
f_R_av = 0 '//170515
Else
f_R_av = Q_c_outg_total * 4 / (Q_dot_c_outg * t_h_max) ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산 추후 수정
End If
If f_R_av > 1 Then f_R_av = 1 ' 냉각탑 가동시간을 부분부하 25%이상이면 가동하는 것으로 계산하고 최대가동시간 이하로 계산 추후 수정
'//170627 2348
Select Case dr냉방.증발식건식냉각기.Trim
Case "증발식(개방형)"
q_R_elektr = 0.018
Case "증발식(폐쇄형)"
q_R_elektr = 0.033
Case "건식"
q_R_elektr = 0.045
End Select
'q_R_elektr = 0.018
Q_c_f_R_elektr = Q_dot_R_outg * q_R_elektr * f_R_av * t_h_max
f_2_av = TOSG(T, 1.7174 - 0.0217 * T_W_1_i)
'//13번째줄
If k_n = 0 Then k_n = 0.01 ' 부분부하율이 0일 경우 부분부하를 0에서 0.1구간으로 설정
f_1_av = TOSG(T, DSET1.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)
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 "지역난방" '지역난방"
use_DH = use_DH + Q_c_outg_therm
Case Else
MsgBox("냉동기기(" & dr냉방.설명 & ")가 직화식이나 사용연료가 없습니다.확인바랍니다.", vbOKOnly, "총량 에너지 평가 프로그램(ECO_Lite)")
End Select
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
'// 냉수, 냉각수 분배
Q_dot_z = Q_dot_c_outg * (1 + 1 / EER) '(3.2.8-30)
P_d_hydr = 1
If dr냉방.냉동기종류 = "히트펌프" Then '//170627 2355
P_Pump = (TOSG(T, dr냉방.냉수펌프동력)) * 1000 'Worksheets("냉방분배시스템").Range("급수온도1").Offset(9, i_count_c_d - 1)
Else
P_Pump = (TOSG(T, dr냉방.냉수펌프동력) + TOSG(T, dr냉방.냉각수펌프동력)) * 1000 'Worksheets("냉방분배시스템").Range("급수온도1").Offset(9, i_count_c_d - 1)
End If
f_e = P_Pump / P_d_hydr '원래는 P_hydr '(3.2.8-37)
c_p1 = 0.75
c_p2 = 0.25
If Q_z_outg_l <> 0 Then
If (Q_dot_z * t_h_max) = 0 Then
beta_d_l = 0 '//170515
Else
beta_d_l = Q_z_outg_l / (Q_dot_z * t_h_max) '(3.2.8-34) t_d_l 을 t_h_max으로 사용
End If
If beta_d_l = 0 Then
e_d_l = 0
Else
e_d_l = f_e * (c_p1 + c_p2 / beta_d_l) '(3.2.8-36)
End If
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 '2
Next '1
'//계산결과 시트의 각 월에해당되는 곳에 데이터를 기록한다.
Result1o.E소요량(i_count_month).냉방 = Q_c_f
Result1o.E소요량(i_count_month).냉방보조 = Q_c_aux
use_Elec = use_Elec + Q_c_aux
Result1o.일차E소요량(i_count_month).냉방등유 = use_Oil
Result1o.일차E소요량(i_count_month).냉방LNG = use_LNG
Result1o.일차E소요량(i_count_month).냉방LPG = use_LPG
Result1o.일차E소요량(i_count_month).냉방지역난방열 = use_DH
'--------------------------------------------------------------------------------------------------2010.02.22 수정
Result1o.일차E소요량(i_count_month).냉방지역냉방열 = use_DC
'--------------------------------------------------------------------------------------------------2010.02.22 수정
Result1o.일차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,717 @@
Public Class CRenewableOD
Dim T As String = "신재생"
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 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 DSET1.tbl_weather.Rows.Count ' Range("건물위치").Columns.Count
' Dr기상데이터 = DSET1.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(DSET1.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 = "45도" + Dr신재생.집열판방위 '//이렇게되면 남(45) 라는 최종이름이 되겟죠?
If 일사이름.IndexOf("수평면") - 1 Then
If 일사이름.LastIndexOf("") - 1 Then
일사이름 += ""
End If
End If
Dim Drow평균일사() As DS.weather_ilsa_odRow = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code &
"' and 설명='" & 일사이름 & "'"), DS.weather_ilsa_odRow())
'//그렇게해서 서울의 코드에 해당하는 pcode 와 이름이 남(45)로 되어잇는 일사데이터테이블에서 데이터를 검색하게되겟죠?
'//즉 데이터가 나오면 해당 데이터가 맞는거에요 ..이건 데이터베이스 이름을 남(45) 식으로 모두 고쳐주세요
If Drow평균일사.GetUpperBound(0) = -1 Then
MsgBox("지역코드=" + CalcO.Pub.기상데이터.code + vbCrLf + "집열판방위코드=" + Dr신재생.집열판방위 + _
vbCrLf + "예상일사코드=" + 일사이름 + _
vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패")
I_m = 0
' Return
Else
l_tot += TOSG(T, Drow평균일사(0).m01) + TOSG(T, Drow평균일사(0).m02) + TOSG(T, Drow평균일사(0).m03) + TOSG(T, Drow평균일사(0).m04) + _
TOSG(T, Drow평균일사(0).m05) + TOSG(T, Drow평균일사(0).m06) + TOSG(T, Drow평균일사(0).m07) + TOSG(T, Drow평균일사(0).m08) + _
TOSG(T, Drow평균일사(0).m09) + TOSG(T, Drow평균일사(0).m10) + TOSG(T, Drow평균일사(0).m11) + TOSG(T, Drow평균일사(0).m12)
I_m = TOSG(T, 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(T, CalcO.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(T,Dr신재생.무손실효율계수) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(6, i_count_ts - 1)
' a_1 = TOSG(T,Dr신재생.열손실계수1차) 'Worksheets("신재생기기").Range("태양열시스템종류1").Offset(7, i_count_ts - 1)
' a_2 = TOSG(T,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(T, Dr신재생.집열판면적) ' Worksheets("신재생기기").Range("태양열시스템종류1").Offset(2, i_count_ts - 1)
U_loop_p = TOSG(T, 5 + 0.5 * A_) '(B.3)
U_loop = a_1 + a_2 * 40 + U_loop_p / A_ '(13)
theta_ref = TOSG(T, 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(T, Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1)
f_st = TOSG(T, (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(T, 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(T, 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(T, 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(T, Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1)
f_st = TOSG(T, (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(T, 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(T, 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(T, 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(T, 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(T, Q_W_sol_st_ls_m * 0.5)
Q_bu_dis_ls_rbl_m = TOSG(T, 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(T, 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(T, 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(T, Dr신재생.축열탱크체적급탕) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(0, i_count_ts - 1)
f_st = TOSG(T, (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(T, 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(T, 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(T, 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(T, Dr신재생.축열탱크체적난방) ' Worksheets("신재생기기").Range("태양열축열탱크1").Offset(1, i_count_ts - 1)
f_st = TOSG(T, (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(T, 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(T, 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(T, 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(T, 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(T, 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)
'//170827
If Q_H_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
'//열에너지생산량-태양열
Result1o.생산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
Result1o.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result1o.사용면적.W)
Else
Result1o.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result1o.사용면적.H)
End If
Case 2 '//냉방?
Result1o.생산E(i_ts_month).면적당생산량태양열 += (Q_H_sol_out_m / Result1o.사용면적.C)
Case 3 '//급탕
Result1o.생산E(i_ts_month).면적당생산량태양열 += (Q_W_sol_out_m / Result1o.사용면적.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 DSET1.tbl_new.Rows.Count > 0 Then ' Worksheets("신재생기기").Range("신재생생산기기1").Offset(0, 0) <> "" Then '//신재생기기 처음칸에 뭐가 잇다? 즉 데이터가잇느냐
For Each Dr신재생 As DS.tbl_newRow In DSET1.tbl_new.Select("code <> '0'", "code")
If Dr신재생.기기종류 = "태양광" Then
a = TOSG(T, 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_ilsa_odRow '//0037
Dim 검색컬럼 As String = ""
Dim 검색줄수() As DataRow
Select Case Dr신재생.태양광모듈기울기.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(1, i_count_pv - 1)
Case "수평" '수평"
검색컬럼 = "수평면"
검색줄수 = DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and 설명='" + 검색컬럼 + "'")
If 검색줄수.Length = 1 Then
'//수평면에해당는 월별평균일사 값을 가져온다.수평면 0001은 고정값이된다.
Dr일사 = 검색줄수(0) '// CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='0001'")(0), DS.weather_ilsa_odRow)
E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
Else
MsgBox("지역코드=" + CalcO.Pub.기상데이터.code + vbCrLf + "태양광모듈기울기=" + Dr신재생.태양광모듈기울기 + _
vbCrLf + "예상코드설명=" + 검색컬럼 + _
vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패")
End If
Case "45도" '45도"
검색컬럼 = "45도" + Dr신재생.태양광모듈방위 + ""
검색줄수 = DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and 설명='" + 검색컬럼 + "'")
If 검색줄수.Length = 1 Then
'//수평면에해당는 월별평균일사 값을 가져온다.수평면 0001은 고정값이된다.
Dr일사 = 검색줄수(0) '/ CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 9, "0000") & "'")(0), DS.weather_ilsa_odRow)
E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
Else
MsgBox("지역코드=" + CalcO.Pub.기상데이터.code + vbCrLf + "태양광모듈기울기=" + Dr신재생.태양광모듈기울기 + _
vbCrLf + "예상코드설명=" + 검색컬럼 + _
vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패")
End If
'Select Case Dr신재생.태양광모듈방위.Trim ' Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1)
' Case "남" '"남"
' '//45도 남에대한건 기본 수평면하고 +9를 하면 나온다 나머지도 순서이므로 +1을 게속해주면된다.
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 9, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "남동" '"남동"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 10, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "남서" '"남서"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 11, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "동" '"동"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 12, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "서" '"서"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 13, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
'End Select
Case "수직" '수직"
'//170827
검색컬럼 = Dr신재생.태양광모듈방위 + ""
검색줄수 = DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and 설명='" + 검색컬럼 + "'")
If 검색줄수.Length = 1 Then
'//수평면에해당는 월별평균일사 값을 가져온다.수평면 0001은 고정값이된다.
Dr일사 = 검색줄수(0) '/ CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 9, "0000") & "'")(0), DS.weather_ilsa_odRow)
E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
Else
MsgBox("지역코드=" + CalcO.Pub.기상데이터.code + vbCrLf + "태양광모듈기울기=" + Dr신재생.태양광모듈기울기 + _
vbCrLf + "예상코드설명=" + 검색컬럼 + _
vbCrLf + "에 해당하는 평균일사데이터가 없습니다. 1개의 행이 반환되어야 합니다", MsgBoxStyle.Critical, "계산실패")
End If
'Select Case Dr신재생.태양광모듈방위.Trim 'Worksheets("신재생기기").Range("태양광모듈1").Offset(2, i_count_pv - 1)
' Case "남" '"남"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 1, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "남동" '"남동"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 2, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "남서" '"남서"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 3, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "동" '"동"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 4, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, Dr일사("M" & Format(i_count_pv_month, "00"))) * i_pv_d_mth * 24 / 1000
' Case "서" '"서"
' Dr일사 = CType(DSET1.weather_ilsa_od.Select("pcode='" & CalcO.Pub.기상데이터.code & "' and code='" & Format(1 + 5, "0000") & "'")(0), DS.weather_ilsa_odRow)
' E_sol = TOSG(T, 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 "성능치입력"
K_pk = TOSG(Dr신재생.태양광모듈효율) / 100.0
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
Result1o.생산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
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(DSET1.tbl_new.Rows(0), DS.tbl_newRow)
Phi_g = TOSG(T, 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 Then '난방 1 , 냉방 2
'난방
'If Dr신재생.팽창탱크설치여부 = "예" Then ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(6, i_count_hp - 1) = "예" Then
' f_Verwindung = 1.2
' V = TOSG(T,Dr신재생.팽창탱크체적) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(7, i_count_hp - 1)
' q_B_S = TOSG(T,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(T, Dr신재생.열성능비난방) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(1, i_count_hp - 1)
Else
'냉방
COP = TOSG(T, 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(T, Dr신재생.펌프용량1차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(3, i_count_hp - 1)
'Phi_sek_aux = TOSG(T,Dr신재생.펌프용량2차) ' Worksheets("신재생기기").Range("지열히트펌프용량1").Offset(4, i_count_hp - 1)
Q_h_g_aux = TOSG(T, (Phi_prim_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
'// 신재생에너지 자립률 추가
'//열에너지생산량 (지열)
Result1o.생산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
Result1o.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result1o.사용면적.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
Result1o.생산E(i_hp_month).면적당생산량지열 += (Q_h_f_hp / Result1o.사용면적.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)
End Select
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)
'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(DSET1.tbl_new.Rows(0), DS.tbl_newRow)
Q_dot_T_chp = TOSG(T, Dr신재생.열생산능력) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(0, i_count_chp - 1)
eta_T_chp_an = TOSG(T, Dr신재생.열생산효율) ' Worksheets("신재생기기").Range("열병합열생산능력1").Offset(1, i_count_chp - 1)
eta_el_chp_an = TOSG(T, 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
'//전기생산량 열병합
Result1o.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out
'//전기생산량 열병합
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
'// 신재생에너지 자립률 추가
'//전력
Result1o.생산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}", Result1o.생산E(i_chp_month).신재생열병합전력생산량))
'//면적당열병합 (신재생면적당열생산량)
Select Case i_system_chp
Case 1
Result1o.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result1o.사용면적.H) '// 20170120 추가
'Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out / Result.사용면적.H)
Case 2
Result1o.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result1o.사용면적.C) '// 20170120 추가
'Result.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out / Result.사용면적.C)
Case 3
Result1o.생산E(i_chp_month).신재생면적당열생산량 += (Q_chp_gen_out_net / Result1o.사용면적.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,732 @@
Public Class C1차소요량OD
Dim T As String = "1차소요량"
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 += Result1o.일차E소요량(i).난방등유
i2 += Result1o.일차E소요량(i).난방LNG
i3 += Result1o.일차E소요량(i).난방LPG
i4 += Result1o.일차E소요량(i).난방지역
i5 += Result1o.일차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 += Result1o.일차E소요량(i).냉방등유
i2 += Result1o.일차E소요량(i).냉방LNG
i3 += Result1o.일차E소요량(i).냉방LPG
i4 += Result1o.일차E소요량(i).냉방지역난방열
i5 += Result1o.일차E소요량(i).냉방지역냉방열
i6 += Result1o.일차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 += Result1o.일차E소요량(i).급탕등유
i2 += Result1o.일차E소요량(i).급탕LNG
i3 += Result1o.일차E소요량(i).급탕LPG
i4 += Result1o.일차E소요량(i).급탕지역
i5 += Result1o.일차E소요량(i).급탕전력
Next
Me.급탕등유 = i1
Me.급탕LNG = i2
Me.급탕LPG = i3
Me.급탕지역 = i4
Me.급탕전력 = i5
End Sub
Public Sub New(Optional ByVal pmIdx As Integer = 0)
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 += Result1o.일차E소요량(i).소요량
Next
Return R
Else
Return Me.난방소요량 + Me.냉방소요량 + Me.급탕소요량 + Me.조명소요량 + Me.환기소요량 - (Result1o.생산E(MIdx).태양광전력생산량 * Result1o.E변환계수.전력) - (Result1o.생산E(MIdx).열병합전력생산량 * Result1o.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.난방등유 * Result1o.E변환계수.등유 + Me.난방LNG * Result1o.E변환계수.LNG + _
Me.난방LPG * Result1o.E변환계수.LPG + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result1o.E변환계수.전력
Else
Return Me.난방등유 * Result1o.E변환계수.등유 + Me.난방LNG * Result1o.E변환계수.LNG + _
Me.난방LPG * Result1o.E변환계수.LPG + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
End If
End Get
End Property
ReadOnly Property 난방소요량2() As Decimal '//140112(?)
Get
' Dim 건물용도 As Integer = CInt(DSET1.tbl_myoun.Select("존분류 <> '0'")(0)("존분류").ToString())
If MIdx = 0 Then
If Pub.Program = EProgram.친환경평가 Then
'//친환경
Dim R As Decimal = Me.난방등유 * Result1o.E변환계수.지역난방 + Me.난방LNG * Result1o.E변환계수.지역난방 + _
Me.난방LPG * Result1o.E변환계수.지역난방 + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
Try
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result1o.E변환계수.전력
Catch ex As Exception
End Try
Else
Dim R As Decimal = Me.난방등유 * Result1o.E변환계수.등유 + Me.난방LNG * Result1o.E변환계수.LNG + _
Me.난방LPG * Result1o.E변환계수.LPG + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
Try
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.난방전력 * Result1o.E변환계수.전력
Catch ex As Exception
End Try
End If
Else
If Pub.Program = EProgram.친환경평가 Then
Return Me.난방등유 * Result1o.E변환계수.지역난방 + Me.난방LNG * Result1o.E변환계수.지역난방 + _
Me.난방LPG * Result1o.E변환계수.지역난방 + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
Else
Return Me.난방등유 * Result1o.E변환계수.등유 + Me.난방LNG * Result1o.E변환계수.LNG + _
Me.난방LPG * Result1o.E변환계수.LPG + Me.난방지역 * Result1o.E변환계수.지역난방 + _
Me.난방전력 * Result1o.E변환계수.전력
End If
End If
End Get
End Property
Property 난방등유() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방등유"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("난방등유") = value
End If
End Set
End Property
Property 난방LNG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방LNG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("난방LNG") = value
End If
End Set
End Property
Property 난방LPG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방LPG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("난방LPG") = value
End If
End Set
End Property
'Property 난방펠렛() As Decimal
' Get
' Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
' If DR.GetUpperBound(0) = -1 Then
' MsgBox(ErrMsg)
' Return 0
' Else
' Return TOSG(T,DR(0)("난방펠렛"))
' End If
' End Get
' Set(ByVal value As Decimal)
' Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
' 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.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방지역"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
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.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방전력"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("난방전력") = value
End If
End Set
End Property
ReadOnly Property 난방면적() As Decimal
Get
If Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방소요량 / Result1o.사용면적.H
End If
End Get
End Property
ReadOnly Property 난방면적2() As Decimal
Get
If Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방소요량2 / Result1o.사용면적.H
End If
End Get
End Property
#End Region
#Region "냉방"
ReadOnly Property 냉방소요량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = Me.냉방등유 * Result1o.E변환계수.등유 + Me.냉방LNG * Result1o.E변환계수.LNG + _
Me.냉방LPG * Result1o.E변환계수.LPG + Me.냉방지역난방열 * Result1o.E변환계수.지역난방 + _
Me.냉방지역냉방열 * Result1o.E변환계수.지역냉방 + Me.냉방전력 * Result1o.E변환계수.전력
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.냉방전력 * Result1o.E변환계수.전력
Else
Return Me.냉방등유 * Result1o.E변환계수.등유 + Me.냉방LNG * Result1o.E변환계수.LNG + _
Me.냉방LPG * Result1o.E변환계수.LPG + Me.냉방지역난방열 * Result1o.E변환계수.지역난방 + _
Me.냉방지역냉방열 * Result1o.E변환계수.지역냉방 + Me.냉방전력 * Result1o.E변환계수.전력
End If
End Get
End Property
Property 냉방등유() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방등유"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방등유") = value
End If
End Set
End Property
Property 냉방LNG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방LNG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방LNG") = value
End If
End Set
End Property
Property 냉방펠렛() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방펠렛"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방펠렛") = value
End If
End Set
End Property
Property 냉방LPG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방LPG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방LPG") = value
End If
End Set
End Property
Property 냉방지역난방열() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방지역"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
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.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방지역2"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방지역2") = value
End If
End Set
End Property
Property 냉방전력() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방전력"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("냉방전력") = value
End If
End Set
End Property
ReadOnly Property 냉방면적() As Decimal
Get
If Result1o.사용면적.C = 0 Then
Return 0
Else
Return Me.냉방소요량 / Result1o.사용면적.C
End If
End Get
End Property
#End Region
#Region "급탕"
ReadOnly Property 급탕소요량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = Me.급탕등유 * Result1o.E변환계수.등유 + Me.급탕LNG * Result1o.E변환계수.LNG + _
Me.급탕LPG * Result1o.E변환계수.LPG + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result1o.E변환계수.전력
Else
Return Me.급탕등유 * Result1o.E변환계수.등유 + Me.급탕LNG * Result1o.E변환계수.LNG + _
Me.급탕LPG * Result1o.E변환계수.LPG + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
End If
End Get
End Property
ReadOnly Property 급탕소요량2() As Decimal
Get
' Dim 건물용도 As Integer = CInt(DSET1.tbl_myoun.Select("존분류 <> '0'")(0)("존분류").ToString())
If MIdx = 0 Then
If Pub.Program = EProgram.친환경평가 Then
Dim R As Decimal = Me.급탕등유 * Result1o.E변환계수.지역난방 + Me.급탕LNG * Result1o.E변환계수.지역난방 + _
Me.급탕LPG * Result1o.E변환계수.지역난방 + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
Try
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result1o.E변환계수.전력
Catch ex As Exception
End Try
Else
Dim R As Decimal = Me.급탕등유 * Result1o.E변환계수.등유 + Me.급탕LNG * Result1o.E변환계수.LNG + _
Me.급탕LPG * Result1o.E변환계수.LPG + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
Try
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.급탕전력 * Result1o.E변환계수.전력
Catch ex As Exception
End Try
End If
Else
If Pub.Program = EProgram.친환경평가 Then
Return Me.급탕등유 * Result1o.E변환계수.지역난방 + Me.급탕LNG * Result1o.E변환계수.지역난방 + _
Me.급탕LPG * Result1o.E변환계수.지역난방 + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
Else
Return Me.급탕등유 * Result1o.E변환계수.등유 + Me.급탕LNG * Result1o.E변환계수.LNG + _
Me.급탕LPG * Result1o.E변환계수.LPG + Me.급탕지역 * Result1o.E변환계수.지역난방 + _
Me.급탕전력 * Result1o.E변환계수.전력
End If
End If
End Get
End Property
Property 급탕등유() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕등유"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("급탕등유") = value
End If
End Set
End Property
Property 급탕LNG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕LNG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("급탕LNG") = value
End If
End Set
End Property
Property 급탕펠렛() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕펠렛"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("급탕펠렛") = value
End If
End Set
End Property
Property 급탕LPG() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕LPG"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("급탕LPG") = value
End If
End Set
End Property
Property 급탕지역() As Decimal
Get
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕지역"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
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.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕전력"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량1Row = CType(DSETR1.에너지소요량1.Select("mon='" & Mon & "'"), DSR.에너지소요량1Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Else
DR(0)("급탕전력") = value
End If
End Set
End Property
ReadOnly Property 급탕면적() As Decimal
Get
If Result1o.사용면적.W = 0 Then
Return 0
Else
Return Me.급탕소요량 / Result1o.사용면적.W
End If
End Get
End Property
ReadOnly Property 급탕면적2() As Decimal
Get
If Result1o.사용면적.W = 0 Then
Return 0
Else
Return Me.급탕소요량2 / Result1o.사용면적.W
End If
End Get
End Property
#End Region
#Region "조명부분(읽기전용)"
ReadOnly Property 조명소요량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = 조명전력 * Result1o.E변환계수.전력
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.조명전력 * Result1o.E변환계수.전력
Else
Return 조명전력 * Result1o.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 += Result1o.일차E소요량(i).조명전력
Next
Return i1
Else
Return Result1o.E소요량(Me.MIdx).조명S
End If
End Get
End Property
ReadOnly Property 조명면적() As Decimal
Get
If Result1o.사용면적.L = 0 Then
Return 0
Else
Return Me.조명소요량 / Result1o.사용면적.L
End If
End Get
End Property
#End Region
#Region "환기부분(읽기전용)"
ReadOnly Property 환기소요량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = 환기전력 * Result1o.E변환계수.전력
Return R - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / _
(Me.난방전력 + Me.냉방전력 + Me.급탕전력 + Me.조명전력 + Me.환기전력) * Me.환기전력 * Result1o.E변환계수.전력
Else
Return 환기전력 * Result1o.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 += Result1o.일차E소요량(i).환기전력
Next
Return i1
Else
Return Result1o.E소요량(Me.MIdx).환기S
End If
End Get
End Property
ReadOnly Property 환기면적() As Decimal
Get
If Result1o.사용면적.V = 0 Then
Return 0
Else
Return Me.환기소요량 / Result1o.사용면적.V
End If
End Get
End Property
#End Region
End Class

View File

@@ -0,0 +1,425 @@
Public Class CCo2발생량OD
Public Mon As String
Private ErrMsg As String = "에너지소요량 계산되지 않았습니다"
Private MIdx As Integer
Public Sub New(Optional ByVal pmIdx As Integer = 0)
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.난방전력
Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.난방전력
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 += Result1o.Co2발생량(i).난방등유
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).난방등유 * Result1o.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 += Result1o.Co2발생량(i).난방LNG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).난방LNG * Result1o.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 += Result1o.Co2발생량(i).난방LPG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).난방LPG * Result1o.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 += Result1o.Co2발생량(i).난방지역
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).난방지역 * Result1o.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 += Result1o.Co2발생량(i).난방전력
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).난방전력 * Result1o.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 += Result1o.Co2발생량(i).난방펠렛
' Next
' Return Res
' Else
' Return Result1o.일차E소요량(MIdx).난방펠렛 * Result1o.Co2배출계수.펠렛
' End If
' End Get
'End Property
ReadOnly Property 난방면적() As Decimal
Get
If Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방발생량 / Result1o.사용면적.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
Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.냉방전력
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 += Result1o.Co2발생량(i).냉방등유
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방등유 * Result1o.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 += Result1o.Co2발생량(i).냉방LNG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방LNG * Result1o.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 += Result1o.Co2발생량(i).냉방펠렛
' Next
' Return Res
' Else
' Return Result1o.일차E소요량(MIdx).냉방펠렛 * Result1o.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 += Result1o.Co2발생량(i).냉방LPG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방LPG * Result1o.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 += Result1o.Co2발생량(i).냉방지역난방열
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방지역난방열 * Result1o.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 += Result1o.Co2발생량(i).냉방지역냉방열
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방지역냉방열 * Result1o.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 += Result1o.Co2발생량(i).냉방전력
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).냉방전력 * Result1o.Co2배출계수.전력
End If
End Get
End Property
ReadOnly Property 냉방면적() As Decimal
Get
If Result1o.사용면적.C = 0 Then
Return 0
Else
Return Me.냉방발생량 / Result1o.사용면적.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.급탕전력
Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.급탕전력
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 += Result1o.Co2발생량(i).급탕등유
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).급탕등유 * Result1o.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 += Result1o.Co2발생량(i).급탕펠렛
' Next
' Return Res
' Else
' Return Result1o.일차E소요량(MIdx).급탕펠렛 * Result1o.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 += Result1o.Co2발생량(i).급탕LNG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).급탕LNG * Result1o.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 += Result1o.Co2발생량(i).급탕LPG
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).급탕LPG * Result1o.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 += Result1o.Co2발생량(i).급탕지역
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).급탕지역 * Result1o.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 += Result1o.Co2발생량(i).급탕전력
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).급탕전력 * Result1o.Co2배출계수.전력
End If
End Get
End Property
ReadOnly Property 급탕면적() As Decimal
Get
If Result1o.사용면적.W = 0 Then
Return 0
Else
Return Me.급탕발생량 / Result1o.사용면적.W
End If
End Get
End Property
ReadOnly Property 조명발생량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = Me.조명전력
Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.조명전력
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 += Result1o.Co2발생량(i).조명전력
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).조명전력 * Result1o.Co2배출계수.전력
End If
End Get
End Property
ReadOnly Property 조명면적() As Decimal
Get
If Result1o.사용면적.L = 0 Then
Return 0
Else
Return Me.조명발생량 / Result1o.사용면적.L
End If
End Get
End Property
ReadOnly Property 환기발생량() As Decimal
Get
If MIdx = 0 Then
Dim R As Decimal = Me.환기전력
Return R - (Me.저감량열병합 + Me.저감량태양광) / (Me.난방전력 + Me.냉방전력 + Me.조명전력 + Me.환기전력 + Me.급탕전력) * Me.환기전력
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 += Result1o.Co2발생량(i).환기전력
Next
Return Res
Else
Return Result1o.일차E소요량(MIdx).환기전력 * Result1o.Co2배출계수.전력
End If
End Get
End Property
ReadOnly Property 환기면적() As Decimal
Get
If Result1o.사용면적.V = 0 Then
Return 0
Else
Return Me.환기발생량 / Result1o.사용면적.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 += Result1o.Co2발생량(i).저감량태양광
Next
Return Res
Else
Return Result1o.생산E(MIdx).태양광전력생산량 * Result1o.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 += Result1o.Co2발생량(i).저감량열병합
Next
Return Res
Else
Return Result1o.생산E(MIdx).열병합전력생산량 * Result1o.Co2배출계수.전력
End If
End Get
End Property
End Class

View File

@@ -0,0 +1,43 @@
Public Class CResultOD
' Public Zones As CZonesOD
Public E요구량(12) As C에너지요구량OD
Public E소요량(12) As C에너지소요량OD
Public 일차E소요량(12) As C1차소요량OD
Public 생산E(12) As C생산에너지OD
Public Co2발생량(12) As CCo2발생량OD
Public E분석(12) As C에너지분석OD '//여기는 유일하게 0번 인덱스를 쓸수없다
Public Co2배출계수 As CCo2배출계수OD
Public E변환계수 As C1차에너지변환계수OD
Public 사용면적 As C사용면적OD
Public 최대부하 As C최대냉난방부하OD
Public Sub New()
'//공용
Co2배출계수 = New CCo2배출계수OD
E변환계수 = New C1차에너지변환계수OD
'//단일
사용면적 = New C사용면적OD
최대부하 = New C최대냉난방부하OD
'//서브추가항목
'Zones = New CZonesOD
'//월별로 들어가는 배열항목
For i As Integer = 0 To 12
Me.E요구량(i) = New C에너지요구량OD(i)
Me.E소요량(i) = New C에너지소요량OD(i)
Me.일차E소요량(i) = New C1차소요량OD(i)
Me.생산E(i) = New C생산에너지OD(i)
Me.Co2발생량(i) = New CCo2발생량OD(i)
Me.E분석(i) = New C에너지분석OD(i)
Next
End Sub
End Class

View File

@@ -0,0 +1,59 @@

' ''' <summary>
' ''' 각존의 데이터를 참조한다
' ''' </summary>
'Public Class CZonesOD
' Dim ErrMsg As String = "최대냉난방부하가 계산되지 않았습니다"
' Public Items() As Citem
' Public Sub New() '//존은초기화값을 가지고 생성한다.
' ReDim Items(Me.CountR) '//결과내의 존을 초기화한다.
' Dim idx As Integer = 0
' For Each It As DSR.최대냉난방부하Row In DSETR1.최대냉난방부하.Select("zone<>'00'")
' Items(idx) = New Citem(idx, It.Zone)
' idx += 1
' Next
' '//해당존의 코드값을 가지고 결과가 게산되어있따.
' End Sub
' Public Function Count() As Integer
' Return DSET1.tbl_zone.Rows.Count '//현재 시스템의 존 카운터를 반환
' End Function
' Public Function CountR() As Integer
' Return DSETR1.최대냉난방부하.Select("zone<>'00'").GetUpperBound(0) + 1 '//계산결과내의 존의 갯수를 반환
' End Function
' Public Class Citem
' Public Index As Integer
' Public Code As String
' Public 최대냉난방부하 As C최대냉난방부하OD.Citem
' Public 월에너지분석(11) As C에너지분석OD '//이존의 12달의 내역을 참조한다.
' Public Sub New(ByVal pidx As Integer, ByVal pcode As String)
' Me.Index = pidx
' Me.Code = pcode
' 최대냉난방부하 = New C최대냉난방부하OD.Citem(pcode)
' Dim Idx As Integer = 0
' For Each DR As C에너지분석OD In Me.월에너지분석
' DR = New C에너지분석OD(Idx, pcode)
' Idx += 1
' Next
' End Sub
' Public Function Name() As String
' Dim dR() As DataRow = DSET1.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(DSET1.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,76 @@
Public Class CCo2배출계수OD
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차에너지변환계수OD
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
'//Return 0.614 '//170518
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,358 @@
''' <summary>
''' 전체존의 사용면적을 계산및 확인(냉,난,조,급,환)
''' </summary>
''' <remarks>전체존의 사용면적을 계산및 확인(냉,난,조,급,환)</remarks>
Public Class C사용면적OD
Dim T As String = "사용면적"
''' <summary>
''' 난방
''' </summary>
''' <remarks>난방</remarks>
Property H() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("H"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("H") = value
End If
End Set
End Property
''' <summary>
''' 냉방
''' </summary>
''' <remarks>냉방</remarks>
Property C() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("C"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("C") = value
End If
End Set
End Property
''' <summary>
''' 조명
''' </summary>
''' <remarks>조명</remarks>
Property L() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("L"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("L") = value
End If
End Set
End Property
''' <summary>
''' 급탕
''' </summary>
''' <remarks>급탕</remarks>
Property W() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("W"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("W") = value
End If
End Set
End Property
''' <summary>
''' 환기
''' </summary>
''' <remarks>환기</remarks>
Property V() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("V"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("V") = value
End If
End Set
End Property
''' <summary>
''' 난방_WF
''' </summary>
''' <remarks>난방</remarks>
Property H_WF() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("H_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("H_WF") = value
End If
End Set
End Property
''' <summary>
''' 냉방_WF
''' </summary>
''' <remarks>냉방</remarks>
Property C_WF() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("C_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("C_WF") = value
End If
End Set
End Property
''' <summary>
''' 조명_WF
''' </summary>
''' <remarks>조명</remarks>
Property L_WF() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("L_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("L_WF") = value
End If
End Set
End Property
''' <summary>
''' 급탕_WF
''' </summary>
''' <remarks>급탕</remarks>
Property W_WF() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("W_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("W_WF") = value
End If
End Set
End Property
''' <summary>
''' 환기_WF
''' </summary>
''' <remarks>환기</remarks>
Property V_WF() As Decimal
Get
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(T, DSETR1.사용면적(0)("V_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR1.사용면적.Rows.Count = 0 Then
Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR1.사용면적(0)("V_WF") = value
End If
End Set
End Property
Public Overridable Sub Calc()
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 DSETR1.사용면적.Rows.Count = 0 Then '//데결과가 없으면 신규줄을 기록한다.
Dim Dr As DSR.사용면적Row = DSETR1.사용면적.New사용면적Row
Dr.H = 0 : Dr.C = 0 : Dr.L = 0 : Dr.W = 0 : Dr.V = 0
DSETR1.사용면적.Add사용면적Row(Dr)
DSETR1.AcceptChanges()
End If
'//A_H,C,W,L,V 의 누적값을 계산(사용면적) '//모든존을 대상으로
For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code<>'0'", "code")
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
Dim 건물용도 As Integer = CInt(Dr존.code)
Dim offset As Integer = 1
If Dr프로필.설명 = "판매시설" 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
'//냉난방(HC) 이거나 난방(H)일경우 난방면적 누적
If Dr존.냉난방방식.IndexOf("") <> -1 OrElse Dr존.냉난방공조.IndexOf("") <> -1 Then
A_H += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
If 건물용도 < 10 Then '//주거일경우에
'//연
A_H_wf = A_H
Else
day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
A_H_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
End If
End If
'//냉난방(hC) 이거나 냉방(C)일경우 냉방면적 누적
If Dr존.냉난방방식.IndexOf("") <> -1 OrElse Dr존.냉난방공조.IndexOf("") <> -1 Then
A_C += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
If 건물용도 < 10 Then
A_C_wf = A_C
Else
day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
A_C_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
End If
End If
'//급탕요구량이 있다면 급탕면적 누적
If TOSG(T, Dr프로필.일일급탕요구량) > 0 Then
A_W += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
If 건물용도 < 10 Then
A_W_wf = A_W
Else
day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
A_W_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일급탕요구량) * Math.Round(day_year / (30 * 250), 3))
End If
End If
'//조명의 에너지부하율값이 있으면 조명면적 누적
If Dr존.조명에너지부하율계산치 <> "0" OrElse Dr존.조명에너지부하율입력치 <> "0" Then
A_L += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
If 건물용도 < 10 Then
'//가스를쓰는 난방 급탕은 계가 발생
A_L_wf = A_L
Else
day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
A_L_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일사용시간) * Math.Round(day_year / (9 * 250), 3) * offset)
End If
End If
'//냉난방공조를 사용하고있다면 환기면적 누적(ZZ:기능없음)
If (Dr존.냉난방공조 <> "기능없음") Then
A_V += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
If 건물용도 < 10 Then
A_V_wf = A_V
Else
day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
A_V_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
End If
End If
Next
'//저장소에 보관한다.
Result1o.사용면적.H = A_H
Result1o.사용면적.C = A_C
Result1o.사용면적.L = A_L
Result1o.사용면적.W = A_W
Result1o.사용면적.V = A_V
'// 가중치 있는 사용면적 '2013.07.01
Result1o.사용면적.H_WF = A_H_wf
Result1o.사용면적.C_WF = A_C_wf
Result1o.사용면적.L_WF = A_L_wf
Result1o.사용면적.W_WF = A_W_wf
Result1o.사용면적.V_WF = A_V_wf
End Sub
End Class

View File

@@ -0,0 +1,272 @@
'// 0월합계에대한 처리는 하였음
'// 완료일자 : 2010-03-08
Public Class C생산에너지OD
Dim T As String = "생산에너지"
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 += Result1o.생산E(i).태양광전력생산량
' I2 += Result1o.생산E(i).열병합전력생산량
' I3 += Result1o.생산E(i).태양열생산량
' I4 += Result1o.생산E(i).지열생산량
' I5 += Result1o.생산E(i).면적당생산량태양열
' I6 += Result1o.생산E(i).면적당생산량지열
' Next
' Me.태양광전력생산량 = I1
' Me.열병합전력생산량 = I2
' Me.태양열생산량 = I3
' Me.지열생산량 = I4
' Me.면적당생산량태양열 = I5
' Me.면적당생산량지열 = I6
'End Sub
Public Sub New(Optional ByVal pmIdx As Integer = 0)
MIdx = pmIdx
Mon = "M" & Format(MIdx, "00")
End Sub
Property 태양광전력생산량() As Decimal
Get
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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 += Result1o.생산E(i).태양광전력생산량
Next
Return Res
Else
Return TOSG(T, DR(0)("전력태양광"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산E(i).열병합전력생산량
Next
Return Res
Else
Return TOSG(T, DR(0)("전력열병합"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산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(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산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(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산E(i).태양열생산량
Next
Return Res
Else
Return TOSG(T, DR(0)("생산량태양열"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산E(i).지열생산량
Next
Return Res
Else
Return TOSG(T, DR(0)("생산량지열"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산E(i).면적당생산량태양열
Next
Return Res
Else
Return TOSG(T, DR(0)("면적당생산량태양열"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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(DSETR1.생산에너지.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 += Result1o.생산E(i).면적당생산량지열
Next
Return Res
Else
Return TOSG(T, DR(0)("면적당생산량지열"))
End If
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.생산에너지Row = CType(DSETR1.생산에너지.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에너지분석OD
Dim T As String = "에너지분석"
Public ZZone As String
Public Mon As String
Private ErrMsg As String = "월에너지분석이 계산되지 않았습니다"
Public Sub New(ByVal mIdx As Integer, Optional ByVal pZone As String = "00")
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(DSETR1.월별에너지분석.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 Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방에너지요구량 / Result1o.사용면적.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(DSETR1.월별에너지분석.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(T, DR(0)("난방요구량열"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.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(T, DR(0)("난방요구량공조"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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 Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.냉방에너지요구량 / Result1o.사용면적.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(DSETR1.월별에너지분석.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(T, DR(0)("냉방요구량열"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.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(T, DR(0)("냉방요구량공조"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.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(T, DR(0)("조명요구량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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 Result1o.사용면적.L = 0 Then
Return 0
Else
Return Me.조명에너지요구량 / Result1o.사용면적.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(DSETR1.월별에너지분석.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(T, DR(0)("급탕요구량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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 Result1o.사용면적.W = 0 Then
Return 0
Else
Return Me.급탕에너지요구량 / Result1o.사용면적.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(DSETR1.월별에너지분석.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(T, DR(0)("공조풍량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.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(T, DR(0)("공조요구량난방"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("공조요구량냉방"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone <> "00", Zone, ZZone).ToString & "'"), DSR.월별에너지분석Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("공조요구량가습"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & IIf(Zone = "00", ZZone, Zone).ToString & "'"), DSR.월별에너지분석Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("환기요구량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.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 DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='00'").GetUpperBound(0) = -1 Then
Drow = DSETR1.월별에너지분석.New월별에너지분석Row
Drow. = "00"
Drow. = Mon
DSETR1.월별에너지분석.Add월별에너지분석Row(Drow) '//기본줄을 추가함
DSETR1.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 DSETR1.월별에너지분석.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,402 @@
Public Class C에너지소요량OD
Dim T As String = "에너지소요량"
Dim Midx As Integer
Public Mon As String
Private ErrMsg As String = "에너지소요량 계산되지 않았습니다"
Public Sub New(Optional ByVal pmIdx As Integer = 0)
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 += Result1o.E소요량(i).난방
I20 += Result1o.E소요량(i).난방보조
I30 += Result1o.E소요량(i).냉방
I40 += Result1o.E소요량(i).냉방보조
I50 += Result1o.E소요량(i).급탕
I60 += Result1o.E소요량(i).급탕보조
IH += Result1o.E소요량(i).난방S
IC += Result1o.E소요량(i).냉방S
IL += Result1o.E소요량(i).조명S
IW += Result1o.E소요량(i).급탕S
IV += Result1o.E소요량(i).환기S
I4 += Result1o.일차E소요량(i).난방전력
I5 += Result1o.일차E소요량(i).냉방전력
I6 += Result1o.일차E소요량(i).조명전력
I7 += Result1o.일차E소요량(i).급탕전력
I8 += Result1o.일차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 - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I4
Me.냉방S = IC - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I5
Me.조명S = IL - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I6
Me.급탕S = IW - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I7
Me.환기S = IV - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I8
Else
Me.난방S = IH
Me.냉방S = IC
Me.조명S = IL
Me.급탕S = IW
Me.환기S = IV
End If
'If I4 = 0 Then
' Me.난방S = 0
'Else
' Me.난방S = IH - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I4
'End If
'If I5 = 0 Then
' Me.냉방S = 0
'Else
' Me.냉방S = IC - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I5
'End If
'If I6 = 0 Then
' Me.조명S = 0
'Else
' Me.조명S = IL - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I6
'End If
'If I7 = 0 Then
' Me.급탕S = 0
'Else
' Me.급탕S = IW - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I7
'End If
'If I8 = 0 Then
' Me.환기S = 0
'Else
' Me.환기S = IV - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방"))
End If
Else
Return 난방 + 난방보조
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방보조에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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 Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방S / Result1o.사용면적.H
End If
End Get
End Property
Property 냉방S() As Decimal
Get
If Midx = 0 Then
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방"))
End If
Else
Return 냉방 + 냉방보조
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방보조에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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 Result1o.사용면적.C = 0 Then
Return 0
Else
Return Me.냉방S / Result1o.사용면적.C
End If
End Get
End Property
Property 조명S() As Decimal
Get
If Midx = 0 Then
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("조명"))
End If
Else
Return Result1o.E분석(Midx).조명에너지요구량
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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 Result1o.사용면적.L = 0 Then
Return 0
Else
Return Me.조명S / Result1o.사용면적.L
End If
End Get
End Property
Property 급탕S() As Decimal
Get
If Midx = 0 Then
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕"))
End If
Else
Return 급탕 + 급탕보조
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("급탕보조에너지소요량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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 Result1o.사용면적.W = 0 Then
Return 0
Else
Return 급탕S / Result1o.사용면적.W
End If
End Get
End Property
Property 환기S() As Decimal
Get
If Midx = 0 Then
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.Select("mon='" & Mon & "'"), DSR.에너지소요량Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("환기"))
End If
Else
Return Result1o.E분석(Midx).환기에너지요구량
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.에너지소요량Row = CType(DSETR1.에너지소요량.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 Result1o.사용면적.V = 0 Then
Return 0
Else
Return 환기S / Result1o.사용면적.V
End If
End Get
End Property
End Class

View File

@@ -0,0 +1,222 @@
Public Class C에너지요구량OD
Dim Midx As Integer
Public Mon As String
Private ErrMsg As String = "에너지요구량 계산되지 않았습니다"
Public Sub New(Optional ByVal pmIdx As Integer = 0)
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 += Result1o.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 += Result1o.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 += Result1o.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 += Result1o.E분석(i).난방에너지요구량열
Next
Return R
Else
Return Result1o.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 += Result1o.E분석(i).난방에너지요구량공조환기
Next
Return R
Else
Return Result1o.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 += Result1o.E요구량(i).난방면적
Next
Return R
Else
If Result1o.사용면적.H = 0 Then
Return 0
Else
Return Me.난방요구량 / Result1o.사용면적.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 += Result1o.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 += Result1o.E분석(i).냉방에너지요구량열
Next
Return R
Else
Return Result1o.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 += Result1o.E분석(i).냉방에너지요구량공조환기
Next
Return R
Else
Return Result1o.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 += Result1o.E요구량(i).냉방면적
Next
Return R
Else
If Result1o.사용면적.C = 0 Then
Return 0
Else
Return Me.냉방요구량 / Result1o.사용면적.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 += Result1o.E요구량(i).조명요구량
Next
Return R
Else
Return Result1o.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 += Result1o.E요구량(i).조명면적
Next
Return R
Else
If Result1o.사용면적.L = 0 Then
Return 0
Else
Return Me.조명요구량 / Result1o.사용면적.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 += Result1o.E요구량(i).급탕요구량
Next
Return R
Else
Return Result1o.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 += Result1o.E요구량(i).급탕면적
Next
Return R
Else
If Result1o.사용면적.W = 0 Then
Return 0
Else
Return Me.급탕요구량 / Result1o.사용면적.W
End If
End If
End Get
End Property
#End Region
End Class

View File

@@ -0,0 +1,268 @@

Public Class C최대냉난방부하OD
Dim T As String = "최대냉난방부하"
Public Sub New() '//존은초기화값을 가지고 생성한다.
End Sub
Public Function Item(Optional ByVal ZoneCode As String = "00") As Citem
Return New Citem(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 DSETR1.최대냉난방부하.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
Dim T As String = "최대냉난방부하"
Private Zone As String
Dim ErrMsg As String = "최대냉난방부하가 계산되지 않았습니다"
Public Sub New(Optional ByVal pZone As String = "00") '//존은초기화값을 가지고 생성한다.
Zone = pZone
End Sub
ReadOnly Property 최대냉난방부하() As Decimal
Get
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, Me.최대난방기기부하 + Me.최대냉방기기부하)
End If
End Get
End Property
Property 최대난방기기부하() As Decimal
Get
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대난방기기부하"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대난방실내부하"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("난방최대가동시간"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대가열성능"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대냉방기기부하"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대냉방실내부하"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("냉방최대가동시간"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대냉각성능"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("최대가습성능"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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(DSETR1.최대냉난방부하.Select("zone='" & Zone & "'"), DSR.최대냉난방부하Row())
If DR.GetUpperBound(0) = -1 Then
MsgBox(ErrMsg)
Return 0
Else
Return TOSG(T, DR(0)("공조풍량"))
End If
End Get
Set(ByVal value As Decimal)
Dim DR() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.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,901 @@
Public Class CSummaryOD
Dim T As String = "요약"
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에너지분석OD In Result1o.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다. '//LoadOfZone 에서 계산완료한다.
Dr.Calc()
Next
Result1o.최대부하.Calc_Summary() '//최대냉난방부하(합계-zone='00') 계산
'Result1o.생산E(0).Calc_Summary() '//합계필드(M00)에데이터를 누적합니다.
Result1o.일차E소요량(0).Calc_Summary() '//1차소요량의 합계데이터를 계산
Result1o.E소요량(0).Calc_Summary() '//1차소요량의 합계데이터를 계산
'TReqUse_M01M12() '//이것들은 현재 사용하지 않고있다.
'TReqUse_M00() '//현재 사용하지않고있따.
Me.Make_ResultSheet() '//최종결과를 보여주는 시트를 작성한다.
DSETR1.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(DSETR1.TReqUse.Select("", "code"), DSR.TReqUseRow())
''////////////////////////////////////
'' 연간 Co2 배출량
''////////////////////////////////////
''조명/환기에너지소요량
'DR(56 - 1)(MOn) = CType(DSETR1.월별에너지분석.Select("월='" & MOn & "' and 존='00'")(0), DSR.월별에너지분석Row).조명요구량
'DR(57 - 1)(MOn) = CType(DSETR1.월별에너지분석.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(DSETR1.TReqUse.Select("", "code"), DSR.TReqUseRow())
'For Each Drs As DSR.TReqUseRow In DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.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(DSETR1.TReqUse.Rows(38 - 1), DSR.TReqUseRow) '//환기에너지 단위면적당 소요량
'Drow.M00 = CSng(IIf(Ru(19) = 0, 0, Ru(37) / Ru(19)))
''//
'Drow = CType(DSETR1.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()
'//에너지요구량
DSETR1.TReqUse.Clear()
DSETR1.TReqUse.AcceptChanges()
Dim Array As New ArrayList
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).요구량)
Next
Set_ReqUseRow("100", "에너지요구량", "[kWh]", "Qb", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).면적당요구량)
Next
Set_ReqUseRow("100", "단위면적당 에너지 요구량", "[kWh/m²]", "Σ(Qb / Ab)", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).난방요구량)
Next
Set_ReqUseRow("110", "난방에너지 요구량", "[kWh]", "QH,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).난방열)
Next
Set_ReqUseRow("110", "난방에너지 요구량(열)", "[kWh]", "Qh,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).난방공조)
Next
Set_ReqUseRow("110", "난방에너지 요구량(공조,환기)", "[kWh]", "Qh*,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).난방면적)
Next
Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QH,b / AH", "=", Array, "N1")
Set_ReqUseRow("110", "사용면적(난방)", "[m²]", "AH", "=", Result1o.사용면적.H, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).냉방요구량)
Next
Set_ReqUseRow("110", "냉방에너지 요구량", "[kWh]", "QC,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).냉방열)
Next
Set_ReqUseRow("110", "냉방에너지 요구량(열)", "[kWh]", "Qc,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).냉방공조)
Next
Set_ReqUseRow("110", "냉방에너지 요구량(공조,환기)", "[kWh]", "Qc*,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).냉방면적)
Next
Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QC,b / AC", "=", Array, "N1")
Set_ReqUseRow("110", "사용면적(냉방)", "[m²]", "AC", "=", Result1o.사용면적.C, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).조명요구량)
Next
Set_ReqUseRow("110", "조명에너지 요구량", "[kWh]", "QL,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).조명면적)
Next
Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QL,b / AL", "=", Array, "N1")
Set_ReqUseRow("110", "사용면적(조명)", "[m²]", "AL", "=", Result1o.사용면적.L, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).급탕요구량)
Next
Set_ReqUseRow("110", "급탕에너지 요구량", "[kWh]", "QW,b", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E요구량(i).급탕면적)
Next
Set_ReqUseRow("110", "단위면적당 요구량", "[kWh/m²]", "QW,b / AW", "=", Array, "N1")
Set_ReqUseRow("110", "사용면적(급탕)", "[m²]", "AW", "=", Result1o.사용면적.W, "N1")
Set_ReqUseRow("110", "사용면적(환기)", "[m²]", "AV", "=", Result1o.사용면적.V, "N1")
'//에너지소요량
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).소요량)
Next
Set_ReqUseRow("200", "에너지소요량", "[kWh]", "Qf", "", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).면적소요량)
Next
Set_ReqUseRow("200", "단위면적당 에너지 소요량", "[kWh/m²]", "Σ(Qf / Ab)", "", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).난방S)
Next
Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "QH,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).난방)
Next
Set_ReqUseRow("210", "난방에너지 소요량", "[kWh]", "Qh,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).난방보조)
Next
Set_ReqUseRow("210", "난방보조에너지 소요량", "[kWh]", "Qh,aux", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).난방면적)
Next
Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QH,f / AH", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).냉방S)
Next
Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "QC,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).냉방)
Next
Set_ReqUseRow("210", "냉방에너지 소요량", "[kWh]", "Qc,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).냉방보조)
Next
Set_ReqUseRow("210", "냉방보조에너지 소요량", "[kWh]", "Qc,aux", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).냉방면적)
Next
Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QC,f / AC", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).조명S)
Next
Set_ReqUseRow("210", "조명에너지 소요량", "[kWh]", "QL,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).조명면적)
Next
Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QL,f / AL", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).급탕S)
Next
Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "QW,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).급탕)
Next
Set_ReqUseRow("210", "급탕에너지 소요량", "[kWh]", "Qw,f", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).급탕보조)
Next
Set_ReqUseRow("210", "급탕보조에너지 소요량", "[kWh]", "Qw,aux", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).급탕면적)
Next
Set_ReqUseRow("210", "단위면적당 소요량", "[kWh/m²]", "QW,f / AW", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.E소요량(i).환기S)
Next
Set_ReqUseRow("210", "환기에너지 소요량", "[kWh]", "QV,aux", "=", Array) '//36
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.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(Result1o.일차E소요량(i).소요량)
Next
Set_ReqUseRow("300", "1차에너지 소요량", "[kWh]", "", "", Array) '//38
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).단위면적)
Next
Set_ReqUseRow("300", "단위면적당 1차에너지 소요량", "[kWh/m²]", "", "", Array, "N1") '//39
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방소요량)
Next
Set_ReqUseRow("310", "난방 1차에너지 소요량", "", "", "", Array) '//40
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방등유)
Next
Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방LNG)
Next
Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방LPG)
Next
Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방지역)
Next
Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.728", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방전력)
Next
Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//45
'Array.Clear() '//--펠렛 100727
'For i As Integer = 0 To 12
' Array.Add(Result1o.일차E소요량(i).난방펠렛)
'Next
'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).난방면적)
Next
Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1") '//46
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방소요량)
Next
Set_ReqUseRow("310", "냉방 1차에너지 소요량", "", "", "", Array) '//47
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방등유)
Next
Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array) '//48
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방LNG)
Next
Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방LPG)
Next
Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//50
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방지역난방열)
Next
Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.728", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방지역냉방열)
Next
Set_ReqUseRow("310", "지역냉방열 소요량", "[kWh]", Pub.Result1o.E변환계수.지역냉방.ToString("N3"), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방전력)
Next
Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//52
'Array.Clear() '//--펠렛 100727
'For i As Integer = 0 To 12
' Array.Add(Result1o.일차E소요량(i).냉방펠렛)
'Next
'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).냉방면적)
Next
Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1") '//53
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕소요량)
Next
Set_ReqUseRow("310", "급탕 1차에너지 소요량", "", "", "", Array) '//54
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕등유)
Next
Set_ReqUseRow("310", "난방유(등유) 소요량", "[kWh]", "1.1", "=", Array) '//55
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕LNG)
Next
Set_ReqUseRow("310", "천연가스(LNG) 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕LPG)
Next
Set_ReqUseRow("310", "액화가스(LPG) 소요량", "[kWh]", "1.1", "=", Array) '//57
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕지역)
Next
Set_ReqUseRow("310", "지역난방열 소요량", "[kWh]", "0.728", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕전력)
Next
Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//59
'Array.Clear() '//--펠렛 100727
'For i As Integer = 0 To 12
' Array.Add(Result1o.일차E소요량(i).급탕펠렛)
'Next
'Set_ReqUseRow("310", "펠렛보일러 소요량", "[kWh]", "1.1", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).급탕면적)
Next
Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1") '//60
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).조명소요량)
Next
Set_ReqUseRow("310", "조명 1차에너지 소요량", "", "", "", Array) '//61
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).조명전력)
Next
Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//62
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).조명면적)
Next
Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1") '//63
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).환기소요량)
Next
Set_ReqUseRow("310", "환기 1차에너지 소요량", "", "", "", Array) '//64
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).환기전력)
Next
Set_ReqUseRow("310", "전력 소요량", "[kWh]", "2.75", "=", Array) '//65
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.일차E소요량(i).환기면적)
Next
Set_ReqUseRow("310", "단위면적당 1차에너지 소요량", "[kWh/m2]", "", "=", Array, "N1") '//66
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).태양광전력생산량)
Next
Set_ReqUseRow("310", "전기에너지 생산량(태양광)", "[kWh]", CStr(Result1o.E변환계수.전력), "=", Array) '//67
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).열병합전력생산량)
Next
Set_ReqUseRow("310", "전기에너지 생산량(열병합)", "[kWh]", CStr(Result1o.E변환계수.전력), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).태양열생산량)
Next
Set_ReqUseRow("310", "열에너지 생산량(태양열)", "[kWh]", "", "=", Array) '//69
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).지열생산량)
Next
Set_ReqUseRow("310", "열에너지 생산량(지열)", "[kWh]", "", "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).면적당생산량태양열)
Next
Set_ReqUseRow("310", "단위면적당 생산량(태양열)", "[kWh]", "", "=", Array, "N1") '//71
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.생산E(i).면적당생산량지열)
Next
Set_ReqUseRow("310", "단위면적당 생산량(지열)", "[kWh]", "", "=", Array, "N1") '//72
'//CO2배출량
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).발생량)
Next
Set_ReqUseRow("400", "연간 CO2 배출량", "[kg CO2]", "", "", Array) '//73
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).단위면적)
Next
Set_ReqUseRow("400", "단위면적당 CO2 배출량", "[kg CO2/m²]", "", "", Array, "N1") '//74
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방발생량)
Next
Set_ReqUseRow("410", "난방 CO2 발생량", "", "", "", Array) '//75
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방등유)
Next
Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.등유), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방LNG)
Next
Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LNG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방LPG)
Next
Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LPG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방지역)
Next
Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.지역난방), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방전력)
Next
Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.지역냉방), "=", Array)
'Array.Clear() '//펠렛
'For i As Integer = 0 To 12
' Array.Add(Result1o.Co2발생량(i).난방펠렛)
'Next
'Set_ReqUseRow("410", "펠렛 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.펠렛), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).난방면적)
Next
Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방발생량)
Next
Set_ReqUseRow("410", "냉방 CO2 발생량", "", "", "", Array) '//82
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방등유)
Next
Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.등유), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방LNG)
Next
Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LNG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방LPG)
Next
Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LPG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방지역난방열)
Next
Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.지역난방), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방지역냉방열)
Next
Set_ReqUseRow("410", "지역냉방열 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.지역냉방), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방전력)
Next
Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array)
'Array.Clear() '//낸ㅇ방펠렛
'For i As Integer = 0 To 12
' Array.Add(Result1o.Co2발생량(i).냉방펠렛)
'Next
'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.펠렛), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).냉방면적)
Next
Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕발생량)
Next
Set_ReqUseRow("410", "급탕 CO2 발생량", "", "", "", Array) '//89
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕등유)
Next
Set_ReqUseRow("410", "난방유(등유) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.등유), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕LNG)
Next
Set_ReqUseRow("410", "천연가스(LNG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LNG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕LPG)
Next
Set_ReqUseRow("410", "액화가스(LPG) CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.LPG), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕지역)
Next
Set_ReqUseRow("410", "지역난방열 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.지역난방), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕전력)
Next
Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array)
'Array.Clear() '//급탕펠렛
'For i As Integer = 0 To 12
' Array.Add(Result1o.Co2발생량(i).급탕펠렛)
'Next
'Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.펠렛), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).급탕면적)
Next
Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).조명발생량)
Next
Set_ReqUseRow("410", "조명 CO2 발생량", "", "", "", Array) '//96
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).조명전력)
Next
Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).조명면적)
Next
Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1")
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).환기발생량)
Next
Set_ReqUseRow("410", "환기 CO2 발생량", "", "", "", Array) '//99
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).환기전력)
Next
Set_ReqUseRow("410", "전력 CO2 발생량", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array)
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).환기면적)
Next
Set_ReqUseRow("410", "단위면적당 CO2 발생량", "[kg CO2]", "", "=", Array, "N1")
'//CO2저감량
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).저감량태양광)
Next
Set_ReqUseRow("410", "전력 CO2 저감량(태양광)", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array) '//102
Array.Clear()
For i As Integer = 0 To 12
Array.Add(Result1o.Co2발생량(i).저감량열병합)
Next
Set_ReqUseRow("410", "전력 CO2 저감량(열병합)", "[kg CO2]", CStr(Result1o.Co2배출계수.전력), "=", Array) '//103
DSETR1.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 = DSETR1.TReqUse.NewTReqUseRow
DR.Code = Format(DSETR1.TReqUse.Rows.Count + 1, "000")
DR.GRP = GRP '//그룹 출력할떄 그룹으로 뽑는다.
DR.Desc = desc '//설명
DR.UNIT = unit '//단위
DR.SIGN = sign '//기호
DR.EQ = eq '//등호 =
DR.M00 = TOSG(T, Value.Item(0))
DR.M01 = TOSG(T, Value.Item(1))
DR.M02 = TOSG(T, Value.Item(2))
DR.M03 = TOSG(T, Value.Item(3))
DR.M04 = TOSG(T, Value.Item(4))
DR.M05 = TOSG(T, Value.Item(5))
DR.M06 = TOSG(T, Value.Item(6))
DR.M07 = TOSG(T, Value.Item(7))
DR.M08 = TOSG(T, Value.Item(8))
DR.M09 = TOSG(T, Value.Item(9))
DR.M10 = TOSG(T, Value.Item(10))
DR.M11 = TOSG(T, Value.Item(11))
DR.M12 = TOSG(T, Value.Item(12))
DR.F = F
DSETR1.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 = DSETR1.TReqUse.NewTReqUseRow
DR.Code = Format(DSETR1.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))
DSETR1.TReqUse.AddTReqUseRow(DR)
End Sub
End Class

View File

@@ -0,0 +1,884 @@
Public Class CZoneOD
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
Dim T As String
T = "건축"
'//2010.02.04추가
Dim i_count_AHU As Integer
Dim Phi As Decimal
'//2010.02.21추가
Dim d_op_mth As Integer
'//2017.06.19 추가
Dim Q_V_win_sink As Decimal, Q_V_win_source As Decimal, H_V_win As Decimal, n_win As Decimal
Dim d_full_mth As Integer
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) --월전체의 루프?
If i_count_HeatCool = 1 AndAlso i_count_month = 1 Then
Console.WriteLine("col")
End If
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)
CalcO.Pub.theta_e(i_count_month) = TOSG(T, IIf(i_count_HeatCool = 1, CalcO.Pub.theta_e_min, CalcO.Pub.theta_e_max))
End If
'//존 루프
For Each DR존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code = '0001'", "code") ' DSET1.tbl_zone.Rows.Count '(3)
'//방식이나 공조는 ZZ는 사용안함이다 V=환기 외기부하처리여부의경우 0001 은 예이다.
If (DR존.냉난방방식 <> "기능없음" Or (DR존.냉난방공조 <> "기능없음" And (DR존.냉난방공조 <> "환기" Or DR존.외기부하처리여부 = ""))) And DR존.면적 <> "0" 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(T, DR존.면적) ' Worksheets("입력존").Range("전용면적1").Offset(0, i_count_zone - 1)
V = TOSG(T, 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_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'"), DS.tbl_profile_odRow())
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(T, DR프로필(0)("day" & Format(i_count_month, "00"))))
End If
'===================================================================================2010.2.21 추가
theta_i_h_soll = TOSG(T, DR프로필(0).난방설정온도) ' Worksheets("설정조건").Range("난방설정온도1").Offset(0, i_count_profile)
theta_i_c_soll = TOSG(T, DR프로필(0).냉방설정온도) ' Worksheets("설정조건").Range("냉방설정온도1").Offset(0, i_count_profile)
Delta_theta_i_NA = TOSG(T, DR프로필(0).야간최저허용온도) ' Worksheets("설정조건").Range("야간최저허용온도1").Offset(0, i_count_profile)
Delta_theta_i_WE = TOSG(T, 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(T, DR프로필(0).사람) * A_B ' Worksheets("설정조건").Range("사람1").Offset(0, i_count_profile) * A_B '(2-118)
Q_I_source_fac = TOSG(T, DR프로필(0).작업보조기기) * A_B ' Worksheets("설정조건").Range("작업보조기기1").Offset(0, i_count_profile) * A_B '(2-119)
V_mech = TOSG(T, 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 > CalcO.Pub.theta_e(i_count_month) Then '//난방설정온도 > 외기온도(난방기)
Q_vh_b_op = V_mech * (theta_i_h_soll - CalcO.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 < CalcO.Pub.theta_e(i_count_month) Then
Q_vh_b_op = V_mech * (CalcO.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(T, 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) 급기 및 배기에 대한 환기회수 필요
n_win = 0.1 ' 최소외기 도입량은 환기기기 유무와 상관없이 적용되는 것으로 평가하기 때문에 자연환기 기본값만 적용
H_T_D = 0
H_T_iu = 0
H_T_iz = 0
Dim Drow프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
'If DR존.조명부하산출방법 = "계산치" Then
'Q_I_L = TOSG(T,T,DR존.조명에너지부하율계산치) * TOSG(T,T,Drow프로필.일일사용시간) * A_B
'Else
'Q_I_L = TOSG(T,T,DR존.조명에너지부하율입력치) * TOSG(T,T,Drow프로필.일일사용시간) * A_B
'End If
Q_I_L = TOSG(T, DR존.조명에너지부하율입력치) * TOSG(T, Drow프로필.일일사용시간) * A_B
'Q_I_L = TOSG(T,T,IIf(DR존.조명부하산출방법 = "계산치", TOSG(T,T,DR존.조명에너지부하율계산치), TOSG(T,T,DR존.조명에너지부하율입력치))) * TOSG(T,T,Drow프로필.일일사용시간) * A_B
Q_w_b = TOSG(T, Drow프로필.일일급탕요구량) * A_B * d_op_mth
'===================================2010.2.21 삭제
'If DR존.조명부하산출방법 = "CALC" Then '//OpWe의 2번은 주말인거 같다.
' '//부하율계산치?입력치구분
' Q_w_b = TOSG(T,T,DR존.급탕요구량) * A_B * Calco.Pub.d_op_mth(i_count_month)
'Else
' Q_I_L = 0 '주말 소등으로 설정
' Q_w_b = 0 '주말은 급탕사용안함
'End If
'===================================2010.2.21 삭제
'Log.AppendLine(" >> 현재존을 사용하는 각 입력면(" & DSET1.tbl_myoun.Select("존분류='" & DR존.code & "'").GetUpperBound(0) & ")으로부터 데이터를 누적")
For Each Dr입력면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0'")
Dim CodeYk As String = Dr입력면.열관류율2
Dim DrYKRows() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" + CodeYk + "'")
If DrYKRows.Length = 1 Then
'//170601
Dim DrYKRow As DS.tbl_ykRow = DrYKRows(0)
If DrYKRow.열교방지구조 Then
Delta_U_WB = 0.1
Else
Delta_U_WB = 0.15
End If
'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
Else
Delta_U_WB = 0 '//입력면에 연결된 열관류율 데이터가 없는 경우
End If
'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입력면.열관류율 >> Calco.Get_열관류율(Dr입력면)
H_T_D = H_T_D + CalcO.Get_열관류율(Dr입력면) * TOSG(T, Dr입력면.건축부위면적) + Delta_U_WB * TOSG(T, 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 CalcO.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(T, 1 / (1 / CalcO.Get_열관류율(Dr입력면) + 1 / 30))
Case "중간" '중간"
U_blinds = TOSG(T, 1 / (1 / CalcO.Get_열관류율(Dr입력면) + 1 / 3))
Case "외부" ' '외부"
U_blinds = TOSG(T, 1 / (1 / CalcO.Get_열관류율(Dr입력면) + 1 / 5 + 1 / 10))
End Select
End If
Else
U_blinds = CalcO.Get_열관류율(Dr입력면) '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(T, Dr입력면.건축부위면적) + Delta_U_WB * TOSG(T, Dr입력면.건축부위면적) '(2-44) Delta_U_WB는 외단열 0.1, 내단열 0.15
Else
H_T_iu = H_T_iu + U_blinds * TOSG(T, Dr입력면.건축부위면적)
End If
'=========================================================================================================2010.03.20 수정
Case "내벽" ' "내벽"
H_T_iu = H_T_iu + CalcO.Get_열관류율(Dr입력면) * TOSG(T, Dr입력면.건축부위면적) '(2-48)
Case "간벽" '"간벽"
H_T_iz = H_T_iz + CalcO.Get_열관류율(Dr입력면) * TOSG(T, Dr입력면.건축부위면적) '(2-52)
Case Else
MsgBox("입력면 건축부위방식이 없습니다", MsgBoxStyle.Critical, "확인")
Return False
End Select
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(T, 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_mech_theta) '(2-22, 129) 추후 H_V_z 추가
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(T, 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(T, 0.13 * t_NA * Math.Exp(-tau / 250) / 24) '(2-28) 감소가동
Case "가동정지" '가동정지"
f_NA = TOSG(T, 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 - CalcO.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(T, 0.2 * (1 - 0.4 * tau / 250)) '(2-31) 난방감소
Case "가동정지" '가동정지"
f_we = TOSG(T, 0.3 * (1 - 0.2 * tau / 250)) '(2-32) 난방정지식
End Select
theta_i_h = theta_i_h_soll - f_we * (theta_i_h_soll - CalcO.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(T, theta_i_h_soll - 0.7 * (theta_i_h_soll - CalcO.Pub.theta_e(i_count_month)))
Else
theta_i = theta_i_c_soll '24'에너지 사용량 계산할때 24 사용
theta_z = theta_i_c_soll
theta_u = TOSG(T, theta_i_c_soll - 0.7 * (theta_i_c_soll - CalcO.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(T, IIf(i_count_HeatCool = 1, 27, 16))
theta_V_mech = CalcO.Pub.theta_e(i_count_month) 'theta_V_mech_RLT '(2-92) 공조처리된 급기온도(도표 3-3, 3-4, 7-5) 난방 27, 냉방 16으로 설정
'=======================================================================2010.02.04 추가부분 시작
Dim 공조기기갯수 As Integer = DSET1.tbl_kongjo.Select("code <> '0'").Length
If 공조기기갯수 > 0 Then '//공조기기가 있는 경우 처리 171225
'If DR존.냉난방공조처리시스템 <> "0" Or DR존.냉난방공조 = "환기" Then '//냉난방공조처리시스템이 선택되어있고 공조가 환기라면
'//공조처리스템과 일치하는 공조기기(tbl_kongjo) 를 찾아서 계산한다.
Dim 풍량합_총 As Double = 0
Dim 가중풍량 As Double = 0
Dim 가중효율 As Double = 0
For Each drKJ As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("code <> '0'")
Dim 풍량합 As Double = (TOSG(drKJ.급기풍량) + TOSG(drKJ.배기풍량)) * TOSG(drKJ.대수) '==========2017.12.28 공조기 대수 추가
풍량합_총 += 풍량합
Dim 효율 As Double = 0
If drKJ.열교환기유형 = "전열교환" Or drKJ.열교환기유형 = "현열교환" Then
If theta_i > CalcO.Pub.theta_e(i_count_month) Then
'//난방
효율 = TOSG(drKJ.열회수율) / 100
Else
'//냉방
효율 = TOSG(drKJ.열회수율_냉방) / 100
End If
Else
효율 = 0
End If
가중풍량 += (풍량합 * 효율)
Next
가중효율 = 가중풍량 / 풍량합_총
' Dim DR() As DS.tbl_kongjoRow = CType(DSET1.tbl_kongjo.Select("code='" & DR존.냉난방공조처리시스템 & "' and code <> '0'"), DS.tbl_kongjoRow())
Phi = 가중효율 ' 0.8
theta_V_mech = CalcO.Pub.theta_e(i_count_month) + Phi * (theta_i - CalcO.Pub.theta_e(i_count_month))
'End If
Else
Phi = 0
End If
'=======================================================================2010.02.04 추가부분 끝
If theta_i > CalcO.Pub.theta_e(i_count_month) Then
Q_V_inf_sink = H_V_inf * (theta_i - CalcO.Pub.theta_e(i_count_month)) * t_24 '(2-56)
Q_V_win_sink = H_V_win * (theta_i - CalcO.Pub.theta_e(i_count_month)) * t_24 '//2011.04.04 추가
Else
Q_V_inf_source = H_V_inf * (CalcO.Pub.theta_e(i_count_month) - theta_i) * t_24 '(2-
Q_V_win_source = H_V_win * (CalcO.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)
'//Console.WriteLine(String.Format("mon={0},QV_sink={1},{2},{3},{4}", i_count_month, Q_V_sink, Q_V_inf_sink, Q_V_mech_sink, Q_V_z_sink))
Q_V_source = Q_V_inf_source + Q_V_mech_source + Q_V_z_source + Q_V_win_source '(2-
If theta_i > CalcO.Pub.theta_e(i_count_month) Then
Q_T_e_sink = H_T_D * (theta_i - CalcO.Pub.theta_e(i_count_month)) * t_24 '(2-42)
Else
Q_T_e_source = H_T_D * (CalcO.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 > CalcO.Pub.theta_e(i_count_month) Then
Q_T_s_sink = H_T_s * (theta_i - CalcO.Pub.theta_e(i_count_month)) * t_24 '(2-53) 추후수정
Else
Q_T_s_source = H_T_s * (CalcO.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 DSET1.tbl_myoun.Select("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 * CalcO.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 * TOSG(T, DRF입력면.열관류율) * TOSG(T, DRF입력면.건축부위면적) * (F_f * h_r * Delta_theta_er - alpa * CalcO.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 * TOSG(T, DRF입력면.열관류율) * TOSG(T, DRF입력면.건축부위면적) * (alpa * CalcO.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(T, 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(T, 0.65 * tau_e_B + 0.15 * rho_e_B)
rho_e_B_corr = TOSG(T, 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(T, DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall)
If DRF입력면.블라인드위치.Trim <> "" AndAlso TOSG(T, 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(T, 1 / (1 / TOSG(T, DRF입력면.열관류율) + 1 / 30))
g_blinds = g * (1 - g * rho_e_B - (1 - tau_e_B - rho_e_B) * U_blinds / 30)
Case "중간" '중간"
U_blinds = TOSG(T, 1 / (1 / TOSG(T, DRF입력면.열관류율) + 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(T, 1 / (1 / TOSG(T, DRF입력면.열관류율) + 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 - CalcO.Pub.F_sh_gl(i_count_Is - 1, 1 - 1)) * g + CalcO.Pub.F_sh_gl(i_count_Is - 1, 1 - 1) * g_blinds
Else
g_blinds = (1 - CalcO.Pub.F_sh_gl(i_count_Is - 1, 7 - 1)) * g + CalcO.Pub.F_sh_gl(i_count_Is - 1, 7 - 1) * g_blinds
End If
Else
g_blinds = (1 - CalcO.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1)) * g + CalcO.Pub.F_sh_gl(i_count_Is - 1, i_count_month - 1) * g_blinds
End If
'===========================================================================2010.02.27 추가
Else
g_blinds = TOSG(T, DRF입력면.투과율) ' Range("에너지투과율" & i_sub_wall & "").Offset(0, i_count_wall)
End If
Q_S_source = TOSG(T, Q_S_source + F__F * TOSG(T, DRF입력면.건축부위면적) * F_S * F_W * F_V * g_blinds * Math.Cos(1.33 * TOSG(T, DRF입력면.수평차양각) * 3.141592 / 180) * (1 - TOSG(T, DRF입력면.수직차양각) / 300) * CalcO.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(T, (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 * Calco.Pub.d_we(i_count_month)
'=================================================2010.2.21 삭제
Dim DRProf As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
'If DR존.조명부하산출방법 = "계산치" Then 'Worksheets("조명").Range("조명부하산출방법1").Offset(0, i_count_zone - 1) = "계산치" Then
'Q_l_b = TOSG(T,T,DR존.조명에너지부하율계산치) * TOSG(T,T,DRProf.일일사용시간) * A_B * d_op_mth
'Else
'Q_l_b = TOSG(T,T,DR존.조명에너지부하율입력치) * TOSG(T,T,DRProf.일일사용시간) * A_B * d_op_mth
'End If
Q_l_b = TOSG(T, DR존.조명에너지부하율입력치) * TOSG(T, DRProf.일일사용시간) * A_B * d_op_mth
Q_w_b = TOSG(T, 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(T, 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_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
'If DR존.조명부하산출방법 = "계산치" Then
'Q_l_b = TOSG(T,T,DR존.조명에너지부하율계산치) * TOSG(T,T,DRProf.일일사용시간) * A_B * d_op_mth
'Else
'Q_l_b = TOSG(T,T,DR존.조명에너지부하율입력치) * TOSG(T,T,DRProf.일일사용시간) * A_B * d_op_mth
'End If
Q_l_b = TOSG(T, DR존.조명에너지부하율입력치) * TOSG(T, DRProf.일일사용시간) * A_B * d_op_mth
Q_w_b = TOSG(T, DRProf.일일급탕요구량) * A_B * d_op_mth '===============d_op(i_count_month) 2010.2.21 수정
End If
Dim Dr최대부하 As New C최대냉난방부하OD.Citem(DR존.code) ' DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & DR존.code & "'")(0), DSR.최대냉난방부하Row)
If i_count_HeatCool = 1 Then
If i_count_month = 0 Then '//0번시트는최대 냉난방부하 시트이다.
Dr최대부하.최대난방기기부하 = TOSG(T, (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에너지분석OD(i_count_month, DR존.code)
'Dim Dr월에너지요구량 As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
'Dr월에너지요구량 = DSETR1.에너지분석및요구량.Rows(i_count_month - 1) '//각 월별 시트에 값을 셋트(에너지분석및요구량 테이블에 들어있다)
If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "난방" Then '//냉난방,난방
Dr월에너지요구량.난방에너지요구량열 = TOSG(T, (Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제
Dr월에너지요구량.난방에너지요구량공조환기 = TOSG(T, 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(T, (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(T, 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(T, (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(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
If DR존.냉난방방식 = "냉난방" Or DR존.냉난방방식 = "냉방" Then '//냉난방/냉방
Dr월에너지요구량.냉방요구량열 = TOSG(T, (Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제
Dr월에너지요구량.냉방요구량공조 = TOSG(T, Q_vh_b_op / 1000)
Else
If DR존.냉난방공조 = "냉난방" Or DR존.냉난방공조 = "냉방" Then '//냉난방/냉방
Dr월에너지요구량.냉방요구량열 = 0
Dr월에너지요구량.냉방요구량공조 = TOSG(T, (Q_h_b_op) / 1000) '=================== Q_h_b_we 2010.2.21 삭제
Else
If (DR존.냉난방공조 = "난방" Or DR존.냉난방공조 = "환기") And DR존.냉난방공조 = "" Then '//난방/환기/예
Dr월에너지요구량.냉방요구량열 = 0
Dr월에너지요구량.냉방요구량공조 = TOSG(T, 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 CAirHandlingOD
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에너지분석OD In Result1o.E분석 '//12달치의 각존들의 데이터를 가지고 합계내역을 추린다.
Work_plus()
Dr.Calc()
Next
DSETR1.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(Calco.Pub.d_full(i_count_month))
'===============================================2010.2.21 수정
theta_e_month = Calco.Pub.theta_e(i_count_month)
'///난방
Calco.Heating.Calc_WaterheatingSystem(i_count_month, d_full_mth, theta_e_month) '//급탕소요량 '========2010.2.21 수정
Calco.AirHandling.Calc_AirHandling(i_count_month, d_full_mth) '//환기? '========2010.2.21 수정
If Result1o.E분석(i_count_month).난방에너지요구량 <> 0 Then Calco.Heating.Calc_HeatingSystem(i_count_month, theta_e_month) '//난방소요량
'///냉방
If Result1o.E분석(i_count_month).냉방에너지요구량 <> 0 Then Calco.Cooling.Calc_CoolingSystem(i_count_month, theta_e_month)
Next
DSETR1.AcceptChanges()
Return True
End Function
End Class