Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daysim limitation workaround - manipulate multiple ill files #414

Open
boris-p opened this issue Nov 8, 2015 · 5 comments
Open

Daysim limitation workaround - manipulate multiple ill files #414

boris-p opened this issue Nov 8, 2015 · 5 comments

Comments

@boris-p
Copy link

boris-p commented Nov 8, 2015

Being more exposed to real projects and workflows where I work, I recently had the chance to try and make some workflows more efficient and wanted to first figure out if there are already better ways to do what i'm trying to do and if not see if you think it might be relevant for other HB users.

The issue is regarding daylight simulation using HB and daysim in the background. For simplicity's sake let's assume the geometry is a cube. The four facades + roof have glazing elements with dynamic shading based on sensors outside the building.
The first problem is that daysim limits shading groups to two and in our situation there are five independent facades. What we did is run 10 simulations. Every two simulations accounting for one facade (open and shaded) while treating the other facades as closed.
The second issue was combining the 10 ill files to a single one based on the individual glazing and the shading state.

The components I wrote address the second issue. The logic is rather straightforward. On top of the 10 files we create a control file containing radiation values for all the facades(One sensor per facade, on the outside). For every pair of ill files and for every hour we check the control file, if there's less than a MIN_Value we defined we use the results from the unshaded ill file, if there's more than MAX_Value we use the results from the shaded file.
MIN and MAX are not the same value in order to have a range in which we will keep the state as it was so we don't have to activate the shading too much (a bit like waiting for a buffer when watching youtube so it won't get stuck all the time).
So from 10 files we have 5 and now it's just about adding the lux values for all of the points to get a single ill file.

From what I know there isn't a better way to do it in daysim. It could be done in excel but apart from being time consuming and more prone to making manual errors, with very big ill files it might not work at all. For the project I worked on the ill files were about 150 mb each and excel would just crash.

All in all i've written three components -
A component which merges 2 ill files (shaded & unshaded) to one
A component which adds the values for every sensor point for every hour for as many ill files as we want
A component which merges and adds the files in one go (alternatively we could run the first for as many file pairs as we need and then the second but doing everything in one go is just so much more efficient and fast). Could probably also make just one component with a few flags to dictate different behaviour.

What do you think, might something like that be relevant for the community? I've written the components in c# but rewriting in python shouldn't take long and would be interesting to compare the performance.

Btw, using the 3rd component to merge 10 150 MB ill files took about 4 minutes on my machine.

best,

boris

@boris-p
Copy link
Author

boris-p commented Nov 8, 2015

Chris has kindly pointed out to me that Mostapha is implementing the 3-Phase method which might eliminate the need for this workaround altogether.

What do you guys think? Would it just be redundant?

best,

boris

@mostaphaRoudsari
Copy link
Member

Hi @boris-p! Sorry for getting back to this pretty late. I would say that any post processing component can be very useful. I assume you already know about a couple of available components such as Honeybee_Read DS Result for a point, Honeybee_Read Hourly Results from Annual Daylight Study and Honeybee_Read All the Hourly Results from Annual Daylight Study. Specially if you have clean classes to load ill files I will modify the current components to use yours. I believe that will also improve the performance.

I can provide more comments once you share some screenshots of what they really do in action.

I assume this components will be still useful for merging results of annual analysis once it's generated by 3-phase method. The logic will stay the same so I don't think they will be redundant.

@boris-p
Copy link
Author

boris-p commented Nov 25, 2015

Hello @mostaphaRoudsari , I've prepared a small example file (the geometry got a bit messed up so the illuminance results are a bit strange, but in terms of manipulating ill files, it should all work) https://www.dropbox.com/s/jcf2g6knszg44ul/manipulate_ill_files.rar?dl=0

The plugin in also there (once installed - under TsTools). I left it in c# for now so we could first talk about what makes sense.

mixills

Again, the main idea was to free ourselves from daysims limitation of only 2 shading groups. (although maybe it could be useful for a wider range of activities?)

One of the component's limitations is that it only supports two shading states (per shading group), but I could also rather easily add that functionality. Also looking at what daysim is doing, it seems that the logic is pretty much the same so there shouldn't be an overhead caused by using the new tools for post processing rather than "native" daysim.

Hope it makes sense

/boris

@THEtantaarchitect
Copy link

boris
does your merging component works for ILL files created for multiple zones ?

regards
anas

@boris-p
Copy link
Author

boris-p commented Dec 18, 2016

hi @THEtantaarchitect , as long as the ill files match in terms of the number of test points it should work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants