1. The requirements and where each one stands¶
The goal set for FastSmoothBuildings: a smooth library, compatible with rumoca and CasADi/IPOPT, compatible with complex trano house descriptions with a heat pump, that passes every BESTEST requirement, and can still be used in an MPC; and, for every parameter of the YAML, the same or a comparable impact as in Buildings.
| Requirement | Status | Evidence |
|---|---|---|
| Smooth, event-free library | met | every component is an explicit ODE with regStep, smoothMax, smoothMin, smoothLimit and sqrt(x^2 + d^2); no when, pre or sample in the building model; the smoothing of the controllers is exposed as parameters (library changes) |
| rumoca → CasADi | met | every FastSmoothBuildings and FastSmoothBuildingsMPC model of the tests exports with rumoca 0.10.3, the two residential houses and the shaded BESTEST case 630 included (MPC, shading) |
| IPOPT optimal control | met | both residential houses solve a 12-hour optimal control (Solve_Succeeded, no comfort slack) with their real systems as controls and their meters as cost |
| Complex house with a heat pump | met | the renovated house: air-to-water heat pump with a buffer, three-way valve, six radiators with thermostatic valves, balanced ventilation with heat recovery, PV, six zones; closed loop within 0.06 to 0.10 K of Buildings, heating +1.5 %, heat-pump electricity −0.2 % |
| …and with a gas boiler | met | the house before renovation: rooms within 0.02 to 0.09 K, heating +1.7 %, gas +1.9 %, the same gas per unit of heat within 0.2 % (house before renovation) |
| Every BESTEST requirement | met | 27 of 27 cases, 105 of 105 KPIs inside their band; FastSmoothBuildings gates in pytest -m bestest as Buildings and IDEAS do (BESTEST) |
| Usable in an MPC (mpctrano) | met | the closed loop and the MPC model share their state names, so a closed-loop spin-up starts the MPC model; mpctrano's calibration, flexibility, project and model tests pass against the branch (closed loop and MPC) |
| Same or comparable impact of a YAML change as in Buildings | met for 40 of the 42 perturbations that move the results | 36 alike, 4 close, 2 differ (both peaks of the heat pump), 3 move neither library (study) |
What is not met, and the proposal for each, is in open gaps: the heat pump at full load and its safety times (the two perturbations that differ), the response to the solar absorptance of the opaque surfaces (0.91 to 0.93, inside alike but systematically low), and the sun kept in the zones that nothing cools.
Where the checks run¶
| Check | Where | Runs in CI |
|---|---|---|
| rumoca exports, the probes of the gap conductance, the shading and the walls, IPOPT on both houses | tests/test_fast_model.py |
no: trano-optimization (rumoca) is not a dependency of trano; run locally |
| OpenModelica compiles the FastSmoothBuildings examples (both houses included) | tests/test_fast_model.py -m compile |
yes, compile.yaml |
| OpenModelica simulates a FastSmoothBuildings example | tests/test_fast_model.py -m simulate |
no (CI simulates the AixLib cases only); run locally |
| BESTEST of FastSmoothBuildings against the bands and the frozen values | pytest -m bestest -k FastSmoothBuildings, tests/test_bestest_results.py |
the workflow bestest.yaml (dispatch) and the fast suite |
| The study against Buildings | study/buildings, tests/study/test_buildings.py |
the workflow study.yaml ([study] in a commit message) |
| mpctrano | mpctrano/tests |
in mpctrano, against a released trano |