Check if the baseline model is exempted from the orientation requirements # ASHRAE 90.1-2019 - G3.1 (5) Orientation. The *baseline building performance* shall be generated by simulating the *building* with its actual *orientation* and again after rotating the entire *building* 90, 180, and 270 degrees, then averaging the results. The *building* shall be modeled so that it does not shade itself. - G3.1 (5) Orientation Exceptions: - If it can be demonstrated to the satisfaction of the *rating authority* that the *building orientation* is dictated by site considerations. - *Buildings* where the *vertical fenestration area* on each *orientation* varies by less than 5% # Code Requirement Interpretation The code requires the baseline building performance to be the average value of the model facing four different orientations (0, 90, 180, 270). Exception shall be applied when site consideration approved by rating authority or the vertical fenestration area on each orientation varies by less than 5%. # Implementation Methodology At beginning of the baseline generation, a method `run_all_orientations` is called to flag the rotation. The `run_all_orientations` function implements the logics as followings: - Default value from `run_all_orients`. - Check fenestration area variances at each orientation - if any of the combination has a variation that is greater than 5%, then set the flag to true - Check user data from `userdata_building`. If the `is_rotation_exmpted` data is available, override the previous flag. ## Key Ruby Methods `run_all_orientations` ## Test Case Documentation ### Test case 1: - Prototype: Small Office - User data folder: N/A - Summary: The case will require rotation on four orientations. ### Test case 2: - Prototype: Small Office - User data folder: N/A - Summary: This case have 40% wwr on four orientations, rotation is still required. ### Test case 3: - Prototype: Small Office - User data folder: *userdata_bro_01* - Summary: This case have have identical fenestration area for four orientation and user data set to exempt.