日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

地外水平/斜面的太阳理论辐照度计算及其python实现

發布時間:2023/12/20 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 地外水平/斜面的太阳理论辐照度计算及其python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

地外水平/斜面的太陽理論輻照度計算及其python實現

  • 引入
    • 水平理論輻照度
    • 任意斜面的太陽輻照度
    • 代碼

引入

最近項目需要計算地外水平/斜面太陽理論輻照度,為此搜集了資料,并在python中進行了實現,現將其分享于此。

水平理論輻照度

地球與太陽之間的相對運動,即地球自轉與公轉,會對理論輻照度產生影響。在忽略極移和地軸進動微小影響的條件下地球大氣層上界單位面積、單位時間接收的太陽輻射與日地距離的平方成反比。地球自轉對應太陽時角和太陽高度角的變化,公轉對應太陽赤緯和日地距離的變化。

水平太陽輻照度的計算公式為:




在計算某地太陽福射時采用的是當地的真太陽時,所以需要根據當地的區時和經度來求取對應的真太陽時和太陽時角,此求取過程分步完成:①根據當地經度對已知的當地區時進行修正得到當地的地方時;②根據真太陽時和平太陽時之間的時差對該地方時進行修正得到當地的真太陽時;③根據當地的真太陽時計算得到當地區時對應的太陽時角。

按照上式,可計算得到指定地點、指定日期的水平地外輻照度理論值,并繪制對應的地外輻照度理論值曲線。

任意斜面的太陽輻照度

代碼

python代碼如下,略長,主要牽扯到真太陽時轉換數組的賦值。
代碼最后有運行示例。

import pandas as pd import numpy as np import math from datetime import datetime, timedeltadef calculate_sun_time(time_str, latitude, longitude, tilt, azimuth, longitude_time):"""從datetime類型的時間計算日出日落及白天時間"""cur_time = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')day_year = int(datetime.strftime(cur_time, '%j')) # j是積日delta = 23.45 / 180 * math.pi * math.sin(2 * math.pi * (284 + day_year) / 365) # 計算太陽赤緯(弧度)latitude = latitude / 180 * math.pi # 緯度轉換為弧度cos_omega = - math.sin(delta) * math.sin(latitude) / (math.cos(delta) * math.cos(latitude))omega = math.acos(cos_omega) # 計算真太陽時時角true_time_down = (omega * 180 / math.pi / 15 + 12) * 60 # 計算基于真太陽時的日落時間true_time_up = 60 * 24 - true_time_downtime_sun = (true_time_down - 12 * 60) * 2# 計算偏差時間bias_time = dif_true_solar_time(day_year).split(':')if '-' in bias_time[0]:pos_flag = -1else:pos_flag = 1bias_minute = int(bias_time[0])bias_second = int(bias_time[1])bias = pos_flag * (abs(bias_minute) + bias_second / 60)minute_sun_down = true_time_down - bias - 4 * (longitude - longitude_time)minute_sun_up = true_time_up - bias - 4 * (longitude - longitude_time)return time_sun, minute_sun_up, minute_sun_downdef calculate_irradiance_base(day_year, minute_day, latitude, longitude, tilt, azimuth, longitude_time):"""根據給定的日期與時間,計算當前位置的大氣外理論輻照度,只適用于南北回歸線之外的情況,假定電站方位角為0北緯為正,東經為正latitude:電站所在維度longitude:電站所在經度tilt:電站光伏板安裝角度azimuth:電站斜面方位角longitude_time:電站所采用時區的中心經度"""G_0 = 1368 # 取太陽常數為1368(W/m2)k = 1 + 0.034 * (math.cos(2 * math.pi / 365 * day_year)) # 計算日地距離修正系數delta = 23.45 / 180 * math.pi * math.sin(2 * math.pi * (284 + day_year) / 365) # 計算太陽赤緯(弧度)# 計算偏差時間bias_time = dif_true_solar_time(day_year).split(':')if '-' in bias_time[0]:pos_flag = -1else:pos_flag = 1bias_minute = int(bias_time[0])bias_second = int(bias_time[1])bias = pos_flag * (abs(bias_minute) + bias_second / 60)true_time = minute_day + 4 * (longitude - longitude_time) + bias # 計算真太陽時omega = (true_time / 60 - 12) * 15 / 180 * math.pi # 計算太陽時角(弧度)latitude = latitude / 180 * math.pi # 緯度轉換為弧度# theta為天頂角cos_theta = math.sin(delta)*math.sin(latitude) + math.cos(delta)*math.cos(latitude)*math.cos(omega)h = math.pi / 2 - math.acos(cos_theta) # 太陽高度角# 當天頂角cos<=0時,認為無光# if cos_theta <= 0:# G = 0if tilt != 0:tilt = tilt / 180 * math.piazimuth = azimuth / 180 * math.picos_alpha = (math.sin(h) * math.sin(latitude) - math.sin(delta)) / (math.cos(h) * math.cos(latitude))alpha = math.acos(cos_alpha) # 計算太陽方位角# 不用sin的原因是,asin無法分辨alpha大于90°的情況# sin_alpha = -math.cos(delta) * math.sin(omega) / math.cos(h)# if sin_alpha > 1:# sin_alpha = (math.sin(h) * math.sin(latitude) - math.sin(delta)) / (math.cos(h) * math.cos(latitude))# alpha = math.asin(sin_alpha) # 計算太陽方位角if true_time > 60 * 12: # 使下午的太陽方位角正常alpha = -alpha# 計算對于斜面的太陽入射角cos_i = math.cos(tilt) * math.sin(h) + math.sin(tilt) * math.cos(h) * math.cos(alpha - azimuth)G = k * G_0 * cos_ielse:G = k * G_0 * cos_thetaif G < 0:G = 0return Gdef calculate_irradiance(time_str, latitude, longitude, tilt, azimuth, longitude_time):"""從datetime類型的時間計算當前大氣外理論輻照度"""cur_time = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')day_year = int(datetime.strftime(cur_time, '%j')) # j是積日hour = int(datetime.strftime(cur_time, "%H"))minute = int(datetime.strftime(cur_time, "%M"))minute_day = 60 * hour + minute # 計算當前時刻的日分鐘數return calculate_irradiance_base(day_year, minute_day, latitude, longitude, tilt, azimuth, longitude_time)def dif_true_solar_time(day_year):sun_array = list(range(0, 366))# <editor-fold desc="真平太陽時差的賦值">sun_array[0] = "-3:9"sun_array[1] = "-3:38"sun_array[2] = "-4:6"sun_array[3] = "-4:33"sun_array[4] = "-5:1"sun_array[5] = "-5:27"sun_array[6] = "-5:54"sun_array[7] = "-6:20"sun_array[8] = "-6:45"sun_array[9] = "-7:10"sun_array[10] = "-7:35"sun_array[11] = "-7:59"sun_array[12] = "-8:22"sun_array[13] = "-8:45"sun_array[14] = "-9:7"sun_array[15] = "-9:28"sun_array[16] = "-9:49"sun_array[17] = "-10:9"sun_array[18] = "-10:28"sun_array[19] = "-10:47"sun_array[20] = "-11:5"sun_array[21] = "-11:22"sun_array[22] = "-11:38"sun_array[23] = "-11:54"sun_array[24] = "-12:8"sun_array[25] = "-12:22"sun_array[26] = "-12:35"sun_array[27] = "-12:59"sun_array[28] = "-13:10"sun_array[29] = "-13:19"sun_array[30] = "-13:37"sun_array[31] = "-13:44"sun_array[32] = "-13:50"sun_array[33] = "-13:56"sun_array[34] = "-14:1"sun_array[35] = "-14:5"sun_array[36] = "-14:9"sun_array[37] = "-14:11"sun_array[38] = "-14:13"sun_array[39] = "-14:14"sun_array[40] = "-14:15"sun_array[41] = "-14:14"sun_array[42] = "-14:13"sun_array[43] = "-14:11"sun_array[44] = "-14:8"sun_array[45] = "-14:5"sun_array[46] = "-14:1"sun_array[47] = "-13:56"sun_array[48] = "-13:51"sun_array[49] = "-13:44"sun_array[50] = "-13:38"sun_array[51] = "-13:30"sun_array[52] = "-13:22"sun_array[53] = "-13:13"sun_array[54] = "-11:4"sun_array[55] = "-12:54"sun_array[56] = "-12:43"sun_array[57] = "-12:32"sun_array[58] = "-12:21"sun_array[59] = "-12:8"sun_array[60] = "-11:56"sun_array[61] = "-11:43"sun_array[62] = "-11:29"sun_array[63] = "-11:15"sun_array[64] = "-11:1"sun_array[65] = "-10:47"sun_array[66] = "-10:32"sun_array[67] = "-10:16"sun_array[68] = "-10:1"sun_array[69] = "-9:45"sun_array[70] = "-9:28"sun_array[71] = "-9:12"sun_array[72] = "-8:55"sun_array[73] = "-8:38"sun_array[74] = "-8:21"sun_array[75] = "-8:4"sun_array[76] = "-7:46"sun_array[77] = "-7:29"sun_array[78] = "-7:11"sun_array[79] = "-6:53"sun_array[80] = "-6:35"sun_array[81] = "-6:17"sun_array[82] = "-5:58"sun_array[83] = "-5:40"sun_array[84] = "-5:22"sun_array[85] = "-5:4"sun_array[86] = "-4:45"sun_array[87] = "-4:27"sun_array[88] = "-4:9"sun_array[89] = "-3:51"sun_array[90] = "-3:33"sun_array[91] = "-3:16"sun_array[92] = "-2:58"sun_array[93] = "-2:41"sun_array[94] = "-2:24"sun_array[95] = "-2:7"sun_array[96] = "-1:50"sun_array[97] = "-1:33"sun_array[98] = "-1:17"sun_array[99] = "-1:1"sun_array[100] = "0:46"sun_array[101] = "0:30"sun_array[102] = "0:16"sun_array[103] = "0:1"sun_array[104] = "0:13"sun_array[105] = "0:27"sun_array[106] = "0:41"sun_array[107] = "0:54"sun_array[108] = "1:6"sun_array[109] = "1:19"sun_array[110] = "1:31"sun_array[111] = "1:42"sun_array[112] = "1:53"sun_array[113] = "2:4"sun_array[114] = "2:14"sun_array[115] = "2:23"sun_array[116] = "2:33"sun_array[117] = "2:41"sun_array[118] = "2:49"sun_array[119] = "2:57"sun_array[120] = "3:4"sun_array[121] = "1:10"sun_array[122] = "3:16"sun_array[123] = "3:21"sun_array[124] = "3:26"sun_array[125] = "3:30"sun_array[126] = "3:37"sun_array[127] = "3:36"sun_array[128] = "3:39"sun_array[129] = "3:40"sun_array[130] = "3:42"sun_array[131] = "3:42"sun_array[132] = "3:42"sun_array[133] = "3:42"sun_array[134] = "3:41"sun_array[135] = "3:39"sun_array[136] = "3:37"sun_array[137] = "3:34"sun_array[138] = "3:31"sun_array[139] = "3:27"sun_array[140] = "3:23"sun_array[141] = "3:18"sun_array[142] = "3:13"sun_array[143] = "3:7"sun_array[144] = "3:1"sun_array[145] = "2:54"sun_array[146] = "2:47"sun_array[147] = "2:39"sun_array[148] = "2:31"sun_array[149] = "2:22"sun_array[150] = "2:13"sun_array[151] = "2:4"sun_array[152] = "1:54"sun_array[153] = "1:44"sun_array[154] = "1:34"sun_array[155] = "1:23"sun_array[156] = "1:12"sun_array[157] = "1:0"sun_array[158] = "0:48"sun_array[159] = "0:36"sun_array[160] = "0:24"sun_array[161] = "0:12"sun_array[162] = "0:1"sun_array[163] = "0:14"sun_array[164] = "0:39"sun_array[165] = "0:52"sun_array[166] = "1:5"sun_array[167] = "1:18"sun_array[168] = "1:31"sun_array[169] = "1:45"sun_array[170] = "1:57"sun_array[171] = "2:10"sun_array[172] = "2:23"sun_array[173] = "2:36"sun_array[174] = "2:48"sun_array[175] = "3:1"sun_array[176] = "3:13"sun_array[177] = "3:25"sun_array[178] = "3:37"sun_array[179] = "3:49"sun_array[180] = "4:0"sun_array[181] = "4:11"sun_array[182] = "4:22"sun_array[183] = "4:33"sun_array[184] = "4:43"sun_array[185] = "4:53"sun_array[186] = "5:2"sun_array[187] = "5:11"sun_array[188] = "5:20"sun_array[189] = "5:28"sun_array[190] = "5:36"sun_array[191] = "5:43"sun_array[192] = "5:50"sun_array[193] = "5:56"sun_array[194] = "6:2"sun_array[195] = "6:8"sun_array[196] = "6:12"sun_array[197] = "6:16"sun_array[198] = "6:20"sun_array[199] = "6:23"sun_array[200] = "6:25"sun_array[201] = "6:27"sun_array[202] = "6:29"sun_array[203] = "6:29"sun_array[204] = "6:29"sun_array[205] = "6:29"sun_array[206] = "6:28"sun_array[207] = "6:26"sun_array[208] = "6:24"sun_array[209] = "6:21"sun_array[210] = "6:17"sun_array[211] = "6:13"sun_array[212] = "6:8"sun_array[213] = "6:3"sun_array[214] = "5:57"sun_array[215] = "5:51"sun_array[216] = "5:44"sun_array[217] = "5:36"sun_array[218] = "5:28"sun_array[219] = "5:19"sun_array[220] = "5:10"sun_array[221] = "5:0"sun_array[222] = "4:50"sun_array[223] = "4:39"sun_array[224] = "4:27"sun_array[225] = "4:15"sun_array[226] = "4:2"sun_array[227] = "3:49"sun_array[228] = "3:36"sun_array[229] = "3:21"sun_array[230] = "3:7"sun_array[231] = "2:51"sun_array[232] = "2:36"sun_array[233] = "2:20"sun_array[234] = "2:3"sun_array[235] = "1:47"sun_array[236] = "1:29"sun_array[237] = "1:12"sun_array[238] = "0:54"sun_array[239] = "0:35"sun_array[240] = "0:17"sun_array[241] = "0:2"sun_array[242] = "0:21"sun_array[243] = "0:41"sun_array[244] = "1:0"sun_array[245] = "1:20"sun_array[246] = "1:40"sun_array[247] = "2:1"sun_array[248] = "2:21"sun_array[249] = "2:42"sun_array[250] = "3:3"sun_array[251] = "3:3"sun_array[252] = "3:24"sun_array[253] = "3:45"sun_array[254] = "4:6"sun_array[255] = "4:27"sun_array[256] = "4:48"sun_array[257] = "5:10"sun_array[258] = "5:31"sun_array[259] = "5:53"sun_array[260] = "6:14"sun_array[261] = "6:35"sun_array[262] = "6:57"sun_array[263] = "7:18"sun_array[264] = "7:39"sun_array[265] = "8:0"sun_array[266] = "8:21"sun_array[267] = "8:42"sun_array[268] = "9:2"sun_array[269] = "9:22"sun_array[270] = "9:42"sun_array[271] = "10:2"sun_array[272] = "10:21"sun_array[273] = "10:40"sun_array[274] = "+10:59"sun_array[275] = "+11:18"sun_array[276] = "+11:36"sun_array[277] = "+11:36"sun_array[278] = "+11:53"sun_array[279] = "+12:11"sun_array[280] = "+12:28"sun_array[281] = "+12:44"sun_array[282] = "+12:60"sun_array[283] = "+13:16"sun_array[284] = "+13:16"sun_array[285] = "+13:31"sun_array[286] = "+13:45"sun_array[287] = "+13:59"sun_array[288] = "+14:13"sun_array[289] = "+14:26"sun_array[290] = "+14:38"sun_array[291] = "+14:50"sun_array[292] = "+15:1"sun_array[293] = "+15:12"sun_array[294] = "+11:21"sun_array[295] = "+15:31"sun_array[296] = "+15:40"sun_array[297] = "+15:48"sun_array[298] = "+15:55"sun_array[299] = "+16:1"sun_array[300] = "+16:7"sun_array[301] = "+16:12"sun_array[302] = "+16:16"sun_array[303] = "+16:20"sun_array[304] = "+16:22"sun_array[305] = "+16:24"sun_array[306] = "+16:25"sun_array[307] = "+16:25"sun_array[308] = "+16:24"sun_array[309] = "+16:23"sun_array[310] = "+16:21"sun_array[311] = "+16:17"sun_array[312] = "+16:13"sun_array[313] = "+16:9"sun_array[314] = "+16:3"sun_array[315] = "+15:56"sun_array[316] = "+15:49"sun_array[317] = "+15:41"sun_array[318] = "+15:32"sun_array[319] = "+15:22"sun_array[320] = "+15:11"sun_array[321] = "+14:60"sun_array[322] = "+14:47"sun_array[323] = "+14:34"sun_array[324] = "+14:20"sun_array[325] = "+14:6"sun_array[326] = "+13:50"sun_array[327] = "+13:34"sun_array[328] = "+13:17"sun_array[329] = "+12:59"sun_array[330] = "+12:40"sun_array[331] = "+12:21"sun_array[332] = "+12:1"sun_array[333] = "+11:40"sun_array[334] = "+11:18"sun_array[335] = "+10:56"sun_array[336] = "+10:33"sun_array[337] = "+10:9"sun_array[338] = "+9:45"sun_array[339] = "+9:21"sun_array[340] = "+8:55"sun_array[341] = "+8:29"sun_array[342] = "+8:3"sun_array[343] = "+7:36"sun_array[344] = "+7:9"sun_array[345] = "+6:42"sun_array[346] = "+6:14"sun_array[347] = "+5:46"sun_array[348] = "+5:17"sun_array[349] = "+4:48"sun_array[350] = "+4:19"sun_array[351] = "+3:50"sun_array[352] = "+3:21"sun_array[353] = "+2:51"sun_array[354] = "+2:22"sun_array[355] = "+1:52"sun_array[356] = "+1:22"sun_array[357] = "+0:52"sun_array[358] = "+0:23"sun_array[359] = "+0:7"sun_array[360] = "+0:37"sun_array[361] = "-1:6"sun_array[362] = "-1:36"sun_array[363] = "-2:5"sun_array[364] = "-2:34"sun_array[365] = "-3:3"# </editor-fold>return sun_array[day_year - 1]# # 函數測試 # # Latitude 39.1319° [°N], Longitude -77.2141° [°E], Elevation 138 m [m]) tilt = 20pd_data = pd.DataFrame(np.arange(1, 60*24+1, 30), columns=['minute_day']) pd_data['day_year'] = 142 pd_data['G'] = pd_data.apply(lambda x: calculate_irradiance_base(int(x['day_year']), x['minute_day'], 40, 110, 0, 0, 120), axis=1) pd_data['tilt_G'] = pd_data.apply(lambda x: calculate_irradiance_base(int(x['day_year']), x['minute_day'], 40, 110, tilt, 0, 120), axis=1)print(pd_data)time_str = '2008-06-23 14:35:22' G = calculate_irradiance(time_str, 30, 122, tilt, 0, 120) print(G)[time_sun, minute_sun_up, minute_sun_down] = calculate_sun_time(time_str, 30, 122, tilt, 0, 120) print(G)

參考:
[1] https://wenku.baidu.com/view/0989752c3169a4517723a3d8.html
[2] https://www.pveducation.org/zh-hans/pvcdrom/%E4%BB%BB%E6%84%8F%E6%9C%9D%E5%90%91%E5%92%8C%E5%80%BE%E6%96%9C%E5%BA%A6
[3] 王飛, 并網型光伏電站發電功率預測方法與系統, 2013, 華北電力大學.

總結

以上是生活随笔為你收集整理的地外水平/斜面的太阳理论辐照度计算及其python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久毛片软件 | 午夜视频免费在线观看 | 一二区在线观看 | 三年中国片在线高清观看 | 91视频色| 亚洲av无码专区国产乱码不卡 | 日韩av无码一区二区三区不卡 | 国产伊人精品 | 欧美 日韩 国产 一区 | 亚洲精品一区二区三区区别 | 国产色综合视频 | 95看片淫黄大片一级 | 亚洲av综合永久无码精品天堂 | 伊人三区| 亚洲国产综合av | 欧洲性生活片 | 在线视频久久 | 99热日韩| 亚洲精品免费av | 污视频网站入口 | 国产盗摄精品一区二区酒店 | 中国女人内谢69xxxxⅹ视频 | 国产无遮挡又黄又爽 | 国产精品波多野结衣 | 禁果av一区二区三区 | 亚洲图片视频在线 | 992tv在线影院 | 男人把女人捅爽 | 日韩三级中文 | 很黄很污的视频网站 | 青青操国产| 密臀久久 | 蜜臀aⅴ国产精品久久久国产老师 | 朝桐光在线视频 | 成人在线视频免费播放 | 欧性猛交ⅹxxx乱大交 | 亚洲欧美日韩一区在线观看 | 理论片毛片 | 国产综合免费视频 | 久草资源在线视频 | 亚洲中文字幕久久无码 | 国产精品熟女一区二区不卡 | 男生操女生免费网站 | 高清一区二区三区四区 | 久草青青草 | 在线香蕉| 久久国产中文字幕 | 国产手机av在线 | 韩国伦理片在线看 | 91精品久久久久 | 九九热这里有精品视频 | 加勒比综合在线 | 蜜臀久久99静品久久久久久 | 久久无码视频网站 | 欧美极品一区二区 | 色哟哟日韩精品 | 成人91看片 | 空姐吹箫视频大全 | 日本免费a级片 | 最近高清中文在线字幕在线观看 | 日韩不卡毛片 | 探花视频在线免费观看 | 亚洲三页| 精品国产91久久久久久久妲己 | 精国产品一区二区三区a片 国产精品第一 | 亚洲三级欧美 | 欧美一级一区二区 | 亚色视频在线 | 日日干夜夜干 | 激情亚洲天堂 | 伦伦影院午夜理论片 | 韩日av一区二区 | 国产精品久久久久久久久免费相片 | 手机成人免费视频 | 久久久久久久久久久国产精品 | 超碰天堂| 国产高潮在线观看 | 艳妇臀荡乳欲伦交换在线播放 | 欧美一区二区三区婷婷 | 少妇喷潮明星 | 久久久精品999 | 国产精品久久久久久妇女 | 亚洲欧美日韩国产一区 | 国产在线免费观看 | 九九九热视频 | 青青草成人影视 | 国产亚洲精品久久久久婷婷瑜伽 | 色片在线免费观看 | 免费视频www在线观看网站 | 亚洲一区国产一区 | 国产在线高潮 | 妓院一钑片免看黄大片 | 影音先锋丝袜美腿 | 99久久网站 | 视频一区二区三 | 久久神马| 粉嫩av网站 | 无码国产精品一区二区免费16 | 午夜精品欧美 |