Skip to content

Commit

Permalink
Merge branch 'develop' into RS/JDJ/rule11-10
Browse files Browse the repository at this point in the history
  • Loading branch information
JacksonJ-KC authored Dec 18, 2024
2 parents 969ce40 + 0ca6175 commit 0bf118d
Show file tree
Hide file tree
Showing 22 changed files with 142,547 additions and 436 deletions.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions docs/_toc.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ These conventions are used in all RDS below, and the logic of evaluating rules f
* [11-11](section11/Rule11-11.md): For buildings that will have no service water-heating loads, no service water-heating shall be modeled in baseline building model.
* [11-12](section11/Rule11-12.md): For large, 24-hour-per-day facilities that meet the prescriptive criteria for use of condenser heat recovery systems described in Section 6.5.6.2, a system meeting the requirements of that section shall be included in the baseline building design regardless of the exceptions to Section 6.5.6.2.
* [11-13](section11/Rule11-13.md): Service water-heating energy consumption shall be calculated explicitly based upon the volume of service water heating required and the entering makeup water and the leaving service water-heating temperatures. Entering water temperatures shall be estimated based upon the location. Leaving temperatures shall be based upon the end-use requirements.
* [11-14](section11/Rule11-14.md): Where recirculation pumps are used to ensure prompt availability of service water-heating at the end use, the energy consumption of such pumps shall be calculated explicitly.
* [11-15](section11/Rule11-15.md): Service water loads and use shall be the same for both the proposed design and baseline building design.
* [11-16](section11/Rule11-16.md): Gas water heaters shall be modeled using natural gas as their fuel. Exceptions: Where natural gas is not available for the proposed building site, as determined by the rating authority, gas water heaters shall be modeled using propane as their fuel.
* [11-17](section11/Rule11-17.md): All buildings that will have service water heating loads must include those loads in the simulation
Expand Down
53 changes: 53 additions & 0 deletions docs/section11/Rule11-14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Service_Water_Heating - Rule 11-14
**Schema Version:** 0.0.37

**Mandatory Rule:** TRUE

**Rule ID:** 11-14

**Rule Description:** "Where recirculation pumps are used to ensure prompt availability of service water-heating at the end use, the energy consumption of such pumps shall be calculated explicitly."

**Rule Assertion:** UNDETERMINED / NOT_APPLICABLE

**Appendix G Section Reference:** Table G3.1 #11, baseline column, (f)

**Evaluation Context:** ServiceWaterHeatingDistributionSystem
**Data Lookup:**
**Function Call:**
- **get_SWH_uses_associated_with_each_building_segment**
- **get_swh_components_associated_with_each_swh_distribution_system**
- **get_component_by_id**

## Applicability Checks:
- All service water heating distribution systems with water uses are applicable
- get a dictionary all of the components associated with the swh distribution system in the building: `swh_comps_dict = get_swh_components_associated_with_each_swh_distribution_system(B_RMD)`
- look at each service water heating distribution system in the baseline model: `for swh_dist_sys in B_RMD.service_water_heating_distribution_systems:`
- look at the uses associated with this distribution system: `for swh_use_id in swh_comps_dict[swh_dist_sys.id]["USES"]:`
- get the swh_use using get_component_by_ID: `swh_use = get_component_by_ID(P_RMD, swh_use_id)`
- check to see if the use has SWH loads: `if swh_use.use > 0:`
- the rule is applicable: `CONTINUE TO RULE LOGIC`


## Rule Logic:
- for a hard pass, we're looking for all of the loops to recirculate, and have pumps with power > 0
- an undetermined result would be if there is not recirculation (perhaps there should be recirculation), or if only some of the loops meet the criteria for a pass
- a fail would be if the loops recirculate but don't have pumps or pump power
- create a dictionary to keep track of the piping, and pumps attached to the distribution system: `piping_info = {}`
- look at each piping connected to the distribution system: `for piping_id in in swh_comps_dict[swh_dist_sys.id]["PIPING"]:`
- get the piping: `piping = get_component_by_id(B_RMD,ServiceWaterPiping)`
- create a dictionary to store data about this piping: `piping_info[piping_id] = {}`
- add the recirculation loop information to the dictionary: `piping_info[piping_id]["IS_RECIRC"] = piping.is_recirculation_loop`
- if the piping is a recirculation loop, get the attached pump: `if(piping.is_recirculation_loop):`
- need to look at each pump to see if it's connected: `for pump_id in swh_comps_dict[swh_dist_sys.id]["PUMP"]:`
- get the pump: `pump = get_component_by_id(B_RMD,PUMP)`
- if the pump loop_or_piping matches the current piping, add the pump to the piping dictionary: `piping_info[piping_id]["PUMP_POWER"] = pump.design_electric_power`
-
- GO TO RULE LOGIC

## Rule Logic:
- Case1: all piping are recirculating and pump power is > 0, PASS: `if all(entry.get("IS_RECIRC") and entry.get("PUMP_POWER", 0) > 0 for entry in piping_info.values()): PASS`
- Case2: there is at least one piping that has recirculation, but no pump power, FAIL: `elif any(entry.get("IS_RECIRC") and entry.get("PUMP_POWER", 0) == 0 for entry in hash.values()): FAIL`
- Case3: All others, UNDETERMINED: `UNDETERMINED`


**[Back](../_toc.md)**
4 changes: 2 additions & 2 deletions docs/section11/Rule11-9.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
## Applicability Checks:
- only projects with SHW use for the SHW space BAT in the baseline model are applicable
- create boolean rule_is_applicable and set it to false: `rule_is_applicable = FALSE`
- use the function get_SWH_bats_and_SWH_use to get a list of SWH uses for each BAT: `shw_bat_uses_dict = get_SWH_bats_and_SWH_use(U_RMD)`
- look at each SHW BAT: `for swh_bat in shw_bat_uses_dict.keys():`
- use the function get_SWH_bats_and_SWH_use to get a list of SWH uses for each BAT: `shw_bat_uses_dict = get_SWH_bats_and_SWH_use(B_RMD)`
- look at each SHW BAT: `for swh_bat in shw_bat_uses_dict:`
- look at the uses in this swh bat: `for swh_use_id in shw_bat_uses_dict[swh_bat]:`
- get the swh use: `swh_use = get_component_by_id(B_RMD, ServiceWaterHeatingUse)`
- if even one use is greater than zero, go to rule assertion: `if swh_use.use > 0: `
Expand Down
Loading

0 comments on commit 0bf118d

Please sign in to comment.