Cross-Domain Workflows
The actual reason for one runtime: a room’s geometry becomes a CFD domain becomes a live control loop, without leaving the script.
BIM Room → CFD → HVAC Controller
BIM ?bim ROOM BOUNDARY [?wall1 AND ?wall2 AND ?wall3 AND ?wall4] NAME "Ward A" SET ?ward
AFTER CAD TESSELLATE ?ward TOLERANCE 0.05 SET ?airMesh
AFTER SIM MESH ?airMesh ELEMENT SIZE 0.1 SET ?airFemesh
NEW SIM FLUID "Air" DENSITY 1.225 VISCOSITY 0.0000181 SET ?air
AFTER SIM ?airFemesh ASSIGN FLUID ?air
AFTER SIM ?airFemesh VELOCITY INLET 0,0,0.5 ON FACE ?diffuserFace
AFTER SIM ?airFemesh PRESSURE OUTLET 0 ON FACE ?returnFace
NEW SIM STUDY "cfd_steady" ON ?airFemesh SET ?study
AFTER SIM ?study SOLVE SET PROMISE ?results
AFTER WAIT FOR ?results SET ?solution
AFTER SIM ?solution EXTRACT CONCENTRATION "co2" SET ?co2
NEW BLOCK DIAGRAM SET ?model
AFTER BLOCK ?model ADD "signal_input" FROM ?co2 SET ?sensor
AFTER BLOCK ?model ADD "pid_controller" P 1.2 I 0.05 D 0.01 SET ?hvacController
AFTER BLOCK ?model CONNECT ?sensor TO ?hvacController
AFTER BLOCK ?model SIMULATE DURATION 3600 STEP 1 SET PROMISE ?run
AFTER WAIT FOR ?run SET ?trace
Room → mesh → FE mesh → fluid solve → controller, and every arrow is a type conversion between things already defined above, not a new integration.