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

Rds/kjw/function get more stringent surface conditioning category #1644

Open
wants to merge 27 commits into
base: feature/ashrae-9012022
Choose a base branch
from
Open
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@

## get_more_stringent_surface_conditioning_category
**Schema Version:** 0.0.39
Copy link
Collaborator

Choose a reason for hiding this comment

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

Prob upgrade schema version to the latest schema version.

Description: This function relies on get_surface_conditioning_category to return a dictionary that provides the more stringent conditioning category between the proposed and baseline RMDs. This rule is written to ensure that the surface conditioning categories comply with the following:
"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."


Inputs:

- **B_RMD**: The baseline RMD used to determine surface conditioning category.
- **P_RMD**: The proposed RMD used to determine surface conditioning category.

Functions:
- **get_surface_conditioning_category**

Returns:

- **surface_conditioning_category**: The Surface Conditioning Category [exterior residential, exterior non-residential, exterior mixed, semi-exterior, unregulated].

Logic:

- Get the surface conditioning category dictionary for the B_RMD: `b_surface_conditioning_category = get_surface_conditioning_category(B_RMD)`

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

- Create a new surface conditioning category dictionary that will be a combination of the two: `surface_conditioning_category = {}`

- Look at each surface id in the baseline RMD: `for surface_id in b_surface_conditioning_category:`

- Check to see if the two conditioning cateogries match: `if b_surface_conditioning_category[surface_id] == p_surface_conditioning_category[surface_id]:`

- then this category is the category to be used. Add this category to surface_conditioning_category: `surface_conditioning_category[surface_id] = b_surface_conditioning_category[surface_id]`

- Otherwise, if the proposed is semi-exterior, and the baseline is one of [exterior residential, exterior non-residential, exterior mixed], then the conditioning category needs to be the more stringent: `if b_surface_conditioning_category[surface_id] in ["exterior residential", "exterior non-residential", "exterior mixed"] and p_surface_conditioning_category[surface_id] == "semi-exterior": surface_conditioning_category[surface_id] = b_surface_conditioning_category[surface_id]`

- All other cases, set the conditioning category equal to that in the proposed: `surface_conditioning_category[surface_id] = p_surface_conditioning_category[surface_id]`

**Returns** `return surface_conditioning_category_dict`

**Notes**
1. What if the proposed is "unregulated" and the baseline is a different category?

**[Back](../_toc.md)**
4 changes: 2 additions & 2 deletions docs/section5/Rule5-10.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()

## Rule Logic:

- Get building climate zone: ```climate_zone = B_RMR.weather.climate_zone```

- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_surface_conditioning_category(B_RMR)```
- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, PRMD)```

- For each building segment in the Baseline model: ```for building_segment_b in B_RMR.building.building_segments:```

Expand Down
6 changes: 3 additions & 3 deletions docs/section5/Rule5-11.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
**Data Lookup:** None
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_surface_conditioning_category(B_RMD)```
- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Baseline model: ```for building_segment_b in B_RMD.building.building_segments:```

Expand All @@ -40,4 +40,4 @@
1. Update Rule ID from 5-14 to 5-11 on 10/26/2023


**[Back](../_toc.md)
**[Back](../_toc.md)
4 changes: 2 additions & 2 deletions docs/section5/Rule5-12.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()

## Rule Logic:

- Get building climate zone: `climate_zone = B_RMD.weather.climate_zone`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Baseline model: `for building_segment_b in B_RMD.building.building_segments:`

Expand Down
6 changes: 3 additions & 3 deletions docs/section5/Rule5-13.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
**Data Lookup:** None
**Function Call:**

- get_surface_conditioning_category()
- get_more_stringent_surface_conditioning_category()
- get_opaque_surface_type()
- match_data_element()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Proposed model: `for building_segment_b in B_RMD.building.building_segments:`

Expand Down Expand Up @@ -49,4 +49,4 @@
1. Update Rule ID from 5-17 to 5-13 on 10/26/2023


**[Back](../_toc.md)
**[Back](../_toc.md)
4 changes: 2 additions & 2 deletions docs/section5/Rule5-16.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
1. get_area_type_window_wall_areas()
2. match_data_element()
3. get_opaque_surface_type()
4. get_surface_conditioning_category()
4. get_more_stringent_surface_conditioning_category()

## Rule Logic:

Expand All @@ -34,7 +34,7 @@

- Calculate total fenestration area for B_RMD: `total_fenestration_area_p += window_wall_areas_dictionary_p[area_type_p]["TOTAL_WINDOW_AREA"]`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Baseline model: `For building_segment_b in B_RMD.building.building_segments:`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-19.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@

1. data_lookup()
2. get_opaque_surface_type()
3. get_surface_conditioning_category()
3. get_more_stringent_surface_conditioning_category()
4. get_building_scc_skylight_roof_ratios_dict()

## Rule Logic:

- Get RMD climate zone: `climate_zone = ASHRAE229.weather.climate_zone`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- Get window wall ratio ratios dictionary for B_RMD: `get_building_scc_skylight_roof_ratios_dict = get_building_scc_skylight_roof_ratios_dict(B_RMD)`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-20.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@

1. data_lookup()
2. get_opaque_surface_type()
3. get_surface_conditioning_category()
3. get_more_stringent_surface_conditioning_category()
4. get_building_scc_skylight_roof_ratios_dict()

## Rule Logic:

- Get RMD climate zone: `climate_zone = ASHRAE229.weather.climate_zone`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- Get window wall ratio ratios dictionary for B_RMD: `get_building_scc_skylight_roof_ratios_dict = get_building_scc_skylight_roof_ratios_dict(B_RMD)`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-21.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
**Function Call:**

1. match_data_element()
2. get_surface_conditioning_category()
2. get_more_stringent_surface_conditioning_category()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Baseline model: `for building_segment_b in B_RMD.building.building_segments:`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-22.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
**Data Lookup:** None
**Function Call:**
1. get_opaque_surface_type()
2. get_surface_conditioning_category()
2. get_more_stringent_surface_conditioning_category()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_surface_conditioning_category(B_RMR)```
- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Baseline model: ```for building_segment_b in B_RMR.building.building_segments:```

Expand Down
6 changes: 3 additions & 3 deletions docs/section5/Rule5-26.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
**Function Call:**

1. get_building_segment_skylight_roof_areas()
2. get_surface_conditioning_category()
2. get_more_stringent_surface_conditioning_category()
3. get_opaque_surface_type()
4. match_data_element()

Expand All @@ -26,7 +26,7 @@

- Get building segment skylight roof areas dictionary for P_RMD: `skylight_roof_areas_dictionary_p = get_building_segment_skylight_roof_areas(P_RMD)`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Baseline model: `For building_segment_b in B_RMD.building.building_segments:`

Expand Down Expand Up @@ -59,4 +59,4 @@
1. Update Rule ID from 5-36 to 5-26 on 10/26/2023


**[Back](../_toc.md)
**[Back](../_toc.md)
6 changes: 3 additions & 3 deletions docs/section5/Rule5-27.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()
3. get_building_scc_skylight_roof_ratios_dict()
4. data_lookup()
Expand All @@ -23,7 +23,7 @@

- Get RMR climate zone: `climate_zone = ASHRAE229.weather.climate_zone`

- Get surface conditioning category dictionary for B_RMR: `scc_dictionary_b = get_surface_conditioning_category(B_RMR)`
- Get surface conditioning category dictionary for B_RMR: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- Get B_RMR skylight roof ratios dictionary: `get_building_scc_skylight_roof_ratios_dict = get_building_scc_skylight_roof_ratios_dict(B_RMR)`

Expand Down Expand Up @@ -90,4 +90,4 @@

1. Update Rule ID from 5-37 to 5-27 on 10/26/2023

**[Back](../_toc.md)**
**[Back](../_toc.md)**
4 changes: 2 additions & 2 deletions docs/section5/Rule5-28.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()
3. get_building_scc_skylight_roof_ratios_dict()
4. data_lookup()
Expand All @@ -24,7 +24,7 @@

- Get RMD climate zone: `climate_zone = ASHRAE229.weather.climate_zone`

- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- Get B_RMD skylight roof ratios dictionary: `get_building_scc_skylight_roof_ratios_dict = get_building_scc_skylight_roof_ratios_dict(B_RMD)`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-29.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
**Function Call:**

1. get_opaque_surface_type()
2. get_surface_conditioning_category()
2. get_more_stringent_surface_conditioning_category()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_surface_conditioning_category(B_RMD)```
- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Baseline model: `for building_segment_b in B_RMD.building.building_segments:`

Expand Down
6 changes: 3 additions & 3 deletions docs/section5/Rule5-3.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
**Evaluation Context:** Each Data Element
**Data Lookup:** None
**Function Call:**
1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_surface_conditioning_category(B_RMR)```
- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Baseline model: ```for building_segment_b in B_RMR.building.building_segments:```

Expand All @@ -38,4 +38,4 @@

1. Update Rule ID from 5-4 to 5-3 on 10/26/2023

**[Back](../_toc.md)**
**[Back](../_toc.md)**
4 changes: 2 additions & 2 deletions docs/section5/Rule5-31.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
**Function Call:**

1. get_opaque_surface_type()
2. get_surface_conditioning_category()
2. get_more_stringent_surface_conditioning_category()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMR: `scc_dictionary_b = get_surface_conditioning_category(B_RMR)`
- Get surface conditioning category dictionary for B_RMR: `scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- For each building segment in the Baseline model: `for building_segment_b in B_RMR.building.building_segments:`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-35.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
**Data Lookup:** None
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_zone_conditioning_category()

## Rule Logic:

- Get surface conditioning category dictionary for B_RMD: `scc_dict_b = get_surface_conditioning_category(B_RMD)`
- Get surface conditioning category dictionary for B_RMD: `scc_dict_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)`

- Get zone conditioning category dictionary for B_RMD: `zone_conditioning_category_dict_b = get_zone_conditioning_category(B_RMD)`

Expand Down
2 changes: 1 addition & 1 deletion docs/section5/Rule5-37.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

## Rule Logic:

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

- Get zone conditioning category dictionary for P_RMR: `zone_conditioning_category_dict_p = get_zone_conditioning_category(P_RMR)`

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-39.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()

## Rule Logic:

- Get building climate zone: ```climate_zone = B_RMR.weather.climate_zone```

- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_surface_conditioning_category_dict(climate_zone, B_RMR.building)```
- Get surface conditioning category dictionary for B_RMR: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Proposed model: ```for building_segment_b in B_RMR.building.building_segments:```

Expand Down
4 changes: 2 additions & 2 deletions docs/section5/Rule5-4.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
**Data Lookup:** Tables G3.4-1 to G3.4-8
**Function Call:**

1. get_surface_conditioning_category()
1. get_more_stringent_surface_conditioning_category()
2. get_opaque_surface_type()

## Rule Logic:

- Get building climate zone: ```climate_zone = B_RMD.weather.climate_zone```

- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_surface_conditioning_category(B_RMD)```
- Get surface conditioning category dictionary for B_RMD: ```scc_dictionary_b = get_more_stringent_surface_conditioning_category(B_RMD, P_RMD)```

- For each building segment in the Baseline model: ```for building_segment_b in B_RMD.building.building_segments:```

Expand Down
Loading
Loading