Source code for sap2012.SAP_appendices.solar_gains_appendix_U3

# -*- coding: utf-8 -*-

import math

[docs]def solar_gains_appendix_U3 ( solar_radiation_horizontal_plane_monthly_table_U3, solar_declination_monthly_table_U3, location_latitude_table_U4, p_tilt, ): """Solar gains calculations as given in Appendix U3. :param solar_radiation_horizontal_plane_monthly_table_U3: :type solar_radiation_horizontal_plane_monthly_table_U3: list(float) :param solar_declination_monthly_table_U3: :type solar_declination_monthly_table_U3: list(float) :param location_latitude_table_U4: :type location_latitude_table_U4: float :param p_tilt: :type p_tilt: float :returns: A dictionary with keys of ( solar_flux_north, solar_flux_north_east, solar_flux_east, solar_flux_south_east, solar_flux_south, solar_flux_south_west, solar_flux_west, solar_flux_north_west ) - **solar_flux_north** (`list` (`float`)) - - **solar_flux_north_east** (`list` (`float`)) - - **solar_flux_east** (`list` (`float`)) - - **solar_flux_south_east** (`list` (`float`)) - - **solar_flux_south** (`list` (`float`)) - - **solar_flux_south_west** (`list` (`float`)) - - **solar_flux_west** (`list` (`float`)) - - **solar_flux_north_west** (`list` (`float`)) - :rtype: dict """ solar_declination_radians = [] for i in range(12): solar_declination_radians.append(solar_declination_monthly_table_U3[i] * (math.pi/180)) p_radians = p_tilt * (math.pi / 180) latitude_radians = location_latitude_table_U4 * (math.pi/ 180) k_N_table_U5 = [26.3, -38.5, 14.8, -16.5, 27.3, -11.9, -1.06, 0.0872, -0.191] k_NE_NW_table_U5 = [0.165,-3.68,3,6.38,-4.53,-0.405,-4.38,4.89,-1.99] k_E_W_table_U5 = [1.44,-2.36,1.07,-0.514,1.89,-1.64,-0.542,-0.757,0.604] k_SE_SW_table_U5 = [-2.95,2.89,1.17,5.67,-3.54,-4.28,-2.72,-0.25,3.07] k_S_table_U5 = [-0.66,-0.106,2.93,3.63,-0.374,-7.4,-2.71,-0.991,4.59] A_N =k_N_table_U5[0] * math.sin(p_radians/2)**3 + k_N_table_U5[1] * math.sin(p_radians/2)**2 + k_N_table_U5[2] * math.sin(p_radians/2) A_NE =k_NE_NW_table_U5[0] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[1] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[2] * math.sin(p_radians/2) A_NW =k_NE_NW_table_U5[0] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[1] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[2] * math.sin(p_radians/2) A_E =k_E_W_table_U5[0] * math.sin(p_radians/2)**3 + k_E_W_table_U5[1] * math.sin(p_radians/2)**2 + k_E_W_table_U5[2] * math.sin(p_radians/2) A_SE =k_SE_SW_table_U5[0] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[1] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[2] * math.sin(p_radians/2) A_S =k_S_table_U5[0] * math.sin(p_radians/2)**3 + k_S_table_U5[1] * math.sin(p_radians/2)**2 + k_S_table_U5[2] * math.sin(p_radians/2) A_SW =k_SE_SW_table_U5[0] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[1] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[2] * math.sin(p_radians/2) A_W =k_E_W_table_U5[0] * math.sin(p_radians/2)**3 + k_E_W_table_U5[1] * math.sin(p_radians/2)**2 + k_E_W_table_U5[2] * math.sin(p_radians/2) B_N =k_N_table_U5[3] * math.sin(p_radians/2)**3 + k_N_table_U5[4] * math.sin(p_radians/2)**2 + k_N_table_U5[5] * math.sin(p_radians/2) B_NE =k_NE_NW_table_U5[3] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[4] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[5] * math.sin(p_radians/2) B_NW =k_NE_NW_table_U5[3] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[4] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[5] * math.sin(p_radians/2) B_E =k_E_W_table_U5[3] * math.sin(p_radians/2)**3 + k_E_W_table_U5[4] * math.sin(p_radians/2)**2 + k_E_W_table_U5[5] * math.sin(p_radians/2) B_SE =k_SE_SW_table_U5[3] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[4] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[5] * math.sin(p_radians/2) B_S =k_S_table_U5[3] * math.sin(p_radians/2)**3 + k_S_table_U5[4] * math.sin(p_radians/2)**2 + k_S_table_U5[5] * math.sin(p_radians/2) B_SW =k_SE_SW_table_U5[3] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[4] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[5] * math.sin(p_radians/2) B_W =k_E_W_table_U5[3] * math.sin(p_radians/2)**3 + k_E_W_table_U5[4] * math.sin(p_radians/2)**2 + k_E_W_table_U5[5] * math.sin(p_radians/2) C_N =k_N_table_U5[6] * math.sin(p_radians/2)**3 + k_N_table_U5[7] * math.sin(p_radians/2)**2 + k_N_table_U5[8] * math.sin(p_radians/2) + 1 C_NE =k_NE_NW_table_U5[6] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[7] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[8] * math.sin(p_radians/2) + 1 C_NW =k_NE_NW_table_U5[6] * math.sin(p_radians/2)**3 + k_NE_NW_table_U5[7] * math.sin(p_radians/2)**2 + k_NE_NW_table_U5[8] * math.sin(p_radians/2) + 1 C_E =k_E_W_table_U5[6] * math.sin(p_radians/2)**3 + k_E_W_table_U5[7] * math.sin(p_radians/2)**2 + k_E_W_table_U5[8] * math.sin(p_radians/2) + 1 C_SE =k_SE_SW_table_U5[6] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[7] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[8] * math.sin(p_radians/2) + 1 C_S =k_S_table_U5[6] * math.sin(p_radians/2)**3 + k_S_table_U5[7] * math.sin(p_radians/2)**2 + k_S_table_U5[8] * math.sin(p_radians/2) + 1 C_SW =k_SE_SW_table_U5[6] * math.sin(p_radians/2)**3 + k_SE_SW_table_U5[7] * math.sin(p_radians/2)**2 + k_SE_SW_table_U5[8] * math.sin(p_radians/2) + 1 C_W =k_E_W_table_U5[6] * math.sin(p_radians/2)**3 + k_E_W_table_U5[7] * math.sin(p_radians/2)**2 + k_E_W_table_U5[8] * math.sin(p_radians/2) + 1 R_N = [] for i in range(12): R_N.append(A_N * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_N * math.cos(latitude_radians - solar_declination_radians[i]) + C_N) R_NE = [] for i in range(12): R_NE.append(A_NE * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_NE * math.cos(latitude_radians - solar_declination_radians[i]) + C_NE) R_E = [] for i in range(12): R_E.append(A_E * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_E * math.cos(latitude_radians - solar_declination_radians[i]) + C_E) R_SE = [] for i in range(12): R_SE.append(A_SE * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_SE * math.cos(latitude_radians - solar_declination_radians[i]) + C_SE) R_S = [] for i in range(12): R_S.append(A_S * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_S * math.cos(latitude_radians - solar_declination_radians[i]) + C_S) R_SW = [] for i in range(12): R_SW.append(A_SW * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_SW * math.cos(latitude_radians - solar_declination_radians[i]) + C_SW) R_W = [] for i in range(12): R_W.append(A_W * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_W * math.cos(latitude_radians - solar_declination_radians[i]) + C_W) R_NW = [] for i in range(12): R_NW.append(A_NW * math.cos(latitude_radians - solar_declination_radians[i])**2 + B_NW * math.cos(latitude_radians - solar_declination_radians[i]) + C_NW) solar_flux_north = [] for i in range(12): solar_flux_north.append(R_N[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_north_east = [] for i in range(12): solar_flux_north_east.append(R_NE[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_east = [] for i in range(12): solar_flux_east.append(R_E[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_south_east = [] for i in range(12): solar_flux_south_east.append(R_SE[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_south = [] for i in range(12): solar_flux_south.append(R_S[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_south_west = [] for i in range(12): solar_flux_south_west.append(R_SW[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_west = [] for i in range(12): solar_flux_west.append(R_W[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) solar_flux_north_west = [] for i in range(12): solar_flux_north_west.append(R_NW[i] * solar_radiation_horizontal_plane_monthly_table_U3[i]) return dict(solar_flux_north=solar_flux_north, solar_flux_north_east=solar_flux_north_east, solar_flux_east=solar_flux_east, solar_flux_south_east=solar_flux_south_east, solar_flux_south=solar_flux_south, solar_flux_south_west=solar_flux_south_west, solar_flux_west=solar_flux_west, solar_flux_north_west=solar_flux_north_west, )