SunPower/pvfactors

The tendency of bifacial SingleAxisTracker and albedo is not reasonable

Closed this issue · 3 comments

Hi,

Isssue:
PVlib use pvfacotors to simulate bifacial module.
When I use pvlib to simulate bifacial tracker system, I found that the dc_energy will increase as albedo decrease. However, if I use bifacial fixed rack system to simulate, the trendency is right (dc_energy will increase as albedo increase).

In ordor to simlify the issue, I splited pvfacoter module from pvlib code, only simulate some points for different surface tilt and surface azimuth. However, then found that the problem is still there. My code is as following and as attachment. The results of front and rear irradiance is as following graph.

As previous description, the tendency of fixed-rack system is reasonable, but it is unreasonable for tracker system. Besides, there are some negative value for the results.

pvfactor results comparison for tracker and fixed-rack

Code:
i```
mport pvlib
import pandas as pd
import numpy as np
from pvlib.bifacial import pvfactors_timeseries
from pvfactors.run import run_timeseries_engine
from datetime import datetime
from pandas import DataFrame

Create input data

df_inputs = pd.DataFrame(
{'solar_zenith': [11, 19, 25, 29, 29, 26, 21, 13, 4],
'solar_azimuth': [130, 141, 155, 170, 186, 201, 215, 227, 237],
# 'surface_tilt': [11.5, 43.1, 51.6, 28.8, 0.182, 28.5, 51.4, 44.1, 11.9], # if tracker system, use the group data
# 'surface_azimuth': [90, 90, 90, 90, 90, 270, 270, 270, 270], # if tracker system, use the group data
'surface_tilt': [40, 40, 40, 40, 40, 40, 40, 40, 40],
'surface_azimuth': [180, 180, 180, 180, 180, 180, 180, 180, 180],
'dni': [531, 723, 677, 584, 103, 4.2, 0, 0, 0],
'dhi': [88, 91, 112, 158, 199, 126, 18, 5, 0]},
index=[datetime(1990, 1, 3, 9), datetime(1990, 1, 3, 10), datetime(1990, 1, 3, 11),
datetime(1990, 1, 3, 12), datetime(1990, 1, 3, 13), datetime(1990, 1, 3, 14),
datetime(1990, 1, 3, 15), datetime(1990, 1, 3, 16), datetime(1990, 1, 3, 17)]
)

def pvfactor_build_report(pvarray):
return {
'total_inc_back': pvarray.ts_pvrows[1].back.get_param_weighted('qinc').tolist(),
'total_inc_front': pvarray.ts_pvrows[1].front.get_param_weighted('qinc').tolist()
}

pvarray_parameters = {
'n_pvrows': 3,
'index_observed_pvrow': 1,
'axis_azimuth': 0,
'pvrow_height': 1.5,
'pvrow_width': 4.6,
'gcr': 0.4,
'rho_front_pvrow': 0.01,
'rho_back_pvrow': 0.03,
'horizon_band_angle': 15
}

pvfactor = run_timeseries_engine(pvfactor_build_report,
pvarray_parameters,
df_inputs.index,
df_inputs.dni,
df_inputs.dhi,
df_inputs.solar_zenith,
df_inputs.solar_azimuth,
df_inputs.surface_tilt,
df_inputs.surface_azimuth,
0.2 # albedo, `` you can change the number
)

print(pvfactor)

df_1=DataFrame(pvfactor['total_inc_back'],columns=['total_inc_back'])
df_2=DataFrame(pvfactor['total_inc_front'],columns=['total_inc_front'])
df=df_2.join(df_1)


Hi @yangangky , thank you for using pvfactors!

These are very strange results indeed, especially the negative values... I just tried rerunning the tutorial notebook from the docs and using an albedo of 0.6 instead of 0.2 and didn't see any major pb, and I've ran albedo analyses before without much problem so it could be an issue with the config/inputs maybe?

Could you try using this notebook as well and slowly changing the inputs to match yours and see if you still get the same problems?

image

Hi Anomam,

Thank you very much for your prompt feedback. You are right, the PVfactor module is perfect, and the previous issue was caused by unreasonable input parameters ~pvrow_height . The pvrow_height should be > 1.88 when pvrow_width=4.6. If I used the reasonable value, all the result/tendency will go well.

Thanks a lot for your help.

Gang

Thanks @yangangky ! Glad to hear you were able to find the issue : )