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

Create Rule5-44.md #1600

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions docs/section5/Rule5-44.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

# Envelope - Rule 5-44

**Rule ID:** 5-44
**Rule Description:** Space Conditioning Categories. Space conditioning categories used to determine applicability of the envelope requirements in Tables G3.4-1 through G3.4-8 shall be the same as in the proposed design.

Exception: Envelope components of the HVAC zones that are semiheated in the proposed design must meet conditioned envelope requirements in Tables G3.4-1 through G3.4-8 if, based on the sizing runs, these zones are served by a baseline system with sensible cooling output capacity >= 5 Btu/h·ft2 of floor area, or with heating output capacity greater than or equal to the criteria in Table G3.4-9, or that are indirectly conditioned spaces.

**Rule Assertion:** Baseline equals proposed, except defined exceptions
**Appendix G Section:** Table G3.1 Section 5(b) Baseline
**Schema Version:** 0.0.39

**Applicability:** All required data elements exist for B_RMD
**Applicability Checks:** Buiding has spaces

**Evaluation Context:** Each Data Element
**Data Lookup:** None
**Function Call:**

1. get_surface_conditioning_category()

## Applicability:
- this rule applies to buildings with exterior or underground surfaces.
- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_surface_conditioning_category(B_RMD)```
- possible surface conditioning types are "UNREGULATED", "SEMI-EXTERIOR", "EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL". This rule applies if there is at least one surface that is one of: "SEMI-EXTERIOR", "EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL"
- Look at each surface id: ```for surface_id in scc_dictionary_b:```
- if the value is one of "SEMI-EXTERIOR", "EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL", CONTINUE TO RULE LOGIC: ```if scc_dictionary_b[surface_id] in ["SEMI-EXTERIOR", "EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL"]:```
- CONTINUE TO RULE LOGIC
- if the applicability logic arrives here without going to rule logic, the rule is not applicable: RULE NOT APPLICABLE

## Rule Logic:

- create a list of surfaces that do not comply with this rule: ```non_compliant_surface_ids = []```

- Get surface conditioning category dictionary for P_RMD: ```scc_dictionary_p = get_surface_conditioning_category(P_RMD)```

- For each building surface in the Baseline model: ```for building_surface_b in B_RMD...surfaces:```
- if the surface does not have the same surface conditioning category in the proposed and baseline, need to check if the exception applies: ```if scc_dictionary_b[building_surface_b.id] != scc_dictionary_p[building_surface_b.id]:```
- according to the exception, if the surface is semi-heated ("SEMI-EXTERIOR") in the proposed design, it might be classified as fully-conditioned in the baseline, if, according to sizing runs, the zone is served by HVAC equipment that meets the requirements of a fully-conditioned space. The function get_surface_conditioning_category runs these checks, so we just need to check the conditioning types. First, check whether the proposed conditioning type is SEMI-EXTERIOR: ```if scc_dictionary_p[building_surface_b.id] == "SEMI-EXTERIOR":```
- if the baseline is NOT one of the fully-conditioned surface types ("EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL"), add this surface ID to the list of non compliant surface ids: ```if !(scc_dictionary_b[building_surface_b.id] in ["EXTERIOR MIXED", "EXTERIOR RESIDENTIAL", "EXTERIOR NON-RESIDENTIAL"]: non_compliant_surface_ids.append(building_surface_b.id)```
- Otherwise, the exception is not met, add the id of this surface to the list of non compliant surface ids: ```else: non_compliant_surface_ids.append(building_surface_b.id)```
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend that we discuss this on the RDS call.
I think the logic should be that we cycle through all of the SEMI-EXTERIOR surfaces in the proposed design. Check to see if they are classed as CONDITIONED/INDIRECTLY conditioned in the baseline. If they are classed as CONDITIONED/INDIRECTLY in the baseline then we need to check that the baseline thermal properties meet the conditioned envelope requirements in Tables G3.4-1 through G3.4-8. Perhaps this RDS should really just be an update to the RDS that checks that the building meets baseline building envelope requirements in Tables G3.4-1 through G3.4-8 as opposed to being a separate RDS.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussion on 2/5/2025 - Christina has a valid point.

Other section 5 rules related to the baseline envelope rely on the get_surface_conditioning_category(B_RMD) function based to categorize surfaces, so this RMD, as written will not raise any applicable spaces.

As written, the baseline envelope maximum U-values should be based on the more stringent conditioning category between the baseline and proposed. Most of the time the baseline would be conditioned and the proposed would be semi-conditioned, but there is an edge case where the proposed could be fully conditioned and the baseline is semi-heated.

This rule gives us the guidance that the space conditioning categories should match, except where the proposed is semi-conditioned and the baseline is fully conditioned.

Approach - for 2022 only
*create a new function that returns the same dictionary as get_surface_conditioning_category, but accepts both the B_RMD and and P_RMD and provides the dictionary based on the more stringent category between the two.

*All Section 5 baseline rules in 2022 will need to reference the new function and pass in the B_RMD and P_RMD.

This RMD will no longer be needed


**Rule Assertion:**
Case 1: If the non_compliant_surface_ids list has a length of 0, then PASS: ```if len(non_compliant_surface_ids) == 0: PASS```
Case 2: All other cases, FAIL: ```else: FAIL```

**Notes:**


**[Back](../_toc.md)**