Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Heat Recovery Chiller in OpenStudio

asked 2016-02-09 19:28:25 -0500

updated 2017-05-08 12:15:19 -0500

Is there any hope for heat recovery or heat pump chiller functionality in OpenStudio?

I know this was on the Master OpenStudio HVAC Roadmap for a long time but the priority kept getting bumped and seems to be abandoned (from what I can tell).

This continues to be a major limiting factor of OS that requires us to routinely leave OS and proceed in EnergyPlus. It’s a fairly standard application for commercial buildings and it’s something we explore or design on almost every project.

Are there any creative solutions or objects in OS to achieve heat recovery chiller functionality?

A suggestion has been created on OpenStudio UserVoice HERE. Please vote if you would like to see this functionality expanded in OpenStudio.

edit retag flag offensive close merge delete


In addition to looking to UH for workarounds, you may want to visit to make an actual request/plea/demand/ultimatum.

__AmirRoth__ gravatar image__AmirRoth__ ( 2016-02-09 19:50:58 -0500 )edit

Thanks for the reminder Amir. I have posted to UserVoice and added a link in the question.

Lyle K gravatar imageLyle K ( 2016-02-09 20:35:43 -0500 )edit

Also, what/when is OpenStudio 2.0?

__AmirRoth__ gravatar image__AmirRoth__ ( 2016-02-09 22:00:28 -0500 )edit
Lyle K gravatar imageLyle K ( 2016-02-09 22:29:11 -0500 )edit

2 Answers

Sort by » oldest newest most voted

answered 2016-02-09 22:17:11 -0500

updated 2016-02-10 09:37:02 -0500

@Kyle Benne is working on enabling the CentralHeatPumpSystem in the tertiary loops branch of the OpenStudio repository. The object is available in the OS API, but doesn't work yet, i.e.

chps =

uninitialized constant OpenStudio::Model::CentralHeatPumpSystem (NameError)

For a project of ours involving reversing chillers, thermal energy storage, and HX with a ground source and water source, the MEP designers modeled the central plant in TRNSYS and determined the annual heating and cooling efficiencies.

As a simplification we used an electric BoilerHotWater and ChillerElectricEIR for the central plant and used the COPs from the TRNSYS model for the Nominal Thermal Efficiency and Reference COP fields.

This approach required changing the Energy+.idd file installed with OS to allow boiler efficiencies greater than unity along with an EP measure to set this value.

edit flag offensive delete link more


Thanks for sharing @MatthewSteen. So your approach was to have a separate plant model to determine the annual heating/cooling efficiencies and then you applied those annual COPs to OpenStudio objects to get the final results to display in OpenStudio?

Lyle K gravatar imageLyle K ( 2016-02-09 22:59:13 -0500 )edit

We are often forced to have a 'whole building' model in OS and feed our hydronic loads to a separate 'plant model' in EnergyPlus (we've used TRNSYS in the past as well). It's unfortunate that the actual E+ objects exist in OS but their functionality is compromised. I'm intrigued by the idea of creating an entire E+ plant model and linking it up to the OS model with an E+ measure to get the final results to display in OpenStudio and update with each run as changes are made to the OS model. Not quite sure if this is achievable though.

Lyle K gravatar imageLyle K ( 2016-02-09 23:05:03 -0500 )edit

It looks like the CentralHeatPumpSystem may be available for use in the OS API. Aside from a traditional ground source application, this system can be quite difficult to control.

Lyle K gravatar imageLyle K ( 2016-02-09 23:25:41 -0500 )edit

@Lyle K,

  1. Yes, the central plant was modeled in TRNSYS to determine the annual system efficiencies.

  2. I considered writing an EP measure to add the CHPS to the OS models by replacing another piece of equipment in a plant loop, since in our case that was the only object that wasn't available in the GUI or API.

  3. You're correct the CentralHeatPumpSystem is available in the API, but it doesn't work right now because of its unique topology.

MatthewSteen gravatar imageMatthewSteen ( 2016-02-10 08:30:20 -0500 )edit

@MatthewSteen - thanks for this nearly-two-year-old comment! I've run into this exact problem, and was considering taking this approach. Out of curiosity, did you simply totalize the hourly energy consumption of all CHW/HW coils, and apply those on the demand side of the water-to-water heat pumps in TRNSYS via an equation block or HX component?

umop-3pisdn gravatar imageumop-3pisdn ( 2017-11-01 11:06:40 -0500 )edit

answered 2017-07-26 10:10:47 -0500

updated 2018-01-01 02:49:16 -0500

It's been more than a year that this question was asked, and I ran into it again today. I discovered that most of the legwork was indeed done by Mark and Kyle, but it was never fully implemented.

I'm working on coding the last bits so that it's finally available in the OS API (and OS App, except you'll have to use the API to connect the CentralHeatPump to the three loops, once it's done you'll be able to view it in the OS App though, so a quick measure will solve that).

You can follow the progress on #PR2700, it's almost done.

Edit: it's done, as of OpenStudio 2.4.0

edit flag offensive delete link more


Julien, I just wanted to say that this is great and I am already making use of your work now that OpenStudio 2.4 has been released. I almost have it working on my machine and I'm able to connect up the centralHeatPump to the correct source loop and cooling loop. However, I have been unable to connect it up to the heating loop. All of my attempts to add the centralHeatPump to the heating loop seem to be accidentally assigning it as the cooling loop. Can you offer any advice on how to set this up? If need be, I can just right an E+ measure to correct for this. Thank you!

chriswmackey gravatar imagechriswmackey ( 2017-12-31 18:49:53 -0500 )edit

Can't do it in the GUI. You need to use the API to connect it, via addToTertiaryNode.

Julien Marrec gravatar imageJulien Marrec ( 2018-01-01 02:48:16 -0500 )edit

Thanks for the response, Julien. I am only using the API and not the GUI. The addToTertiaryNode method worked well to create the right OpenStudio object but I realized that there are a lot of other things that are not working in the resulting IDF, including nodes not being connected up to one another correctly and the heating/cooling plant equipment lists not being written whenever I add the CentralHeatPumpSystem object to a loop. Am I correct in understanding that there's still work to be done to get the class working fully?

chriswmackey gravatar imagechriswmackey ( 2018-01-02 17:45:32 -0500 )edit

Chris, these are clearly all bugs indeed, I was able to reproduce them. I didn't add that many tests (and no actual simulation (regression) test), so I wasn't even aware it wasn't working. I am now, I'll open issues on github.

Julien Marrec gravatar imageJulien Marrec ( 2018-01-03 08:30:35 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer


Question Tools



Asked: 2016-02-09 19:28:25 -0500

Seen: 1,442 times

Last updated: Jan 01