Skip to content
Draft
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
35 changes: 21 additions & 14 deletions docs/section6/Rule6-7.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@
**Appendix G Section:** Section 6 Lighting
**Appendix G Section Reference:** Section G3.1-6(h) Lighting: Modeling Requirements for the Proposed design

**Applicability:** All required data elements exist for P_RMR
**Applicability Checks:** None
**Applicability:** All required data elements exist for P_RMD
**Applicability Checks:**
1. Space is not a crawl space, plenum or interstitial space.

**Manual Check:** Yes
**Evaluation Context:** Each Data Element
**Data Lookup:** None
## Rule Logic:

- Check if each zone has window or skylight in the building segment in the Proposed model: `For zone_p in P_RMR...zones:`
- Check if each zone has window or skylight in the building segment in the Proposed model: `For zone_p in P_RMD...zones:`

- For each surfaces in zone: `surface_p in zone_p.surfaces`

Expand All @@ -22,29 +24,34 @@
- Check if surface has any subsurface that is not door, set daylight flag as TRUE: `if ( subsurface.classification != "DOOR" for subsurface in surface_p.subsurfaces ): daylight_flag_p == TRUE`

- For each space in zone: `space_p in zone_p.spaces:`

- Get interior_lighting in space: `interior_lighting_p = space_p.interior_lighting`

- Check if any interior_lighting has daylight control: `if ( lighting.daylighting_control_type != "NONE" for lighting in interior_lighting_p ): has_daylight_control_flag == TRUE`
- **Applicability Check 1:** Check if the space is a crawl space, plenum or interstitial space: `if space_p.function in [PLENUM, CRAWL_SPACE, INTERSTITIAL_SPACE]:`
- Space is not applicable because space function is crawl space, plenum or interstitial space: `continue`
- Else, set zone_has_applicable_space_function to True: `Else: zone_has_applicable_space_function = True`
- Get interior_lighting in space: `interior_lighting_p = space_p.interior_lighting`

- Check if any interior_lighting has daylight control: `if ( lighting.daylighting_control_type != "NONE" for lighting in interior_lighting_p ): has_daylight_control_flag == TRUE`

- Check if any interior_lighting with daylight control has it modeled using schedule adjustment: `if (lighting.are_schedules_used_for_modeling_daylighting_control==TRUE for lighting in interior_lighting_p): daylight_schedule_adjustment_flag = TRUE`
- Check if any interior_lighting with daylight control has it modeled using schedule adjustment: `if (lighting.are_schedules_used_for_modeling_daylighting_control==TRUE for lighting in interior_lighting_p): daylight_schedule_adjustment_flag = TRUE`

**Rule Assertion:** For each zone in the Proposed model:
**Rule Assertion:** For each zone in the Proposed model:

- Case 1, if the zone has window or skylight and daylight control, and daylight control is not modeled using schedule: `if ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == TRUE ) AND ( NOT daylight_schedule_adjustment_flag ): UNDETERMINED and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH WINDOW(S) AND/OR SKYLIGHT(S) AND HAVE DAYLIGHTING CONTROLS MODELED EXPLICITLY IN THE SIMULATION TOOL. VERIFY THAT THE MANDATORY LIGHTING CONTROL REQUIREMENTS ARE MET."`
- Case 1, if the zone has window or skylight and daylight control, and daylight control is not modeled using schedule: `if zone_has_applicable_space_function AND ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == TRUE ) AND ( NOT daylight_schedule_adjustment_flag ): UNDETERMINED and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH WINDOW(S) AND/OR SKYLIGHT(S) AND HAVE DAYLIGHTING CONTROLS MODELED EXPLICITLY IN THE SIMULATION TOOL. VERIFY THAT THE MANDATORY LIGHTING CONTROL REQUIREMENTS ARE MET."`

- Case 2, else if the zone has window or skylight and daylight control, and daylight control is modeled using schedule: `if ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == TRUE ) AND ( daylight_schedule_adjustment_flag ): UNDETERMINED and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH WINDOW(S) AND/OR SKYLIGHT(S) AND HAVE DAYLIGHTING CONTROLS MODELED VIA SCHEDULE ADJUSTMENT. VERIFY THAT THE MANDATORY LIGHTING CONTROL REQUIREMENTS ARE MET, AND THAT THE SUPPORTING DOCUMENTATION IS PROVIDED FOR THE SCHEDULE ADJUSTMENT."`
- Case 2, else if the zone has window or skylight and daylight control, and daylight control is modeled using schedule: `if zone_has_applicable_space_function AND ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == TRUE ) AND ( daylight_schedule_adjustment_flag ): UNDETERMINED and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH WINDOW(S) AND/OR SKYLIGHT(S) AND HAVE DAYLIGHTING CONTROLS MODELED VIA SCHEDULE ADJUSTMENT. VERIFY THAT THE MANDATORY LIGHTING CONTROL REQUIREMENTS ARE MET, AND THAT THE SUPPORTING DOCUMENTATION IS PROVIDED FOR THE SCHEDULE ADJUSTMENT."`

- Case 3, else if the zone has window or skylight and daylight control is not modeled: `else if ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == FALSE ): FAIL and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH FENESTRATION BUT NO DAYLIGHTING CONTROLS. THE DESIGN MUST INCLUDE MANDATORY DAYLIGHTING CONTROLS UNLESS ANY OF THE EXCEPTIONS TO 90.1 SECTION 9.4.1.1(E) APPLY."`
- Case 3, else if the zone has window or skylight and daylight control is not modeled: `else if zone_has_applicable_space_function AND ( daylight_flag_p == TRUE ) AND ( has_daylight_control_flag == FALSE ): FAIL and raise_warning "SOME OF THE SPACES IN ZONE ARE MODELED WITH FENESTRATION BUT NO DAYLIGHTING CONTROLS. THE DESIGN MUST INCLUDE MANDATORY DAYLIGHTING CONTROLS UNLESS ANY OF THE EXCEPTIONS TO 90.1 SECTION 9.4.1.1(E) APPLY."`

- Case 4, else if the zone does not have window or skylight and daylight control is modeled: `else if ( daylight_flag_p == FALSE ) AND ( has_daylight_control_flag == TRUE ): FAIL`
- Case 4, else if the zone does not have window or skylight and daylight control is modeled: `else if zone_has_applicable_space_function AND ( daylight_flag_p == FALSE ) AND ( has_daylight_control_flag == TRUE ): FAIL`

- Case 5, else, the zone does not have window or skylight and no daylight control is modeled: `else: PASS`
- Case 5, zone_has_applicable_space_function equals FALSE `elif not zone_has_applicable_space_function: NOT_APPLICABLE`

- Case 6, else, the zone does not have window or skylight and no daylight control is modeled: `else: PASS`

**Notes:**
1. Updated the Rule ID from 6-12 to 6-8 on 6/3/2022
2. Updated the Rule ID from 6-8 to 6-7 on 6/8/2022
3. The rule has been written to apply to user RMR, it should instead be implemented to apply to P-RMR- should discuss
4. Updated to exclude crawl space, plenum or interstitial space on 9/29/2025


**[Back](../_toc.md)**
26 changes: 15 additions & 11 deletions docs/section6/Rule6-8.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@

- Table G3.7, Performance Rating Method Lighting Power Density Allowances and Occupancy Sensor Reductions Using the Space-by-Space Method

**Applicability:** All required data elements exist for P_RMR
**Applicability Checks:** None
**Applicability:** All required data elements exist for P_RMD
**Applicability Checks:**
1. Space is not a crawl space, plenum or interstitial space.

**Manual Check:** Yes
**Evaluation Context:** Each Data Element
Expand All @@ -22,32 +23,35 @@

## Rule Logic:

- Get building open schedule in the proposed model: `building_open_schedule_p = P_RMR.building.building_open_schedule`
- Get building open schedule in the proposed model: `building_open_schedule_p = P_RMD.building.building_open_schedule`

- For each building segment in building: `for building_segment_p in P_RMR.building.building_segments:`
- For each building segment in building: `for building_segment_p in P_RMD.building.building_segments:`

- For each zone in building_segments: `zone_p in building_segment_p.zones:`

- For each space in zone: `space_p in zone_p.spaces:`
- **Applicability Check 1:** Check if the space is a crawl space, plenum or interstitial space: `if space_p.function in [PLENUM, CRAWL_SPACE, INTERSTITIAL_SPACE]:`
- Space is not applicable because space function is crawl space, plenum or interstitial space rule is NOT_APPLICABLE for space: `continue`

- Get matching space from B_RMD: `space_b = match_data_element(B_RMD, Spaces, space_p.id)`

- Get matching space from B_RMR: `space_b = match_data_element(B_RMR, Spaces, space_p.id)`

- Get normalized space lighting schedule for B_RMR: `normalized_schedule_b = normalize_space_schedules(space_b.interior_lighting)`
- Get normalized space lighting schedule for B_RMD: `normalized_schedule_b = normalize_space_schedules(space_b.interior_lighting)`

- Get normalized space lighting schedule: `normalized_schedule_p = normalize_space_schedules(space_p.interior_lighting)`

- Compare lighting schedules in P_RMR and B_RMR: `schedule_comparison_result = compare_schedules(normalized_schedule_p, normalized_schedule_b, building_open_schedule_p)`

**Rule Assertion:**
**Rule Assertion:**

- Case 1: For all hours, for each lighting, if lighting schedule in P_RMR is equal to lighting schedule in B_RMR times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "MATCH": PASS`
- Case 1: For all hours, for each lighting, if lighting schedule in P_RMD is equal to lighting schedule in B_RMD times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "MATCH": PASS`

- Case 2: Else if lighting schedule in P_RMR is lower than or equal to lighting schedule in B_RMR times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "EQUAL AND LESS": FAIL and raise_warning "SCHEDULE ADJUSTMENT MAY BE CORRECT IF SPACE INCLUDES DAYLIGHT CONTROL MODELED BY SCHEDULE ADJUSTMENT OR INDIVIDUAL WORKSTATIONS WITH LIGHTING CONTROLLED BY OCCUPANCY SENSORS (TABLE G3.7 FOOTNOTE C)."`
- Case 2: Else if lighting schedule in P_RMD is lower than or equal to lighting schedule in B_RMR times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "EQUAL AND LESS": FAIL and raise_warning "SCHEDULE ADJUSTMENT MAY BE CORRECT IF SPACE INCLUDES DAYLIGHT CONTROL MODELED BY SCHEDULE ADJUSTMENT OR INDIVIDUAL WORKSTATIONS WITH LIGHTING CONTROLLED BY OCCUPANCY SENSORS (TABLE G3.7 FOOTNOTE C)."`

- Case 3: Else, lighting schedule in P_RMR is higher than lighting schedule in B_RMR times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "EQUAL AND MORE": UNDETERMINED and raise_message "LIGHTING SCHEDULE IN P-RMR INCLUDING ADJUSTED LIGHTING OCCUPANCY SENSOR REDUCTION FACTOR IS HIGHER THAN THAT IN B-RMR. VERIFY ADDITIONAL OCCUPANCY SENSOR CONTROL IS MODELED CORRECTLY IN P-RMR."`
- Case 3: Else, lighting schedule in P_RMD is higher than lighting schedule in B_RMD times adjusted lighting occupancy sensor reduction factor: `if schedule_comparison_result == "EQUAL AND MORE": UNDETERMINED and raise_message "LIGHTING SCHEDULE IN P-RMD INCLUDING ADJUSTED LIGHTING OCCUPANCY SENSOR REDUCTION FACTOR IS HIGHER THAN THAT IN B-RMR. VERIFY ADDITIONAL OCCUPANCY SENSOR CONTROL IS MODELED CORRECTLY IN P-RMD."`

**Notes:**
1. Updated the Rule ID from 6-13 to 6-9 on 6/3/2022
2. Updated the Rule ID from 6-9 to 6-8 on 6/8/2022
3. Updated to exclude crawl space, plenum or interstitial space on 9/29/2025

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