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.