Detailed thermal bridge modeling for construction details

Thank you all. This is all really helpful feedback and testing to have before doing an official release.

@ayezioro , the R8.28 release is a Service Release Candidate right now and it is possible that McNeel still has a bug or two to fix before they make it the official version. I just ran tests in both R8.25 and R8.27 and everything still works well. If we end up finding that this is not the case, then it is likely that I will need to make some changes to our function that converts Rhino Breps/Surfaces over to the LBT Face3D format since your screenshots of the geometry suggest that this is probably where the problem is happening on your machine. I aim am right that this is where the problem is, I think your current setup with the Rhino 8.28 release candidate could also have some bugs in the translation of Rhino geometry to Honeybee geometry. So it might be wise to just go back to the 8.27 stable release for now. If you do so, let us know if this fixes the issue.

And thanks for sharing your installation process, @asisnath. It seems that, if I want to make this all straightforward for others, I need to add an explicit error message for the case that someone has not done the full THERM 8 installation and is missing the required .dll.

Also, it looks like I should just put together a library of THERM materials that we ship with Fairyfly such that people can still build Fairyfly models and write them to FFJSON without needing to have THERM installed. Because we can’t distribute THERM like I mentioned, I’m sure there will be a lot of cases of someone teaching a class and someone shows up without THERM installed but still wants to follow along as much as they can. I bet the Mac users will also appreciate this at the least such that they’re not left with zero functionality on their end. Granted, people will still need a Windows machine with THERM installed if they want to simulate the Fairyfly model. But they can still do most of the model creation without needing this.

2 Likes

This one is pretty straightforward. I’ll aim to get this done before the release.

Another update:
Everything is working now. I restarted Rhino for the 4th time … let’s figure.
Sorry for the confusion!!

Thanks @chriswmackey for the support and patience, and @asisnath for the tip on installing.

-A.

2 Likes

It’s all good, @ayezioro .

Your screenshots make me thing that something was wrong about the tolerance in your model. Maybe it was related to some type of bug in Rhino 8.28 but maybe it was something else. Let me add an extra check for tolerance in all of the Fairyfly “Create” components so that you get a clear warning if something about it is not right for THERM simulation. I imagine any tolerance higher than 1mm is going to give you some strange errors from THERM.

Wow. Woke up this morning - checked and the installer loads properly - and now there is the excitement of testing, which I can see others are doing.

Thanks @chriswmackey

Ok, I made a bunch of changes based on the feedback that everyone gave here:

  1. There is now a check for the FORTRAN .dll that @asisnath was lacking, which will give an explicit error message when trying to run a THERM simulation directing the user to the “Redistributable Libraries” URL:
  1. There is now a check for cases where the model tolerance is too coarse, which will give a recommendation for what the tolerance should be changed to and hopefully help avoid the situation that @ayezioro found himself in:
  1. I added a new package to distribute the library of THERM materials with Fairyfly such that people can still open the fairyfly sample files and build Fairyfly models even when they are on Mac or do not have THERM installed. Note that the library of materials is still loaded from the THERM installation if it is found such that, if people make custom materials in the THERM interface and save them to their library, they can be used with Fairyfly the next time it loads up. But the change I made gives everyone a base set of materials to work with:
  1. Lastly, I added a vis_set output to the “Read THERM Result” component to satisfy @ayezioro 's wish and generally make it easy to display the THERM results with screen-oriented legends:

All of these changes are now available through the LB Versioner (you only need to run it once if you already have the fairyfly components on your machine).

Hopefully, this will make it easier for others to get started with this. It is already so much of a pain that users are always responsible for installing the correct version of THERM themselves and then also installing the “Redistributable Libraries.” At least with the changes above, people still get a base level of functionality when they have not yet done this. And, when they go to run the THERM simulation, they will get clear error messages telling them what they are missing.

Thanks again for all of the feedback here and please keep it coming if you have any other requests or hit any other hiccups.

1 Like

Love the Vis Set output. (It also enabled me to ensure I had what appears to be the most recent version - the one with the Vis Set output.

However, I get the following not helpful error message when trying to load the sample file you linked in this thread:

Leading to this actual message:

I tried Sync again. And reloading Rhino etc - to no avail.

Also, in initial testing of THERM 8.1, I grabbed their sample file and ran it.

Then I linked to read the results

Ths is great @chriswmackey ,
Thanks!!

Will test soon to see if there is more to report.

Question: User defined materials where they be stored? Just to be sure if they will have their own folder in the LBT user’s definitions.

-A.

Hi @chriswmackey ,
Want to report:
I have 3 machines. Started with one laptop:
After updating, tried to run and it complained about the missing libraries. Which is weird since yesterday it was working and I’m sure I installed the libraries. Anyway, installed them again and it is working.

The vis_set works fine but I see the wireframe doesn’t show via the component. It will be nice if this will be part of the display.

Thanks!!
-A.

@ayezioro ,

Including the wireframe in the visualization set is straightforward and I’ll try to do it tomorrow. You have two options for adding user-defined materials:

  1. Make them in the THERM interface and add them to your THERM libraries there. When you add them to the library of the THERM interface, they get added here:
C:\Users\Public\LBNL\THERM8.1\lib

… and Fairyfly will find them the next time that it loads in Grasshopper.

  1. Write the JSONs (or save THERM XMLs) of the objects into the correct subfolder at the following location (if you have originally used the Pollination installer for installation):
C:\Program Files\ladybug_tools\python\Lib\site-packages\fairyfly_therm_standards

Admittedly, the second option is a bit of a workaround until we decide on a more formal location in APPDATA but adding JSON and XML files there will get them to load up in Fairyfly.

@thedonn ,

I have not yet been able to recreate your issues but I will try again tomorrow. You are using Rhino 8, correct? And you made sure to save your THMZ file after you simulated it and got your results before plugging it into the Grasshopper component?

Actually, I could recreate the second issue you had with the THERM sample file and the result component. It is a bug and I will fix it tomorrow.

If there are no constrains related to THERM y suggest locating the user defined THERM materials on:
C:\Program Files\ladybug_tools\resources
As all other definitions. From the user point of view will be “easier” to manage … IMHO

Thanks @chriswmackey !!
-A.

Hi @chriswmackey ,
Question: How do you recommend to define glazing surface? I’m trying to translate my Legacy files and many of the facade sections include the window.
I tried to assign a HB_GlassMat but get an error in the FF_Shape:

  1. Solution exception:Expected SolidMaterial or CavityMaterial. Got <class ‘honeybee_energy.material.glazing.EnergyWindowMaterialGlazing’>.

In the THERM library i don’t find any glass material, so I don’t know how to deal with this right now. There is only Glass (Plate or Float) which I’m not sure is what I need here.

Any pointers?

Thanks,
-A.

Some more things:
I’m trying to define a new THERM materials. In the inputs “density” and “specific Heat” complain that the values must be between 0 and 1. Is this an error? The sample file doesn’t use those definitions in the THERM materials.

Thanks,
-A.

Updates

Ok, I just pushed several more changes that are now available with the LB Versioner based on your feedback, @thedonn and @ayezioro .

They are as follows:

  1. I fixed the bug that @thedonn found in the “Read THERM Result” routine that was causing it to fail to import the samples distributed with the THERM installation. These samples can now be imported with the “FF Read THERM Result” component:

  2. As the screenshot above shows, I have also added a new shape_geo output from the “FF Read THERM Result” component, which will import surface geometry of the shapes from the THMZ file. These can be used to customize the visualization of the result mesh. They are also used to produce a wireframe of the shape polygons that overlays the mesh in the vis_set as requested by @ayezioro .

  3. I fixed the bug that @ayezioro found in the “FF Solid Material” component, which was accidentally causing the density_ and spec_heat_ inputs to be assigned to the back emissivity of the material (hence, why you were getting “float in range” errors). Now, all of these properties get assigned correctly in the latest version of the component, though I should note that the density_ and spec_heat_ inputs currently don’t have any bearing on the results that you get by running the THERM simulation from Grasshopper because we don’t yet support transient simulation. But you can clearly see by the fact that I exposed these inputs that we plan to expose transient simulation in the future, at which point these inputs will become relevant. And you can obviously still open the THMZ in the THERM interface and set it to run a transient simulation there.

  4. I made it possible to plug the outputs of the HB Opaque Material and HB Glass Material into the “FF Shape” component _material input. Hopefully, this all gives people a better way to coordinate their THERM results with their HB-Energy simulations.

Other items for later

I was still not able to create @thedonn 's Grasshopper IO warning but it reminds me of the warnings that I get when I save a .gh file to a remote storage folder like Google Drive or Dropbox. Maybe try re-downloading the latest version of that sample file into your downloads folder, open it from there, and see if you still get it?

As for simulating insulated glazing systems, @ayezioro , this is out of scope for the first Fairyfly release as I am just trying to get the basic functionality and result visualization in good shape first. But I will eventually add a dedicated Fairyfly object for GlazingSystem that allows you to take the IGUs that you export from LBNL WINDOW and include them in your THERM models (complete with all low-e coatings, gas layers, and glass properties taken directly from the manufacturer). I’ll also add some way to set up these GalzingSystem objects from HB-Energy WindowConstructions if you are trying to coordinate between E+ and THERM. For now, you can probably get pretty close insulated glazing system results by using the “FF Cavity Material” for the gap layer between panes of glass and using the “HB Glass Material” for your glazing layers. The only thing that isn’t really supported in this Grasshopper workaround right now is the low-e coatings on only one side of the glass. For this, you’ll need to open the THMZ in THERM interface, change the emissivity of the relevant boundary on the side of the gas, and simulate it there. But this type of workaround will all just be temporary until I can add support for real GlazingSystems. Give me some time following a LBT 1.10 release to implement it.

Lastly, we can eventually officially move the location of the THERM user library. Technically, you can set this up manually yourself right now by creating the following 3 folders:

C:\Users\[USERNAME]\AppData\Roaming\ladybug_tools\standards\therm\materials
C:\Users\[USERNAME]\AppData\Roaming\ladybug_tools\standards\therm\gases
C:\Users\[USERNAME]\AppData\Roaming\ladybug_tools\standards\therm\conditions

… and dropping JSONs and XMLs into there.
This will replace the materials being loaded from:

C:\Program Files\ladybug_tools\python\Lib\site-packages\fairyfly_therm_standards

But I was kinda thinking that most people would create many of the custom THERM materials that they plan to reuse in the THERM interface. Or, if you are a big LBT user, you might create them as HB-Energy materials and add them to:

C:\Users\Chris\AppData\Roaming\ladybug_tools\standards\constructions

… so that you can use them for both THERM and E+. What do you think?

And, thanks again, @ayezioro and @thedonn I can always count on you to find the bugs at the bleeding edge before I do official releases.

2 Likes

You are the best @chriswmackey ! Always pushing the limits forward. So great!!
Installing now with the new installer.

Super!! This will allow me [and maybe others] to update those Legacy files.

Good enough.

This is me. Now that you mention this, the most probable workflow for e will be using the HB_materials rather that THERm’s. But still, it is good having the possibility of saving own defined in the same Resources folder, just for the portabilty and sharing.

One more [little] thing: Add the sample to the LB_samples component :wink:

Thanks for this gift.

-A.

1 Like

FYI, the LB Samples component should get updated when we release LBT 1.10, Now that many of the major kinks are worked out of the Fairyfly components, I am going to start working towards that. I’ll also try to add from more samples based on the THERM ones we had for Legacy HB.

4 Likes


Hi i have been trying to start the code but this error has been popping up.. i have tried to restart rhino a bunch of times.. not sure what the issue is. Let me know if there is something i am missing.. Thanks in Advance.

Trying updating core librarires using lbt updater and restart rhino each time you update.

Does fairyfly work only on Rhino 8 or also for Rhino 7 ?