[BEM, Topologic] BIM Energy Modeling

245

Comments

  • edited May 2021

    Today we had a meeting between @agonzalezesteve @Moult and myself to talk about energy modeling in IFC / BlenderBIM addon. Here is a brief meeting report :


    @agonzalezesteve is going to work on an algorithm to generate IfcSpace from construction elements (wall/slab/roof etc…). A way using Topologic/Homemaker will be investigated. He also took administrative steps to obtain funding for these developments. Goal is a set up a full workflow for Spain standard compliant energy and life cycle analysis using BlenderBIM addon + EnergyPlus.

    @Moult will help to integrate IfcRelSpaceBoundary entities in BlenderBIM addon (hopefully in a way that will also handle other subtypes of [IfcRelationship](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/link/ifcrelationship.htm which will help other developments like for structural and MEP analysis). He also talked about current developments which will help on this topic :

    • on modeling side : way to create an instance (IfcEntity) from type (IfcEntityType).
    • on data side : way to use connections between elements like connections between walls.
    • on visualisation side : goal to display layers from IfcMaterialLayerSet in a similar way to how IfcMaterialConstituentSet are now displayed. (See issue #1227)

    @Cyril have shown IFC entities implied in BEM and his experience/knowledge about it. He provided some example file containing IfcRelSpaceBoundary generated from Revit and ArchiCAD :

    He will try to help others in their development.


    Next meeting on 26th of May at 08:00 UTC

    agonzalezestevebitacovirbrunopostlecarlopavJesusbill
  • I really want to tackle this in FreeCAD tooat some point.. But thinking of doing the other way round: users model the spaces themselves. It's possible to derive spaces from bounding walls already, but it doesn't work well (i'm interested by that algorithm!) and you usually want precise control over these spaces. It should be possible however to automatically derive surface + opening data from walls and slabs

    brunopostle
  • If you can define all the walls, floors and roofs as faces/planes, Topologic can find spaces and tell you which walls connect which spaces. Topologic doesn't require that the edges of the faces align perfectly, but they do need to overlap to define an 'airtight' space - i.e. if you have decomposed a wall into a simple rectangle, but are not sure if there are small gaps between adjacent floors and walls, then you can simply expand the rectangle to be sure that it overlaps, Topologic will trim away the excess.

    I had the previous Perl Homemaker code generating IfcRelSpaceBoundary, but I had no way of knowing if it was correct or useful. The current Python Homemaker code doesn't have this yet, it's on the TODO list, but in principle it should be fairly easy since I start with the spaces.

    I would love blenderbim to ship with a set of beautiful procedural materials and apply them based on the IFC material.

    agonzalezesteve
  • @yorik the user is free to model spaces themselves, but I think it's also important to offer a "generate" function for convenience. I have tried as much as possible to always allow vanilla and manual authoring where possible.

  • @brunopostle said:
    If you can define all the walls, floors and roofs as faces/planes, Topologic can find spaces and tell you which walls connect which spaces. Topologic doesn't require that the edges of the faces align perfectly, but they do need to overlap to define an 'airtight' space - i.e. if you have decomposed a wall into a simple rectangle, but are not sure if there are small gaps between adjacent floors and walls, then you can simply expand the rectangle to be sure that it overlaps, Topologic will trim away the excess.

    @brunopostle I think that's the point. Yesterday we were talking about using @topologic for automatic generation of IfcSpaces from IfcBuildingElements.

    topologicbrunopostle
  • One of the earliest use cases for Topologic was TopologicEnergy that automatically created energy models and simulated them in openstudio. We have published this in Architectural Science Review journal and the TopologicEnergy source code is on GitHub.
    I am itching to flesh out the ifc nodes in sverchok, I would love to collaborate with anyone who knows their IFC well.

    brunopostleCyril
  • @topologic said:
    I am itching to flesh out the ifc nodes in sverchok, I would love to collaborate with anyone who knows their IFC well.

    I know IFC pretty well but I have not played with sverchok. Send me a message if you want to have a talk to see if we can collaborate.

    bitacovir
  • Merging IfcBuildingElements with @topologic and using ExternalBoundary, IfcSpaces should be Cells of the merged topology.
    I share a script with this idea.

  • @agonzalezesteve said:
    Merging IfcBuildingElements with @topologic and using ExternalBoundary, IfcSpaces should be Cells of the merged topology.
    I share a script with this idea.

    I ran it and I got the following. Is this what was expected?
    1. Space
    1. Y: 0.0
    2. X: 4.0
    3. Y: 0.0
    4. Y: 0.0
    5. X: 4.0
    6. X: 4.0
    7. Y: 0.0
    8. X: 0.0
    9. Y: 0.0
    10. X: 0.0
    11. X: 4.0
    12. Y: 3.0
    13. X: 4.0
    14. Y: 3.0
    15. Y: 0.0
    16. X: 0.0
    17. X: 0.0
    18. Z: 3.20000004768372
    19. Z: 3.20000004768372
    20. X: 4.0
    21. Y: 3.0
    22. Y: 3.0
    23. Z: -0.200000002980232
    24. Z: -0.200000002980232
    25. X: 0.0
    26. X: 0.0
    27. Y: 3.0
    28. Y: 3.0
    29. X: 0.0
    30. X: 0.0
    2. Space
    1. Y: 2.79999995231628
    2. X: 3.7999999523162797
    3. Y: 2.79999995231628
    4. Z: 0.0
    5. Z: 0.0
    6. X: 3.79999995231628
    7. Z: 3.000000022351744
    8. Z: 3.000000022351744
    9. X: 0.20000000298023193
    10. Y: 0.200000002980232
    11. Y: 0.20000000298023193
    12. X: 0.200000002980232

  • @topologic said:
    I ran it and I got the following. Is this what was expected?

    Yes sorry, is not intuitive...
    The first Space is not exactly an IfcSpace, it is the envelope of the building elements. The second one is the real IfcSpace of the IFC I have used.
    After every space, there is a list of faces with the plane to which they belong to. The geometry is parallel to the axis so printing the plane makes easier to check if it works.

  • @agonzalezesteve said:

    @topologic said:
    I ran it and I got the following. Is this what was expected?

    Yes sorry, is not intuitive...
    The first Space is not exactly an IfcSpace, it is the envelope of the building elements. The second one is the real IfcSpace of the IFC I have used.
    After every space, there is a list of faces with the plane to which they belong to. The geometry is parallel to the axis so printing the plane makes easier to check if it works.

    I will try to visualise it using Topologic-Sverchok. Stay tuned :)

  • So here is what I got. This CellComplex has only one Cell??

  • No> @topologic said:

    So here is what I got. This CellComplex has only one Cell??

    No, there sould be three (two IfcSlabs and one IfcWall).
    The Cell of the image is the bottom IfcWall.

  • @agonzalezesteve said:
    No> @topologic said:

    So here is what I got. This CellComplex has only one Cell??

    No, there sould be three (two IfcSlabs and one IfcWall).
    The Cell of the image is the bottom IfcWall.

    The script is not quite right then. Here is what I get with a much simpler script:

  • edited June 2021

    I achieved reading the IFC from BlenderBIM and drawing IfcConnectionSurfaceGeometry in Blender using topologic but I don't know how to send this info back to the IFC file. @Moult @Cyril how should I create this entity?

    @topologic FaceUtility.AdjacentCells is not working and I cannot obtain the relating and the related elements.

  • @agonzalezesteve Sorry for delay I hoped an answer from @Moult then I forgot xD. I do not know very well all geometry panel available in IFC so I don’t know what it is the best way to store it. What I know :

    • Revit stores it as IfcCurvedBoundedPlane made of an OuterBoundary of type IfcPolyline and 0 or more InnerBoundaries of type IfcPolyline.

    • ArchiCAD stores it as IfcCurvedBoundedPlane also but with OuterBoundary/InnerBoundaries of type IfcCompositeCurve which is made of multiple IfcCompositeCurveSegment

    • IfcCurvedBoundedPlane coordinates are always flat (X/Y plane). BasisSurface is used to store transformation which allows to give relative placement of the boundary to the IfcSpace location. So if you produce geometry without taking IfcSpace placement in account everything will be close to 0,0,0.

  • I tried, but without success. I had exported from Revit to IFC and used IFC uploader, then the open BIM analytical model. That part worked, but my end goal of doing heat/cooling load calcs did not work once I tried loading within CYPETHERM loads. Have you tried? I was hopeful that there was an avenue to bridge BIM to BEM via IFC.

    @agonzalezesteve said:
    Has anyone used Open BIM Analytical Model from CYPE?

  • @edwinguerra said:
    Have you tried?

    No, I'm not a CYPE user.

  • @agonzalezesteve apologies for the extreme delay. I will look into it and report back.

    agonzalezesteve
  • @agonzalezesteve I just tried it in sverchok and Face.AdjacentCells worked perfectly. Here is the screen shot. Notice that it produces the two cell (in stethoscope) when the middle face is asked for its adjacent cells.

    bitacovir
  • @topologic Sverchok node are fine. I have problems using this method in a script.
    Can you check the file I attach please?

  • @agonzalezesteve said:
    @topologic Sverchok node are fine. I have problems using this method in a script.
    Can you check the file I attach please?

    I will soon but you could also look at the python behind that node and see how to call that method. If it works in sverchok, it will work in a python script.

    bitacovir
  • @agonzalezesteve said:
    @topologic Sverchok node are fine. I have problems using this method in a script.
    Can you check the file I attach please?

    Your code is failing on line 106:
    File "\Text", line 106, in
    AttributeError: 'NoneType' object has no attribute 'by_type'
    which is
    for build_elem in ifc_file.by_type('IfcBuildingElement'):

  • ifc_file = IfcStore.get_file()
    is returning None. What should this call return?

  • edited July 2021

    an ifcopenshell file object, you may use "create project" operator in scene properties.

  • Can you send me the simplest non ifc related code that fails? Would make it easier to debug. I honestly doubt it is a bug with Topologic because the same call in sverchok python code is working fine.

  • Dear @agonzalezesteve I just tested a python script (see below) and it works fine. Please check this code. You need to change the filepath variable to point it to the correct location of CellComplex.brep on your system. The brep is also attached. It is a basic two-cell CellComplex. So, only one face will report back that it has two adjacent cells. Hope that helps.

  • @topologic I've found the bug. I had problems with the getSubTopologies method.

    topologic
  • @agonzalezesteve ok good. Just to be 100% sure: You mean you found a bug in your code not in Topologic correct?

  • Question: Can one do energy modelling (heating/cooling loads, thermal comfort etc) within Blender? For example using the ladybug tools? Or is that done outside Blender? If not available, is there value to do that within Blender (thinking of porting my TopologicEnergy Code to Blender this summer, but not sure it is worth the time and effort if other solutions exist).

Sign In or Register to comment.