Integrated daylight and energy simulation in LBT

Hello

In the legacy and plus versions, we could have the amount of illuminance (LUX) at one point in grid and create a lighting schedule based on it. I tried to do this in LBT but it didn’t work.

I want to integrated daylight and energy simulation in LBT.

What is your suggestion?

The solution is straight forward. You can post-process the results for daylight autonomy to generate the lighting schedule for energy model. The logic is that for every hour that there is not enough daylight you need the lights to be on.

@mostapha But in order to have a lighting schedule for the energy model, I need to have hourly illuminance results (lux) for all test points or some of them, as sensor(s) like the results that HB+ gives us.

Hello sir ,
I am a masters student in environmental architecture .I am doing my thesis in daylight analysis in a hospital building. I made 3D geometry in rhino and did scripting in grasshopper software, am I not able to run my simulation in it .

You can use as many sensorpoints as you want /or what is usefull and make a conditional schedule. For exemple: If the average calculated light intensity is below a certain value set output to one else set to zero. For each room and timestep you can calculate this value and generate a schedule with a conditional statement. So each room should have one schedule.

@Erikbeeren

I know I can use it as sensor(s) but in LBT, there aren’t hourly illuminance results (lux) for all test points and I just can have DA(%) and UDI(%). I made a conditional schedule in HB[+] and Legacy but I can’t make it in LBT.

Yes LBT is not complete yet. I haven’t done light simulation with the LBT, so I did not know that.

Thank you @Erikbeeren
@mostapha said, there is a way to do ghat with the help of DA.

I’m waiting for an answer from @mostapha or @chris . They can definitely help me well.

As I said above, this is how the DA is calculated. There is already a component for post-processing annual daylight simulation results. See the code and modify it for your purpose. For every hour that there is not enough daylight you should set the lighting schedule to 1. Here is the code:

2 Likes

I set the lower and upper limits of the UDI in this code and it works fine, but programs 0 and 1 are not created for light because the hourly (luxury) lighting results are not available for all test points.
What is the problem with my work?

def annual_metrics(ill_file, occ_pattern, total_occupied_hours,
                       threshold=300, min_t=100, max_t=2000):
        """Compute annual metrics for a given result file."""
        da = []
        udi = []
        udiless = []
        udimore = []
        sch = []
        with open(ill_file) as results:
            for pt_res in results:
                pda = 0
                pudi = 0
                pudiless = 0
                pudimore = 0
                psch = 0
                for is_occ, hourly_res in zip(occ_pattern, pt_res.split()):
                    if is_occ == 0:
                        continue
                    value = float(hourly_res)
                    if value > threshold:
                        pda += 1
                    if min_t <= value <= max_t:
                        pudi += 1
                    if value <= min_t:
                        pudiless += 1
                    if value >= max_t:
                        pudimore += 1
                    if value > threshold:
                        psch = 0
                    else:
                        psch = 1
                da.append(round(100.0 * pda / total_occupied_hours, 2))
                udi.append(round(100.0 * pudi / total_occupied_hours, 2))
                udiless.append(round(100.0 * pudiless / total_occupied_hours, 2))
                udimore.append(round(100.0 * pudimore / total_occupied_hours, 2))
                sch.append(psch)
        return da, udi, udiless, udimore, sch

They are available. Each line in ill file is the results for a point which include the results for all the hours for the sensor separate by tabs.

Depending on how you want to calculate the schedule you have to make adjustments to the code. For instance you probably want to get the schedule based on a single sensor in the room and not all the sensors - To get started try to run the simulation with a single sensor and study the results. That should be a good place to understand the data structure.

I tried to run the simulation with a single sensor and study the results. but Each line in ill_file, there isn’t 8760 hourly data. Why post-processing annual daylight simulation results I have 4393 hourly data for each sensor?

this picture is a sample from the result of room (1 * 1 * 1) that has a sensor point.

Didn’t check but i believe it is because the schedule is set to working hours (9-17). If you set 24 hrs you’ll get 8760 values.
-A>

@AbrahamYezioro
The meaning of “working hours” is the occupancy schedule?
I have 8760 data for occupancy schedule and I have defined it in such a way that it is never zero. even I changed program of the Rooms but I have 4393 hourly data for each sensor.

We only run the study for sun-up-hours and remove all the night hours. You can map these 4393 values to hours using the sun_up_hours.txt file which you can find in the same results folder. The illuminance value for the missing hours is 0.

1 Like

Hallo dear @mostapha,

I have a similar question about the DA result.
According to the EU standard, I need to calculate only 2190 daylight hours of the year.
My ideas is to set a full year in the occupancy schedules and then only filter the sensors that have 25% (2190 daylight hours) more than my treshold, p.e 300 Lux and hope that exceeds more than 50% of the grid area.

My question is, the DA result, in the percentage includes every single hour or only takes into account the Daylight Hours?
As I read above, only sun-up hours should be taken in consideration, in this case, I don´t understand where to see which and how many daylight hours are calculated (where I find the sun-up .txt?, is visible through a LB component?) and in this case, how can I filter the result for only the 2190 daylight hours?

Thanks and best regards

What is the solution if I want to parametrically set the most central point of the room as a sensor to create a lighting program? The problem is that the dimensions of the room change with each simulation.

Hi @LaFleur,

There are 2 different lists of hours here for different reasons:

  1. Occupancy schedule: The list of hours that indicates at what hours the building is in use. This number is used to calculate daylight autonomy percentage. If you create an occupancy schedule for 2190 hours then that will be the base for calculating the values for daylight autonomy.

  2. Sun-up hours: This is the list of a portion of occupancy hours that the sun is up. To save time and disk space, honeybee removes the night hours from the study before running the simulation. Once the simulation is done it uses the original occupancy hours to calculate the annual metrics. For hours that are not in sun-up-hours but are in the occupancy schedule the illuminance value will be 0.

I hope this clarifies the difference between the two. And you can use the component for EU standards with no issues. All you need to do is to create the occupancy schedule for 2190 hours as needed by the code.

1 Like

Hi @Mohammad.hakim.a, let’s start a new post for this question. If you can provide a simple sample file it will be easier to help.

@mostapha Thank you, your explanation was complete. The problem was solved.