Data centres: multi-storey shell, racks and pods, cooling, fire safety, power
Deploy web Studio / deploy (push) Successful in 1m4s
Deploy web Studio / deploy (push) Successful in 1m4s
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.
This commit is contained in:
1 parent
c8becc2e59
commit
2810477f1b
22 files changed
+2281
-18
No files matched your search
@@ -71,6 +71,31 @@ Each phase ends with tests, a Studio/viewer check in Edge, commit and push.
|
||||
- [x] Diagonal walls (any angle, mitred corners, windows and doors on them)
|
||||
- [ ] Openings across two walls; floor openings for stairs
|
||||
|
||||
## Data centres (done)
|
||||
|
||||
- [x] `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, parts on
|
||||
closed storeys inside it are left out (`part_hidden`, also for house parts and people)
|
||||
- [x] Raised floor (tiles, void with pedestals); racks, pods, units, cabinets and people stand on it
|
||||
- [x] Rack row and Rack pod: cabinets by U, width, depth, equipment (servers, storage, GPU, network,
|
||||
empty), fill, doors, status LEDs; in-row coolers; cold / hot aisle containment (vent tiles,
|
||||
roof, end doors, ceiling duct, airflow); colocation Cage
|
||||
- [x] Cooling: CRAH / CRAC units, chillers, dry and adiabatic coolers, cooling towers, pipe runs
|
||||
- [x] Fire safety: detector grids with coverage, VESDA / sprinkler / gas discharge pipes, clean-agent
|
||||
cylinder banks sized for their halls (Novec 1230, FM-200, Inergen), panels, call points, abort
|
||||
switches, beacons, extinguishers
|
||||
- [x] Power: UPS, battery, PDU, switchgear and RPP line-ups, busways, cable trays, transformers
|
||||
- [x] Tooltips do the sums: IT load and kW/m², cooling redundancy per storey, UPS load, battery
|
||||
runtime, plant cooling, agent quantity (warning label when short)
|
||||
- [x] Overhead services in their own `ceiling` layer (z first) after the floor; `isokit check` names
|
||||
where the depth sort broke a cycle
|
||||
- [x] `examples/datacentre` (three storeys and a roof), Data centre demo in the web Studio
|
||||
- [ ] Next: floor openings and a lift / stair core through the slabs; cold aisle airflow from the
|
||||
CRAHs drawn under the raised floor (section cut, Phase 4); generator yard and fuel system
|
||||
parts (day tanks, ATS); security (CCTV, access control, mantraps); leak detection; liquid
|
||||
cooling (CDUs, rear-door heat exchangers, manifolds); a row-by-row power and cooling budget
|
||||
table on the building
|
||||
|
||||
## Backlog (2026-10)
|
||||
|
||||
1. ~~Web performance~~ (done, see below)
|
||||
|
||||
@@ -293,6 +293,48 @@ prefabs work together through the document, not through a parent object:
|
||||
- Ground-level floors and rugs go to the `floor` layer; upper floors are slabs
|
||||
whose top is at the object's z. Furniture starts 0.02 m above its z.
|
||||
|
||||
## Data centres
|
||||
|
||||
`datacentre.rhai` lays out multi-storey data centres from parts that read
|
||||
each other through the document, like house parts:
|
||||
|
||||
- `dc_building` is the shell: `storeys` of `storey_h` (the project
|
||||
parameter; 5 m suits data halls), outer walls split into pieces of at most
|
||||
15 m, a slab per storey and a flat roof with a parapet. On level `kf` the
|
||||
storeys below are closed, the walls facing the viewer are cut 1.2 m above
|
||||
storey k, the others reach its ceiling, and everything above is left out.
|
||||
- `part_hidden(o)` (house.rhai) leaves out a part above the storey a level
|
||||
cuts open, and a part on a closed storey inside a `dc_building`: the shell
|
||||
hides it, and drawing it would only make sort cycles with what stands on
|
||||
the slab above. House walls, doors, floors, stairs, furniture, people and
|
||||
every data centre part use it (`dc_skip` is the same rule).
|
||||
- `dc_lift(o)`: the top of a `raised_floor` under o on its storey; racks,
|
||||
pods, CRAH units, cabinets, gas banks, devices and people stand on it.
|
||||
- A rack line is one sprite with a box per cabinet (`seq`) and the faces
|
||||
painted with `open()` per class (equipment, LED strips, rear PDUs), so a
|
||||
pod of 20 racks costs a few dozen nodes. In-row coolers (`inrow`) are
|
||||
0.3 m units between groups of racks. A pod is three sprites (two rows and
|
||||
the aisle between them: vent tiles, airflow puffs, end doors, roof, duct),
|
||||
which never overlap.
|
||||
- Overhead services (`cable_tray`, `busway`, `fire_pipe`, `smoke_detectors`)
|
||||
draw in the layer `ceiling` (`dc_ceiling_layer()`: sorted, z first) after
|
||||
everything on the floor, with sort boxes as tight as the run itself
|
||||
(hangers do not count): a tray beside a pod with a busway over the pod and
|
||||
under the tray has no valid order as boxes in one layer. Keep runs that
|
||||
cross or lie side by side at heights that do not overlap. The project
|
||||
parameter `ceiling` = false leaves them out.
|
||||
- Totals: `dc_it(storey)` (IT load, racks; every storey for -1),
|
||||
`dc_cool(storey)` (CRAH duty and standby, in-row coolers),
|
||||
`dc_redundancy(cooling, kw)` ("N+1, 140 kW spare"), `dc_plant()` (chillers
|
||||
and towers), `dc_agent(agent, V, t, litres)` (Novec 1230 at 4.5 %, FM-200
|
||||
at 7 % by NFPA 2001 / ISO 14520, Inergen at 39.9 %), `dc_gas_volume(o)`.
|
||||
A gas bank that is short puts a `warntag` on the view.
|
||||
- Wall devices facing away from the viewer on the storey cut open hang on
|
||||
the far side of a wall that is cut low: they draw ghosted.
|
||||
|
||||
`isokit check` names where the depth sort broke a cycle ("a before b, c":
|
||||
sprite ids, `Rendered.cycle_at`), which points at the sprites to split.
|
||||
|
||||
## Rules that keep the depth sort right
|
||||
|
||||
These are lessons from the CNX/Mooban views, and the engine relies on them:
|
||||
|
||||
Reference in new issue
Block a user