Typologies¶
BEMGen has one plan generator for each family of its precedent set, eighteen in all, housing and non-residential, all in panel 2 Generate, and fifteen generators for the DOE reference buildings. The families come from four books on housing and building planning; they fix only which parts a plan has and how they connect, so every dimension and count below is a design input with a default chosen for BEMGen. The family SYN-TYP-013 (an incremental row with reserved expansion bays) has no generator. Family rules and sources: four-source typology families.
The images show each family's example definition in the viewport: the default plan (left) and the building after its simplifier and floor aggregator (right), as listed under Example definitions.
Every generator works as the workflow describes: dimensions in metres, a Floor Height (floor-to-floor) and an Orientation (degrees clockwise from true north, default 0), one required preset input per space type, Preview Location last, and one Plan output. Housing families zone one zone per dwelling (plus stairs and corridors); non-residential families zone one zone per department.
Overview¶
The counts are those of the default plan with the default presets of the matching space types.
| Generator (nickname) | Family | Preset inputs | Zones | Floor area | Windows |
|---|---|---|---|---|---|
| Linear Plan Generator (Linear) | SYN-TYP-009 double-sided internal corridor bar |
Dwelling Unit, Corridor, Stair | 6 | 432 m² | 10 |
| Stair Bay Bar (SBar) | SYN-TYP-001 repeated stair bays in a linear bar |
Dwelling Unit, Stair | 9 | 612 m² | 20 |
| Stair Pair (SPair) | SYN-TYP-008 one stair between a dwelling pair |
Dwelling Unit, Stair | 3 | 204 m² | 8 |
| Gallery Bar (GBar) | SYN-TYP-002 continuous external gallery beside a linear bar |
Dwelling Unit, Stair | 8 | 440 m² | 18 |
| Terrace Row (Terr) | SYN-TYP-006 attached narrow terrace row |
Dwelling Unit | 6 | 330 m² | 14 |
| Point Plate (PPlate) | SYN-TYP-007 compact point-access tower plate |
Dwelling Unit, Stair | 5 | 484 m² | 8 |
| Winged Band (WBand) | SYN-TYP-003 projecting wings joined by a common band |
Dwelling Unit, Stair | 21 | 1452 m² | 43 |
| Open Court (OCourt) | SYN-TYP-004 open U-shaped court with stair-served wings |
Dwelling Unit, Stair | 15 | 984 m² | 30 |
| Enclosed Court (ECourt) | SYN-TYP-005 enclosed courtyard residential block |
Dwelling Unit, Stair | 24 | 1728 m² | 44 |
| Court Cluster (CCluster) | SYN-TYP-011 linked housing clusters around several courts |
Dwelling Unit, Stair | 39 | 2880 m² | 72 |
| Radial Lobes (RLobes) | SYN-TYP-010 radial lobes around a point tower core |
Dwelling Unit, Stair | 9 | 624 m² | 16 |
| Stepped Band (SBand) | SYN-TYP-012 stepped dwelling bands with exposed terraces |
Dwelling Unit, Corridor, Stair | 7 per storey | 576, 468, 360 m² | 11 per storey |
| Office Plate (OPlate) | SYN-TYP-017 central service core within an office plate |
Office, Core | 2 | 1260 m² | 4 |
| Cafeteria (Cafe) | SYN-TYP-016 cafeteria service edge beside a dining field |
Kitchen, Dining | 2 | 690 m² | 6 |
| Branching Mall (BMall) | SYN-TYP-014 branching public mall between retail wings |
Mall, Retail | 10 | 7744 m² | 16 |
| Care Hub (CHub) | SYN-TYP-018 communal hub serving elder-care bedroom groups |
Care Bedroom, Care Communal, Corridor | 10 | 1552 m² | 16 |
| Foyer Halls (FHalls) | SYN-TYP-019 public foyer branching to distinct activity spaces |
Lobby, Activity Hall, Service | 4 | 1800 m² | 10 |
| Operating Suite (OSuite) | SYN-TYP-015 operating suite with separated clean and dirty routes |
Operating Theatre, Clean Corridor, Dirty Corridor, Clinical Support | 6 | 1046.4 m² | 8 |
Wire each preset input from the built-in preset component of the same name in 1 Program Presets (Dwelling Unit Preset into Dwelling Unit, and so on), from a general Program Preset of that space type, or from Any Program Preset to use another program (workflow).
Housing¶
Linear Plan Generator¶
A bar with a full-depth stair at the west end (ST), a double-loaded corridor along the middle (CO), and a row of equal dwellings on each side (US1, US2, … south, UN1, UN2, … north). Inputs: Length (L) 24, Unit Depth (UD) 8, Corridor Width (CW) 2, Unit Width (UW) 10, the target dwelling width, the rows being divided evenly, Stair Length (SL) 4, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-009. The end-to-end example uses it.

Example: linear-plan.gh (canvas); reference: Linear Plan Generator.
Stair Bay Bar¶
Repeated bays of dwelling, stair, dwelling through the full depth, each stair serving the two dwellings beside it; no corridor. Zones ST1…, then U1…. Inputs: Bay Count (BC) 3 (at least 2), Unit Width (UW) 7, Depth (D) 12, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-001.

Example: stair-bay-bar.gh (canvas); reference: Stair Bay Bar.
Stair Pair¶
One stair bay of the Stair Bay Bar as its own building: two dwellings on either side of one stair (ST1, U1, U2). Inputs: Unit Width (UW) 7, Depth (D) 12, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-008.

Example: stair-pair.gh (canvas); reference: Stair Pair.
Gallery Bar¶
A row of dwellings through the bar depth between a stair at each end (ST1 west, ST2 east, U1…). The external gallery itself is not modelled: there is no gallery zone, and the gallery side is an ordinary outdoor façade. Inputs: Unit Count (UC) 6 (at least 2), Unit Width (UW) 6, Depth (D) 10, Stair Width (SW) 4, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-002.

Example: gallery-bar.gh (canvas); reference: Gallery Bar.
Terrace Row¶
Attached house plots sharing dividing walls, one dwelling zone per plot and storey (U1…, named House i); each house's own stair is inside the dwelling and not zoned. Inputs: Plot Count (PC) 6 (at least 2), Plot Width (PW) 5.5, Depth (D) 10, Floor Height (FH) 3, Orientation (O) 0. Only a Dwelling Unit preset. Lineage: HDHM-TYP-006.

Example: terrace-row.gh (canvas); reference: Terrace Row.
Point Plate¶
A square plate of side Core Width + 2 × Dwelling Depth (22 m by default) with a central core ST (a Stair zone without outdoor walls) and four dwellings U1…U4 in a pinwheel around it, each with two façades. Inputs: Dwelling Depth (DD) 8, Core Width (CW) 6, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-007.

Example: point-plate.gh (canvas); reference: Point Plate.
Winged Band¶
A band of stair bays with wings of stair bays projecting to plan north, each joined to the band along its whole root, so the outline is a comb. Zones B-ST1…, B-U1… (band), then W{i}-ST1…, W{i}-U1… (wing i). The dwelling width is adjusted so that the bays fill the band and each wing exactly; a band façade fragment shorter than 1 m between wings gets no window. Inputs: Wing Count (WC) 3 (at least 2), Wing Length (WL) 17, Wing Spacing (WS) 17, Depth (D) 12, Unit Width (UW) 7, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-003.

Example: winged-band.gh (canvas); reference: Winged Band.
Open Court¶
West, east, and north wings of stair bays around a court open to plan south; every dwelling adjoins a stair of its bay. Zones N-…, then W-… and E-…. Inputs: Court Width (CW) 24, Court Depth (CD) 17, Depth (D) 12, Unit Width (UW) 7, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-004.

Example: open-court.gh (canvas); reference: Open Court.
Enclosed Court¶
Four wings of stair bays around a court closed on all four sides. The footprint has the court as a hole: the court is outside the building, and its façades are outdoor walls with windows facing into it (16 of the 44 windows by default). Perimeter Core zones the court façades separately (P-Court-North, …) around a ring-shaped core. Zones S-…, N-…, then W-…, E-…. Inputs: Court Width (CW) 24, Court Depth (CD) 24, Depth (D) 12, Unit Width (UW) 7, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0. Lineage: HDHM-TYP-005.

Example: enclosed-court.gh (canvas); reference: Enclosed Court.
Court Cluster¶
A row of courts closed by wings of stair bays: south and north wings across the full width, and a west, middle, and east wing between them, each middle wing bordering two courts. The footprint has one hole per court. Zones S-…, N-…, then W-…, M1-…, …, E-…. Inputs: Court Count (CC) 2 (at least 2), Court Width (CW) 24, Court Depth (CD) 24, Depth (D) 12, Unit Width (UW) 7, Stair Width (SW) 3, Floor Height (FH) 3, Orientation (O) 0.

Example: court-cluster.gh (canvas); reference: Court Cluster.
Radial Lobes¶
Three or four lobes on the sides of a square core ST, east, north, west, then south, each lobe holding two dwellings side by side (L{i}-U1, L{i}-U2) that both adjoin the core; no other circulation. With three lobes the core's south side is a façade. Inputs: Lobe Count (LC) 4 (3 or 4), Lobe Length (LL) 10, Lobe Width (LW) 12 (at most Core Width), Core Width (CW) 12, Floor Height (FH) 3, Orientation (O) 0.

Example: radial-lobes.gh (canvas); reference: Radial Lobes.
Stepped Band¶
A band of dwellings between a west stair ST and a rear corridor CO that steps back storey by storey on the south side, so that each lower roof keeps a terrace. It is the only generator with one plan per storey: its Plan output is the list of storey plans, bottom to top. Simplify the list and give the floors to an aggregator with Multipliers unconnected (storey plans). Inputs: Storey Count (SC) 3 (at least 2), Length (L) 36, Base Depth (BD) 14 (the dwelling depth on the ground storey; it must exceed (Storey Count − 1) × Step Depth), Step Depth (SD) 3 (the terrace depth), Corridor Width (CW) 2, Unit Width (UW) 6, Stair Width (SW) 4, Floor Height (FH) 3, Orientation (O) 0. By default five dwellings of 6.4 m per storey, and storeys of 576, 468, and 360 m², drawn at 0, 3, and 6 m.

Example: stepped-band.gh (canvas); reference: Stepped Band.
Non-residential¶
Office Plate¶
A rectangular plate whose office work area OF is one zone, a ring around a central service core SC (a Core zone without outdoor walls). The core must leave at least 3 m of work area at every façade. Inputs: Plate Length (L) 42, Plate Depth (D) 30, Core Length (CL) 18, Core Depth (CD) 6, Floor Height (FH) 3.8, Orientation (O) 0.

Example: office-plate.gh (canvas); reference: Office Plate.
Cafeteria¶
The kitchen and servery KS, one zone, along the whole north edge of a larger dining field DI; the servery counter is their shared edge. Inputs: Length (L) 30, Dining Depth (DD) 15, Kitchen Depth (KD) 8 (smaller than Dining Depth), Floor Height (FH) 4, Orientation (O) 0.

Example: cafeteria.gh (canvas); reference: Cafeteria.
Branching Mall¶
One mall zone MALL through a central court and three or four branches (east, north, west, then south), each with a shop wing on either side of the mall (B{i}-S1, B{i}-S2) and an anchor store B{i}-AN across its end. Inputs: Branch Count (BC) 3 (3 or 4), Branch Length (BL) 40, Mall Width (MW) 8, Shop Depth (SD) 12, Anchor Depth (AD) 30, Floor Height (FH) 5, Orientation (O) 0.

Example: branching-mall.gh (canvas); reference: Branching Mall.
Care Hub¶
Two to four bedroom wings around a communal hub HUB, each wing a corridor W{i}-CO from the hub to the wing's end between two bedroom zones W{i}-B1, W{i}-B2. The wing width, 2 × Bedroom Depth + Corridor Width, must not exceed Hub Width. Inputs: Wing Count (WC) 3 (2 to 4), Wing Length (WL) 30, Bedroom Depth (BD) 6, Corridor Width (CoW) 2.4, Hub Width (HW) 16, Floor Height (FH) 3, Orientation (O) 0.

Example: care-hub.gh (canvas); reference: Care Hub.
Foyer Halls¶
Two or three activity halls and a support wing around a square public foyer FO: hall 1 east, the support wing SV north, hall 2 west, hall 3 south. Inputs: Hall Count (HC) 2 (2 or 3), Hall Length (HL) 30, Hall Width (HW) 20 (at most Foyer Width), Support Length (SL) 10, Foyer Width (FW) 20, Floor Height (FH) 6, Orientation (O) 0.

Example: foyer-halls.gh (canvas); reference: Foyer Halls.
Operating Suite¶
Support rooms SUP across the west end, then bands from south to north: a dirty corridor, and per bank a bank of theatres and the next corridor, the corridors alternating dirty and clean (DC1, TB1, CC1, TB2, DC2, …). Every bank lies between one clean and one dirty corridor. With the default theatre preset (WWR 0) the banks have no windows. Inputs: Bank Count (BC) 2 (at least 2), Bank Length (BL) 36, Theatre Depth (TD) 7, Clean Corridor Width (CW) 3, Dirty Corridor Width (DW) 2.4, Support Length (SL) 12, Floor Height (FH) 4.2, Orientation (O) 0.

Example: operating-suite.gh (canvas); reference: Operating Suite.
DOE reference buildings¶
Fifteen more generators in 2 Generate draw the DOE commercial reference buildings. These are not precedent families: each draws one reference building with its DOE zones, and every dimension is an input whose default is the reference building's. - Presets: instead of one preset input per space type, a DOE generator has a Program Map that gives a preset to each program key. Its Program Keys output lists the keys, and its matching Programs component in 1 Program Presets gives a map of illustrative presets with the reference building's window ratios, or, with its strip Get from Atlas…, the atlas's programs of one of its eleven families (five, and the six IECC editions for eleven of the prototypes) with the same window ratios (What's new). DOE Program Map in 1 Program builds a map from edited presets. - Outputs: a DOE generator gives a Plan for every storey, bottom-up. Its Multipliers output says how many storeys each plan stands for; wire it into the floor aggregator's Multipliers.
| Generator (nickname) | Programs component (nickname) |
|---|---|
| DOE Small Office (DoeSOff) | DOE Small Office Programs (DoeSOffP) |
| DOE Medium Office (DoeMOff) | DOE Medium Office Programs (DoeMOffP) |
| DOE Large Office (DoeLOff) | DOE Large Office Programs (DoeLOffP) |
| DOE Stand-alone Retail (DoeRet) | DOE Stand-alone Retail Programs (DoeRetP) |
| DOE Strip Mall (DoeSMall) | DOE Strip Mall Programs (DoeSMallP) |
| DOE Supermarket (DoeSMkt) | DOE Supermarket Programs (DoeSMktP) |
| DOE Warehouse (DoeWare) | DOE Warehouse Programs (DoeWareP) |
| DOE Primary School (DoePSch) | DOE Primary School Programs (DoePSchP) |
| DOE Secondary School (DoeSSch) | DOE Secondary School Programs (DoeSSchP) |
| DOE Small Hotel (DoeSHot) | DOE Small Hotel Programs (DoeSHotP) |
| DOE Large Hotel (DoeLHtl) | DOE Large Hotel Programs (DoeLHtlP) |
| DOE Quick-Service Restaurant (DoeQSR) | DOE Quick-Service Restaurant Programs (DoeQSRP) |
| DOE Full-Service Restaurant (DoeFSR) | DOE Full-Service Restaurant Programs (DoeFSRP) |
| DOE Outpatient (DoeOutP) | DOE Outpatient Programs (DoeOutPP) |
| DOE Hospital (DoeHosp) | DOE Hospital Programs (DoeHospP) |
The programs components' loads are illustrative, like the other built-in presets; only their window ratios are the reference building's. For a program's own values, give Program JSON's presets to DOE Program Map.
Example definitions¶
The examples zip of each release, bemgen-<version>-examples.zip, holds one Grasshopper definition per typology, end-to-end.gh, program-json-office.gh, schedule-draw.gh, and doe-atlas-map.gh. Each reads left to right: the default preset components, the generator with its default inputs, a plan simplifier, a floor aggregator with a panel of storey multipliers, Validate, and Convert2BEM and Convert2IDF with Write off, in coloured groups with short notes. The simplifiers and aggregators vary across the examples so that each appears several times (except Conditioned Merge, which no example uses); any simplifier works with any aggregator. Open one in Grasshopper with the plugin installed; each solves without warnings or errors and validates.
| Definition | Simplifier | Aggregator | Multipliers |
|---|---|---|---|
linear-plan.gh |
No Simplification | Stack Floors | 3 |
stair-bay-bar.gh |
Semantic Merge | Stacked Floor Zone Multiplier | 3 |
stair-pair.gh |
Perimeter Core | Single Zone per Floor Type | 2 |
gallery-bar.gh |
Single Zone per Floor | Single Zone Building | 3 |
terrace-row.gh |
Semantic Merge | Stack Floors | 2 |
point-plate.gh |
Perimeter Core | Stacked Floor Zone Multiplier | 4 |
winged-band.gh |
Single Zone per Floor | Single Zone per Floor Type | 3 |
open-court.gh |
No Simplification | Single Zone Building | 3 |
enclosed-court.gh |
Perimeter Core | Stack Floors | 3 |
office-plate.gh |
Single Zone per Floor | Stacked Floor Zone Multiplier | 4 |
cafeteria.gh |
No Simplification | Single Zone per Floor Type | 1 |
radial-lobes.gh |
Semantic Merge | Single Zone Building | 2 |
branching-mall.gh |
Single Zone per Floor | Stack Floors | 1 |
care-hub.gh |
No Simplification | Stacked Floor Zone Multiplier | 2 |
foyer-halls.gh |
Semantic Merge | Single Zone per Floor Type | 1 |
operating-suite.gh |
Perimeter Core | Single Zone Building | 1 |
court-cluster.gh |
Semantic Merge | Stacked Floor Zone Multiplier | 3 |
stepped-band.gh |
Perimeter Core | Stack Floors | none: one plan per storey, one floor each |
end-to-end.gh |
Perimeter Core (Depth 4.57) | Stack Floors | 1, 3, 1 (end-to-end example) |
program-json-office.gh |
Semantic Merge | Stacked Floor Zone Multiplier | 3 |
schedule-draw.gh |
No Simplification | Stack Floors | 3 |
doe-atlas-map.gh |
No Simplification | Stack Floors | the generator's Multipliers |
All values are the components' defaults, except in program-json-office.gh, schedule-draw.gh, and doe-atlas-map.gh. In program-json-office.gh there is an Office Plate whose office preset comes from Program JSON, which holds the atlas's Medium Office program in a panel, with Space Type Office and the default WWR 0.4, beside the default Core Preset; its program values are the atlas's, not illustrative. schedule-draw.gh holds the atlas's DOE Ref 1980–2004 Medium Office program, the generation.json of its folder in atlas release 2.4.0, and a setting 2.0.0 in panels, wired into Schedule Draw (Seed 42, Command atlas-schedules); a Stream Filter gated by the Run toggle gives Program JSON the program as it is (Run false, as saved) or the drawn program (Run true, with the generator installed). Program JSON warns that the program's hot-water zone gains are not modelled. doe-atlas-map.gh is the DOE Medium Office at its defaults whose Program Map comes from DOE Medium Office Programs with an atlas map stored: the filled programs of the atlas family 90.1-2007, release 2.3.0, so it solves without a network; the generator's Multipliers feed Stack Floors. The zip's README.md describes the definitions.