Rule 5-1 Updates#1852
Conversation
| - Iterate through the RPDs: `for rpd in (rpd_u, rpd_b0, rpd_b90, rpd_b180, rpd_b270, rpd_p):` | ||
| - If the RPD exists, check the output baseline building performance energy cost and add it to the set: `if rpd != Null: bbp_values.add(rpd.output.baseline_building_performance_energy_cost)` | ||
| - If the RPD exists, and it is a baseline rotation RPD, add the total annual cost to the list: `if rpd != Null and rpd.type in [BASELINE_90, BASELINE_180, BASELINE_270]: baseline_rotation_total_annual_costs.append(sum(rpd.output.source_results.annual_cost))` | ||
| - If the length of the set is greater than one, exit evaluation early and return UNDETERMINED with a message: `if len(bbp_values) > 1: UNDETERMINED raise_message "Ruleset expects exactly one BBP value to be used in the project."` |
There was a problem hiding this comment.
I wonder if we should add a note to the schema about this. It is not necessarily intuituve that this should be identical for all the RPD files.
There was a problem hiding this comment.
@claperle and @JacksonJ-KC if I understand correctly, the code in line 59 is checking for the presence of 1 baseline RPD- could it be the case that a RPD GS generates 4 baseline RPDs which are exactly the same?
There was a problem hiding this comment.
@supriyagoel, yes this would be allowed. A python "set" only keeps track of unique values so the length would be 1 if the values are all the same.
|
|
||
|
|
||
| **Notes/Questions:** | ||
| None | ||
| 1. BBUEC, BBREC should probably also be the averages of all present baseline RMDs sums of regulated and unregulated end use costs, however we cannot determine end use costs from the schema | ||
| 2. the language in 90.1 only includes the defined term "baseline building performance" in the direction to average results from different orientations, it does not include BBUEC and BBREC so maybe #1 is not an issue |
There was a problem hiding this comment.
I am okay with how you have done it based on the exact language and limitations.
| - **Rule Assertion:** | ||
| - Case 1: Baseline rotations are expected based on the fenestration areas by azimuth and the baseline building performance matches the average of the total source results annual cost from the 4 baseline RMDs: PASS: `if rotation_expected_b and bbp == avg_baseline_total_annual_cost and len(baseline_rotation_total_annual_costs) == 3: PASS` | ||
| - Case 2: Baseline rotations are not expected based on the fenestration areas by azimuth and the baseline building performance matches the total source results annual cost from the BASELINE_0 RMD: PASS: `elif !rotation_expected_b and bbp == baseline_0_total_annual_cost: PASS` | ||
| - Case 3: Baseline rotations are not expected based on the fenestration areas by azimuth and the baseline building performance does not match the total source results annual cost from the BASELINE_0 RMD: FAIL: `elif !rotation_expected_b and bbp != baseline_0_total_annual_cost: FAIL` |
There was a problem hiding this comment.
same question here, would it be incorrect if a RPD GS is writing 4 baseline RPDs - to be exactly the same?
There was a problem hiding this comment.
same response! if the values are the same it is not a problem
|
@weilixu @jugonzal07 - I've merged @jugonzal07 's 5-1 testing JSON PR to this PR. This PR is ready for your review. Thanks! |
These updates incorporate logic to ensure the reported BBP represents the average of baseline rotated RPDs when rotations are expected and otherwise represents the baseline 0 RPD.