Ladybug analysis period problems


I have some questions regarding the analysis period in Ladybug. If I enter in the hours from 9-15 with a 4 (15min) time step the last item in the sunPositionInfo output displays 14:45. Does this mean that the 3pm vector isn’t being calculated? Is this a bug or is this intended to work this way?


Hi Paul,

This is one of my favorite topics actually. I have changed this couple of time and still I’m not sure if it is the best solution. The last hour is not intended to be there.

So here is the concept. Let’s say you want to generate sun vectors for working hours. Let’s say that people are working in an office from 8 to 17. It means they will leave at 5pm so the data for hour 5 shouldn’t be generated. Does it make any sense to you! I tried to match Ladybug sunpath with daysim logic but I agree that it’s not what comes to mind first when you hear 8 to 5.


PS: I like the time-saving component up there. How do you deal with the cutting hour?

Hi Mostapha

The daylight savings cluster I made is just a simple dispatch with a Boolean input. If true, it adds an extra hour to the timezone.

As for the missing vector, I actually need to calculate the no. of hours of direct sunlight on a facade within a given period. So I believe for the calculations to work, I need this extra vector. It’s pretty easy to do a workaround by adding an extra hour in the input and then splitting the output lists. I just want to check if there was some logic behind your methodology I was missing before I went ahead an amended it.

Hi Paul,

Thanks. I think what you said make sense and maybe for cases like this we should add the last hour.

Back to changing the time zone, I assume you know that your solution will move all the sun positions for all the hours (and not only daylight saving period). The reason that we haven’t applied daylight saving hours is the fact that it is different in different countries. Maybe we should add it in a simplified version and give the user the chance to overwrite it similar to your Boolean option (


Hi Mostapha,

I think there should be an option to include sun vectors up to and including the end of the period as this is required when doing say solar access analysis.

I’ve just been tripped up by this when creating a Solar Fan for a solar access exclusion zone to a public space between 11am-4pm. An initial pass using only hourly intervals effectively only calculated a solar envelope for 11am-3pm as the last vector (4pm) was not included!

It did not seem right to me the i realised the last vector was missing, so i increased the intervals to 12 (i.e 5min intervals) which then means the last vector is 3:55pm.

Ideally the sun vectors produced from a sunpath would include the last period, and components would include or exclude this depending on their purpose (e.g Solar Fan would include, Shading would exclude but perhaps with an option to include, etc). But this would mess up existing definitions so understand it might not be the way to go

Hi Owen,

We had a lot of back and forth on this topic. Paul has raised the questions a couple of times himself. I agree with both of you. Not including the last hour is not a good idea even if it’s technically correct in some case. We are changing this in the new version of Ladybug so the last hour is included.

Meanwhile you need to use list management in Grasshopper to add/remove extra hours.


Hi Mostapha

This has been fixed in Dynamo but has it been updated in Grasshopper? I’ll need to undo some of my work arounds once implemented.


Hi Paul, It will be implemented to the new Ladybug (ladybugX) which will be under a separate tab. We’ll leave the current Ladybug as it is to avoid confusion and breaking current workflows.

Thanks Mostapha. When you say Ladybug X was exactly do you mean? Is it a separate component within v.0.0.63 or not yet released?

It’s the new ladybug library which is what Ladybug for Dynamo is using. It’s not released yet for Grasshopper.

It will be a new Ladybug. LadybugX to Ladybug is similar to what Kangaroo2 is to Kangaroo.

OK. So you are completely rewriting it so that it works with both GH & Dynamo?

Yes. It’s more than just to get it to work for both platforms. There are major code and performance enhancements plus an API.

Hi Mostapha

So this topic has recently come up again with colleagues and I just wanted to get your expert opinion. If we add in the last vector in the context of performing a solar access study I believe it is technically correct. For example, if we have an analysis period of 1hr but only 1 vector, it will assume that it gets sun for the full hour. If however we have 2 vectors, we can be sure that the sun is there for the full duration. I think this is clear.

But what complicates things is the legend and all subsequent workings. By adding in the extra vector as a workaround, we would get 2hrs max, not 1 hr. So until Ladybug X is released, do you suggest simply subtracting the step value (1hr) from the results and adjusting the legend? So 2 vector compliance would be 1 hr, and 1 vector compliance would be 0 hrs. Does that make sense?

Hi Paul,

I would say the best solution in this case is to use timeStep in both sunpath and sunlight hours. You can generate several sun positions for the single hour and use them instead of using two sun vectors.


It might be a bit too late now but having experienced the same problem, this little cluster helped to solve the issue. It uses Heliotrope and Julian day to feed Ladybug+Honeybee with the generated sun vectors.

For month or year analysis it only uses a timestep of 1 as too reduce computation time…

File attached (48.5 KB)