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

urban_geometry is creating inconsistent construction assignments to adiabatic floor and ceiling surfaces #89

Closed
DavidGoldwasser opened this issue May 18, 2020 · 5 comments

Comments

@DavidGoldwasser
Copy link
Collaborator

DavidGoldwasser commented May 18, 2020

This was resulting in variation in simulation results most end uses (interior equipment and exterior lights) by up to 5% when re-running the same OSW multiple times. I tested runs with the OpenStudio CLI and using OpenStudio 2.9.1

The cause was here, where hard constructions are assigned and boundary conditions changed to adiabatic. I would have expected it to be wrong but in a consistent way, so I'll recommend two fixes.

First, the main issue, this line

surface.setOutsideBoundaryCondition('Adiabatic')

Should be moved to just above this line

adjacent_surface.get.setOutsideBoundaryCondition('Adiabatic')

The reason for setting the boundary condition later is so that the line shown below here that gets the construction of the adjacent surface can run before the boundary condition of the adjacent surface is changed to Outdoors by the API when the primary surface is no longer connected by the Surface boundary condition.

adjacent_surface_construction = adjacent_surface.get.construction

Also just to provide a little more stability, when looping through surfaces, add .sort results are repeatable. `model.getSurfaces.sort.each do |surface|

model.getSurfaces.each do |surface|

@DavidGoldwasser
Copy link
Collaborator Author

DavidGoldwasser commented May 18, 2020

Pre-fix results
Screen Shot 2020-05-18 at 3 44 14 PM

Post-fix results
Screen Shot 2020-05-18 at 3 54 41 PM

@DavidGoldwasser DavidGoldwasser changed the title urban_geometry is creating inconsistent assignments to adiabatic floor and ceilings urban_geometry is creating inconsistent assignments to adiabatic floor and ceiling surfaces May 18, 2020
@DavidGoldwasser DavidGoldwasser changed the title urban_geometry is creating inconsistent assignments to adiabatic floor and ceiling surfaces urban_geometry is creating inconsistent construction assignments to adiabatic floor and ceiling surfaces May 18, 2020
@DavidGoldwasser
Copy link
Collaborator Author

A long term fix is for openstudio-standards, the extension-gem and this to use the adiabatic field for default construction set. Unfortunately there is only a single field, not one for floor, roof, and walls. In other model articulation workflows (outside of urban_geometry measure) we also use adiabatic to represent party walls, but in those cases a hard coded construction could be applied.

Note: even for roof ceiling the default isn't ideal, if for example you have carpet on the floor, and want to represent that in the adiabatic default.

@kflemin
Copy link
Contributor

kflemin commented May 18, 2020

let's make sure to add a test to prevent this in the future.

@DavidGoldwasser
Copy link
Collaborator Author

Test is good idea. Ideally we have a series of multi-repo workflow tests that run simulations and look at results; but if we want to write a measure test that just uses this repo we can create a seed model of the URBANopt workflow right after the blend measure. @tanushree04 a way to do that would be to set skip to true on all measure after blend and you can run it normally or with --measures_only. Make that the seed for the measure. Then the measure test needs to run one or more simulations to look at the results, as it would be hard to pick this up on the input. Could save expected results from run now, and run the test once, or could run it multiple times (3-5) and confirm the results relative to each other.

The problem here, if we are just using this measure and repo, is we would have to run it without a mechanical system, or with ideal air loads thrown in (or something simple written in the measure test). I think in the end something more basic here and then multi-repo managed elsewhere might be best for this. Maybe in or alongside the example project repo>

@tanushree04
Copy link
Contributor

I have added a test that loads in a model with a construction set assigned, it creates adiabatic surfaces for the model and hard assigns constructions, and checks whether the correct constructions were assigned from the construction set.

it 'retains construction set and assigns correct construction for adiabatic surfaces' do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants