Question-and-Answer Resource for the Building Energy Modeling Community
Get s tarted with the Help page

# Intersecting exterior wall surfaces at the ground boundary in OpenStudio

I’m trying to figure out a simple way to assign exterior wall boundary conditions and constructions for cases where building floors are either partially or totally below ground. I understand that it isn’t realistic to capture changing ground level, but assume a simplified case in which the ground plane occurs at a global z-coordinate of 0. Then, if I build my geometry such that anything below ground has a negative global z-coordinate, is there a simple way to divide an exterior wall surface that intersects the z=0 plane into an above ground surface, with an above ground construction, and a below ground surface, with a below ground construction (e.g., Construction:CfactorUndergroundWall)? It’s easy enough to find surfaces that are fully below ground. I think it’s just the intersection case that is tricky.

edit retag close merge delete

Sort by » oldest newest most voted

@mleach there are some methods in the API that would allow for splitting surfaces at the ground plane. This is somewhat similar to the Surface::splitSurfaceForSubSurfaces that splits surfaces vertically for doors and windows. You could adopt this code to draw a large rectangle starting at z=0 and extending below the surface and to the sides, then intersect this new rectangle with the existing surface:

https://github.com/NREL/OpenStudio/bl...

However, this is a little tricky. If there is enough interest we could add this as a new method in the API. Something like Surface::splitAtGroundPlane.

Dan

more

Matt, below is a summary of a variety of options for converting exterior surfaces to ground.

1. For the use case when surfaces don't need to be split I wrote a measure that takes converts all exterior walls to ground by story. If you need multiple stories the measure can be run multiple times. This could very easily be adapted to take an absolute "z" value in stead of a story. Then it could apply to all surfaces that are completely below the "z" value, or you could write it to trigger if any vertex of the surfaces is below the "z" value.
2. There is a nice way to split surfaces in the SketchUp Plugin. Normally "Project loose geometry is used for adding fenestration, but it can also be used to split up base surfaces. So if you have a change in material (and or boundary condition) 4 feet up. You can draw a line around your perimeter, raise it to the right height, and then project loose geometry. At this point you still need to change the boundary conditions (either by hand or with a measure). With this approach you could model sloped ground as well.

3. You could write a measure that would split a surface, given a "z" value as an input. For non-convex surfaces you could loop through all vertices. When you two adjacent that straddle the "z" value you can interpolate at what x and y value it crosses and then add a point. This should happen twice or no times (unless you have a non-convex surface which could get more complex). Then you need to duplicate the surfaces, and then delete points above on one copy, and below on the other, then change the boundary condition as part of the measure. OpenStudio does have a built an intersectSurfaces method for spaces, but I don't know that you can directly use that here. You could add in a dummy space (no associated with a zone) that has a big polygon representing the perimeter of the building. You might be able to intersect the model with this (I have not tested this) but it wouldn't change the boundary conditions for you.

more

For 2., you can also use a section plane and do "Create group from slice" then explode that (potentially twice, one for the group, and one for each subgroup per space) and then project loose geometry. See Creating Complex Geometry for an OpenStudio Model

( 2016-01-20 05:48:22 -0600 )edit

Exterior wall boundaries with a boundary condition of Ground are not automatically assigned during the Intersect/Match, even if they are below z=0 I believe. Assigning these surfaces are done manually via the inspector. If you have a wall partially underground, you can bisect the wall surface by drawing the estimated ground profile on the surface. This will allow you to assign two separate boundary conditions to the wall, and two separate constructions if applicable.

An existing measure assigns boundary conditions per floor that could be a starting point for a measure that does the same with respect to z=0.

more

To clarify, I'm looking for a way to do this for all such surfaces automatically, to avoid having to do it manually for each surface

( 2015-01-06 10:38:11 -0600 )edit