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
@@ -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