1. Solution exception: ** Fatal ** GetSurfaceData: Errors discovered, program terminates

hi @mostapha

I´m having trouble with plugging the pollinaton rhino model (validated) to grasshopper.

I´m plugging it to a “HB model to OSM” but there´s apparently problem with doors that weren´t a problem in the rhino pollination model once it was validated.

The errors say:

  1. Solution exception: ** Fatal ** GetSurfaceData: Errors discovered, program terminates.
  2. ** Severe ** FenestrationSurface:Detailed=“DOOR_3F76A524”, invalid blank Outside Boundary Condition Object.
    Do you know what could be the issue?

Hi @olivierdambron - Based on the error message, a few internal doors are missing the other surface. Can you share the model with me? Also, see this (https://discourse.pollination.cloud/t/failed-energy-simulation/2451). It looks like you have already resolved those issues.

Hi @mostapha ,

Thanks so much for keeping an eye here.
Rhino plugin is a a lot of fun to work with, but I’m still learning how things work and the best practice for modelling.

Here are the files, if you can take a look:
230316 - 3d model.3dm (8.0 MB)
230316 - Thermal script for mostapha.gh (278.4 KB)

Let me know if I can provide any info.


Hi @olivierdambron,

Thank you for sharing the model. I was able to fix the adjacency error by running the PO_RebuildRooms command to recreate the faces and remove all the adjacencies and then re-run the PO_SolveAdjacency command to solve the adjacencies correctly.

I could have used the PO_ResetBoundaryCondition command too but I noticed a few degenerated faces errors in the EP error - that’s why I rebuild all the faces to do a cleanup. I also moved the doors that were very close to the edge of the room a bit inside.

That brought me to this error about two adjacent walls with different constructions.

I used the Room ID to find the room and the problematic face.

It looks like that this face is set to Ground construction while it should have been set to a foundation construction based on the other interior faces. I’m not sure why this was happening (cc: @mingbo).

After fixing that and re-loading the model into Grasshopper by using clear value I was able to run the model. You can also check the Auto Sync option as an alternative solution.

Here is the updated Rhino model.

230316 - 3d model - 2.zip (1.3 MB)

Let me know if you have any other questions!

@chriswmackey - should we add the check for constructions of adjacent faces to the validation routine?

@olivierdambron - looking forward to hearing your feedback about the Rhino plugin as you use it on more projects. Cheers.

1 Like

From the screenshot, it seems the construction is set by users. Is it correct @olivierdambron?

Hi @mostapha ,

Thank you so much for looking into this case and for the solution. We’re keeping notes of these precious tips and tricks.

Hello @mingbo,
you are right this is a mistake from us, that face should have been assigned as “Foundation”. No bug here.

Thanks to both, I’ll keep going with this and let you know.
I keep in mind to note any feedback I may have. So far, I’ll make 2 other posts separately.


Thanks @olivierdambron and @mostapha

There’s already one there

So you should not have been able to get that error with a valid Honeybee Model.

I’ll take a look at why the validation command didn’t tell you about all of these invalid cases when I get the chance.

1 Like

@chriswmackey thanks!!

It’s just that sometimes the PO_ValidateModel function returns a report that allows to trace back the error and sometimes in throws an error, harder to identify.

with Error

with Report

Hey @mostapha ,

In your sample, I see that I get all of the ValidationErrors about the mis-matched constructions.

Did you try running the PO_VAlidateModel command before you tried re-simulating in EnergyPlus?

@olivierdambron ,

I have to commend you for finding a bug in the validation routines that I’m not sure I would have ever found myself. It was a typo of a single letter that caused me to miss cases of mis-matched adjacencies only for Doors. I just put together a fix:

You should hopefully be able to get it on your end with the LB Versioner by tomorrow. Once you have the fix, the PO_ValidateModel shows you exactly where you had some invalid adjacencies for Doors:

Thanks for finding and reporting the bug.

1 Like

Also, @olivierdambron . Those “harder to identify” fatal errors that you get there are because you somehow ended up with a model that you should not have been able to create with any of the plugins. In the case of your screenshot, you have a WindowConstruction assigned to an Opaque Face (eg. Wall, Floor, RoofCeiling).

This is the type of error that can cause a lot of headaches down the line but it’s very simple to just enforce it upon the creation of the Honeybee object. This way, we could give you a clear exception message about the wrong construction type instead of letting you make the invalid object with the wrong type of construction and then dealing with the fallout and the other weird types of exceptions that you might experience because the object is not of the correct type.

Neither the Rhino plugin nor the Grasshopper plugin should have let you do this. Do you remember how you created this model or how you might have ended up with a situation like this?

Did you import it from IDF and, if so, do you have the original IDF? Was this IDF simulate-able?

I’m glad I picked up a bug! Thanks for being so reactive !

The model was not imported from an IDF but was in fact modelled with the Rhino Plugin.
It went through successive Undos, moveedge, moveface, rebuild, delete, it’s quite hard to find it back.

I will report here any findings.

Ah, thanks for confirming this, @olivierdambron :

@mingbo ,
Can you think of any way that the Rhino plugin would let someone assign a WindowConstruction to an Opaque Face? We should be making sure that this does not happen when people assign the constructions because it will create a lot of headaches down the line if we silently let the issue pass.

Hi @chriswmackey, currently there is no easy way to group all construction types for an Opaque or Window Face, except listing each of them for the type checking.

Another idea is we can organize these constructions in the schema library. The current schema has an IConstruction interface which is auto-generated based on the folder name from the source OpenApi Schema. We can add another layer and group them based on if it is applicable to Opaque or Window.

I manually added IWindowConstruction and IOpaqueConstruction for now to limit Honeybee.UI for this case.
fix(IConstruction): add IWindowConstruction, IOpaqueConstruction by MingboPeng · Pull Request #241 · ladybug-tools/honeybee-schema-dotnet (github.com)

1 Like

Thanks @mingbo ,

I’ll admit that I didn’t completely follow the details of what you were suggesting but, if it means that the Honeybee UI now enforces that WindowConstructions can only be assigned to Apertures and Glass Doors, then that’s great and that’s all that we need.

Also, now that I know this has been an issue, maybe it’s also worth checking that the UI enforces that ShadeConstructions can only be assigned to Honeybee Shades and nothing else.

Honeybee UI now enforces that WindowConstructions can only be assigned to Apertures and Glass Doors, then that’s great and that’s all that we need.

Also, now that I know this has been an issue, maybe it’s also worth checking that the UI enforces that ShadeConstructions can only be assigned to Honeybee Shades and nothing else.

Thanks @chriswmackey, this is helpful. Would you suggest enforcing AirBoundary face can only be assigned with AirBoundaryConstruction?

Thanks, @mingbo .

I would suggest enforcing that non-air_boundary Faces must use OpaqueConstruction. The core Python libraries also enforce this.

However, we technically let air_boundary Faces accept either AirBondaryConstruction or OpaqueConstruction. I think I realized that the latter case is useful for certain specific AFN situations. I can’t remember exactly what this was but it was helpful for working around some limitation of E+.

Thanks @chriswmackey, the Honeybee.UI has been updated with all above enforcements. The next release will include this update.

1 Like