def getzenithangle(declination, latitude, hourlyangle): result = None if cuda_can_help: func = mod_getzenitangle.get_function("getzenitangle") result = gpu._gpu_exec(func, hourlyangle, latitude, declination) else: hourlyangle = np.deg2rad(hourlyangle) lat = np.deg2rad(latitude) dec = np.deg2rad(declination) # TODO: Evaluate this situation. Shapes: dec:(252) ; lat:(242,384) result = np.rad2deg(np.arccos(np.sin(dec) * np.sin(lat) + np.cos(dec) * np.cos(lat) * np.cos(hourlyangle))) return result
def getdeclination(gamma): result = None if cuda_can_help: func = mod_getdeclination.get_function("getdeclination") #sh = gamma.shape #print "\n", #for i in range(sh[0]): # print "\r--->" + str(i).zfill(3) + "/" + str(sh[0]-1).zfill(3), result = gpu._gpu_exec(func, gamma) else: gamma = np.deg2rad(gamma) result = np.rad2deg(0.006918 - 0.399912 * np.cos(gamma) + 0.070257 * np.sin(gamma) - 0.006758 * np.cos(2 * gamma) + 0.000907 * np.sin(2 * gamma) - 0.002697 * np.cos(3 * gamma) + 0.00148 * np.sin(3 * gamma)) return result
def getexcentricity(gamma): result = None if cuda_can_help: func = mod_getexcentricity.get_function("getexcentricity") sh = gamma.shape show("") for i in range(sh[0]): show("\r--->" + str(i).zfill(3) + "/" + str(sh[0]-1).zfill(3)) gamma[i] = gpu._gpu_exec(func, gamma[i]) result = gamma else: gamma = np.deg2rad(gamma) result = 1.000110 + 0.034221 * np.cos(gamma) + 0.001280 * np.sin(gamma) + 0.000719 * np.cos(2 * gamma) + 0.000077 * np.sin(2 * gamma) return result
def getalbedo(radiance, totalirradiance, excentricity, zenitangle): result = None if cuda_can_help: func = mod_getalbedo.get_function("getalbedo") sh = radiance.shape show("") for i in range(sh[0]): show("\r--->" + str(i).zfill(3) + "/" + str(sh[0]).zfill(3)) radiance[i] = gpu._gpu_exec(func, radiance[i], totalirradiance, excentricity[i], zenitangle[i]) result = radiance else: zenitangle = np.deg2rad(zenitangle) result = (np.pi * radiance)/(totalirradiance * excentricity * np.cos(zenitangle)) return result
def getsatellitalzenithangle(lat, lon, sub_lon): result = None rpol = 6356.5838 req = 6378.1690 h = 42164.0 if cuda_can_help: func = mod_getsatellitalzenithangle.get_function("getsatellitalzenithangle") lat = gpu._gpu_exec(func, lat, lon, sub_lon, rpol, req, h) result = lat else: lat = np.deg2rad(lat) lon_diff = np.deg2rad(lon - sub_lon) lat_cos_only = np.cos(lat) re = rpol /(np.sqrt(1-(req**2 - rpol**2)/(req**2)*np.power(lat_cos_only,2))) lat_cos = re * lat_cos_only r1 = h - lat_cos * np.cos(lon_diff) r2 = - lat_cos * np.sin(lon_diff) r3 = re * np.sin(lat) rs = np.sqrt(r1**2 + r2**2 + r3**2) result = np.rad2deg(np.pi - np.arccos((h**2 - re**2 - rs**2)/(-2 * re * rs))) return result