FastSmoothBuildings: analysis¶
FastSmoothBuildings is trano's reduced building library: the same YAML as Buildings and IDEAS, components written to be
smooth and explicit so that rumoca translates them into a CasADi ODE for optimal control (FastSmoothBuildingsMPC) and
calibration (mpctrano), and so that the closed loop (FastSmoothBuildings) runs in OpenModelica too. This folder gathers the
analysis that brought it to its present state: whether it passes BESTEST, whether it reproduces Buildings and
responds to the YAML as Buildings does, whether complex houses export and solve as MPC problems, what was changed in
the library and why, and what is still open.
In short¶
- BESTEST: 27 of 27 cases, 105 of 105 KPIs inside their band, shading included; FastSmoothBuildings gates as Buildings and IDEAS do. Against Buildings: loads 1.1 % apart on average (4.4 % at most), temperatures 0.38 K (1.70 K). It started at 83 of 85 KPIs of 22 cases with the heating 9 % above Buildings.
- Against Buildings, closed loop, same YAML: zones within 0.02 to 0.10 K hour by hour (0.46 K in an unheated sun-space), heating within 1.7 % in every base case. Of 45 changes of the YAML, 36 move both libraries alike, 4 closely, 2 differ (both peaks of the heat pump) and 3 move neither.
- MPC: both residential houses (heat pump with buffer and ventilation; gas boiler) export with rumoca in under a minute (189 and 160 states) and IPOPT solves their 12-hour optimal control in 23 to 55 s, every zone at its bound. The closed loop and the MPC model share their state names, so mpctrano can start one from the other.
- Boiler house: rooms within 0.02 to 0.09 K, heating +1.7 %, gas +1.9 % (gas per unit of heat within 0.2 %); both water loops conserve energy within 0.15 %.
- Open: the heat pump at full load and its safety times, the response to the solar absorptance of the opaque surfaces (0.91 to 0.93), the zones that nothing cools keeping a little too much sun.
Reports¶
| Report | Question | |
|---|---|---|
| 1 | Requirements | where each requirement stands, and where its check runs |
| 2 | BESTEST | does FastSmoothBuildings pass ASHRAE 140, and how far is it from Buildings, now and along the history |
| 3 | Study against Buildings | same results and same sensitivities as Buildings on complex cases |
| 4 | Library changes | every change of the library, the gap and evidence behind it, its effect |
| 5 | Shading | overhangs and side fins, smooth enough for CasADi |
| 6 | MPC: rumoca, CasADi, IPOPT | do the residential houses export and solve as optimal control problems |
| 7 | Closed loop and MPC states | can mpctrano start the MPC model from the closed loop |
| 8 | House before renovation | the gas-boiler house, closed loop and MPC |
| 9 | Boiler water loop | does FastSmoothBuildings lose heat or burn more gas per unit of heat |
| 10 | Open gaps | what is left, and how to close it within rumoca and CasADi |
Scripts and results¶
Run from the root of the repository, with trano's environment (uv sync --group dev):
| Script | Needs | Writes |
|---|---|---|
python -m study.analysis.scripts.bestest_comparison --history |
the committed BESTEST results, git | bestest_kpis.csv, bestest_summary.json, bestest_history.csv |
python -m study.analysis.scripts.study_responses |
the committed study results | study_kpis.csv, study_fidelity.csv, study_responses.csv, study_verdicts.csv, study_summary.json, study_hour_of_day.csv |
python -m study.analysis.scripts.shading_check |
trano-optimization (rumoca) | shading_check.json |
python -m study.analysis.scripts.mpc_houses |
trano-optimization (rumoca, IPOPT) | mpc_residential_after_renovation.json, mpc_residential_before_renovation.json |
python -m study.analysis.scripts.water_loop restart |
Docker, OpenModelica libraries | water_loop_restart.json, water_loop_restart_table.csv, water_loop_components_restart.csv |
python -m study.analysis.scripts.water_loop month |
Docker, OpenModelica libraries | water_loop_month.json |
python -m study.analysis.scripts.water_loop restart --tag tau0.5 --library FastSmoothBuildings --patch 'tauHyd(unit="s") = 5 ' 'tauHyd(unit="s") = 0.5 ' |
Docker, OpenModelica libraries | water_loop_restart_tau0.5.json, water_loop_components_restart_tau0.5.csv |
- trano-optimization is not a dependency of trano: install it next to trano (
uv pip install -e ../trano-optimization, with rumoca >= 0.10.3). - Simulations run OpenModelica in Docker (image
openmodelica/openmodelica:v1.26.9-ompython) with the libraries inTRANO_MODELICA_LIBRARIES(Buildings 13, IDEAS 3, MSL 4), as the validation does; the runs are cached in.cache/analysis/by the hash of the model. - The detailed validation results these scripts read live in
validation/bestest/results,validation/bestest/expectedandstudy/buildings/results, produced by the workflowsbestest.yamlandstudy.yaml; the pages built from them aredocs/validation/bestest.md,docs/validation/study.mdanddocs/validation/improvement_plan.md.
The timings in the results (exports, IPOPT, OpenModelica) are those of the container the analysis ran in (4 cores); they vary from machine to machine, the other numbers do not.