Skip to content

Commit

Permalink
Merge pull request #46 from BuildingPerformanceSimulation/add_heat_re…
Browse files Browse the repository at this point in the history
…covery_chiller

Add heat recovery chiller measure
  • Loading branch information
mdahlhausen authored Oct 2, 2024
2 parents 7ac0078 + adae05b commit 11d3572
Show file tree
Hide file tree
Showing 16 changed files with 207,676 additions and 1 deletion.
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2014-2021 Building Performance Simulation
Copyright 2014-2024 Building Performance Simulation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

Expand Down
7 changes: 7 additions & 0 deletions lib/measures/add_heat_recovery_chiller/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Copyright 2014-2024 Building Performance Simulation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
133 changes: 133 additions & 0 deletions lib/measures/add_heat_recovery_chiller/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@


###### (Automatically generated documentation)

# Heat Recovery Chiller

## Description
This measure adds a heat recovery chiller and heat recovery loop to the model. The heat recovery chiller may be an existing chiller or new stand-alone heat recovery chiller. Converting an existing chiller will allow the chiller to rejected heat to the heat recovery loop in addition to the condenser loop. A new chiller will reject heat only to the heat recovery loop. The user may specify how to connect the heat recovery loop to the hot water loop, whether the heat recovery is in series or parallel with existing heating source objects, and optionally decide whether to adjust hot water loop temperatures and add output variables. The measure DOES NOT size the heat recovery chiller or heat recovery storage objects.

## Modeler Description
This creates a new heat recovery loop that is attached to a tertiary node to an existing chiller or a new chiller. The heat recovery loop consists of the chiller and a water heater mixed object that is also connected to a hot water loop. The heat recovery loop and hot water loop are sized to the same user defined temperature setpoint as well as all hot water coils in the model.

## Measure Type
ModelMeasure

## Taxonomy


## Arguments


### Cooling Loop
Choose the source loop for the heat recovery chiller. Infer From Model will use the chilled water loop by floor area served.
**Name:** cooling_loop_name,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### Heating Loop
Choose the receipient loop for the heat recovery chiller. Infer From Model will use the largest hot water loop by floor area served.
**Name:** heating_loop_name,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### Add new heat recovery chiller or use existing chiller?
The default is to add a new heat recovery chiller, otherwise the user will need to select an existing chiller.
**Name:** chiller_choice,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### New heat recovery chiller size in tons cooling
Only applicable if add_new_chiller is set to true.
**Name:** new_chiller_size_tons,
**Type:** Double,
**Units:** ,
**Required:** false,
**Model Dependent:** false


### Existing Chiller to Convert
Only applicable if converting an existing chiller. Choose a chiller to convert to a heat recovery chiller. Infer from model will default to the first chiller on the selected chilled water loop.
**Name:** existing_chiller_name,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### Heat recovery loop to hot water loop connection
Choose whether to connect the heat recovery loop to the hot water loop directly, or including a storage tank.
**Name:** link_option,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### Heat recovery storage tank size in gallons
Only applicable if using a storage tank.
**Name:** storage_tank_size_gal,
**Type:** Double,
**Units:** ,
**Required:** false,
**Model Dependent:** false


### Hot water loop heat recovery ordering
Choose whether the heat recovery connection is in parallel or series with the existing hot water source object (boiler, heat pump, district heat, etc.).
**Name:** heating_order,
**Type:** Choice,
**Units:** ,
**Required:** false,
**Model Dependent:** true


### The heat recovery loop temperature in degrees F

**Name:** heat_recovery_loop_temperature_f,
**Type:** Double,
**Units:** ,
**Required:** false,
**Model Dependent:** false


### Reset hot water loop temperature?
If true, the measure will reset the hot water loop temperature to match the heat recovery loop temperature. It WILL NOT reset demand side coil objects, which could cause simulation errors or unmet hours. If the hot water loop is connected to the heat recovery loop by a heat exchanger instead of a storage tank, the hot water loop temperature will instead be reset to the heat recovery loop temperature minus 5F.
**Name:** reset_hot_water_loop_temperature,
**Type:** Boolean,
**Units:** ,
**Required:** false,
**Model Dependent:** false


### Reset heating coil design temperatures?
If true, the measure will reset the heating coil design temperatures to match the heat recovery loop temperature.
**Name:** reset_heating_coil_design_temp,
**Type:** Boolean,
**Units:** ,
**Required:** false,
**Model Dependent:** false


### Enable output variables?

**Name:** enable_output_variables,
**Type:** Boolean,
**Units:** ,
**Required:** false,
**Model Dependent:** false






45 changes: 45 additions & 0 deletions lib/measures/add_heat_recovery_chiller/README.md.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<%#= README.md.erb is used to auto-generate README.md. %>
<%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
###### (Automatically generated documentation)

# <%= name %>

## Description
<%= description %>

## Modeler Description
<%= modelerDescription %>

## Measure Type
<%= measureType %>

## Taxonomy
<%= taxonomy %>

## Arguments

<% arguments.each do |argument| %>
### <%= argument[:display_name] %>
<%= argument[:description] %>
**Name:** <%= argument[:name] %>,
**Type:** <%= argument[:type] %>,
**Units:** <%= argument[:units] %>,
**Required:** <%= argument[:required] %>,
**Model Dependent:** <%= argument[:model_dependent] %>
<% if argument[:type] == "Choice" && !argument[:model_dependent]%>
**Choice Display Names** <%= argument[:choice_display_names] %>
<% end %>
<% end %>
<% if arguments.size == 0 %>
<%= "This measure does not have any user arguments" %>
<% end %>
<% if outputs.size > 0 %>
## Outputs
<% output_names = [] %>
<% outputs.each do |output| %>
<% output_names << output[:display_name] %>
<% end %>
<%= output_names.join(", ") %>
<% end %>
Empty file.
Loading

0 comments on commit 11d3572

Please sign in to comment.