-
Notifications
You must be signed in to change notification settings - Fork 4
Energy Yield Module
The energy yield core module calculates the energy yield (EY) over the course of one year of the sub-cells depending on their orientation (rotation and/or tilt of the module) and location. The EY is computed by combining the spectral and angular resolved solar irradiation (with or without albedo), the absorptance of the multi-junction solar cell and the electrical properties.
First, the spectral and temporal resolved irradiance data is extracted from the irradiance module. Furthermore, the ambient temperature, the sun’s azimuth and elevation angles are loaded from the TMY3 data within the irradiance dataset.
Next, a matrix is defined, covering the allowed angles of incidence (spherical coordinates: theta, phi) on the solar cell in its local coordinate system. In a non-rotated solar module, which is lying flat on the ground, all elements in this matrix describing the upper hemisphere are one. Once the solar module is titled and/or rotated, distinct angles become zero. For example, a tilt angle of 0°, 20° and 60° is shown in the following figure:
Besides a static tilt, there is also the option to use different tracking algorithms. In case of tracking, the above matrix is calculated for each hour of the year dependent on the corresponding tilt and rotation angles. These angles are calculated by the various tracking algorithms (options: see below).
For each hour of the year, the short-circuit current-density is calculated for each absorber within the defined stack. The short-circuit current density is calculated separately for the direct and diffuse irradiance.
In case of a bifacial simulation and/or if albedo is enabled further contributions are taken into account. The total short-circuit current density is then given by the sum of all individual contributions:
In order to use the energy yield core module, you need to load the irradiance data, calculate the optics of your stack and define the electrics. An example you can find in the main.m
and in the Quick start guide.
Assuming everything is loaded and simulated, you can define the tilt and rotation angle of the solar cell.
SolarCellRotationAngle = 180;
SolarCellTiltAngle = 20;
Next, you define, if you want to use a tracking algorithm and if albedo should be considered.
% 0: disable tracking
% 1: 1-axis non-tilted east-west
% 2: 2-axis tracking
% 3: 1-axis latitude-titled zenith rotation
% 4: 1-axis latitude-tiled seesaw rotation; limitation: rotation needs to be = 180°
tracking = 0;
albedo = 0;
groundtype = 'artificialblack';
Finally, you can call the energy yield core module:
EY = EnergyYield(irradiance, optics, electrics, SolarCellRotationAngle, SolarCellTiltAngle, tracking, albedo, groundtype, PathEYResults, StoreInDatabase);
Note: irradiance
, optics
, and electrics
are structures containing the results/definitions of/for the other modules.
The output of the calculation is another structure, here called EY
. It contains the hourly resolved results for both absorbers, and some additional useful data! This includes the individual (JscDirect
, JscDiffuse
, JscAlbedo
) and total (Jsc
) short-circuit current densities. Next, it includes the electrical properties like open circuit voltage (Voc
), fill factor (FF
), current and voltage at the maximum power point (JMPP
,VMPP
), and the power. These quantities are calculated:
- for the multi-junction solar cell in the tandem configuration (
*_Tandem
), - for each sub cell considered as a single cell (
*_SJ
), - and for the sub cells in the tandem configuration (no appendix)
Moreover, the power conversion efficiency is calculated, which only makes sense, when the AM1.5G spectrum is loaded as irradiance data. (CodeLocation = 'AM1.5G'; AliasLocation = 'spectrum'
). Finally, the irradiance data of the current location, the absorptance of the absorbers in the stack, the total power of the tandem are provided. The total power equals to the annual energy yield given in kWhm-2a-1.
>> EY
EY =
struct with fields:
JscDirect: [8760×2 double]
JscDiffuse: [8760×2 double]
JscAlbedo: [8760×2 double]
Jsc: [8760×2 double]
Voc_SJ: [8760×2 double]
FF_SJ: [8760×2 double]
JMPP_SJ: [8760×2 double]
VMPP_SJ: [8760×2 double]
Power_SJ: [8760×2 double]
Voc: [8760×2 double]
FF: [8760×2 double]
JMPP: [8760×2 double]
VMPP: [8760×2 double]
Power: [8760×2 double]
Voc_Tandem: [8760×1 double]
FF_Tandem: [8760×1 double]
JMPP_Tandem: [8760×1 double]
VMPP_Tandem: [8760×1 double]
Power_Tandem: [8760×1 double]
TempAmbient: [8760×1 double]
TempModule: [8760×2 double]
TandemPCE: [8760×1 double]
PCE: [8760×2 double]
IrradianceDifH: [8760×1 double]
IrradianceDifN: [8760×1 double]
IrradianceDirH: [8760×1 double]
IrradianceDirN: [8760×1 double]
A: {2×1 cell}
TandemPowerTotal: 426.4966
TandemPCEmean: 0.0806
albedo: 0
We can illustrate and compare some of the results:
figure;
subplot(3,2,1); plot(EY.Power_Tandem); hold on; plot(EY.Power);
subplot(3,2,2); plot(100*EY.FF_Tandem); hold on; plot(100*EY.FF);
subplot(3,2,3); plot(EY.Voc_Tandem); hold on; plot(EY.Voc);
subplot(3,2,4); plot(EY.Jsc);
subplot(3,2,5); plot(EY.VMPP_Tandem); hold on; plot(EY.VMPP);
subplot(3,2,6); plot(EY.TempModule(:,1)); hold on; plot(EY.TempAmbient);
Note: the data is available in hourly resolution. Summing up the tandem power over all 8760 h of the representative year, will lead to the annual energy yield. In this example, we get ~ 425.17 kWhm-2a-1.
In order to increase this energy yield, an obvious improvement would be to improve current matching between the two sub cells.
We can also search the optimal tilt angle for this architecture and location (Miami):
SolarCellRotationAngle = 180;
SolarCellTiltAngle = 0:5:50;
[EYaoi, TandemPowerTotal] = sweepEY(irradiance, optics, electrics, SolarCellRotationAngle, SolarCellTiltAngle, tracking, albedo, groundtype, PathEYResults, StoreInDatabase);
figure;
plot(SolarCellTiltAngle,TandemPowerTotal);
xlabel('Tilt angle (°)')
ylabel('Anual Energy Yield (kWhm^{-2}a^{-1})')