Mixed orientation doesn't result in clearly mixed results

54 views
Skip to first unread message

Ruben vZ

unread,
May 30, 2024, 10:25:08 AMMay 30
to pvlib-python
Hi alltogether,

I am really new to PV modelling but I have to model a Floating-PV-System for my Master-Thesis.

So far it worked quite well for me using a YouTube-Tutorial on how to model PV in PVlib for Python.
I get some results, that I could describe, but there must still be an error.

Here's how I model my System.
I have a meteorological dataset containing the global, direct and diffuse irradiation (and also air temperature and wind speed) from the DWD (Deutscher Wetterdienst/ German weather services). The direct irradiation was calculated by myself by using global = direct + diffuse (hope that's correct so far). Futhermore I have a PV-Module datasheet containing all relevant electrical info.
I try to model a system in eastern Germany using a fixed surface tilt and azimuth.
With these background info I do the following process (more than slightly influenced by the videos on YouTube :D)
solarpos = location.get_solarposition()
aoi = pvlib.irradiance.aoi()
iam = pvlib.iam.ashrae(aoi)
effective_irradiance = meteo['poa_direct'] * iam + meteo['poa_diffuse']
*several outputs* = pvlib.ivtools.sdm.fit_cec_sam()
temp_cell = pvlib.temperature.faiman()
cec_params = pvlib.pvsystem.calcparams_cec()
mpp = pvlib.pvsystem.max_power_point()

my modeling goes further, but I am quite sure there must be a mistake thus far since:
if I simply vary surface_azimuth between 90 (east), 180 (south), 270 (west) and compare the three mpp results regarding their power, I can se almost no difference between them. For the comparison I took the mean values for each our during my whole modeling period (11 years) and plotted the three curves in one graph, expecting to have the east_mpp peak in the morning, south_mpp peak at noon and west_mpp peak in the afternoon.
If I sum um the p_mp from my mpp the resulting amount comes in this order: east>south>north>west. I really don't get how north could yield more than west and east more than south...

My question is probably already implied in my approach/problem but I'd like to ask them whatsoever:
- Is there a general/logical mistake in my approach - can I perform these steps in this order and, given I put in the right attributes etc., receive a good estimate on my mpp_power?
- If the approach is correct, where could be the mistake? Does it come from the meteorological dataset?
- Is the method to verify my results (comparison between the east,south and west power) wrong?
- Don't you find any problem regarding my approach - which would need a deeper view into my calculations? (I really hope this is not the case :))

That's it from my side. I would really appreciate your time reading this and if you can think of a solution tell me your thoughts on this topic. If you have questions regarding my model that could help you think of a solution, feel free to ask. Or if you know a chat, where my problem was solved I'd appreciate a hint.

Best regards,

Ruben

Mark Campanelli

unread,
May 30, 2024, 10:53:41 AMMay 30
to Ruben vZ, pvlib-python
Hello Reuben and welcome,

  It’s hard to say where a bug might be, but based on the sketch of your computational workflow, are you sure that you are using the solar position to compute your irradiance components on the plane of array (POA)?

  It seems that you might be computing your meteo object BEFORE computing solar position. (I presume the weather data is not w.r.t. POA.)


--
You received this message because you are subscribed to the Google Groups "pvlib-python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pvlib-python...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pvlib-python/d74efa4e-8d36-46b2-b438-510f75d6c737n%40googlegroups.com.

cwh...@sandia.gov

unread,
May 30, 2024, 11:14:47 AMMay 30
to pvlib-python
Hi Reuben,

You wrote " global = direct + diffuse" are these quantities measured in the plane of array? Usually they are global horizontal, diffuse horizontal and direct normal to the sun. In that case, the calculation should be global horizontal = direct * cos(AOI) + diffuse horizontal.

If your system is at shallow tilt, during a summer time period it could well be that azimuth orientation has little effect on the power curve.

Cliff

Ruben vZ

unread,
May 31, 2024, 2:21:27 PMMay 31
to pvlib-python
Hi Mark, Hi Cliff,

thank you very much for your kind answers. Due to your questions I had a better look on my non-existing transformation of irradiance. I now manually calculate the direct normal, poa direct, poa diffuse and poa global. I guess I did not understand the meaning of POA before. (I hope now I do :))
Now I get a really nice curve where south (orange) is dominant at noon, east (red) is not dominant but shifted towards the morning and west (blue) is shifted towards the afternoon. I still do not understand why my east facing module yields so much more than my west facing one. But I will argue with the meteorological input and maybe search for a reason to why the cloudiness could be higher in the afternoon. By the way: @Cliff: if I change the vertical angle from 12° to 60° I get a much clearer view on when the real energy yield is taking place - thanks for the advice on the shallow tilt!
RvZ_PVlib_FPV_MPP_comparison.png

Do you know why I must calculate effective_irradiance = meteo["poa_direct"] * iam + meteo["poa_diffuse"]? Why must the iam factorize my poa_direct? I thought it is already the irradiance heading vertical onto the module surface?
Best regards

Ruben

cwh...@sandia.gov

unread,
May 31, 2024, 2:29:36 PMMay 31
to pvlib-python
East vs. west facing - I think you are on the right track, something to do with morning vs. afternoon insolation.

IAM should be a number between 0 and 1 (mostly close to 1) that is the fraction of direct irradiance that is _not_ reflected away at the module's surface. In reality, some diffuse irradiance is also reflected but the effect on power is usually very small, and the modeling is more complicated, so this reflection is usually ignored.

Cliff

Stein, Josh

unread,
May 31, 2024, 2:30:48 PMMay 31
to Ruben vZ, pvlib-python

Ruben,

                Typically, the lower output from the W-facing array is due to it being warmer in the afternoon in most climates.

 

Josh

 

From: <pvlib-...@googlegroups.com> on behalf of Ruben vZ <r97...@gmail.com>
Date: Friday, May 31, 2024 at 12:21 PM
To: pvlib-python <pvlib-...@googlegroups.com>
Subject: [EXTERNAL] Re: Mixed orientation doesn't result in clearly mixed results

 

You don't often get email from r97...@gmail.com. Learn why this is important

Hi Mark, Hi Cliff,

 

thank you very much for your kind answers. Due to your questions I had a better look on my non-existing transformation of irradiance. I now manually calculate the direct normal, poa direct, poa diffuse and poa global. I guess I did not understand the meaning of POA before. (I hope now I do :))
Now I get a really nice curve where south (orange) is dominant at noon, east (red) is not dominant but shifted towards the morning and west (blue) is shifted towards the afternoon. I still do not understand why my east facing module yields so much more than my west facing one. But I will argue with the meteorological input and maybe search for a reason to why the cloudiness could be higher in the afternoon. By the way: @Cliff: if I change the vertical angle from 12° to 60° I get a much clearer view on when the real energy yield is taking place - thanks for the advice on the shallow tilt!

Stein, Josh

unread,
May 31, 2024, 3:03:39 PMMay 31
to Ruben vZ, pvlib-python

HI Ruben,

                Are you calculating POA direct and POA diffuse using a transposition model?  In your pseudo code below, it appears that these values are from your meteo file, which does not make sense as it is very difficult to directly measure POA direct, you have to calculate it.  When you change the azimuth of your array you need to recalculate the POA irradiance.

 

Josh

 

From: <pvlib-...@googlegroups.com> on behalf of Ruben vZ <r97...@gmail.com>
Date: Thursday, May 30, 2024 at 8:26 AM
To: pvlib-python <pvlib-...@googlegroups.com>
Subject: [EXTERNAL] Mixed orientation doesn't result in clearly mixed results

 

You don't often get email from r97...@gmail.com. Learn why this is important

Hi alltogether,

--

Ruben vZ

unread,
Jun 1, 2024, 2:59:43 AMJun 1
to pvlib-python
Hi Josh,

that is a good point, which I did not mention. I changed my procedure yesterday and now I load my meteo file into python containing the global_horizontal, diffuse_horizontal, temp_air and wind_speed. Then I use this dataframe to calculate my Direct Normal Irradiance and POA components. (I used the equations from https://pvpmc.sandia.gov/modeling-guide/) To pevent misunderstandings I should write effective_irradiance = poa_data["poa_direct"] * iam + poa_data["poa_diffuse"] since it is not the original meteo-file anymore :)

Ruben

Ruben vZ

unread,
Jun 1, 2024, 3:02:22 AMJun 1
to pvlib-python
Hi again,

oh that makes sense, I will find a valid literature source for that for sure!
Thank you for that hint!

Ruben
Reply all
Reply to author
Forward
0 new messages