理论辐照度计算

该文介绍了一种基于经纬度和时间计算特定地点理论辐射值的方法,涵盖了标准子午线、时间特征、海拔高度等常规因子的计算,并详细讨论了角度值和辐射的影响。通过参考多个专业资源,提供了一个完整的理论辐射计算框架。

1 整体

输入:经纬度,时间(到分钟),海拔
输出:水平面辐照值

只需要提供经纬度和时间,根据一系列的计算可得该点的理论辐照值。
(1) 计算过程涉及的公式有多种,同一个定义可能对应不同的计算逻辑,差异不会太大,都是基于相应的物理、数学逻辑的变现
(2) 需要获取相应的海拔高度,这里通链接访问获取
(3) 参考多个来源和解析,形成最终的结果,重点感谢该网站提供的专业且丰富的相关知识点:https://www.pveducation.org/

如下所示,绿色是根据输入得到该地区的理论辐照度,红色是当地真实辐照度。

以时间 2021-10-18 12:20:25举例说明

2 常规因子

Esc : 太阳常数,默认值 1367 w/m2 ,
latitude:经度
longitude :纬度

2.1 标准子午线

LSTM 是标准子午线计算公式,timezone是中国时区的值。

LSTM =  (360/24)*timezone 
timezone  = 8
2.2 时间特征
# 解析时间相关参数
t = "2021-10-18 12:20:25"

import datetime
import pandas as pd
dt = pd.to_datetime("2021-10-18 12:20:25")

Y = dt.year         #  年份 year
N = dt.dayofyear    #  积日 ,一年中第几天 day
Hour = dt.hour      #  地方标准小时数  也是 ST
Minute = dt.minute  #  地方标准分钟数  F太阳高度角

Sd = Hour + ( Minute  - 4 * ( 120 -  longitude))/ 60  # 地方时
Lt =  Hour + Minute/60  #  local time 当前时间
2.3 海拔高度

存在一个提供接口的网站,根据经纬度,返回所在区域的海拔。

# lat 纬度 long:经度

def get_elevation(lat, long):
    query = ('https://api.open-elevation.com/api/v1/lookup'f'?locations={lat},{long}')
    r = requests.get(query).json()  # json object, various ways you can extract value
    elevation = pd.io.json.json_normalize(r, 'results')['elevation'].values[0]
    return elevation

Elevation= get_elevation(lat, long)

3 角度值

3.1 赤纬角

Declination Angle,赤纬角,有时也称为偏角

Declination = 23.45 * sin( radians((360/365)*( N+ 284)))  

N: 积日

其他参考公式:

参考1: -23.45*cos( (2*pi/ 365)*( self.day + 10) )
参考2: 23.45 * sin(radians((360/365)*(self.day - 81)))
3.2 太阳时角
HRA = math.acos( -1*tan( radians(  Declination ) ) * tan( radians( latitude ))) 

Declination :赤纬角
latitude : 纬度
3.3 更正因子
modify_factor = sin( radians( latitude)) * sin(radians( Declination )) +\
cos( radians(latitude ))*cos( radians(Declination ))*cos(radians( HRA ))

HRA :太阳时角
latitude:纬度
Declination :赤纬角
3.4 天顶角
Zenith = acos( modify_factor ) 

modify_factor:更正因子
3.5 太阳方位角
Azimuth = math.degrees( asin( sin_Azimuth  ))

# 其中:
sin_Zenith = np.sqrt( 1- modify_factor**2  ) 
sin_Azimuth = ( cos( radians( Declination  ) )  *  cos( radians( HRA) )   *  cos( radians( latitude) )  - \
sin( radians( latitude) )  *  sin( radians( Declination  ) )  ) / sin_Zenith 

modify_factor:更正因子
Declination  : 赤纬角
HRA: 太阳时角
latitude:纬度
3.6 日角
sun_angle = 57.3 * 2 * pi * ( N - N0 + dN)/365.2422

W = Hour +  Minute /60 # 观测时刻与格林尼治0时时间差订正值
L = ( longitude_int + longitude_float/60 )/15 # 由观测地点与格林尼治经度差产生的时间差订正值
N0 = 79.6764+0.2442*( Y - 1985 ) - int( 0.25*(Y - 1985 )) 
dN = ( W + L)/24  # 积日订正值

N:积日,一年中的第几天
Y:时间取年
longitude_int: 纬度的整数
longitude_float:纬度的小数点数值
3.7 地方时差
Et = 0.0028+\
        -1.9857*sin( radians( sun_angle  )) + \
        9.9059 *sin( radians( sun_angle )) - \
        7.0924 *cos( radians( sun_angle  )) + \
        0.6882 *cos( radians( sun_angle ))  
        
sun_angle:日角
3.7 太阳时角进化
根据地方时差更新太阳角

HRA2 = ( ( Sd + Et/60) - 12 ) * 15

Sd :地方时
Et: 地方时差

4 辐射

4.1 地外辐照度
df['modify_factor'] = [sin(radians(df['latitude'][i])) * sin(radians(df['Declination'][i] )) +\
                          cos(radians(df['latitude'][i])) * cos(radians(df['Declination'][i] )) * 
                          cos(radians(df['HRA2'][i] )) for i in df.index]
                          
df['corr_factor'] = [1.000423+\
                    0.032359*sin( radians(df['sun_angle'][i] )) +\
                    0.000086*sin( radians(2*df['sun_angle'][i]))-\
                    0.008349*cos( radians(df['sun_angle'][i] ))+\
                    0.000115*cos( radians(2*df['sun_angle'][i])) for i in df.index]    
                                                                  
df['E'] = df["Esc"]*df['corr_factor']*df['modify_factor'] # E: 地外辐射度

latitude:纬度
Declination:赤纬角
HRA2:更新后的太阳时角
Esc:太阳常数

4.2 大气质量
df['M0'] =[np.sqrt(1229+( 614*sin( radians( df['Elevation'][i])) )**2 ) -614*sin( radians( df['Elevation'][i])) for i in df.index] # 海平面大气量
df['Ph0'] =(( 288-0.0065*df['high'] )/288)**5.256 # 大气修正系数
df['Mh'] = df['M0']*df['Ph0'] # 大气质量

Elevation: 海拔高度
4.3 辐射值
df['Direct_Radiant_Coeff'] = [0.56*(math.exp( -0.56*df['Mh'][i]) + math.exp( -0.95*df['Mh'][i]) )  for i in df.index] # 直射辐射透明系数 Tb
df['Scatter_Radiant_Coeff'] = 0.271-0.294*df['Direct_Radiant_Coeff'] # 散射辐射透明系数 Td
 
df['Direct_Radiant'] =  df['Direct_Radiant_Coeff']*df['E']  # Eb 直射值
df['Scatter_Radiant'] = df['Scatter_Radiant_Coeff']*df['E'] # E_Td E_d  散射值

df['Radiant'] = df['Direct_Radiant']+df['Scatter_Radiant']  # 晴天下的 地表总辐射

E:地外辐照度

参考文献

重点参考文献5

文献1. 《BIPV中光伏阵列朝向和倾角对性能影响理论研究》陈 维,沈 辉,刘 勇
文献2. 《太阳电池全光路系统的研究与优化设计 》
文献3. 《基于天气聚类的光伏电站辐照度预测》
文献4. 《 SOLAR GEOMETRY FOR FIXED AND TRACKING SURFACES 》
文献5. https://www.pveducation.org/pvcdrom/properties-of-sunlight/energy-of-photon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值