# TOF algorithm

Dear all,

I am trying to find optimum tilt angle with ladybug by using TOF component.

is it necessary to know what is inside the TOF and which formulas are used for estimating total annual solar radiation as well as the optimum tilt angle. But the problems are the formula inside the TOF. EPW gives us 8760 hours data file that feeds into the diffuse and direct and ground-reflect solar radiation. but, it is not clear that we used all 8760 hours data or average the data for a whole year or…?

and second questions is there is no any azimuth parameter inside the formulas. And how mesh is created without considering any azimuth parameter (see picture below).

Hi Hamid,

… EPW gives us 8760 hours data file that feeds into the diffuse and direct and ground-reflect solar radiation.

Ladybug Photovoltaics components supports fixed PV systems, not tracking ones.
So to get the incident radiation on a fixed _PV_SWHsurface we need to correct the .epw directNormalRadiation for the angle of incidence:

EnergyPlus does not contain the ground reflected component.

but, it is not clear that we used all 8760 hours data or average the data for a whole year or…?

The incident solar radiation is calculated for each hour during a year in kWh/m2. Then all those hourly values are summed, to get the annual incident solar radiation in kWh/m2 for the inputted _PV_SWHsurface.

and second questions is there is no any azimuth parameter inside the formulas. And how mesh is created without considering any azimuth parameter (see picture below).

I did not understand you.
The azimuth is not present in which formulas? Can you make a screenshot and label them?
Thank you.

Thanks a lot Djordje

for the first question: Diffuse solar radiation also needs to be corrected or no? if no what is the formula? and which formula is used for ground-reflected component? and all these formulas are used inside TOF?

for the second question: can you tell me which values changed for the hourly incident solar radiation? I mean, for example for Ib, directNormalRadiation comes from EPW and angle of incidence just change?

thank you

for the third question, please look the x-axis in the following picture is about azimuth angle. for each azimuth angle (90-270) we have some points.The solar radiation differs depending on the tilt and orientation of a surface. the chart is based on the tilt angle and azimuth angle to obtain the maximum solar radiation as well as the optimal tilt angle so we need the formulas that have tilt angle and azimuth angle to obtain the solar radiation component.

Diffuse solar radiation also needs to be corrected or no? if no what is the formula?

Epw’s diffuseHorizontalRadiation is measured on a horizontal surface.
The Perez diffuse model (which Ladybug Photovoltaics are using) uses this data along with previously mentioned directNormalRadiation to calculate the diffuse radiation on angled _PV_SWH_surface. It calculates three components of the diffuse radiation. You can read more about it in the SAM Photovoltaic reference.

and which formula is used for ground-reflected component? and all these formulas are used inside TOF?

I gave you a reply on this in the Annual optimal tilt and azimuth angle of an unshaded PV array comments. And yes, all those formulas are used by the TOF component.

for the second question: can you tell me which values changed for the hourly incident solar radiation? I mean, for example for Ib, directNormalRadiation comes from EPW and angle of incidence just change?

Yes.

directNormalRadiation, diffuseHorizontalRadiation and dryBulbTemperature are taken from the .epw file. Everything else is calculated (angles, shading factors…).

for the third question, please look the x-axis in the following picture is about azimuth angle. for each azimuth angle we have some points. the chart is based on the tilt angle and azimuth angle to obtain the maximum solar radiation as well as the optimal tilt angle so we need the formulas that have tilt angle and azimuth angle to obtain the solar radiation component.

You can also find an answer to this question in the Annual optimal tilt and azimuth angle of an unshaded PV array comment.

Hi Djordje,

thanks a lot for helping,

please tell me how can I import the values of beam, diffuse and ground-reflection and total solar radiation that they calculated inside the TOF?

Thank you

Hi Hamid, The beam, diffuse and ground-reflection components are calculated inside the TOF component they are not aviable through its outputs. Where do you want to import these value to?

I want to draw a figure related to the values of diffuse,beam, ground-reflected as well as total solar radiation.

I mean, I need those values to draw a figure( X-axis (Hour or month) and Y-axis (the values of solar radiation )) by grasshopper into Rhino or by excel. I need just the amounts.

Bear in mind that these are huge amounts of values.

Each vertex (the black crosses on the photo below) of the TOF geometry mesh represents an annual solar radiation analysis with 8760 values:

The number of mesh vertices is defined as (precision_+1)^2.
So if you would like to have its beam, diffuse and ground-reflected components as well, that means 3 * 8760 values per single point.

Example: if you set your precision_ input to 20, the number of values would be a couple of millions:

(20+1)^2 * 8760 * 3 = 11 589 480 hourly values

Check the attached definition below. The outputs that you need are: “Ebeam”, “Ediffuse”, “Eground”.
They contain annual hourly values for each tilt and azimuth combination (that’s what upper mesh vertices represent) in a data tree.

TOF_Eb_Ediff_Eground.gh (437 KB)

Hi Djordje,

thanks for everything,

I need to draw a figure with azimuth = 180 and tilt angle between 0-90 degrees. because my project is fixed solar panel with azimuth at 180 degrees and various tilt angle between 0-90 degrees. Please see the picture below and tell me how can I separate the values for beam, diffuse, ground-reflection as well as total solar radiation for azimuth at 180 and tilt angle at 0-90 degrees.

I attached below a definition which picks only 180 azimuth orientations in a data tree.

If you intend to work with Grasshopper, data trees are one of its important aspects.

TOF_Eb_Ediff_Eground2.gh (445 KB)

thank you Djordje,

If I want to draw for annual solar radiation for azimuth=180 degrees and tilt angle (0-90 degrees), first, I have to use addition component (to add beam, diffuse, ground), second, use bar chart component to create into Rhino?

And why I can not create the figure for ground reflected values by bar chart component but I can do it for beam and diffuse solar radiation (see picture below please)?

and If I use just azimuth =180 degrees and different values for tilt angle, the results for annual solar radiation (2074 kwh/m2) will be the same as values that calculated for each azimuth and tilt angle?

thank you.

diffuse

The reason why you got that error when you plugged the Eground to the Monthly bar chart component is due to bug inside the Monthly bar chart component.
The first branch of the Eground data tree consists of ground-reflected values for tilt = 0.
The PV_SWH_surface can not “see” beyond its plane, therefor a surface parallel to the ground does not receive any ground-reflected radiation. So all values are 0.
It would be useful to inform the user that the annual hourly values supplied to the _inputData are all zeros, instead of raising an error.
I will report this to component’s author.

Are you trying to plot the total monthly values of beam, diffuse and ground-reflected, and total solar radiation?
For example in January the beam component was 100 kWh/m2 total (the summation of each hourly value in January).
In February the beam component was 120 kWh/m2 total, and so on…
Because right now with Monthly bar chart component you are plotting values for each hour during a year separated into months.

and If I use just azimuth =180 degrees and different values for tilt angle, the results for annual solar radiation (2074 kwh/m2) will be the same as values that calculated for each azimuth and tilt angle?

I didn’t understand you this. Can you clarify please.

I am trying to plot both total monthly and yearly values of beam, diffuse, ground-reflected as well as total solar radiation (at azimuth = 180, tilt angle=0-90 degrees).

I added a new output to the TOF component: Epoa, which would represent the total incident radiation on PV_SWH_surface (summation of Ebeam, Ediffuse, Eground). Monthly bar chart component does not support visualization of annual values, so you can not view those. In the attached file below you can only preview monthly values.

TOF_Eb_Ediff_Eground3.gh (548 KB)

Can I render each plot separately at Rhino?

In grasshopper, is it possible to plot total monthly values of incident radiation (x-axis) and tilt angle (y-axis) ?

thank you

Can I render each plot separately at Rhino?

You probably can, but you need to google on how to render the mesh colors.
A simpler solution would be to use the “Print Screen” button on your keyboard, instead.

In grasshopper, is it possible to plot total monthly values of incident radiation (x-axis) and tilt angle (y-axis) ?

It is possible.
You can for example use the grasshopper Conduit plugin, or send the annual numerical values of Average Data component’s totAnalysisPeriod output to Excel and make charts there.