initial commit
This commit is contained in:
866
ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb
Normal file
866
ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb
Normal 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
|
||||
182
ArinWarev1/Calculator-OD/CShared.vb
Normal file
182
ArinWarev1/Calculator-OD/CShared.vb
Normal 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
|
||||
438
ArinWarev1/Calculator-OD/Calculator.vb
Normal file
438
ArinWarev1/Calculator-OD/Calculator.vb
Normal 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
|
||||
|
||||
488
ArinWarev1/Calculator-OD/Cooling/CCooling.vb
Normal file
488
ArinWarev1/Calculator-OD/Cooling/CCooling.vb
Normal 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
|
||||
1983
ArinWarev1/Calculator-OD/Heating/CHeating.vb
Normal file
1983
ArinWarev1/Calculator-OD/Heating/CHeating.vb
Normal file
File diff suppressed because it is too large
Load Diff
717
ArinWarev1/Calculator-OD/Renewable/CRenewable.vb
Normal file
717
ArinWarev1/Calculator-OD/Renewable/CRenewable.vb
Normal 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
|
||||
732
ArinWarev1/Calculator-OD/Result/C1차소요량.vb
Normal file
732
ArinWarev1/Calculator-OD/Result/C1차소요량.vb
Normal 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
|
||||
425
ArinWarev1/Calculator-OD/Result/CCo2발생량.vb
Normal file
425
ArinWarev1/Calculator-OD/Result/CCo2발생량.vb
Normal 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
|
||||
43
ArinWarev1/Calculator-OD/Result/CResult.vb
Normal file
43
ArinWarev1/Calculator-OD/Result/CResult.vb
Normal 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
|
||||
59
ArinWarev1/Calculator-OD/Result/CZones.vb
Normal file
59
ArinWarev1/Calculator-OD/Result/CZones.vb
Normal 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
|
||||
|
||||
76
ArinWarev1/Calculator-OD/Result/C범용.vb
Normal file
76
ArinWarev1/Calculator-OD/Result/C범용.vb
Normal 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
|
||||
358
ArinWarev1/Calculator-OD/Result/C사용면적.vb
Normal file
358
ArinWarev1/Calculator-OD/Result/C사용면적.vb
Normal 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
|
||||
272
ArinWarev1/Calculator-OD/Result/C생산에너지.vb
Normal file
272
ArinWarev1/Calculator-OD/Result/C생산에너지.vb
Normal 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
|
||||
|
||||
355
ArinWarev1/Calculator-OD/Result/C에너지분석.vb
Normal file
355
ArinWarev1/Calculator-OD/Result/C에너지분석.vb
Normal 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
|
||||
402
ArinWarev1/Calculator-OD/Result/C에너지소요량.vb
Normal file
402
ArinWarev1/Calculator-OD/Result/C에너지소요량.vb
Normal 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
|
||||
222
ArinWarev1/Calculator-OD/Result/C에너지요구량.vb
Normal file
222
ArinWarev1/Calculator-OD/Result/C에너지요구량.vb
Normal 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
|
||||
268
ArinWarev1/Calculator-OD/Result/C최대냉난방부하.vb
Normal file
268
ArinWarev1/Calculator-OD/Result/C최대냉난방부하.vb
Normal 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
|
||||
901
ArinWarev1/Calculator-OD/Summary/CSummary.vb
Normal file
901
ArinWarev1/Calculator-OD/Summary/CSummary.vb
Normal 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
|
||||
884
ArinWarev1/Calculator-OD/Zone/CZone.vb
Normal file
884
ArinWarev1/Calculator-OD/Zone/CZone.vb
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user