Self-Configuring Rulesets: Gatekeeper Rules

In the article Self-Configuring Rulesets with User Input, we introduced self-configuring rulesets through the use of user input, which allows rulesets to configure themselves based on a property of a model set by the user in Solibri Model Checker (SMC).  These self-configuring rulesets are also called “Gatekeeper” rules, as these rules have the ability to pass only specific components based on some condition to sub rules for further checking.

In the following example, we will check a requirement that any space over 500 sq. ft. and that contains a boiler, incinerator, or furnace must have 2 doors to exit from.  No individual rule template can check for all three of these conditions.  Instead, we will use three different rule templates and create a nested self-configuring “gatekeeper” ruleset to pass the components based on specific conditions to sub rules to further check each condition.

You can download this example as a .smc file from the link here: Boiler_Rooms.smc

Example 1 – Creating Nested Gatekeeper Rules

In this example, we’ll show how nested gatekeeper rules can be used to check components for multiple conditions using multiple rule templates:

  1. Open the Boiler_Rooms.smc file in SMC and click the Checking Layout tab.
  2. In the Checking View, expand the Example 1 ruleset folder, select Space must reference 2 or more doors, and look at the results in the Results View:
    Space must reference 2 or more doors - Results
    Space must reference 2 or more doors – Results

    Rooms 1, 3, and 7 only have a single door and fail this check.

  3. Open the rule parameters for this rule:
    Space must reference 2 or more doors - Rule Parameters
    Space must reference 2 or more doors – Rule Parameters

    The SOL/231 – Comparison Between Property Values rule template was used to check that at least two doors have a Referencing relation to a space.  Remember, in the Components to Check Filter Parameters table, we exclude any spaces that have a space group classification defined, as those spaces are areas rather than rooms.

  4. In the Checking View, select Space must not contain a boiler, incinerator, or furnace and look at the results in the Results View:
    Space must not contain a boiler, incinerator, or furnace - Results
    Space must not contain a boiler, incinerator, or furnace – Results

    Rooms 1, 2, 3, 7, 8, and 9 all contain boiler components and fail this check.

  5. Open the rule parameters for this rule:
    Space must not contain a boiler, incinerator, or furnace - Rule Parameters
    Space must not contain a boiler, incinerator, or furnace – Rule Parameters

    The SOL/225 – Number of Components in Space rule template was used to ensure that there is a maximum of 0 components classified as Boilers, Furnaces, or Incinerators in all spaces.  The Space Usage classification is used in the rule parameters; however, since the cells have the asterisks (*) wildcard matching character, all spaces will be checked.  The Boilers, Incinerators, and Furnaces classification is simply classifying any component as such based on the name of the component, as seen in the classification rules:

    Boilers, Incinerators, and Furnaces - Classification Rules
    Boilers, Incinerators, and Furnaces – Classification Rules
  6. In the Checking View, select Space area must be less than 500 sq ft and look at the results in the Results View:
    Space area must be less than 500 sq ft - Results
    Space area must be less than 500 sq ft – Results

    Rooms 1, 2, 3, 4, 5, and 6 all have an area of 625 sq ft and fail this check.

  7. Open the rule parameters for this rule:
    Space area must be less than 500 sq ft - Rule Parameters
    Space area must be less than 500 sq ft – Rule Parameters

    The SOL/132 – Space Area rule template was used to check that all spaces have a maximum area of 500 sq ft.

  8. Click File > Ruleset Manager
  9. In the Ruleset Folders View, expand Rulesets Open in SMC > Gatekeeper Example > Example 1 and select Space must not contain a boiler, incinerator, or furnace

    Rulesets Folder - Rulesets Open in SMC
    Rulesets Folder – Rulesets Open in SMC

    A self-configuring rule is created by dragging another rule or ruleset onto the rule within the Workspace View that acts as the self-configuring rule.  The Sub Rule Options in the Info View is then set to one of the four options.  The last two options, Check only failed components and Check only passed components, are used for “Gatekeeper” rules, as these rules will only pass specific components to sub rules based on whether those components pass or fail the check.

    In this example, the gatekeeper rule was created by dragging the Space must reference 2 or more doors rule from the Ruleset Folders View onto the Space must not contain a boiler, incinerator, or furnace rule in the Workspace View. The Space Area must be less than 500 sq ft rule from the Ruleset Folders View was then dragged onto the Space must reference 2 or more doors rule in the Workspace View.  The Sub Rule Options for both nested gatekeeper rules were set to Check only failed components.

    Creating Self-Configuring Rules
    Creating Self-Configuring Rules
  10. In the Info View, you see this is a self-configuring gatekeeper rule with the sub rule option set to Check only failed components.

    Check Only Failed Components
    Check Only Failed Components

    Therefore, the sub rules will only check the spaces 1, 2, 3, 7, 8, and 9 that have a boiler, incinerator, or furnaces and fail this check.  If you look at Info View for the sub rule Space must reference 2 or more doors, it too is a gatekeeper that passes the spaces 1 and 7 that only have a single door and fail the check to its sub rule. That sub rule checks spaces 1 and 7 to ensure that they are less than 500 sq ft, and space 1 then fails the overall check as it is 625 sq ft.

  11. Click the Return to Solibri Model Checker Return to Solibri Model Checker button button, and in the Checking View, select the sub rule Space area must be less than 500 sq ft.
    Space area must be less than 500 sq ft - Sub Rule Results
    Space area must be less than 500 sq ft – Sub Rule Results

    In the Results View, only space 1 fails all three conditions.

  12. Expand the remaining two gatekeeper rules and check their results.  The same space 1 is returned as a result; however, the description of the issue in the Info View depends on the leaf sub rule that is checked:
    Space must reference 2 or more doors - Sub Rule Results
    Space must reference 2 or more doors – Sub Rule Results

    Space must not contain a boiler, incinerator, or furnace  - Sub Rule Results
    Space must not contain a boiler, incinerator, or furnace – Sub Rule Results

Example 2 – Input and Output of Gatekeeper Rules

In this example, we’ll show that gatekeeper rules have specific input and output components that can be passed in from parent rules and passed out to sub rules.  We add an additional requirement to check for boilers, incinerators, and furnaces that are greater than 600 000 Btu.  The requirement is now: Any space that is over 500 sq ft and contains a boiler, incinerator, or furnace that exceeds 600 000 Btu must have 2 doors to exit from.

  1. In the Checking View, expand the Example 2 ruleset folder, select Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) , and look at the results in the Results View:
    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) - Results
    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) – Results

    All six boilers in the model are greater than 11.95 bhp and fail this check.

    Note: 11.95 bhp = 600,000 Btu.

  2. Open the rule parameters for this rule:
    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) -Rule Parameters
    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) -Rule Parameters

    This rule checks to ensure the BHP property of the Mechanical property set is less than or equal to 11.95 for all components classified as a Boiler, Furnace, and Incinerator.

  3. In the Checking View, expand the first gatekeeper rule Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) and select the leaf sub rule Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) to view its results in the Results View:

    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) - Sub Rule Results
    Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) – Sub Rule Results

    In the Checking View, and Results View, this rule passed the check even though space 1 should obviously still fail as the boiler in that space is greater than 11.95 bhp.  If you click the Add View ADD_VIEW button and select the Checked Components View, you’ll see why.  In the Checked Components View, select Show All Checked and the view shows that no components were checked. Therefore, the rule, passes the check, since there are no components with issues.  Its parent gatekeeper rule, Space must not contain a boiler, incinerator, or furnace, only passes Space components to the leaf sub rule. However, that leaf sub rule is not checking Space components.  It is checking any component that was classified as a Boiler, Incinerator, or Furnace, and none of these components were passed into it as input.

    This is a very important concept to understand when setting up your gatekeeper rules:  If you use the Check all failed components or Check all passed component sub rule options, the output component type of the parent gatekeeper rule must match the input of the child sub rule.

  4. In the Checking View, expand the Example 1 ruleset folder and select the Space must not contain a boiler, incinerator, or furnace rule.  In the Checked Components view, click the Switch to Component Hierarchy COMPONENT_HIERARCHY button, and you’ll see that only Space components are listed as results that failed:

    Space must not contain a boiler, incinerator, or furnace - Failed Components
    Space must not contain a boiler, incinerator, or furnace – Failed Components
  5. In the Checking View, expand the Example 2 ruleset folder, expand the second gatekeeper rule Boiler, incinerator, or furnace must be less than 11.95 bhp (400,000 Btu) and select the leaf sub rule Space must not contain a boiler, incinerator, or furnace >400,000 Btu to view its results in the Results View:

    Space must not contain a boiler, incinerator, or furnace > 400,000 Btu - Sub Rule Results
    Space must not contain a boiler, incinerator, or furnace > 400,000 Btu – Sub Rule Results


    It is correctly reporting space 1 as an issue.

  6. Open the rule parameters for this rule:
    Space must not contain a boiler, incinerator, or furnace > 400,000 Btu - Rule Parameters
    Space must not contain a boiler, incinerator, or furnace > 400,000 Btu – Rule Parameters

    The problem in checking was resolved by using a Component Classification named Boilers, Incinerators, and Furnaces with Power that not only classifies these components based on their Name, but also classifies them based on their BHP property:

    Boilers, Incinerators, and Furnaces with Power - Classification Rules
    Boilers, Incinerators, and Furnaces with Power – Classification Rules

    Only boilers, incinerators, or furnaces that have a BHP value greater than 11.95 are checked if they are contained in the spaces 1 and 4 passed in as input.  As only space 1 has one of those boilers, it fails and is the result listed in the Results View.

Example 3 – An Alternate Method Using General Intersection

  1. In the Checking View, expand the Example 3 ruleset folder and select Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU (General Intersection Rule) to view the results in the Results View:
    Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU - Results
    Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU – Results

    Only the spaces 1, 2, and 3 that are greater than 500 sq ft and contain a boiler greater than 11.95 bhp fail the check.

  2. Open the rule parameters for this rule:
    Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU - Rule Parameters
    Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU – Rule Parameters

    This rule uses the SOL/1 – General Intersection Rule rule template that has two Filter Parameter tables.  This rule filters spaces that are greater than 500 sq ft that are not space groups in the Component 1 Filter Parameter table, and filters any components that are Boilers, Incinerators, or Furnaces that are greater than 11.95 bhp.  Any components from the Component 1 filter Parameter Table that are inside any components from the Component 2 Filter Parameter table fail and those components are returned as results.   This allows three conditions to be checked:

    1. The space area is greater than 500 sq ft
    2. The Boiler, Incinerator, or Furnace is greater than 600,000 Btu
    3. The Boiler, Incinerator, or Furnace is inside the space.
  3. Expand the gatekeeper rule Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU (General Intersection Rule) and select the leaf sub rule Space must reference 2 or more doors to view its results in the Results View:

    Space must reference 2 or more doors - General Intersection Sub Rule Results
    Space must reference 2 or more doors – General Intersection Sub Rule Results

    Of spaces 1, 2, and 3 that were passed in as input, only space 1 has a single door and fails the check.

    NOTE: Not only did the parent Space > 500 sq ft must not contain boiler, incinerator, or furnace > 400,000 BTU (General Intersection Rule) gatekeeper rule pass the intersecting spaces from the Component 1 Filter Parameter table in the rule parameters to the sub rule Space must reference 2 or more doors, it also passed the boilers, incinerators, and furnaces greater than 400,000 Btu from the Component 2 Filter Parameter table that were inside those intersecting spaces.  However, the Components to Check Filter Parameter table from the Space must reference 2 or more doors sub rule only checks space components.  Therefore, only spaces are returned as results.  Again, it is also important to understand what components are passed into rule parameters of sub rules of gatekeeper rules and what components are passed out of rule parameters from parent gatekeeper rules.

Gatekeeper Rule Template Input/Output Table

The following table provides the component types and in some cases the rule parameters of the input and output of gatekeeper rules for all rule templates in SMC.  The input column is what components are passed into a sub rule and the output column is what components are passed out from the parent gatekeeper rules:

Tag Rule Input Output
SOL/208 Accessible Door Rule Doors and Openings Doors and Openings
SOL/207 Accessible Ramp Rule Ramps Ramps
SOL/210 Accessible Stair Rule Stairs Stairs
SOL/211 Accessible Window Rule Windows Windows
SOL/209 Free Floor Space Spaces Spaces
SOL/233 Allowed Beam Intersections Beams for the Checked Components Filter Parameter table Beams from the Checked Components Filter Parameter table and any components from the Components in Allowed Area Filter Parameter table
SOL/215 Allowed Profiles Beams, Columns, and Members Beams, Columns, and Members
SOL/224 Architectural Components are Filled Any non-container components for the Architectural Building Components Filter Parameter table Any non-container components from the Architectural Building Components Filter Parameter table
SOL/212 Building Envelope Validation Building All walls from the building envelope
SOL/231 Comparison Between Property Values Any components for the Checked Components and Compared Components Filter Parameter tables Any components from the Checked Components and Compared Components Filter Parameter tables
SOL/222 Component Distance Any non-container components for the Source Component Filter Parameter table Any non-container components from the Source Component Filter Parameter table
SOL/171 Component Property Values Must Be Consistent  Any components  Any components
SOL/25 Components Must Be Connected to Spaces Windows, Doors, and Openings  Windows, Doors, and Openings
SOL/21 Components Must Have Unique Identifier  Any components  Any components
SOL/23 Components Must Touch Other Components Any non-container components for the Checked Components Filter Parameter table Any non-container components from the Checked Components Filter Parameter table
SOL/161 Distances Between Spaces Spaces Spaces
SOL/218 Element Hole Validation Rule Beams, Columns, and Members Beams, Columns, and Members
SOL/179 Escape Route Analysis Spaces Spaces
SOL/190 Fire Compartment Area Must Be within Limits Floors Floors
SOL/172 Fire Walls Must Have Correct Wall, Door, and Window Types Floors Floors
SOL/111 Floor and Gross Area Analysis Floors Floors
SOL/220 Floor Distance Any non-container components Any non-container components
SOL/228 Floor Names Must Be Consecutive Buildings Buildings
SOL/226 Free Area in Front of Components Any non-container components Any non-container components
SOL/1 General Intersection Rule Any non-container components for the Component 1 Filter Parameter table Any non-container components from the Component 1 and Component 2 Filter Parameter table
SOL/17 Layer of Component Must Be from Agreed List Any non-container components Any non-container components
SOL/232 Manual Checking Rule N/A: CHECKS ALL MODEL COMPONENTS N/A: CANNOT BE USED AS GATEKEEPER
SOL/206 Model Comparison Any components for the Checked Components Filter Parameter table Any components from the Checked Components Filter Parameter table
SOL/11 Model Should Have Components Buildings Any non-container components
SOL/176 Model Structure Buildings, Doors, Floors, and Windows Buildings, Doors, Floors, and Windows
SOL/225 Number of Components in Space Spaces Spaces
SOL/230 Property Rule Template with Component Filters Any components Any components
SOL/9 Property Values Must Be from Agreed List Any components Any components
SOL/203 Required Property Sets Any components Any components
SOL/213 Shelf Running Metre Rule Spaces Spaces
SOL/132 Space Area Spaces Spaces
SOL/38 Space Count on Each Floor Floors Floors
SOL/175 Space Group Containment Spaces Spaces
SOL/36 Space Requirements Spaces Spaces
SOL/202 Space Validation Spaces Spaces
SOL/191 Spaces Must Be Included in Fire Compartments Floors Spaces
SOL/162 Spaces Must Be Included in Space Groups Spaces Spaces
SOL/19 Spaces Must Have Enough Window Area Spaces Spaces
SOL/223 Structural Components Fit in Architectural Ones Any non-container components for the Structural Building Components Filter Parameter table Any non-container components from the Structural Building Components Filter Parameter table
SOL/37 Total Space Area on Each Floor Floors Floors
SOL/221 Wall Distance Walls Walls
SOL/216 Wall Validation Walls Walls
Advertisements
Self-Configuring Rulesets: Gatekeeper Rules

3 thoughts on “Self-Configuring Rulesets: Gatekeeper Rules

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s