Files
isokit/examples/datacentre/scene.json
T
grabowski 2810477f1b
Deploy web Studio / deploy (push) Successful in 1m4s
Data centres: multi-storey shell, racks and pods, cooling, fire safety, power
datacentre.rhai (palette groups Data centre, Cooling, Fire safety, Power):

- dc_building: multi-storey shell (storeys of storey_h), walls in pieces,
  slabs, roof with parapet, louvres, front door and loading dock; levels
  cut it open storey by storey
- raised_floor; rack_row and dc_pod (cabinets by U, width, depth,
  equipment, fill, doors, LEDs; in-row coolers; cold / hot aisle
  containment with vent tiles, roof, end doors, ceiling duct, airflow);
  dc_cage for colocation
- crah, chiller (air-cooled, dry, adiabatic), cooling_tower, pipe_run
- smoke_detectors (grid + coverage), fire_pipe (VESDA, sprinkler, gas),
  gas_bank (Novec 1230, FM-200, Inergen sized for its halls), fire_device
  (panels, call points, abort switches, beacons, extinguishers)
- power_cab (UPS, battery, PDU, switchgear, RPP), busway, cable_tray,
  transformer
- tooltips sum IT load, kW/m2, cooling redundancy per storey, UPS load,
  battery runtime, plant cooling and agent quantity (warning when short)

Engine and stdlib:

- part_hidden(o) in house.rhai: parts on closed storeys inside a
  dc_building are not drawn (they only made sort cycles under the slab
  above); house parts, furniture and people use it. Existing examples
  render byte-identical.
- overhead services sort in their own "ceiling" layer with tight boxes
- sort records which sprites each broken cycle involved; isokit check
  names them (Rendered.cycle_at)

examples/datacentre (three storeys and a roof plant), Data centre demo in
the web Studio, tests, SCRIPTING/README/ROADMAP, MCP instructions.
2026-10-27 17:08:39 +07:00

185 lines
27 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"version": 1,
"objects": [
{"id": "site", "type": "site", "x": 0, "y": 2, "props": {"w": 92, "d": 74, "mat": "g-grass"}, "name": "Site", "locked": true},
{"id": "apron", "type": "area", "x": 0, "y": 1, "props": {"w": 64, "d": 44, "mat": "g-conc"}, "name": "Yard apron", "locked": true},
{"id": "road", "type": "road", "x": 0, "y": -29, "props": {"w": 92, "d": 7}, "name": "Main road"},
{"id": "access", "type": "road", "x": 0, "y": -21.5, "rot": 90, "props": {"w": 15, "d": 6, "dashed": false}, "name": "Access road"},
{"id": "parking", "type": "parking", "x": -22, "y": -17, "props": {"n": 8, "bay_w": 2.5, "bay_d": 5}, "name": "Staff parking"},
{"id": "car-0", "type": "car", "x": -30.75, "y": -17, "rot": 90, "props": {"colour": "car1"}, "name": "Car"},
{"id": "car-1", "type": "car", "x": -28.25, "y": -17, "rot": 90, "props": {"colour": "car3"}, "name": "Car"},
{"id": "car-3", "type": "car", "x": -23.25, "y": -17, "rot": 90, "props": {"colour": "car4"}, "name": "Car"},
{"id": "car-4", "type": "car", "x": -20.75, "y": -17, "rot": 90, "props": {"colour": "car1"}, "name": "Car"},
{"id": "truck", "type": "truck", "x": 0, "y": -18.5, "rot": 90, "props": {"len": 8}, "name": "Delivery truck", "info": "Racks arriving at the loading dock"},
{"id": "f-s1", "type": "fence", "x": -31.5, "y": -24.0, "props": {"w": 21.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-s2", "type": "fence", "x": -12.5, "y": -24.0, "props": {"w": 17.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-s3", "type": "fence", "x": 12.5, "y": -24.0, "props": {"w": 17.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-s4", "type": "fence", "x": 31.5, "y": -24.0, "props": {"w": 21.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-e1", "type": "fence", "x": 42.0, "y": -9.75, "rot": 90.0, "props": {"w": 28.5, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-e2", "type": "fence", "x": 42.0, "y": 18.75, "rot": 90.0, "props": {"w": 28.5, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-n1", "type": "fence", "x": 28.0, "y": 33.0, "rot": 180.0, "props": {"w": 28.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-n2", "type": "fence", "x": 0.0, "y": 33.0, "rot": 180.0, "props": {"w": 28.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-n3", "type": "fence", "x": -28.0, "y": 33.0, "rot": 180.0, "props": {"w": 28.0, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-w1", "type": "fence", "x": -42.0, "y": 18.75, "rot": 270.0, "props": {"w": 28.5, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "f-w2", "type": "fence", "x": -42.0, "y": -9.75, "rot": 270.0, "props": {"w": 28.5, "h": 2.4, "style": "mesh"}, "name": "Security fence"},
{"id": "guard", "type": "shed", "x": 8, "y": -21, "props": {"w": 3, "d": 2.4, "h": 2.7}, "name": "Gatehouse", "tag": "Security"},
{"id": "guard-p", "type": "person", "x": 6.2, "y": -21.6, "props": {"cls": "suit"}, "name": "Guard"},
{"id": "gen-1", "type": "generator", "x": -15, "y": 19, "props": {"running": true}, "name": "Generator 1", "info": "2.5 MVA diesel genset, N+1"},
{"id": "gen-2", "type": "generator", "x": -7, "y": 19, "props": {"running": false}, "name": "Generator 2", "info": "2.5 MVA diesel genset, N+1"},
{"id": "gen-3", "type": "generator", "x": 1, "y": 19, "props": {"running": false}, "name": "Generator 3", "info": "2.5 MVA diesel genset, N+1"},
{"id": "gen-4", "type": "generator", "x": 9, "y": 19, "props": {"running": false}, "name": "Generator 4", "info": "2.5 MVA diesel genset, N+1"},
{"id": "fuel", "type": "tank", "x": 19, "y": 19.5, "props": {"r": 1.8, "h": 3.4, "mat": "tank"}, "name": "Diesel tank", "info": "48 h of fuel at full load"},
{"id": "tx-1", "type": "transformer", "x": 29, "y": 7, "rot": 90, "props": {"kva": 3150}, "name": "Transformer T1", "tag": "T1"},
{"id": "tx-2", "type": "transformer", "x": 29, "y": 0.5, "rot": 90, "props": {"kva": 3150}, "name": "Transformer T2", "tag": "T2"},
{"id": "ct", "type": "cooling_tower", "x": 31, "y": -12, "props": {"cells": 2, "kw": 750}, "name": "Cooling tower", "tag": "Condenser water"},
{"id": "ct-pipe", "type": "pipe_run", "x": 25.0, "y": -12, "props": {"w": 4.0, "kind": "condenser", "dn": 0.3, "h": 1.0}, "name": "Condenser pipes"},
{"id": "tree-0", "type": "tree", "x": -30, "y": 28, "props": {"r": 2.2}, "name": "Tree"},
{"id": "tree-1", "type": "tree", "x": -22, "y": 28, "props": {"r": 2.2}, "name": "Tree"},
{"id": "tree-2", "type": "tree", "x": 22, "y": 28, "props": {"r": 2.2}, "name": "Tree"},
{"id": "tree-3", "type": "tree", "x": 34, "y": 28, "props": {"r": 2.2}, "name": "Tree"},
{"id": "trees-w", "type": "tree_row", "x": -37, "y": 4, "rot": 90, "props": {"w": 40, "spacing": 7, "r": 1.8}, "name": "Trees"},
{"id": "lamp-0", "type": "lamp", "x": -12, "y": -23, "props": {"h": 6}, "name": "Lamp"},
{"id": "lamp-1", "type": "lamp", "x": 12, "y": -23, "props": {"h": 6}, "name": "Lamp"},
{"id": "lamp-2", "type": "lamp", "x": -26, "y": 12, "props": {"h": 6}, "name": "Lamp"},
{"id": "lamp-3", "type": "lamp", "x": 26, "y": 14, "props": {"h": 6}, "name": "Lamp"},
{"id": "dc", "type": "dc_building", "x": 0, "y": 0, "props": {"w": 42, "d": 26, "storeys": 3, "door_at": 0.16666666666666666, "dock_at": 0.5}, "name": "Data centre CNX-1", "info": "Three storeys: power and plant on the ground floor, two data halls above, chillers on the roof"},
{"id": "gf-w1", "type": "house_wall", "x": -7, "y": 0, "rot": 90, "props": {"w": 25.2, "h": 4.7, "t": 0.2, "mat": "wall2"}, "name": "GF partition (lobby)"},
{"id": "gf-w1-door", "type": "door", "x": -7, "y": -9, "rot": 90, "props": {"w": 1.0, "h": 2.2, "style": "panel", "mat": "doorg"}, "name": "Lobby door"},
{"id": "gf-e1", "type": "house_wall", "x": 7, "y": 0, "rot": 90, "props": {"w": 25.2, "h": 4.7, "t": 0.2, "mat": "firewall"}, "name": "GF fire wall (power room)"},
{"id": "gf-e1-door", "type": "door", "x": 7, "y": -9, "rot": 90, "props": {"w": 1.2, "h": 2.2, "style": "panel", "mat": "doorg"}, "name": "Power room door"},
{"id": "gf-stairs", "type": "stairs", "x": -19.4, "y": 7.5, "props": {"w": 1.4, "run": 7, "rise": 4.7, "mat": "concb"}, "name": "Stairs to 1F"},
{"id": "noc-1", "type": "desk", "x": -15, "y": -3, "props": {"w": 1.6}, "name": "NOC desk"},
{"id": "noc-2", "type": "desk", "x": -12.6, "y": -3, "props": {"w": 1.6, "chair": false}, "name": "NOC desk"},
{"id": "noc-3", "type": "desk", "x": -15, "y": -6.5, "props": {"w": 1.6}, "name": "NOC desk"},
{"id": "noc-p", "type": "person", "x": -12.6, "y": -3.8, "props": {"cls": "suit", "seated": true}, "name": "NOC operator"},
{"id": "gf-facp", "type": "fire_device", "x": -17.5, "y": -12.53, "rot": 180, "props": {"kind": "alarm panel", "label": "Main fire alarm panel"}, "name": "Fire alarm panel", "tag": "FACP"},
{"id": "gf-cp-1", "type": "fire_device", "x": -12.4, "y": -12.53, "rot": 180, "props": {"kind": "call point", "label": "Lobby"}, "name": "Call point"},
{"id": "gf-bc-1", "type": "fire_device", "x": -7.27, "y": 2, "rot": 270, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "gf-ext-1", "type": "fire_device", "x": -8, "y": -12.4, "rot": 180, "props": {"kind": "extinguisher"}, "name": "Extinguisher"},
{"id": "staging", "type": "rack_row", "x": 0, "y": 5.5, "props": {"n": 6, "kind": "empty", "u": 48, "doors": "none"}, "name": "Racks waiting for install", "tag": "Staging"},
{"id": "staging-p", "type": "person", "x": 1.8, "y": 3.6, "props": {"cls": "hivis"}, "name": "Technician"},
{"id": "gf-ext-2", "type": "fire_device", "x": 6.73, "y": -6, "rot": 90, "props": {"kind": "extinguisher"}, "name": "Extinguisher"},
{"id": "ups", "type": "power_cab", "x": 13.5, "y": 10.9, "props": {"kind": "UPS", "n": 6, "kw": 800}, "name": "UPS line-up", "tag": "UPS 6 × 800 kW"},
{"id": "batt-1", "type": "power_cab", "x": 13.5, "y": 7.6, "props": {"kind": "battery", "n": 12, "kwh": 60}, "name": "Battery string A"},
{"id": "batt-2", "type": "power_cab", "x": 13.5, "y": 4.6, "props": {"kind": "battery", "n": 12, "kwh": 60}, "name": "Battery string B"},
{"id": "swg", "type": "power_cab", "x": 13.5, "y": -3.5, "props": {"kind": "switchgear", "n": 7}, "name": "LV switchgear", "tag": "Switchgear"},
{"id": "gf-gas", "type": "gas_bank", "x": 20.45, "y": -8, "rot": 270, "props": {"agent": "Inergen", "n": 21, "litres": 140, "vol": 1620}, "name": "Inergen bank (power room)", "tag": "Inergen"},
{"id": "gf-cp-2", "type": "fire_device", "x": 7.27, "y": -7.6, "rot": 90, "props": {"kind": "call point", "label": "Power room"}, "name": "Call point"},
{"id": "gf-bc-2", "type": "fire_device", "x": 20.53, "y": 2, "rot": 270, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "gf-det-w", "type": "smoke_detectors", "x": -13.85, "y": 0, "props": {"w": 13.4, "d": 25.2, "spacing": 6.5, "h": 4.4, "zone": "GF lobby"}, "name": "Detectors GF lobby"},
{"id": "gf-det-m", "type": "smoke_detectors", "x": 0, "y": 0, "props": {"w": 13.8, "d": 25.2, "spacing": 6.5, "h": 4.4, "zone": "GF staging"}, "name": "Detectors GF staging"},
{"id": "gf-det-e", "type": "smoke_detectors", "x": 13.85, "y": 0, "props": {"w": 13.4, "d": 25.2, "spacing": 6.5, "h": 4.4, "kind": "multi-sensor", "zone": "GF power room"}, "name": "Detectors GF power room"},
{"id": "1f-p1", "type": "house_wall", "x": -17.3, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 25.2, "h": 4.7, "t": 0.2, "mat": "firewall"}, "name": "1F fire wall (hall)"},
{"id": "1f-p2", "type": "house_wall", "x": -18.95, "y": 2.9, "z": 5.0, "props": {"w": 3.3, "h": 4.7, "t": 0.2, "mat": "wall2"}, "name": "1F core wall"},
{"id": "1f-p1-d1", "type": "door", "x": -17.3, "y": 8.5, "z": 5.0, "rot": 90, "props": {"w": 1.2, "h": 2.2, "style": "double", "mat": "doorg"}, "name": "Hall doors"},
{"id": "1f-p1-d2", "type": "door", "x": -17.3, "y": -1.0, "z": 5.0, "rot": 90, "props": {"w": 1.0, "h": 2.1, "style": "panel", "mat": "doorg"}, "name": "Gas room door"},
{"id": "1f-rf", "type": "raised_floor", "x": 1.8, "y": 0, "z": 5.0, "props": {"w": 37.8, "d": 25.2, "h": 0.6, "mat": "dcrf"}, "name": "1F raised floor"},
{"id": "1f-det", "type": "smoke_detectors", "x": 1.8, "y": 0, "z": 5.0, "props": {"w": 37.8, "d": 25.2, "spacing": 6.0, "h": 4.55, "zone": "1F hall"}, "name": "Detectors 1F hall"},
{"id": "1f-det-g", "type": "smoke_detectors", "x": -19.05, "y": -4.9, "z": 5.0, "props": {"w": 3.1, "d": 15.4, "spacing": 6.0, "h": 4.4, "coverage": false, "zone": "1F gas room"}, "name": "Detectors 1F gas room"},
{"id": "1f-vesda-1", "type": "fire_pipe", "x": 1.75, "y": -9, "z": 5.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 1"},
{"id": "1f-vesda-2", "type": "fire_pipe", "x": 1.75, "y": -3, "z": 5.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 2"},
{"id": "1f-vesda-3", "type": "fire_pipe", "x": 1.75, "y": 3, "z": 5.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 3"},
{"id": "1f-vesda-4", "type": "fire_pipe", "x": 1.75, "y": 9, "z": 5.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 4"},
{"id": "1f-tray", "type": "cable_tray", "x": 2, "y": 0, "z": 5.0, "props": {"w": 36, "kind": "ladder", "width": 0.6, "h": 4.0, "fill": 60}, "name": "Main power tray"},
{"id": "1f-rel", "type": "fire_device", "x": -17.03, "y": 5.4, "z": 5.0, "rot": 90, "props": {"kind": "release panel", "label": "1F hall"}, "name": "Release panel"},
{"id": "1f-abort", "type": "fire_device", "x": -17.03, "y": 6.4, "z": 5.0, "rot": 90, "props": {"kind": "abort switch"}, "name": "Abort switch"},
{"id": "1f-cp", "type": "fire_device", "x": -17.03, "y": 10.2, "z": 5.0, "rot": 90, "props": {"kind": "call point", "label": "1F hall"}, "name": "Call point"},
{"id": "1f-bc-1", "type": "fire_device", "x": -17.03, "y": -6, "z": 5.0, "rot": 90, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "1f-bc-2", "type": "fire_device", "x": 20.53, "y": 5, "z": 5.0, "rot": 270, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "1f-ext", "type": "fire_device", "x": -16.8, "y": 1.2, "z": 5.0, "rot": 90, "props": {"kind": "extinguisher"}, "name": "Extinguisher"},
{"id": "1f-stairs", "type": "stairs", "x": -19.4, "y": 7.9, "z": 5.0, "props": {"w": 1.4, "run": 6.4, "rise": 4.7, "mat": "concb"}, "name": "Stairs 1F"},
{"id": "1f-crah-n1", "type": "crah", "x": -13, "y": 11.95, "z": 5.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-N1"},
{"id": "1f-crah-s1", "type": "crah", "x": -13, "y": -11.95, "z": 5.0, "rot": 180, "props": {"kw": 150, "standby": true}, "name": "CRAH 1-S1"},
{"id": "1f-crah-n2", "type": "crah", "x": -6.5, "y": 11.95, "z": 5.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-N2"},
{"id": "1f-crah-s2", "type": "crah", "x": -6.5, "y": -11.95, "z": 5.0, "rot": 180, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-S2"},
{"id": "1f-crah-n3", "type": "crah", "x": 0, "y": 11.95, "z": 5.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-N3"},
{"id": "1f-crah-s3", "type": "crah", "x": 0, "y": -11.95, "z": 5.0, "rot": 180, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-S3"},
{"id": "1f-crah-n4", "type": "crah", "x": 6.5, "y": 11.95, "z": 5.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-N4"},
{"id": "1f-crah-s4", "type": "crah", "x": 6.5, "y": -11.95, "z": 5.0, "rot": 180, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-S4"},
{"id": "1f-crah-n5", "type": "crah", "x": 13, "y": 11.95, "z": 5.0, "props": {"kw": 150, "standby": true}, "name": "CRAH 1-N5"},
{"id": "1f-crah-s5", "type": "crah", "x": 13, "y": -11.95, "z": 5.0, "rot": 180, "props": {"kw": 150, "standby": false}, "name": "CRAH 1-S5"},
{"id": "1f-pod-A1", "type": "dc_pod", "x": -11.5, "y": 4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod A1", "tag": "Pod A1"},
{"id": "1f-pod-A2", "type": "dc_pod", "x": -11.5, "y": -4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod A2", "tag": "Pod A2"},
{"id": "1f-bus-AL", "type": "busway", "x": -12.7, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-bus-AR", "type": "busway", "x": -10.3, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-fibre-A", "type": "cable_tray", "x": -11.5, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 40}, "name": "Fibre duct"},
{"id": "1f-pod-B1", "type": "dc_pod", "x": -5.5, "y": 4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod B1", "tag": "Pod B1"},
{"id": "1f-pod-B2", "type": "dc_pod", "x": -5.5, "y": -4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod B2", "tag": "Pod B2"},
{"id": "1f-bus-BL", "type": "busway", "x": -6.7, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-bus-BR", "type": "busway", "x": -4.3, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-fibre-B", "type": "cable_tray", "x": -5.5, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 40}, "name": "Fibre duct"},
{"id": "1f-pod-C1", "type": "dc_pod", "x": 0.5, "y": 4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "storage", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod C1", "tag": "Pod C1"},
{"id": "1f-pod-C2", "type": "dc_pod", "x": 0.5, "y": -4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "storage", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod C2", "tag": "Pod C2"},
{"id": "1f-bus-CL", "type": "busway", "x": -0.7, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-bus-CR", "type": "busway", "x": 1.7, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-fibre-C", "type": "cable_tray", "x": 0.5, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 40}, "name": "Fibre duct"},
{"id": "1f-pod-D1", "type": "dc_pod", "x": 6.5, "y": 4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod D1", "tag": "Pod D1"},
{"id": "1f-pod-D2", "type": "dc_pod", "x": 6.5, "y": -4.3, "z": 5.0, "rot": 90, "props": {"n": 10, "kind": "servers", "kw": 7, "fill": 75, "u": 42, "contain": "cold"}, "name": "Pod D2", "tag": "Pod D2"},
{"id": "1f-bus-DL", "type": "busway", "x": 5.3, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-bus-DR", "type": "busway", "x": 7.7, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "h": 3.15, "amps": 630}, "name": "Busway"},
{"id": "1f-fibre-D", "type": "cable_tray", "x": 6.5, "y": 0, "z": 5.0, "rot": 90, "props": {"w": 15, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 40}, "name": "Fibre duct"},
{"id": "1f-net", "type": "rack_row", "x": 13.6, "y": 0, "z": 5.0, "rot": 270, "props": {"n": 8, "kind": "network", "kw": 4, "fill": 80, "doors": "glass"}, "name": "Network row (meet-me)", "tag": "Meet-me room"},
{"id": "1f-pdu", "type": "power_cab", "x": 17.2, "y": 0, "z": 5.0, "rot": 270, "props": {"kind": "PDU", "n": 6, "kw": 300}, "name": "PDUs 1F"},
{"id": "1f-gaspipe-1", "type": "fire_pipe", "x": 1.75, "y": -6, "z": 5.0, "props": {"w": 37.5, "kind": "gas", "spacing": 6.2, "h": 4.25}, "name": "Gas discharge pipe"},
{"id": "1f-gaspipe-2", "type": "fire_pipe", "x": 1.75, "y": 6, "z": 5.0, "props": {"w": 37.5, "kind": "gas", "spacing": 6.2, "h": 4.25}, "name": "Gas discharge pipe"},
{"id": "1f-gas", "type": "gas_bank", "x": -20.45, "y": -5.4, "z": 5.0, "rot": 90, "props": {"agent": "Novec 1230", "n": 18, "litres": 140}, "name": "Novec 1230 bank (hall A)", "tag": "Novec 1230"},
{"id": "1f-tech", "type": "person", "x": 3.5, "y": 0.6, "z": 5.0, "props": {"cls": "hivis"}, "name": "Technician"},
{"id": "2f-p1", "type": "house_wall", "x": -17.3, "y": 0, "z": 10.0, "rot": 90, "props": {"w": 25.2, "h": 4.7, "t": 0.2, "mat": "firewall"}, "name": "2F fire wall (hall)"},
{"id": "2f-p2", "type": "house_wall", "x": -18.95, "y": 2.9, "z": 10.0, "props": {"w": 3.3, "h": 4.7, "t": 0.2, "mat": "wall2"}, "name": "2F core wall"},
{"id": "2f-p1-d1", "type": "door", "x": -17.3, "y": 8.5, "z": 10.0, "rot": 90, "props": {"w": 1.2, "h": 2.2, "style": "double", "mat": "doorg"}, "name": "Hall doors"},
{"id": "2f-p1-d2", "type": "door", "x": -17.3, "y": -1.0, "z": 10.0, "rot": 90, "props": {"w": 1.0, "h": 2.1, "style": "panel", "mat": "doorg"}, "name": "Gas room door"},
{"id": "2f-rf", "type": "raised_floor", "x": 1.8, "y": 0, "z": 10.0, "props": {"w": 37.8, "d": 25.2, "h": 0.6, "mat": "dcrf2"}, "name": "2F raised floor"},
{"id": "2f-det", "type": "smoke_detectors", "x": 1.8, "y": 0, "z": 10.0, "props": {"w": 37.8, "d": 25.2, "spacing": 6.0, "h": 4.55, "zone": "2F hall"}, "name": "Detectors 2F hall"},
{"id": "2f-det-g", "type": "smoke_detectors", "x": -19.05, "y": -4.9, "z": 10.0, "props": {"w": 3.1, "d": 15.4, "spacing": 6.0, "h": 4.4, "coverage": false, "zone": "2F gas room"}, "name": "Detectors 2F gas room"},
{"id": "2f-vesda-1", "type": "fire_pipe", "x": 1.75, "y": -9, "z": 10.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 1"},
{"id": "2f-vesda-2", "type": "fire_pipe", "x": 1.75, "y": -3, "z": 10.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 2"},
{"id": "2f-vesda-3", "type": "fire_pipe", "x": 1.75, "y": 3, "z": 10.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 3"},
{"id": "2f-vesda-4", "type": "fire_pipe", "x": 1.75, "y": 9, "z": 10.0, "props": {"w": 37.5, "kind": "VESDA", "spacing": 4.0, "h": 4.4}, "name": "VESDA pipe 4"},
{"id": "2f-tray", "type": "cable_tray", "x": 2, "y": 0, "z": 10.0, "props": {"w": 36, "kind": "ladder", "width": 0.6, "h": 4.0, "fill": 60}, "name": "Main power tray"},
{"id": "2f-rel", "type": "fire_device", "x": -17.03, "y": 5.4, "z": 10.0, "rot": 90, "props": {"kind": "release panel", "label": "2F hall"}, "name": "Release panel"},
{"id": "2f-abort", "type": "fire_device", "x": -17.03, "y": 6.4, "z": 10.0, "rot": 90, "props": {"kind": "abort switch"}, "name": "Abort switch"},
{"id": "2f-cp", "type": "fire_device", "x": -17.03, "y": 10.2, "z": 10.0, "rot": 90, "props": {"kind": "call point", "label": "2F hall"}, "name": "Call point"},
{"id": "2f-bc-1", "type": "fire_device", "x": -17.03, "y": -6, "z": 10.0, "rot": 90, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "2f-bc-2", "type": "fire_device", "x": 20.53, "y": 5, "z": 10.0, "rot": 270, "props": {"kind": "beacon"}, "name": "Sounder-beacon"},
{"id": "2f-ext", "type": "fire_device", "x": -16.8, "y": 1.2, "z": 10.0, "rot": 90, "props": {"kind": "extinguisher"}, "name": "Extinguisher"},
{"id": "2f-stairs", "type": "stairs", "x": -19.4, "y": 7.9, "z": 10.0, "props": {"w": 1.4, "run": 6.4, "rise": 4.7, "mat": "concb"}, "name": "Stairs 2F"},
{"id": "2f-gpu-11", "type": "dc_pod", "x": -11.5, "y": 4.2, "z": 10.0, "rot": 90, "props": {"n": 8, "kind": "GPU", "kw": 30, "fill": 85, "u": 48, "contain": "hot", "inrow": 2, "inrow_kw": 90, "duct": true, "duct_h": 4.2, "doors": "glass"}, "name": "GPU pod 11", "tag": "GPU 11"},
{"id": "2f-gpu-12", "type": "dc_pod", "x": -11.5, "y": -4.2, "z": 10.0, "rot": 90, "props": {"n": 8, "kind": "GPU", "kw": 30, "fill": 85, "u": 48, "contain": "hot", "inrow": 2, "inrow_kw": 90, "duct": true, "duct_h": 4.2, "doors": "glass"}, "name": "GPU pod 12", "tag": "GPU 12"},
{"id": "2f-bus-1L", "type": "busway", "x": -12.7, "y": 0, "z": 10.0, "rot": 90, "props": {"w": 14, "h": 3.2, "amps": 1250}, "name": "Busway"},
{"id": "2f-bus-1R", "type": "busway", "x": -10.3, "y": 0, "z": 10.0, "rot": 90, "props": {"w": 14, "h": 3.2, "amps": 1250}, "name": "Busway"},
{"id": "2f-gpu-21", "type": "dc_pod", "x": -5.5, "y": 4.2, "z": 10.0, "rot": 90, "props": {"n": 8, "kind": "GPU", "kw": 30, "fill": 85, "u": 48, "contain": "hot", "inrow": 2, "inrow_kw": 90, "duct": false, "duct_h": 4.2, "doors": "glass"}, "name": "GPU pod 21", "tag": "GPU 21"},
{"id": "2f-gpu-22", "type": "dc_pod", "x": -5.5, "y": -4.2, "z": 10.0, "rot": 90, "props": {"n": 8, "kind": "GPU", "kw": 30, "fill": 85, "u": 48, "contain": "hot", "inrow": 2, "inrow_kw": 90, "duct": false, "duct_h": 4.2, "doors": "glass"}, "name": "GPU pod 22", "tag": "GPU 22"},
{"id": "2f-bus-2L", "type": "busway", "x": -6.7, "y": 0, "z": 10.0, "rot": 90, "props": {"w": 14, "h": 3.2, "amps": 1250}, "name": "Busway"},
{"id": "2f-bus-2R", "type": "busway", "x": -4.3, "y": 0, "z": 10.0, "rot": 90, "props": {"w": 14, "h": 3.2, "amps": 1250}, "name": "Busway"},
{"id": "2f-cage-1", "type": "dc_cage", "x": 4.6, "y": 4.5, "z": 10.0, "props": {"w": 7.2, "d": 5.7}, "name": "Cage 1", "tag": "Cage 1"},
{"id": "2f-colo-1", "type": "dc_pod", "x": 4.6, "y": 4.5, "z": 10.0, "props": {"n": 8, "kind": "servers", "kw": 8, "fill": 55, "contain": "none", "doors": "solid"}, "name": "Cage 1 racks"},
{"id": "2f-fibre-1", "type": "cable_tray", "x": 4.6, "y": 4.5, "z": 10.0, "props": {"w": 7.2, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 30}, "name": "Fibre duct"},
{"id": "2f-cage-2", "type": "dc_cage", "x": 4.6, "y": -4.5, "z": 10.0, "props": {"w": 7.2, "d": 5.7}, "name": "Cage 2", "tag": "Cage 2"},
{"id": "2f-colo-2", "type": "dc_pod", "x": 4.6, "y": -4.5, "z": 10.0, "props": {"n": 8, "kind": "network", "kw": 8, "fill": 65, "contain": "none", "doors": "mesh"}, "name": "Cage 2 racks"},
{"id": "2f-fibre-2", "type": "cable_tray", "x": 4.6, "y": -4.5, "z": 10.0, "props": {"w": 7.2, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 30}, "name": "Fibre duct"},
{"id": "2f-cage-3", "type": "dc_cage", "x": 13.6, "y": 4.5, "z": 10.0, "props": {"w": 7.2, "d": 5.7}, "name": "Cage 3", "tag": "Cage 3"},
{"id": "2f-colo-3", "type": "dc_pod", "x": 13.6, "y": 4.5, "z": 10.0, "props": {"n": 8, "kind": "storage", "kw": 8, "fill": 75, "contain": "none", "doors": "solid"}, "name": "Cage 3 racks"},
{"id": "2f-fibre-3", "type": "cable_tray", "x": 13.6, "y": 4.5, "z": 10.0, "props": {"w": 7.2, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 30}, "name": "Fibre duct"},
{"id": "2f-cage-4", "type": "dc_cage", "x": 13.6, "y": -4.5, "z": 10.0, "props": {"w": 7.2, "d": 5.7}, "name": "Cage 4", "tag": "Cage 4"},
{"id": "2f-colo-4", "type": "dc_pod", "x": 13.6, "y": -4.5, "z": 10.0, "props": {"n": 8, "kind": "servers", "kw": 8, "fill": 85, "contain": "none", "doors": "mesh"}, "name": "Cage 4 racks"},
{"id": "2f-fibre-4", "type": "cable_tray", "x": 13.6, "y": -4.5, "z": 10.0, "props": {"w": 7.2, "kind": "fibre", "width": 0.3, "h": 3.65, "fill": 30}, "name": "Fibre duct"},
{"id": "2f-crah-n1", "type": "crah", "x": 2, "y": 11.95, "z": 10.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 2-N1"},
{"id": "2f-crah-s1", "type": "crah", "x": 2, "y": -11.95, "z": 10.0, "rot": 180, "props": {"kw": 150}, "name": "CRAH 2-S1"},
{"id": "2f-crah-n2", "type": "crah", "x": 9, "y": 11.95, "z": 10.0, "props": {"kw": 150, "standby": false}, "name": "CRAH 2-N2"},
{"id": "2f-crah-s2", "type": "crah", "x": 9, "y": -11.95, "z": 10.0, "rot": 180, "props": {"kw": 150}, "name": "CRAH 2-S2"},
{"id": "2f-crah-n3", "type": "crah", "x": 16, "y": 11.95, "z": 10.0, "props": {"kw": 150, "standby": true}, "name": "CRAH 2-N3"},
{"id": "2f-crah-s3", "type": "crah", "x": 16, "y": -11.95, "z": 10.0, "rot": 180, "props": {"kw": 150}, "name": "CRAH 2-S3"},
{"id": "2f-spr-1", "type": "fire_pipe", "x": 9.5, "y": -8.5, "z": 10.0, "props": {"w": 21, "kind": "sprinkler", "spacing": 3.0, "h": 4.25, "unit": false}, "name": "Pre-action sprinkler pipe"},
{"id": "2f-spr-2", "type": "fire_pipe", "x": 9.5, "y": 8.5, "z": 10.0, "props": {"w": 21, "kind": "sprinkler", "spacing": 3.0, "h": 4.25, "unit": false}, "name": "Pre-action sprinkler pipe"},
{"id": "2f-gas", "type": "gas_bank", "x": -20.45, "y": -5.4, "z": 10.0, "rot": 90, "props": {"agent": "FM-200", "n": 18, "litres": 140}, "name": "FM-200 bank (hall B)", "tag": "FM-200"},
{"id": "2f-tech", "type": "person", "x": -2.0, "y": 1.0, "z": 10.0, "props": {"cls": "guest2"}, "name": "Engineer"},
{"id": "chiller-1", "type": "chiller", "x": -12, "y": -7, "z": 15.0, "props": {"w": 9, "kw": 1000}, "name": "Chiller 1", "tag": "CH1"},
{"id": "chiller-2", "type": "chiller", "x": -1, "y": -7, "z": 15.0, "props": {"w": 9, "kw": 1000}, "name": "Chiller 2"},
{"id": "chiller-3", "type": "chiller", "x": 10, "y": -7, "z": 15.0, "props": {"w": 9, "kw": 1000}, "name": "Chiller 3"},
{"id": "chiller-4", "type": "chiller", "x": -6.5, "y": 6, "z": 15.0, "props": {"w": 9, "kw": 1000}, "name": "Chiller 4"},
{"id": "chiller-5", "type": "chiller", "x": 4.5, "y": 6, "z": 15.0, "props": {"w": 9, "kw": 1000}, "name": "Chiller 5"},
{"id": "dry", "type": "chiller", "x": 15.5, "y": 6, "z": 15.0, "props": {"w": 8, "kw": 600, "kind": "adiabatic"}, "name": "Adiabatic cooler (GPU loop)"},
{"id": "roof-pipes", "type": "pipe_run", "x": 0, "y": -0.5, "z": 15.0, "props": {"w": 38, "dn": 0.35, "h": 0.9}, "name": "Chilled water headers"}
]
}