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

non convex polygons #204

Open
xavfa opened this issue Nov 3, 2020 · 9 comments
Open

non convex polygons #204

xavfa opened this issue Nov 3, 2020 · 9 comments

Comments

@xavfa
Copy link

xavfa commented Nov 3, 2020

Hi, I might have missed something, so sorry in advance if it is the case, and thanks to forward to the best link you have !
here is my issue: I am dealing with automatic generation of building for energy plus. Everything works perfectly and thanks a lot for geomeppy and eppy packages. but for buildings of more than one floor I get non convex floors and ceilings. issues Thus unless using MinimalShadowing option in the Solar distribution options, I encounter severe errors in the simulations... looking at detail messages, the non convex surfaces are responsible of this and are the floors and cielings/roofs. Thus I searched for python package for splitting these into convex surfaces but didn't find THE solution... workaround seem to imply a lot of implementation work. As I am sure that user from this package also encounter real building with non convex surfaces, please, what are your options for these ??
Thanks in advances for nay help. I am using external shadings form surrounding building and FullExterior should be used as I understood E+ documentation...

@jamiebull1
Copy link
Owner

HI @xavfa. You're right, it's quite an effort in implementation to get non-convex floors and ceilings. I've not actually tested this with the various shading options, as no self-shading was good enough for my purposes up to now. Happy to take a pull request on this if you're willing and able.

@xavfa
Copy link
Author

xavfa commented Nov 4, 2020

Hi Jamie, in order to dig into some possible way of implementation, i have some question regarding add_bloc function and the most efficient way you'd see it.
If the surface is split before creating the building, will it work ? or shall I build as many blocks as sub-surfaces (convex polygons) and then merge the zones (is there a function for this ?). Or shall the non convex surface be split after creating the zone (using a sort of dedicated routine that checks all the created surfaces, splits non convex ones it into sub-surfaces and connects these with same arguments than the original non convex one ?
Thanks in advances for your advices on this and if I manage to do it properly, I'd grateful for your consideration.
Last question, what do you mean by 'as no self-shading was good enough' ? You always uses the MinimalShadowing options for all your cases ? I am dealing with automatic generation starting from geojson files. my inputs takes unto account surfaces coming from the surrounding buildings and I add them thanks to the add shading bloc function (I remove the extra surfaces afterward). I though it was a good option to ensure correct solar inputs on the facade.
Thanks again,

@xavfa
Copy link
Author

xavfa commented Nov 9, 2020

Hi, I manage to make only triangles (could be further improve by merging possible triangles) and copy all the argument form the existing surface and then removing the surface. The 'Fullexterior' option seem to work fine (no error messages). But digging into those ceiling surfaces, I found something weird to me. I will open a new thread for this specific case (boundary conditions for intermediate floor\ceiling]

@xavfa
Copy link
Author

xavfa commented Nov 9, 2020

argh...solving the boundary conditions issues also solves this one for the shading options...

@jamiebull1
Copy link
Owner

Oh, that's great! I remember a few other issues were solved by the right use of almost_equals. Can you open a PR against the develop branch and I'll see if it's making best use of eppy/geomeppy and then prepare a new release.

@xavfa
Copy link
Author

xavfa commented Nov 19, 2020

Hi, I didn't manage to make pull request, I might uses tortoise git the wrong way because even commiting to a new branch does not works as I don't have permission to push anything.
but here are the modifications :
in intersect_matches\match_idf_surfaces :

for i in range(len(s.coords)):  # xavfa modification to make a vertex rotation (the almostequl makes vertex per vertex comparison only.
    coord2test = s.coords[i:] + s.coords[:i]
    if almostequal(coord2test, reversed(m.coords)):
        matched[sorted_tuple(m, s)] = (m, s)
        break

and in the recipes.py I added 'basement walls' and basement floors in order to assigne the good construction to the good place (basement floors are different then intermediate floors):

constructions = [
        "Project Wall",
        "Project Basement Wall", #to consider the basement walls for 'ground' conditions
        "Project Partition",
        "Project Floor",
        "Project Basement Floor", #to consider the basement floor for 'ground' conditions diffretn from 'Floor'
        "Project Flat Roof",
        "Project Ceiling",
        "Project Door",
    ]

and considers the cases in set_defautl_construction for 'ground conditions cases

@jamiebull1
Copy link
Owner

Thanks. To make a PR, you need to fork the repo and then make a PR from your fork. Otherwise I'll try and find time to do this myself, but I'm pretty pushed at the moment.

@xavfa
Copy link
Author

xavfa commented Apr 20, 2021

Sorry for the delay.
Yes a pull request has been done : branch Multi_floor_complexe_building.
It order to deal with more complicated geometry i have changed the paradigm of core / perim as well.
The none convex thing is dealt outside geomeppy as i split non convex into triangle and them merge the one that does nit lead to non convex surfaces. Everything works pretty well and I hadn"t had to get into geomeppy since quite some time now.

@amylee-lixinyi
Copy link

Looking forward to the geomeppy update with this fixed

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

3 participants