Giter VIP home page Giter VIP logo

gbxml-to-openstudio's Introduction

gbXML to OpenStudio

This repository is intended to develop code that uses one or more advanced gbXML import measures to take gbXML to OSM translation beyond what is covered by GbXMLReverseTranslator in the OpenStudio C++ code.

Directories

  • gbxmls - example gbXML files, and complex models for regression testing
  • measures - existing and new measures used to translate and test gbXML to OSM translation
  • seeds - contains seed models used by one or more OSW workflows
  • weather - contains weather files used by OSW workflows
  • workflows - OSW workflow files that using the OpenStudio CLI run the gbXML to OSM translation workflow measures, forward translate OSM to IDF, and run EnergyPlus

Configure Development Environment

  1. Install the desired version of OpenStudio (Revit currently uses OpenStudio v3.4.0)
  2. Install the custom version of EnergyPlus corresponding to the OpenStudio version (currently EnergyPlus 22.1.0 For Revit)
    1. If the version of EnergyPlus hasn't been built yet, follow the instructions in the openstudio-revit-releases repo to build one
    2. Change the default install location so that it can be installed alongside the official release if necessary (e.g. C:\EnergyPlusV22-1-0-revit)
  3. Install Ruby v2.7 for Windows (devkit shouldn't be necessary)
    1. Open a command prompt in the gbxml-to-openstudio directory
    2. Run gem install bundler
    3. Run bundler install
  4. Install 7-Zip
  5. Install the latest Advanced Installer

Building Signed Installers

  1. Pull the latest code
  2. Update CHANGELOG.md to reflect changes included in the new release
  3. If a previous installer_staging directory exists move it to installer_stating.old
  4. Run rake build_installer, which copies files to the installer_staging directory (bundler install may be necessary as well if the gem dependencies have changed). Ensure that any untracked files in the following directories are removed prior to running.
    • measures
    • seeds
    • weather
    • workflows
  5. Zip the installer_staging directory using 7-Zip, and drag the resulting zip file to the code-signing-client.exe executable. 7-Zip is necessary because Windows is unable to compress files with unicode names
  6. Once installer_staging.signed.zip has finished downloading simply extract the contents back into the installer_staging directory, replacing the original files
  7. Diff the installer_staging.old and installer_staging directories
    1. If any files were added they must be manually dragged into the Advanced Installer file tree
    2. If any files were removed they must be manually deleted from the Advanced Installer file tree
  8. In Advanced Installer, with the Product Details tab active, increment the patch version (e.g. 1.1.5 -> 1.1.6) and hit Save
    1. When prompted to generate a new product code click Generate new, and save again
  9. In Advanced Installer, with the Product Details tab active, click Build in the ribbon
  10. Once the build has successfully completed, browse to the OpenStudio CLI For Revit 202X-SetupFiles/ directory, and drag the newly created msi to the code-signing-client.exe executable
  11. After the signed msi has been downloaded delete the original and remove the .signed suffix from the filename
  12. Upload the signed msi installer to the openstudio-cli-4r S3 bucket. Append the filename to https://openstudio-cli-4r.s3.amazonaws.com/ to download
  13. Delete the installer_staging.old directory if it was created
  14. Commit the *.aip and CHANGELOG.md file changes
  15. Create a git tag on the new commit matching the updated release version

gbxml-to-openstudio's People

Contributors

matthewsteen avatar axelstudios avatar pflaumingo avatar eringold avatar mdahlhausen avatar anchapin avatar jmarrec avatar davidgoldwasser avatar macumber avatar tijcolem avatar

Stargazers

 avatar Yikun avatar John Allison avatar  avatar

Watchers

Anya Petersen avatar  avatar Kyle Benne avatar James Cloos avatar National Renewable Energy Laboratory avatar  avatar  avatar Jason DeGraw avatar  avatar  avatar  avatar Joe Robertson avatar  avatar  avatar  avatar

gbxml-to-openstudio's Issues

Create test suite to compare results to

Based on #57 there doesn't need to be a "true" value that load calcs are compared against. There is however some interest to compare the results produced by Revit compared to the commercial reference buildings.

  • Build geometries for commercial reference buildings in Revit
  • Translate using out of the box functionality to OpenStudio and compare results
  • Customize the measures to be as close to possible as the commercial reference buildings and compare again.

Provide estimate and possible timeline for supporting various character sets in the OpenStudio CLI

The OpenStudio CLI doesn't currently support different character sets that Autodesk needs (i.e. Chinese characters) and they will need this as their product is international. There is the ITF event at the end of October that I've communciated we won't be able to meet, but would Autodesk University in mid-november be doable? If not, we really need it done by the mid december code freeze.

Enable SI and IP Reporting

Check if E+ supports IP units natively for reporting and if it does, add it as a measure to check the attribute in the gbXML file.

testing for msi prior to release

this may be part of the ci workflow. we may also want to include user acceptance testing in our release pipeline. per noah, main issue is consistency of paths.

Confirm what combinations of HVAC systems can be on the same zone

EnergyPlus has some restrictions on which configurations of HVAC systems can be on a zone. For example, two air based systems can't serve the same zone. We need to determine what combinations are and are not valid to hand-off to Autodesk to do UI validation.

Fix chilled water loop temperature logic for standard vs radiant temps

Currently the chilled water loop configuration is pretty basic simply using a chiller to provide 44F water. However, the loop should follow the following logic:

  • If there are non-radiant components (anything but radiant panels and chilled beams) then supply 44F water
  • If there are only radiant components then the loop should only provide 57F water
  • If there is a mix, then a higher temp loop using heat exchangers should use the 44F loops to create a loop that supplies 57F water.

Infer supply air temperatures for equipment

The supply air temperature needs to be inferred based on the type of equipment that is present in a zone.

  1. Discuss in this thread the proposed logic
  2. Create an implementation design in the code
  3. Write tests
  4. Write code

Communicate validation requirements to the Autodesk team regarding mechanical systems and their definition.

Help Autodesk perform UI validation by:

  • This should indicate which combinations of mechanical systems can be present on the same zone. The strict E+ requirements should be communicated as opposed to limiting it to what makes sense from an engineering standpoint. This may require running various combinations on a one zone E+ model or by some other method.
  • We should also indicate any system configurations that produce situations that are nonsensical for simulation. For example, if a space is served by multiple zone equipment (ZE) and all those spaces don't have the same signature of what ZE serve them, then a zone can't be created. Ask Noah for more details on this if needed.

Investigate logic for applying default constructions to the model

It's looking like the default construction information won't be populated in the gbXML, but rather the data sources are going to be provided and we will implement it via a measure. At least, that is what is proposed and we need to investigate it's feasibility and how much effort we think it would be.

At the end of this task we should have an understanding of what is needed to be able to implement applying default constructions based on the string in constructionIdRef, but we should also support overriding for when construction/material information is available in the gbXML.

The current logic and data sources for the implementation can be found here.

Support a heating or lack of heating coil for radiant panels

Currently it's implemented as an FPFC while QA/QC details of true radiant systems for this purpose are ironed out. The FPFC object requires a heating and a cooling coil, which may not work for models that don't have a chilled or hot water loop. Therefore it would perhaps be better to use a Unit Ventilator object instead.

"publish" releases

we may share incremental releases with ad. major releases will be committed to git lfs and pushed.

Change annual OSW file name

Change annual simulation OSW from "Annual simulation" workfile to "Annual systems & building energy simulation"

Verify that OS/E+ supports UTF-8 w and w/o BOM

Autodesk said they'd ideally like to support UTF-8 with and without BOM as their clients may run custom OSWs and they may not know what the customer files will be saved as. Tasks:

  • Verify that both UTF-8 w and w/o BOM is supported
  • If not, provide an estimate of hours and reasonable deadline and create a new task to do so, referencing this one and closing it out.

automate msi build

current manual build using windows advanced installer \ program. will also require signing, but this has physical component and may happen manually after automated build.

Review and adjust current radiant panel implementation

The current radiant panel implementation is simply a FPFC with parameters to not use fan energy, which isn't the best assumption for radiant systems when operative temperature is considered. In this thread, propose an implementation before writing tests and finally implementing the code.

create windows ci

this should run tests on commits / PRs to master and develop branches.

Infer plant loop temperature logic

The loop temperature needs to be inferred based on the type of equipment that is on the loop. It is important to note that no objects that are available in Revit (i.e. a chilled water loop) should be created behind the scenes to improve the engineering quality. For example, if high and low temp chilled water components are on the same loop then an additional loop for the higher temp, perhaps served by an HX from the low temp loop, should not be created. Currently the proposed logic for the loops are:

  • Hot water loops: Fixed 140F supply with 30F delta T
  • Chilled water loop: If a low temp component (i.e. FPFC, air handler cooling coil, etc.) is present then 44F is supplied, otherwise 57F is supplied.
  • Condenser loop: 70F fixed supply temp. If a dx heating coil is present then a boiler should be added to keep temp above 50F (not implemented yet)

Steps to complete issue are:

  1. Discuss in this thread the final logic
  2. Create an implementation design in the code
  3. Write tests
  4. Write code

Create Schema for Autodesk to Validate Against

At the moment, the handoff from Autodesk to OpenStudio is done via gbXML with additional elements to support HVAC systems. However, there is nothing to validate against during hand off. Defining a validation mechanism, perhaps in the form of a schema, would be helpful to ensure specific development changes aren't breaking the handoff.

Update simulation parameters measure to accommodate all Autodesk's needs

Simulation control fields, by order:
Timesteps per hour = 4
Do Zone Sizing Calculation ? "Yes"
Do System Sizing Calculation ? "Yes"
Do Plant Sizing Calculation ? "No"
Run Simulation for Sizing Periods ? "Yes"
Run Simulation for Weather File Run Periods ? "No"
Shading calcs: frequency = every 27 days, and implementation = "AverageOverDaysInFrequency"
Output control fields: "All"
IDF report Table specification: "InputVerificationandResultsSummary, ZoneComponentLoadSummary"
For annual simulation runs:

Simulation Control fields, by order:
Timesteps per hour = 4
Do Zone Sizing Calculation ?"Yes"
Do System Sizing Calculation ?"Yes"
Do Plant Sizing Calculation ?"No"
Run Simulation for Sizing Periods ?"No"
Run Simulation for Weather File Run Periods ?"Yes"
Shading calcs: frequency = every 27 days, and implementation = "AverageOverDaysInFrequency"
Output control fields: "XMLandHTML"
IDF report Table specification: "AnnualBuildingUtilityPerformanceSummary, SensibleHeatGainSummary"
General adjustments in all modes:

Convergence limits: 4 per hour, Max. HVAC iterations = 10
Building parameters fields customization:
Loads Convergence Tolerance Value = 0.1
Temperature Convergence Tolerance Value {deltaC} = 0.5
Full shading mode? Use "FullExterior" or "MinimalShadowing"
Maximum Number of Warmup Days = 8
Minimum Number of Warmup Days = 3
Output variable fields: currently just set to empty
Design day data definition - currently design day data read in from the epw file, but does not need to be forced
Geometry adjustments in all IDF file parsing modes:

Window processing:
For rectangles: ignore windows with areas < 0.0025 sq. meters
For any polygon with more than 3 vertices:
Iteratively clip to sub-surfaces of simple triangles
Ignore any window triangle area < 0.002525 sq. meters
Surface processing:
Ignore any surface < 0.0025 sq. meters
Scan the MATERIAL:NoMass field(s) to check the minimum resistance value >=0.001

Change MSI Name

Change the MSI to read "OpenStudio CLI For Revit 2020" to enable side by side installation with Revit.

Fix PTAC Implementation of Heating Coils

The PTAC object needs to be updated to support the way heating coils are specified now. First step is to update the test model on a newer build of Revit. Then update the tests to support no heating coil before changing the implementation to support heating coils appropriately in addition to a lack of heating coil (set capacity to 0).

Test ability to run a subsequent openstudio run from within a measure called via Revit.

There are certain scenarios where the workflow from Revit may need to spin up a subsequent OpenStudio run (i.e. hybrid DOAS systems or baseline automation). A test should be performed to see if there are any issues in doing so. If there are, report to the Autodesk team, if not, pass the test OSW + measures to their team for more extensive testing.

Set simulation parameters as desired from Autodesk

Changes for loads-only mode:

Simulation control fields, by order:
Timesteps per hour = 4
Do Zone Sizing Calculation ? "Yes"
Do System Sizing Calculation ? "Yes"
Do Plant Sizing Calculation ? "No"
Run Simulation for Sizing Periods ? "Yes"
Run Simulation for Weather File Run Periods ? "No"
Shading calcs: frequency = every 27 days, and implementation = "AverageOverDaysInFrequency"
Output control fields: "All"
IDF report Table specification: "InputVerificationandResultsSummary, ZoneComponentLoadSummary"
For annual simulation runs:

Simulation Control fields, by order:
Timesteps per hour = 4
Do Zone Sizing Calculation ?"Yes"
Do System Sizing Calculation ?"Yes"
Do Plant Sizing Calculation ?"No"
Run Simulation for Sizing Periods ?"No"
Run Simulation for Weather File Run Periods ?"Yes"
Shading calcs: frequency = every 27 days, and implementation = "AverageOverDaysInFrequency"
Output control fields: "XMLandHTML"
IDF report Table specification: "AnnualBuildingUtilityPerformanceSummary, SensibleHeatGainSummary"
General adjustments in all modes:

Convergence limits: 4 per hour, Max. HVAC iterations = 10
Building parameters fields customization:
Loads Convergence Tolerance Value = 0.1
Temperature Convergence Tolerance Value {deltaC} = 0.5
Full shading mode? Use "FullExterior" or "MinimalShadowing"
Maximum Number of Warmup Days = 8
Minimum Number of Warmup Days = 3
Output variable fields: currently just set to empty
Design day data definition - currently design day data read in from the epw file, but does not need to be forced
Geometry adjustments in all IDF file parsing modes:

Window processing:
For rectangles: ignore windows with areas < 0.0025 sq. meters
For any polygon with more than 3 vertices:
Iteratively clip to sub-surfaces of simple triangles
Ignore any window triangle area < 0.002525 sq. meters
Surface processing:
Ignore any surface < 0.0025 sq. meters
Scan the MATERIAL:NoMass field(s) to check the minimum resistance value >=0.001

Fix air system implementation to include economizer by default

Air systems currently don't have any economization when the majority of air handlers do nowadays. Adjust the behavior to apply an economizer by default. Discuss the proposed implementation here relating to control, lockout temperatures and so on here first. After that, create tests and adjust the implementation.

Add Rake Task To Update Measures

Add a rake task to call 'openstudio measure --update_all'. The installer should do this for sure so that measures are versioned.

Communicate to Autodesk the requirements to enable baseline automation

We need to provide to Autodesk a comprehensive list of what is necessary for them to have in their data model in order to enable baseline automation. For example, tagging of spaces with specific space type enumerations. Let's focus on what standards are available in openstudio-standards for now, but it may grow to include the needs of energy codes not currently in the standards.

Create plan for how to handle multiple HVAC systems in a zone

This will probably require some spiking via modeling and looking at output reports, but the idea is to determine how to handle multiple pieces of HVAC equipment serving a space. For example, a space served by an air system and a WSHP is most likely a WSHP + DOAS with no OA drawn by the WSHP. However, WSHP + baseboard would suggest OA comes from the WSHP and the baseboard is just supplemental heat. Many variations to consider.

Support 'None' type heating and cooling coils on unit ventilators

Add support for unit ventilators without a heating coil and/or a cooling coil. This object doesn't require a heating and cooling coil so no need to set capacities, simply just don't add the coil if it isn't meant to be present. That said, the coil option needs to be set appropriately (None, Heating, Cooling or HeatingAndCooling)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.