From 219f442bc27bcd1cef8bac47e62cde46df55711a Mon Sep 17 00:00:00 2001 From: Michal Dengusiak Date: Tue, 20 Oct 2026 07:57:53 +0200 Subject: [PATCH 1/2] docs: S05 licensed Phase A GUI acceptance - all nine cases PASS Real-ribbon runs on a fresh build of sow/2026-Q4 ad1f2486 (S01-S04 merged) with the dependency stack rebuilt at its tips: Tas only, OpenStudio only, Both explicit (two sessions), Both embedded post-F1, multizone (two sessions), injected Tas refusal, cancel (Both, OpenStudio) and concurrent starts. Record, evidence and the S05 test harness; no product change. Co-Authored-By: Claude Opus 5.5 --- documentation/S05-LicensedAcceptance.md | 120 +++ documentation/evidence/s05-20261020/README.md | 15 + .../evidence/s05-20261020/both-summary.txt | 86 ++ .../evidence/s05-20261020/build-hashes.txt | 15 + .../evidence/s05-20261020/build-revisions.txt | 26 + .../c1-tas-run-simulation/04-message-box.png | Bin 0 -> 3805 bytes .../c1-tas-run-simulation/box.tas-run.json | 702 ++++++++++++++ .../c1-tas-run-simulation/case-folder.txt | 8 + .../c1-tas-run-simulation/cmp-S1-vs-c1.json | 19 + .../c1-tas-run-simulation/message-box.txt | 3 + .../case-folder.txt | 6 + .../case-folder.txt | 6 + .../harness-epw-typing.txt | 3 + .../c2-openstudio-explicit/04-summary.png | Bin 0 -> 18808 bytes .../c2-openstudio-explicit/04-summary.txt | 13 + .../c2-openstudio-explicit/case-folder.txt | 7 + .../openstudio-run.json | 157 ++++ ...er-OpenStudio_20261020-053948_275dbafb.txt | 10 + .../benchmark-OpenStudio.json | 140 +++ .../benchmark-TAS.json | 136 +++ .../case-folder.txt | 7 + .../comparison-summary.json | 627 +++++++++++++ .../c3a-both-explicit-session1/comparison.csv | 19 + .../diagnostics.txt | 28 + .../engine-comparison-run.json | 231 +++++ ...TasOpenStudio_20261020-054048_48f88268.txt | 12 + .../benchmark-OpenStudio.json | 140 +++ .../benchmark-TAS.json | 136 +++ .../case-folder.txt | 7 + .../comparison-summary.json | 627 +++++++++++++ .../c3b-both-explicit-session2/comparison.csv | 19 + .../diagnostics.txt | 28 + .../engine-comparison-run.json | 231 +++++ ...TasOpenStudio_20261020-054150_1d63d4f7.txt | 12 + .../benchmark-OpenStudio.json | 140 +++ .../cases/c4-both-embedded/benchmark-TAS.json | 136 +++ .../cases/c4-both-embedded/case-folder.txt | 7 + .../c4-both-embedded/comparison-summary.json | 627 +++++++++++++ .../cases/c4-both-embedded/comparison.csv | 19 + .../cases/c4-both-embedded/diagnostics.txt | 28 + .../engine-comparison-run.json | 232 +++++ ...TasOpenStudio_20261020-054243_0850a579.txt | 12 + .../benchmark-OpenStudio.json | 202 ++++ .../benchmark-TAS.json | 194 ++++ .../case-folder.txt | 7 + .../comparison-summary.json | 870 ++++++++++++++++++ .../comparison.csv | 29 + .../diagnostics.txt | 32 + .../engine-comparison-run.json | 231 +++++ ...TasOpenStudio_20261020-054418_cf022309.txt | 12 + .../benchmark-OpenStudio.json | 202 ++++ .../benchmark-TAS.json | 194 ++++ .../case-folder.txt | 7 + .../comparison-summary.json | 870 ++++++++++++++++++ .../comparison.csv | 29 + .../diagnostics.txt | 32 + .../engine-comparison-run.json | 231 +++++ ...TasOpenStudio_20261020-054524_7e6722bc.txt | 12 + .../box.tas-run.json | 702 ++++++++++++++ .../box_error_log.txt | 1 + .../case-folder.txt | 7 + .../message-box.txt | 12 + .../04-progress-before-cancel.png | Bin 0 -> 9293 bytes .../cases/c8a-cancel-both/05-compare.png | Bin 0 -> 43781 bytes .../cases/c8a-cancel-both/05-diagnostics.txt | 5 + .../cases/c8a-cancel-both/case-folder.txt | 7 + .../engine-comparison-run.json | 143 +++ .../cases/c8a-cancel-both/processes.txt | 2 + ...TasOpenStudio_20261020-054952_eb0e846a.txt | 5 + .../c8b-cancel-openstudio/05-summary.png | Bin 0 -> 18703 bytes .../c8b-cancel-openstudio/05-summary.txt | 13 + .../c8b-cancel-openstudio/case-folder.txt | 7 + .../c8b-cancel-openstudio/openstudio-run.json | 159 ++++ .../cases/c8b-cancel-openstudio/processes.txt | 2 + ...er-OpenStudio_20261020-055053_87a6b4d4.txt | 7 + .../05-diagnostics.txt | 28 + .../c9-concurrent-start-run2/07-summary.txt | 13 + .../benchmark-OpenStudio.json | 140 +++ .../benchmark-TAS.json | 136 +++ .../c9-concurrent-start-run2/case-folder.txt | 8 + .../comparison-summary.json | 627 +++++++++++++ .../c9-concurrent-start-run2/comparison.csv | 19 + .../c9-concurrent-start-run2/concurrency.txt | 15 + .../engine-comparison-run.json | 231 +++++ .../openstudio-run.json | 157 ++++ .../c9-concurrent-start-run2/processes.txt | 5 + .../refusal-ComparisonwindowRun.png | Bin 0 -> 18622 bytes .../refusal-EnergySimulationribbon.png | Bin 0 -> 13314 bytes .../c9-concurrent-start-run2/refusals.txt | 25 + ...er-OpenStudio_20261020-055443_c894a4a3.txt | 10 + ...TasOpenStudio_20261020-055407_40b31247.txt | 12 + .../c9-concurrent-start/05-diagnostics.txt | 28 + .../cases/c9-concurrent-start/07-summary.txt | 13 + .../benchmark-OpenStudio.json | 140 +++ .../c9-concurrent-start/benchmark-TAS.json | 136 +++ .../cases/c9-concurrent-start/case-folder.txt | 8 + .../comparison-summary.json | 627 +++++++++++++ .../cases/c9-concurrent-start/comparison.csv | 19 + .../cases/c9-concurrent-start/concurrency.txt | 13 + .../engine-comparison-run.json | 231 +++++ .../c9-concurrent-start/openstudio-run.json | 157 ++++ .../cases/c9-concurrent-start/processes.txt | 5 + .../cases/c9-concurrent-start/refusals.txt | 20 + ...er-OpenStudio_20261020-055231_dc3f547b.txt | 10 + ...TasOpenStudio_20261020-055156_c4d119de.txt | 12 + .../evidence/s05-20261020/producers.txt | 3 + .../evidence/s05-20261020/tools/drive-s05.ps1 | 235 +++++ .../s05-20261020/tools/run-s05-case.ps1 | 40 + .../evidence/s05-20261020/tools/s05-uia.ps1 | 133 +++ .../s05-20261020/tools/summarise-both.ps1 | 38 + 110 files changed, 12317 insertions(+) create mode 100644 documentation/S05-LicensedAcceptance.md create mode 100644 documentation/evidence/s05-20261020/README.md create mode 100644 documentation/evidence/s05-20261020/both-summary.txt create mode 100644 documentation/evidence/s05-20261020/build-hashes.txt create mode 100644 documentation/evidence/s05-20261020/build-revisions.txt create mode 100644 documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/04-message-box.png create mode 100644 documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/box.tas-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/cmp-S1-vs-c1.json create mode 100644 documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/message-box.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-attempt1-harness-folder-click/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/harness-epw-typing.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/04-summary.png create mode 100644 documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/04-summary.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/openstudio-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/run-folder-OpenStudio_20261020-053948_275dbafb.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/run-folder-TasOpenStudio_20261020-054048_48f88268.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/run-folder-TasOpenStudio_20261020-054150_1d63d4f7.txt create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c4-both-embedded/run-folder-TasOpenStudio_20261020-054243_0850a579.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/run-folder-TasOpenStudio_20261020-054418_cf022309.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/run-folder-TasOpenStudio_20261020-054524_7e6722bc.txt create mode 100644 documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box.tas-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box_error_log.txt create mode 100644 documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/message-box.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/04-progress-before-cancel.png create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-compare.png create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/processes.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8a-cancel-both/run-folder-TasOpenStudio_20261020-054952_eb0e846a.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.png create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/openstudio-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/processes.txt create mode 100644 documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/run-folder-OpenStudio_20261020-055053_87a6b4d4.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/05-diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/07-summary.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/concurrency.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/openstudio-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/processes.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-ComparisonwindowRun.png create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-EnergySimulationribbon.png create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusals.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-OpenStudio_20261020-055443_c894a4a3.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-TasOpenStudio_20261020-055407_40b31247.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/05-diagnostics.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/07-summary.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-OpenStudio.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-TAS.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/case-folder.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison-summary.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison.csv create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/concurrency.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/engine-comparison-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/openstudio-run.json create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/processes.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/refusals.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-OpenStudio_20261020-055231_dc3f547b.txt create mode 100644 documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-TasOpenStudio_20261020-055156_c4d119de.txt create mode 100644 documentation/evidence/s05-20261020/producers.txt create mode 100644 documentation/evidence/s05-20261020/tools/drive-s05.ps1 create mode 100644 documentation/evidence/s05-20261020/tools/run-s05-case.ps1 create mode 100644 documentation/evidence/s05-20261020/tools/s05-uia.ps1 create mode 100644 documentation/evidence/s05-20261020/tools/summarise-both.ps1 diff --git a/documentation/S05-LicensedAcceptance.md b/documentation/S05-LicensedAcceptance.md new file mode 100644 index 00000000..cd6d5382 --- /dev/null +++ b/documentation/S05-LicensedAcceptance.md @@ -0,0 +1,120 @@ +# S05 - Licensed Phase A GUI acceptance - acceptance record + +Roadmap: SAM `documentation/SIMULATION_ROADMAP_Q4_2026.md`, task S05 (Phase A). SAM_UI record only: no product code changed. +Preflight (rehearsal, not acceptance): `documentation/S05-LicensedAcceptance-Preflight.md` (SAM_UI#244). + +Status values: **PASS**, **FAIL**, **NOT RUN**, **BLOCKED**. Numerical agreement between Tas and EnergyPlus is not a +criterion (roadmap); engine numbers are recorded, not judged. + +## Status +**All nine cases PASS** on 2026-10-20, run from the real SAM Analytical ribbon on this licensed laptop, on a fresh build of +the merged S01-S04 content. Branch `docs/s05-acceptance`, base `sow/2026-Q4` `ad1f2486`. Record and evidence only. + +## Content under test +- **SAM_UI** `sow/2026-Q4` `ad1f2486`: S01 (SAM_Tas#103 `e483877c`, SAM_UI#240 `5b379191`), S02 (#241 `49eebe13`), + S03 (#242 `1e460bbe`), S04 (#243 `307cb0e3`) merged, with green post-merge Q4 builds (`1e460bbe`, `307cb0e3`). +- **Dependencies** at their `sow/2026-Q4` tips, clean (`build-revisions.txt`): SAM `62b54156`, SAM_Tas `e84aeff6`, + SAM_OpenStudio `d4216f3`, SAM_Validation `68eded0`, and the other 22 BuildAll repositories. +- **Why a full rebuild was needed (finding):** before this session the laptop's `SAM\build` dated from 2026-10-17, before + SAM#212 (F1, EPW writer). Every overnight real-engine run (S03, S04 evidence and the S05 preflight) therefore used a pre-F1 + `SAM.Weather.dll`. This record's runs use a fresh build; see case 4 for the proof that F1 is in effect. + +## Build (machine-local, reproducible) +1. Dependency stack: `BuildAlls_v5.bat skip2027 nopause` (Debug, Restore/Clean/Rebuild of 26 repositories, 3 min 35 s, exit 0, + 0 errors), with `APPDATA=C:\TasOut\s05\sandbox\AppData`, `USERPROFILE=C:\TasOut\s05\sandbox\Profile`, + `NUGET_PACKAGES` the real cache. The sandbox `AppData\SAM` was first seeded with `SAM_OCCT\build` (BuildAll's OCCT runtime + check otherwise tries a native rebuild, which failed in the sandbox; first attempt logged, nothing changed). +2. App: `MSBuild "Application\SAM Analytical\SAM Analytical.csproj" -restore -t:Rebuild -p:Configuration=Release + -p:OutDir=C:\TasOut\s05\app\` with the same environment: exit 0, 480 files. +3. Checks (`build-hashes.txt`): `SAM.Weather.dll` (`5e6a1a7d…`, contains the F1 code), `SAM.Analytical.dll` and `SAM.Core.dll` + are byte-identical in `SAM\build`, `SAM_Tas\build`, the OpenStudio producer folder and the app; the app's + `SAM.Analytical.Tas.dll` equals `SAM_Tas\build`'s; `SAM.Analytical.Benchmark.dll` is identical in all four places. +4. Side effects removed: untracked `NuGet\` (and SAM_UI `Microsoft\`) folders that MSBuild created in the repository roots under + the sandboxed profile; every file in them was newer than the build start. No tracked file changed in any repository. + Installed SAM and the real `%APPDATA%\SAM` were not touched. + +## Environment +- TAS 9.5.7.0 (licensed; `TBD.exe` sha256 `aa658fcd…`). +- OpenStudio 3.10.0 (`.icon-migration\runtime\OpenStudio-3.10.0+86d7e215a1-Windows\bin` first on `PATH`; CLI sha256 + `46a80a3d…`), EnergyPlus 25.1.0-1c11a3d85f. The CLI on `PATH` is set by the harness, as in S01b and the preflight; without it + this laptop finds ladybug's OpenStudio 3.11 / E+ 25.2 (S03 finding, for S06). +- Producers (developer builds from the rebuild): `SAM_Tas\build\benchmark-tas.exe` (`07ab3e45…`) and + `SAM_OpenStudio\benchmark\…\bin\x64\Debug\net8.0\benchmark-openstudio.exe` (`64405919…`). +- **`SAM_COMMIT`** (owner decision 2026-10-20: a temporary requirement for developer-built producers until S06): set only for + the Both routes (cases 3-6, 8a, 9), to `62b5415697d1a5af143c6b581b7d42fbd6551ca8`. It is truthful: SAM's checkout was clean at + that commit (the `sow/2026-Q4` tip) when it was built, and the producers' `SAM.Analytical.dll` is byte-identical to that + build. Every Both manifest records it as a manual override (`environment.SAM_COMMIT`). It identifies a developer build; it + does not prove packaged-app provenance (S06). Tas-only and OpenStudio-only runs had no `SAM_COMMIT` set. +- Each case: a fresh folder `C:\TasOut\s05\runs\` with a copy of the model; the run folder is created beside it. The + app ran with the sandboxed `APPDATA`/`USERPROFILE`. + +## Fixtures +- Box: `box-aperture.json` sha256 `99ba2ab9…` (the S01b/#239 box; machine-local, `C:\TasOut\s05\inputs`). Unchanged after + every case. +- Explicit weather: `Budapest.epw` sha256 `472ffb4e…` (machine-local, as S01b). +- **Multizone (case 6):** SAM_OpenStudio's committed fixture + `tests/resources/models/rawModel-WindowsWeatherDataDDYAdiabaticAirPanel.sam` (sha256 `b2ab6826…`, matching its + `SHA256SUMS.txt`): 2 spaces, 11 panels, an Air partition, 10 apertures, embedded London weather; provenance documented in + that folder's README. It was chosen because HungaryHouse's provenance is not cleared (roadmap owner decision 3). It is used + read-only; nothing new is committed as a fixture. Unchanged after both sessions. + +## Drivers +- Unchanged S01b drivers (`documentation/evidence/s01b-20261019/tools/`): `drive-tas.ps1` (cases 1, 7), `drive-both.ps1` + (cases 3-6), `compare-persisted.ps1` (case 1). +- New for S05 (test harness, `documentation/evidence/s05-20261020/tools/`): `drive-s05.ps1` with `s05-uia.ps1` (cases 2, 8, 9), + `run-s05-case.ps1` (environment and fresh folder per case), `summarise-both.ps1`. + +## Acceptance matrix +| # | Case | Result | Observed (what the UI reported = what the engines did) | Evidence (`documentation/evidence/s05-20261020/cases/`) | +|---|---|---|---|---| +| 1 | Tas only: Run Simulation > Tas, box, embedded weather, Full Year | **PASS** | "Model successfuly converted", 21 s. `box.tas-run.json` `Succeeded`; TAS 9.5.7.0 + `TBD.exe` hash; weather `Embedded` (content hash `7666c3a7…`); design days `DerivedFromWeather`; the workflow settings that ran. Persisted results **602/602 exact** against the S01b baseline S1 (2 space + 28 surface results). Model file unchanged. | `c1-tas-run-simulation/` (`cmp-S1-vs-c1.json`) | +| 2 | OpenStudio only: Run Simulation > OpenStudio, box, explicit EPW | **PASS** | Summary "finished. The open model was not changed", 12 s. `openstudio-run.json` `Succeeded`, E+ exit 0, 10 warnings, 0 severe/fatal, 13 results; CLI 3.10.0 hash, SDK 3.10.0, E+ 25.1.0 from `eplusout.err`; weather `File` `472ffb4e…`. Snapshot `0c30db14…` has no view state; the result model has it (S04). Its four stored model metrics equal case 3's OpenStudio values exactly. | `c2-openstudio-explicit/` | +| 3 | Both, explicit EPW, two app sessions | **PASS** | Both sessions `Compared` (28 s, 29 s). Snapshot `0c30db14…` and both producers' `canonicalModelHash` `05c1e334…` in both sessions (S04). Producers report `samCommit` `62b54156…`, runner commits `e84aeff6` (SAM_Tas) / `d4216f3` (SAM_OpenStudio), TAS 9.5.7.0, E+ 25.1.0. `comparison.csv` identical (LF-normalised) in both sessions, to the preflight and to the S01b run B2: unchanged outputs. | `c3a-…`, `c3b-…`, `both-summary.txt` | +| 4 | Both, box, embedded weather (post-F1) | **PASS** | `Compared`; weather `Embedded`; the exported EPW is `5afbeb32…`, **byte-identical to SAM#212's `embedded-corrected.epw`**. The preflight's case 4 exported `e1353bd2…` = SAM#212's `embedded-before.epw` (pre-F1). Same snapshot and canonical hash as case 3. Engine numbers differ from the pre-F1 run, as F1 intends. | `c4-both-embedded/` | +| 5 | Both, box, explicit EPW | **PASS** | The case 3 runs: weather `File`, `472ffb4e…`, the same hash reported by both producers. | `c3a-…`, `c3b-…` | +| 6 | Both, multizone model, explicit EPW, two sessions | **PASS** | Both sessions `Compared` (33 s, 34 s); 2 spaces matched by GUID; coverage Pass; 28/28 metrics comparable. Snapshot `a3b8cff8…` and canonical hash `356dcbed…` identical across sessions. Tas values identical; OpenStudio values differ between sessions by ~1e-11 relative (EnergyPlus run-to-run variation on this air-boundary model, already recorded for it in `OpenStudio-Simulation-PR229.md`; identical inputs). | `c6a-…`, `c6b-…` | +| 7 | Injected Tas refusal: Energy Simulation with a directory at `box.tsd` | **PASS** | One "Simulation failed" box: TAS return code 0, error log `box_error_log.txt` ("Error accessing the TSD file for writing"), TAS-SIM-001 lines, "The open model was not changed". `box.tas-run.json` `Failed` with the same text. Harness: see below. | `c7-tas-refusal-energy-simulation/` | +| 8 | Cancel: (a) Both while the Tas producer runs; (b) OpenStudio while EnergyPlus runs | **PASS** | (a) Cancel 4 s into `benchmark-tas.exe`: run `Cancelled`, banner "CANCELLED - nothing to show or compare", no comparison, OpenStudio producer never started, no B1a (recorded unknown with its reason); no engine process left. (b) Cancel while `openstudio.exe` and its `energyplus.exe` ran: "The OpenStudio simulation was cancelled. No result model was saved", SAM-OS-RUN-001 "process tree was terminated", `openstudio-run.json` `Cancelled`, no result model; no engine process left. Both manifests carry provenance. | `c8a-cancel-both/`, `c8b-cancel-openstudio/` (`processes.txt`) | +| 9 | Concurrent start | **PASS** | While Both ran (its progress window open, `benchmark-tas.exe` running): Energy Simulation, Run Simulation and OpenStudio Simulation each refused with "A Tas + OpenStudio run is already running for this model, so nothing was started." While an OpenStudio Simulation ran (comparison window open): the comparison window's Run and Energy Simulation each refused with "An OpenStudio simulation is already running…". Both first runs completed (`Compared`, `Succeeded`); the folder holds exactly those two run folders, nothing from a refused start. | `c9-concurrent-start-run2/` (`concurrency.txt`, `refusals.txt`) | + +Every case's model file kept its hash. GitHub CI for this PR is reported in the PR description, separately from these local +licensed runs. + +## Test-harness defects (classified; product behaviour unaffected) +- **Case 2, attempts 1-2** (kept in `cases/c2-attempt*`): the folder dialog's "Select Folder" mouse click was lost; then the + EPW file dialog showed "C:\TasOut\s05\sandbox\Profile\Desktop is unavailable", because the sandboxed profile had no + Desktop folder. Fixed in the harness: BM_CLICK on Win32 buttons, the profile's standard folders created, and the EPW path set + with WM_SETTEXT instead of SendKeys. No product run had started. +- **Case 7:** the S01b driver's BM_CLICK on "OK" was ignored because TAS had put Notepad (its error log) in the foreground, + so the box stayed open (as S01b E3 and the preflight). WM_ACTIVATE then BM_CLICK closed it, and no second box appeared. One + message box; recorded in `driver.log`. +- **Case 8:** the log line "… never appeared; cancelling anyway" is wrong: a CIM result was not counted. The process snapshot + taken immediately before Cancel (`processes.txt`) shows the engines running. The helper now returns a boolean. +- **Case 9, run 1** (kept in `cases/c9-concurrent-start`): the comparison-window refusal box is titled "Compare Tas / + OpenStudio" and owned by the comparison window, two levels below the main window; the driver looked for "Simulation already + running" one level down and logged "NOT REFUSED". Run 2, with the detection fixed, shows the refusal (screenshot). + +## Scope notes +- The Optimisation window's "Run Energy Simulation…" follow-up was not driven: it calls the same `SimulateTas` guard path as + Energy Simulation, which case 9 refused; S02's `SimulationConcurrencyGuardTests` cover it. +- The Part O Hub simulations are not guarded (S02 owner decision outstanding) and are not part of this matrix. +- Not observed in these runs: the `ProgressWindowHost` 5 s shutdown fail-safe that reported one S03 unit test Cancelled under + full-suite load (recorded in the S04 closeout). + +## Unresolved, risks +- Both with developer-built producers still requires `SAM_COMMIT`; S06's stamped producers remove it. +- OpenStudio CLI/SDK selection depends on `PATH` on this laptop (S06). +- The app reports `application.sourceRevision: unknown` (developer build); component hashes identify it. An installed candidate + is S06's scope. +- Machine-local evidence: `C:\TasOut\s05` (app, sandbox, run folders with TBD/TSD/OSM/SQL); TAS licence; OpenStudio 3.10 + runtime under `.icon-migration\runtime`; the S01b baseline `C:\TasOut\s01b\runs\S1-base-es-success`. + +## Reproduce +From `C:\TasOut\s05` after the build above: `tools\run-s05-case.ps1 -Name -Kind +TasRunSimulation|TasEnergySimulationRefusal|OpenStudio|Both|CancelBoth|CancelOpenStudio|Concurrent [-Model ] +[-EpwPath ]`; `tools\summarise-both.ps1 -Cases …`; `compare-persisted.ps1 -Baseline … -Candidate … -Out …`. + +## Next step +Merge this record (owner authorisation 2026-10-20), close out S05 in `PROJECT_PROGRESS.md`, and update the roadmap status +(S01-S05 Done) through a reviewed SAM PR. S06 (early SAM_Deploy smoke candidate) is the next roadmap task and needs its own +owner start. diff --git a/documentation/evidence/s05-20261020/README.md b/documentation/evidence/s05-20261020/README.md new file mode 100644 index 00000000..e964bbdd --- /dev/null +++ b/documentation/evidence/s05-20261020/README.md @@ -0,0 +1,15 @@ +# S05 licensed acceptance evidence (2026-10-20) + +Record: `documentation/S05-LicensedAcceptance.md`. Real SAM Analytical ribbon runs on a licensed laptop, on a fresh build of +`sow/2026-Q4` `ad1f2486` and the dependency tips in `build-revisions.txt`. + +- `build-revisions.txt`, `build-hashes.txt`, `producers.txt`: what was built and run (`producers.txt` holds the `SAM_COMMIT` + value used for the Both routes). +- `both-summary.txt`: every Both run's status, snapshot, weather, producer outcomes, reported provenance and canonical hashes. +- `cases//`: `driver.log`, the message-box / summary / diagnostics text, the run manifests (`box.tas-run.json`, + `openstudio-run.json`, `engine-comparison-run.json`), B1a documents and `comparison.csv` for Both, `processes.txt` + (cases 8-9), `concurrency.txt` and `refusals.txt` (case 9), `run-folder-*.txt` and `case-folder.txt` (listings), and a few + screenshots. `c2-attempt*` and `c9-concurrent-start` are harness attempts kept as evidence (see the record). +- `tools/`: the S05 harness. The S01b drivers it calls are unchanged in `../s01b-20261019/tools/`. + +Machine-local, not committed: `C:\TasOut\s05` (app, sandbox profile, full run folders with TBD/TSD/OSM/SQL/EPW, logs). diff --git a/documentation/evidence/s05-20261020/both-summary.txt b/documentation/evidence/s05-20261020/both-summary.txt new file mode 100644 index 00000000..7f4cc133 --- /dev/null +++ b/documentation/evidence/s05-20261020/both-summary.txt @@ -0,0 +1,86 @@ +== c3a-both-explicit-session1 / 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268 + status: Compared started 2026-10-20T05:40:48.8423401Z finished 2026-10-20T05:41:16.8778057Z + snapshot: sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 + weather: File sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 + environment SAM_COMMIT: 62b5415697d1a5af143c6b581b7d42fbd6551ca8 RUNNER_COMMIT: not set + producer Tas: succeeded=True exit=0 21.0s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=e84aeff687033354e3f17891635fdf10d42ad68f engine=Tas 9.5.7.0 route=Native-TAS weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 + producer OpenStudio: succeeded=True exit=0 6.6s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=d4216f3525c01ca762c1b3e9b6d099733d037f54 engine=EnergyPlus 25.1.0 route=Native-OpenStudio weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 + comparison.csv (LF-normalised): sha256:a88bceb0a13f15c5 + comparison.md (LF-normalised): sha256:62a669814d5c4d25 + unknown: application.sourceRevision: this build's InformationalVersion '1.0.0' has no source revision after '+' (a local developer build); the component SHA-256 values identify the binaries + unknown: producers.Tas.reported.engine.sdkVersion: the producer reported none (null in its B1a document; its warnings and notes say why) +== c3b-both-explicit-session2 / 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7 + status: Compared started 2026-10-20T05:41:50.0566200Z finished 2026-10-20T05:42:19.3370897Z + snapshot: sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 + weather: File sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 + environment SAM_COMMIT: 62b5415697d1a5af143c6b581b7d42fbd6551ca8 RUNNER_COMMIT: not set + producer Tas: succeeded=True exit=0 21.3s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=e84aeff687033354e3f17891635fdf10d42ad68f engine=Tas 9.5.7.0 route=Native-TAS weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 + producer OpenStudio: succeeded=True exit=0 7.5s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=d4216f3525c01ca762c1b3e9b6d099733d037f54 engine=EnergyPlus 25.1.0 route=Native-OpenStudio weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 + comparison.csv (LF-normalised): sha256:a88bceb0a13f15c5 + comparison.md (LF-normalised): sha256:62a669814d5c4d25 + unknown: application.sourceRevision: this build's InformationalVersion '1.0.0' has no source revision after '+' (a local developer build); the component SHA-256 values identify the binaries + unknown: producers.Tas.reported.engine.sdkVersion: the producer reported none (null in its B1a document; its warnings and notes say why) +== c4-both-embedded / 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579 + status: Compared started 2026-10-20T05:42:43.3272327Z finished 2026-10-20T05:43:11.4277726Z + snapshot: sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 + weather: Embedded sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082 + environment SAM_COMMIT: 62b5415697d1a5af143c6b581b7d42fbd6551ca8 RUNNER_COMMIT: not set + producer Tas: succeeded=True exit=0 20.5s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=e84aeff687033354e3f17891635fdf10d42ad68f engine=Tas 9.5.7.0 route=Native-TAS weather=sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 + producer OpenStudio: succeeded=True exit=0 7.0s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=d4216f3525c01ca762c1b3e9b6d099733d037f54 engine=EnergyPlus 25.1.0 route=Native-OpenStudio weather=sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082 designDays=None + sourceFileHash=sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05 canonicalModelHash=sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500 canonicalization=1.0.0 + executable sha256: sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 + comparison.csv (LF-normalised): sha256:454e42dcde74cabf + comparison.md (LF-normalised): sha256:8b18894da5619f4e + unknown: application.sourceRevision: this build's InformationalVersion '1.0.0' has no source revision after '+' (a local developer build); the component SHA-256 values identify the binaries + unknown: weather.originalPath: the weather is the model's embedded WeatherData, exported to EPW once for both producers; sha256 identifies the exported file + unknown: producers.Tas.reported.engine.sdkVersion: the producer reported none (null in its B1a document; its warnings and notes say why) +== c6a-multizone-both-session1 / 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309 + status: Compared started 2026-10-20T05:44:18.1627020Z finished 2026-10-20T05:44:51.6211360Z + snapshot: sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 + weather: File sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 + environment SAM_COMMIT: 62b5415697d1a5af143c6b581b7d42fbd6551ca8 RUNNER_COMMIT: not set + producer Tas: succeeded=True exit=0 24.0s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=e84aeff687033354e3f17891635fdf10d42ad68f engine=Tas 9.5.7.0 route=Native-TAS weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=EmbeddedModel + sourceFileHash=sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 canonicalModelHash=sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317 canonicalization=1.0.0 + executable sha256: sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 + producer OpenStudio: succeeded=True exit=0 8.9s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=d4216f3525c01ca762c1b3e9b6d099733d037f54 engine=EnergyPlus 25.1.0 route=Native-OpenStudio weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=EmbeddedModel + sourceFileHash=sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 canonicalModelHash=sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317 canonicalization=1.0.0 + executable sha256: sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 + comparison.csv (LF-normalised): sha256:cd42ab3f46bbaf0c + comparison.md (LF-normalised): sha256:aa53107e4253fcbb + unknown: application.sourceRevision: this build's InformationalVersion '1.0.0' has no source revision after '+' (a local developer build); the component SHA-256 values identify the binaries + unknown: producers.Tas.reported.engine.sdkVersion: the producer reported none (null in its B1a document; its warnings and notes say why) +== c6b-multizone-both-session2 / 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc + status: Compared started 2026-10-20T05:45:24.9298332Z finished 2026-10-20T05:45:59.1803598Z + snapshot: sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 + weather: File sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 + environment SAM_COMMIT: 62b5415697d1a5af143c6b581b7d42fbd6551ca8 RUNNER_COMMIT: not set + producer Tas: succeeded=True exit=0 24.9s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=e84aeff687033354e3f17891635fdf10d42ad68f engine=Tas 9.5.7.0 route=Native-TAS weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=EmbeddedModel + sourceFileHash=sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 canonicalModelHash=sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317 canonicalization=1.0.0 + executable sha256: sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 + producer OpenStudio: succeeded=True exit=0 9.0s error= + reported: state=Success samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 runnerCommit=d4216f3525c01ca762c1b3e9b6d099733d037f54 engine=EnergyPlus 25.1.0 route=Native-OpenStudio weather=sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3 designDays=EmbeddedModel + sourceFileHash=sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07 canonicalModelHash=sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317 canonicalization=1.0.0 + executable sha256: sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 + comparison.csv (LF-normalised): sha256:2288ac7755b3159f + comparison.md (LF-normalised): sha256:aa53107e4253fcbb + unknown: application.sourceRevision: this build's InformationalVersion '1.0.0' has no source revision after '+' (a local developer build); the component SHA-256 values identify the binaries + unknown: producers.Tas.reported.engine.sdkVersion: the producer reported none (null in its B1a document; its warnings and notes say why) diff --git a/documentation/evidence/s05-20261020/build-hashes.txt b/documentation/evidence/s05-20261020/build-hashes.txt new file mode 100644 index 00000000..b6754559 --- /dev/null +++ b/documentation/evidence/s05-20261020/build-hashes.txt @@ -0,0 +1,15 @@ +# S05 build hashes (2026-10-20). Dependency stack: BuildAlls_v5 skip2027 (Debug, Rebuild) at build-revisions.txt; app: MSBuild Release Rebuild of SAM_UI ad1f2486. +5e6a1a7da6077e17274bee3a3ce995dc6f382a3671e824c12afb6b9233ff74ef *SAM/build/SAM.Weather.dll +186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12 *SAM/build/SAM.Analytical.dll +166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132 *SAM/build/SAM.Core.dll +07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2 *SAM_Tas/build/benchmark-tas.exe +2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9 *SAM_Tas/build/benchmark-tas.dll +c4f19541b888298349390af2eaef795efbd8929b1ef8dfd542e09f753987e44a *SAM_Tas/build/SAM.Analytical.Tas.dll +644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06 *C:/Users/michal/Documents/GitHub/SAM-BIM/SAM_OpenStudio/benchmark/SAM.Analytical.OpenStudio.Benchmark/bin/x64/Debug/net8.0/benchmark-openstudio.exe +4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd *C:/Users/michal/Documents/GitHub/SAM-BIM/SAM_OpenStudio/benchmark/SAM.Analytical.OpenStudio.Benchmark/bin/x64/Debug/net8.0/benchmark-openstudio.dll +965716bd87ded52ded7ac085810ef6b93d1fb3a000f0e12e9f74be32b7958c66 *C:/Users/michal/Documents/GitHub/SAM-BIM/SAM_OpenStudio/benchmark/SAM.Analytical.OpenStudio.Benchmark/bin/x64/Debug/net8.0/SAM.Analytical.OpenStudio.dll +4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16 *SAM_Validation/build/SAM.Analytical.Benchmark.dll +d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e *SAM_Validation/build/SAM.Analytical.Benchmark.Compare.dll +b1d436d557577e0b096eddd026fefe303e04877c06aa676dca7e28d857d1fa2d *C:/TasOut/s05/app/SAM Analytical.exe +0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15 *C:/TasOut/s05/app/SAM.Analytical.UI.WPF.dll +5e6a1a7da6077e17274bee3a3ce995dc6f382a3671e824c12afb6b9233ff74ef *C:/TasOut/s05/app/SAM.Weather.dll diff --git a/documentation/evidence/s05-20261020/build-revisions.txt b/documentation/evidence/s05-20261020/build-revisions.txt new file mode 100644 index 00000000..207c30a3 --- /dev/null +++ b/documentation/evidence/s05-20261020/build-revisions.txt @@ -0,0 +1,26 @@ +SAM 62b5415697d1a5af143c6b581b7d42fbd6551ca8 +SAM_Psychrometrics 83d53326506b4c53b0e76a11fb717e140c626990 +SAM_Mollier 7f61916adad9ad913904d18047ec6bfe835d1611 +SAM_Systems f0838ca3eba3e4b5f1cee008ba0831b6d7e95625 +SAM_Windows 11bbecfa8aa854f4d9b2494c8bca737298982751 +SAM_IFC 77046bef504474619cf39afbbc70ee7975aad50c +SAM_Acoustic baed72cb439f6c23fdd16725f497be67938dc54a +SAM_BHoM 995caace61164bf281501613e8ec4f3008053f39 +SAM_gbXML 43b5d018ac7a8a14f332e8bcde9cb0d613bf1efb +SAM_GEM 1bf41916fefa6dd5fe44a735c294619d3d8df8d9 +SAM_LadybugTools 0ffbaecf1097a33de2044ee919c963eaeb0a0da2 +SAM_Solver fd63b4670cd4baeb20a74312aacc17eb177ecc18 +SAM_SolarCalculator 277a3a4864f2bf900504a64a4830cb9438312d78 +SAM_Validation 68eded0060047af714853a02a152fb9c960bfeb1 +SAM_Tas e84aeff687033354e3f17891635fdf10d42ad68f +SAM_Tas_Grasshopper e94880e6088e6d9873d2fb6872f4c48939204b10 +SAM_Excel 6669977d07cc6488c0dd91fe0a48ccd2dc833627 +SAM_SQLite ec2eb86d00cac6e4cadf52b429f9d293eeabbd5e +SAM_OpenStudio d4216f3525c01ca762c1b3e9b6d099733d037f54 +SAM_Origin 74c19a1ebf3fc11a136cc9b055edf68b2b91a087 +SAM_Multitasker 1fe5598fbfa478c5fcc2b65e94cd4b4e27c338f4 +SAM_OCCT dc871f7e6ee7d0e53adb826a2b597645e2eab4cb +SAM_UI ade096d01e3d7a216e8b52f7939f30bfb0e89451 +SAM_Rhino_UI 24fafda03cef5168abf1e43a1669a2fe42490f8d +SAM_Revit 431d34ef4bcff8f34e8caa32e893ebfc471cb678 +SAM_Revit_UI 06cf245af93dfd29521bbf925a4b7f3cf934af18 diff --git a/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/04-message-box.png b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/04-message-box.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2eda53800b64df892d0d0a4d89824ef03d74ab GIT binary patch literal 3805 zcmYjUdpwix`)5qEQL~hCm>Go}=1}qp8J5O;ohpYM3i;5-VIjhtCWJoNq)8&AR8BMJ zIYi22LXMSCj%A{T9Om$Q)bIOxegC-b=enNz@V=h=b>Hvz^(0wao)v{kLizakM9uIx zTj1FXSQbPGXkC}8b_4z(+q1@eW!=)>fI!g8=s!k$d=+W1O*b$Q3tz)K2J!LjZQC_| z7V+s7zzHeikrQ_wPyXV<8*0w3td z(Bh~i=_#wmg74E!Phx+mll`TfB==-oaq(SOPa$%kmX){lw^pCcp-H+^^c~r?D~t~= zqb@G8#l`Q_D`lfM-w7LT{D}=CG~)BeUD9@8$&Bz#ls{*GL~k0YVTKibx-NnGUuXfetZ;PTgnKF zEOK-VP^4v!COtl~+TI+wkfItCtsHvpr~T`3DC1OEu6|fLJBato@5XfJf!gZoY2@jM zdzjS`I3qJGVllTt?ve(vX?jdQv^VGd3&YF~gz%A091=sxWWlDU>%&)`H$-hQc^jN^ z6+Oi()KGf$^mcW{7fWefih_+g#rG)*S?}3z(32u{@|Yg_3Uz&UBiz<1<4q@X_#HQb z`$loyPl|->(H~@n%A;U7llCde7)2-$@fyLQz6CUI z%oRt>%kLL*(2(=P9zDqYP_HUwJ_Y6?M8Vv1gRZ%l7n^-et7D{fE!BI#3Y9@xueZYG z;N}^yLa&iV{g)D#BB(n$H{%g~N4eukj1n|eLb-nuIm(OJUY`|DtjgVFjoia3r7i2D zd%PY-(hNmozzD4#RoT#?oRLo@s;eDddvdqTJi{OuYkYw-YIG@-j5LgTV7MK-J1!AL z=+XBu7w4(QL6+|$ItVy&$4mDlcQpbTM71l3&pMCHw?iG?ao~2`85U2R_iWU?(7<6lt@zEfde zB@!8zdo~SO|F)w^LC&vbw_gy7!|$3vI{4+!v`r_-Yz>2xDLcqjYfJq%3uI ztckSHm8I=~Y^yp}URK7mXOw8|Ex?N0fkR(uh^8x0qGQerrhoIn^foLu|3)bQBXB4+ zF|hkRyb`?aIKC7cwJ8sJvs?{P;C`wPx&_iKO@k~4(!eYu01Tav73oJ+gTCFuZ|#TN zSR4!9iW+ZP>el;>$U=jJ|94PyJj=?By#}n&g-5mC@7xQm3g*@5MQ$9Yu{27}8Q4Hx zNYVI>9o|>@)ptWQ-c?%ttet&@e!|rYxV%g#xn!iyIgh8cP#>h2IpYOpP<^{J{47hc z`xeG;81^va80jSzb|P*l@{YdpQ^7dJA1omz;ggNx(0^ROZwUYX#J*IksW8j@t| zqRJ;3C6nQin}zDOe~*SJbGqzx8nW1ouHb+6g)ioeOtJL8h4d3jvD}xiLY85QU?;Pz z#Cm+?6eA+N)9l$mM(~XCr1YXLr<-upV8*OA+qDrJB|W7liFqe3I9KOidv5#h(Rrq2 z`JTIzo|Ug`9|kvk`JQ0lQa7>3;2}+NxO&WKx=6M1*DdyPn3q5OS+K}@2QiUjmj)vmnXu<4>A$?xV6rCbTVI3K z-2d zD>A-Y&$j!=mcq!}(-ScVAuOYF`#WySk6#(=e3^WIS=%S)AE8=n<=Sg&A9UHK%8NZ0 z6Gm8LoZ&MbW6LR0H>Vxg#-5WTpG$Sk)h?a9-oOY$UYBLw1n4?5WZIs&@a2qTgvZF} zsR$hlm)9Jk&E)p!i&1l0GR3!Ah=E&S^Y=PAGneo#htFN))ugF74~I$*`kWujbUE#B zA1V7$J*4!pNaM=rmV)rqB4=4VB#10@0MU%0tu_;GwI6ND+!5JB+o=3}l9~4LR&#tO z=6qg6kd%kx4_!n}b?V7bi@{T+1NO@KTaLjgEGoVHb6Dmuo8=zve8pd)VaRr76EaoA z*wXbj2Wj?OMyYs@HEZ@mz!&d{_}@5Y0MZ^DfQn1*02f>N55=_MeqZ6E2fw~H1$}dr zHQ-fdYpV=q<&P33nhDy($pQ0lgN+aLzJKpoofe?kSvtw@O@uY5Qmouf?wij!x3kmwWcf1FDmA)gF1 z(2*k5tMTl?#lwAU2bL)NY){SO0YWvhcwd}*iR=weCr(n5S@#EB7P!L!^ak3XVjWO% zTehF;!&iGC{}w!WKKR;rTlIxU%91fJ*5=&IivvXMDt?`C@ZT;#!k=Idw5*;M2s(0{x}q6VLDzD z_v=8IlGZhtee)66Xm~15a%|tuF*Bta?EajkSW{`;0zpJ0W}^E6Y)b0>i%7b9h_{St zj?3M z!3pwmKSbO+tpNP8r$Yyf4p6d|hT;mW^K``%arxK)C3uon5ZO{DFza|;Z1tU!gR@1S z@_patH2xJDJ!d_`Fe!TOX#t=XblK)*D-Ju;WCDv4*#68rJ{J*3D2X*}E~H;PvHv}+ zWnK{BXxhZ4WGjw-v_6KRY}((hAz7mko_~Yx;@*jb=bIEwtzh#`5UN~aK~$wBWr~EU zAfw&1fpr`_ambthUKUovNJAkM=2g-F+npBzidPgfZ4$LWm*iYOnG*QqjRiPeRH-*Y zn?Q~u<2)=p78!ti+j{l;h&= zfCImJs1J(=cEF<0jdGm6(7sz(@DWfy<3VESF$eLhr^OQ~f+a|$P}uAdE=b13F<>8W z%RE1>ivKEaBBm~HItf}x%6r6SFT9xTz5qR1D7ra2|KSt)DRz5@`kaKqyrVuoa)UWs zEN+39qSRpa#`%vY?A&o{j9&uz&5z8c%IJSxh+1=de9ib^R)cH=r8Y7k&o1vh?j?1L zH#$B%tfGek%2n1z_}DLx{g5YE8V-Zhr4U}_CaRw5Tf#eK>d4;lQYE`mhIy+E_Ir`n zcNSK-tp~hjI|@*Kjz`®vt^8g;)h1pWtCdI^+|qhVdv7n>vfU4$;M+5R4$uVoxv zf~AsI5*n>dZb0?NDQz&J+)FYJ5BvE>_-nEQ-udYe+f-D-vS~GHe)>dC6cW`dAPP=5 zR3$Gj8rj~<{JO3hbgQy!OPT#i7Pf7T+R32Kte)5`OBe^eIDF@lRZDsMR3=G8e>z^4*bA^L@H?4EPN9Cdy~v>a7bH|7iJ%t8kxdNq(JN zE`XW0j1l!MC(l;yzuY7rDkIjo0I8Ap^@7w8)F@SMYF5cu*W6_6dsse}DZw?M*1ksw zTM4!%W9bufEikf#I@njFUr1`X?s8ba5Qhya7l<7$-Rmm>sZsI0mFQpT3Y6WUWYw_i zi%ZWT3egTtlyUeGE^W@~uTiPjamGJh{m!IJ08g5I_`lwsO0LX3e&M_-96owisRYa2GC&^)`M-aJ?SVh-8b_#a-u@e3W zdTW(vNt#&;Cw5q@mE*dnMn!Ps@dA+d1%D1cOCPFw;96p6lE;2R(Y Q{F3sSow3A~8DEb5KZhe9e*gdg literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/box.tas-run.json b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/box.tas-run.json new file mode 100644 index 00000000..1eeb3c1d --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/box.tas-run.json @@ -0,0 +1,702 @@ +{ + "schema": "sam-ui.tas-run/1", + "id": "97d5745e", + "status": "Succeeded", + "startedUtc": "2026-10-20T05:24:48.7418143Z", + "finishedUtc": "2026-10-20T05:25:09.8195872Z", + "durationSeconds": 21.078, + "sourcePath": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\box-aperture.json", + "projectName": "box", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "outputs": { + "directory": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out", + "tbd": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out\\box.tbd", + "tsd": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out\\box.tsd" + }, + "refusal": null, + "failure": null, + "notes": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Tas", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Tas", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Tas.dll", + "sha256": "sha256:c4f19541b888298349390af2eaef795efbd8929b1ef8dfd542e09f753987e44a" + } + ] + }, + "engine": { + "comServer": "TBD.Document", + "executable": { + "path": "C:\\Program Files\\Environmental Design Solutions Ltd\\Tas\\TBD.exe", + "sha256": "sha256:aa658fcdeec8f5e3acbd64523376b5a7362c499beecc280715edca64851e49ae", + "fileVersion": "2, 0, 0, 1", + "productVersion": "9.5.7.0" + }, + "version": "9.5.7.0" + }, + "weather": { + "source": "Embedded", + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b", + "contentHashOf": "the SAM WeatherData JSON given to TAS without its own Guid, canonical JSON v1 (SAM_Validation)", + "file": "unknown" + }, + "designDays": { + "source": "DerivedFromWeather", + "heating": [ + "Budapest.Met.Center ANN HTG 100% CONDS DB" + ], + "cooling": [ + "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad" + ], + "usedForSizing": true + }, + "settings": { + "inputs": { + "simulate": true, + "fullYearSimulation": true, + "fullYearSimulationFrom": 1, + "fullYearSimulationTo": 365, + "sizing": true, + "unmetHours": false, + "useWidths": false, + "solarCalculationMethod": "TAS", + "directT3D": false, + "updateConstructionLayersByPanelType": true, + "createTM59": false, + "createSAP": false, + "createTPD": false, + "createPartL": false, + "printRoomDataSheets": false, + "zoneCategory": "(none)" + }, + "workflow": { + "_type": "SAM.Analytical.Tas.WorkflowSettings,SAM.Analytical.Tas", + "Path_TBD": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out\\box.tbd", + "Path_gbXML": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out\\box.xml", + "T3DRoute": "GbXML", + "WeatherData": { + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b" + }, + "DesignDays_Heating": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + -16.3, + -16.5, + -16.6, + -16.3, + -15.4, + -15.2, + -16.1, + -16.2, + -15.9, + -14.5, + -15.2, + -13.5, + -14.4, + -14.5, + -14.5, + -15, + -15.8, + -15.1, + -14.1, + -13.8, + -13.8, + -13, + -12.8, + -14.6 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN HTG 100% CONDS DB", + "Description": "Heating Design Day automated :) \n *calculated from weather data as day with min temp - single value and its wind speed all remaining values are zero", + "Year": 2018, + "Month": 2, + "Day": 8 + } + ], + "DesignDays_Cooling": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + 21.1, + 21.7, + 22.4, + 22.6, + 23.1, + 23.8, + 22.1, + 23.9, + 25.6, + 27.2, + 28.9, + 30.6, + 32.2, + 33.9, + 33.2, + 32.6, + 32, + 31.3, + 24.4, + 23.3, + 22.8, + 22.9, + 23, + 23.1 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + 19.1, + 19.6, + 20, + 20.7, + 20.4, + 20.1, + 21.9, + 19.4, + 18.9, + 18.3, + 17.8, + 17.2, + 16.6, + 16.1, + 15.7, + 15.1, + 14.6, + 14, + 24.2, + 23.2, + 21.7, + 20.7, + 19.5, + 18.7 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 89, + 88, + 86, + 89, + 85, + 80, + 100, + 76, + 66, + 58, + 51, + 45, + 39, + 35, + 35, + 35, + 35, + 35, + 99, + 99, + 93, + 87, + 80, + 76 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 99788, + 99758, + 99718, + 99733, + 99677, + 99631, + 99825, + 99544, + 99514, + 99484, + 99455, + 99425, + 99395, + 99365, + 99333, + 99300, + 99267, + 99235, + 99709, + 99788, + 99829, + 99830, + 99830, + 99831 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 101, + 141, + 251, + 523, + 739, + 851, + 903, + 896, + 835, + 680, + 501, + 357, + 208, + 71, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 83, + 123, + 200, + 259, + 205, + 154, + 177, + 211, + 193, + 230, + 243, + 179, + 120, + 49, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 140, + 138, + 159, + 198, + 177, + 195, + 168, + 84, + 263, + 204, + 23, + 77, + 315, + 164, + 277, + 95, + 27, + 292, + 97, + 160, + 79, + 147, + 74, + 40 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 1, + 1, + 1, + 1, + 0.8, + 0.5, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.8, + 1.5, + 2.3, + 3.1, + 3.8, + 4.6, + 4.6, + 4.6, + 4.6, + 4.6 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad", + "Description": "Cooling Design Day automated :) \n *calculated from weather data as day with max temp and then radation replaced from max global radation day and cloud cover removed", + "Year": 2018, + "Month": 7, + "Day": 1 + } + ], + "SurfaceOutputSpecs": [ + { + "_type": "SAM.Core.Tas.SurfaceOutputSpec,SAM.Core.Tas", + "Name": "Tas.Simulate", + "Guid": "2167c7d8-ddc1-4201-83a9-45da69102e5d", + "ApertureData": true, + "Condensation": false, + "Convection": false, + "SolarGain": true, + "Conduction": true, + "LongWave": false, + "Temperature": true + } + ], + "UnmetHours": false, + "Simulate": true, + "Sizing": true, + "UpdateZones": true, + "UseWidths": false, + "AddIZAMs": true, + "RemoveIZAMs": false, + "RemoveMechanicalVentilationGains": false, + "SimulateFrom": 1, + "SimulateTo": 365, + "RemoveExistingTBD": false, + "UpdateWindowPositionType": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.Tas].informationalVersion": "the assembly carries no InformationalVersion", + "weather.file": "the weather is the model\u0027s embedded WeatherData, not a file; contentSha256 identifies it" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/case-folder.txt b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/case-folder.txt new file mode 100644 index 00000000..dc3b5db3 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/case-folder.txt @@ -0,0 +1,8 @@ + +0 . +0 .. +507507 box-aperture.json +926 cmp-S1-vs-c1.json +3555 driver-console.txt +0 evidence +0 out diff --git a/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/cmp-S1-vs-c1.json b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/cmp-S1-vs-c1.json new file mode 100644 index 00000000..10f73643 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/cmp-S1-vs-c1.json @@ -0,0 +1,19 @@ +{ + "criterion": "Exact equality of every numeric leaf of persisted simulation parameters, aligned by result type/name/load type and surface reference. No tolerance. Run-generated identities and timestamps are metadata.", + "baseline": "C:\\TasOut\\s01b\\runs\\S1-base-es-success\\out\\box.json", + "candidate": "C:\\TasOut\\s05\\runs\\c1-tas-run-simulation\\out\\box.json", + "baselineCounts": { + "SAM.Analytical.SpaceSimulationResult": 2, + "SAM.Analytical.SurfaceSimulationResult": 28 + }, + "candidateCounts": { + "SAM.Analytical.SpaceSimulationResult": 2, + "SAM.Analytical.SurfaceSimulationResult": 28 + }, + "baselineNumbers": 602, + "candidateNumbers": 602, + "exactMatch": true, + "differences": [ + + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/message-box.txt b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/message-box.txt new file mode 100644 index 00000000..d11c6722 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c1-tas-run-simulation/message-box.txt @@ -0,0 +1,3 @@ +Title: +Model successfuly converted. + Time elapsed: 0min21sec diff --git a/documentation/evidence/s05-20261020/cases/c2-attempt1-harness-folder-click/case-folder.txt b/documentation/evidence/s05-20261020/cases/c2-attempt1-harness-folder-click/case-folder.txt new file mode 100644 index 00000000..950f2265 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c2-attempt1-harness-folder-click/case-folder.txt @@ -0,0 +1,6 @@ + +0 . +0 .. +507507 box-aperture.json +2072 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/case-folder.txt b/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/case-folder.txt new file mode 100644 index 00000000..cd271b64 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/case-folder.txt @@ -0,0 +1,6 @@ + +0 . +0 .. +507507 box-aperture.json +1933 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/harness-epw-typing.txt b/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/harness-epw-typing.txt new file mode 100644 index 00000000..7c6cf0c5 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c2-attempt2-harness-sandbox-desktop/harness-epw-typing.txt @@ -0,0 +1,3 @@ +Title: Location is not available + + diff --git a/documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/04-summary.png b/documentation/evidence/s05-20261020/cases/c2-openstudio-explicit/04-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..3d434e2317d7b18aa54824b58e8a8e4f03207241 GIT binary patch literal 18808 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 Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 21 s, log C:\TasOut\s05\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 6.6 s, log C:\TasOut\s05\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/engine-comparison-run.json new file mode 100644 index 00000000..a1899a2e --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "48f88268", + "status": "Compared", + "startedUtc": "2026-10-20T05:40:48.8423401Z", + "finishedUtc": "2026-10-20T05:41:16.8778057Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.958, + "log": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 6.646, + "log": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\comparison.md", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054048_48f88268\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/run-folder-TasOpenStudio_20261020-054048_48f88268.txt b/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/run-folder-TasOpenStudio_20261020-054048_48f88268.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3a-both-explicit-session1/run-folder-TasOpenStudio_20261020-054048_48f88268.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-OpenStudio.json new file mode 100644 index 00000000..c2cac354 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-OpenStudio.json @@ -0,0 +1,140 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:42:12.6266397Z", + "durationSeconds": 5.3232893, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + }, + "model": { + "consumptionHeating": { + "value": 2173.9185033546732, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 4556.226212241192, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 3.2591834042717536, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.332620570657522, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 3259.1834042717537, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 5332.620570657522, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-TAS.json new file mode 100644 index 00000000..3dde91bb --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/benchmark-TAS.json @@ -0,0 +1,136 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:41:51.0254363Z", + "durationSeconds": 19.5807316, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 220.62682055425643, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 5540.314465834558, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.4238231201171876, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 775, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 3.126279052734375, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3901, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1927.0106201171875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1926.94873046875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 3415.618896484375, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 3415.45556640625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/case-folder.txt b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/case-folder.txt new file mode 100644 index 00000000..33132497 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7 +507507 box-aperture.json +4666 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison-summary.json new file mode 100644 index 00000000..a3601804 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison-summary.json @@ -0,0 +1,627 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Warn", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 6, + "warn": 0, + "fail": 10, + "notApplicable": 2 + }, + "coverage": { + "status": "Warn", + "requiredMetricCount": 18, + "comparableMetricCount": 16, + "unavailableRequiredMetricCount": 2, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:41:51.0254363Z", + "durationSeconds": 19.5807316, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:42:12.6266397Z", + "durationSeconds": 5.3232893, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 220.62682055425643, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 2173.9185033546732, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 1953.2916828004168, + "relativeDifference": 0.8985119174367405, + "signedDifference": 1953.2916828004168 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5540.314465834558, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 4556.226212241192, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 984.0882535933661, + "relativeDifference": 0.17762317638501215, + "signedDifference": -984.0882535933661 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.4238231201171876, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 3.2591834042717536, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 1.835360284154566, + "relativeDifference": 0.5631350115949265, + "signedDifference": 1.835360284154566 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 775, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1080, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3.126279052734375, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 5.332620570657522, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 2.2063415179231467, + "relativeDifference": 0.4137443286446125, + "signedDifference": 2.2063415179231467 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3901, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1128, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "tasName": "Office", + "openStudioName": "Office", + "matchKind": "Guid", + "metrics": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 1927.0106201171875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1926.94873046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 3259.1834042717537, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1332.2346738030037, + "relativeDifference": 0.408763333802224, + "signedDifference": 1332.2346738030037 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1241, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 3415.618896484375, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3415.45556640625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 5332.620570657522, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1917.165004251272, + "relativeDifference": 0.3595164851593561, + "signedDifference": 1917.165004251272 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 1, + "openStudioCount": 1, + "matchedByGuid": 1, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison.csv b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison.csv new file mode 100644 index 00000000..9cc7c3cd --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/comparison.csv @@ -0,0 +1,19 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,220.62682055425643,2173.9185033546732,1953.2916828004168,0.8985119174367405,89.85119174367405,1953.2916828004168,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,5540.314465834558,4556.226212241192,984.0882535933661,0.17762317638501215,17.762317638501216,-984.0882535933661,Fail,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.4238231201171876,3.2591834042717536,1.835360284154566,0.5631350115949265,56.31350115949265,1.835360284154566,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,775,8455,1080,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,3.126279052734375,5.332620570657522,2.2063415179231467,0.4137443286446125,41.374432864461255,2.2063415179231467,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3901,5029,1128,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,area,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,heating.designLoad,W,TasOnly,1927.0106201171875,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakLoad,W,Both,1926.94873046875,3259.1834042717537,1332.2346738030037,0.408763333802224,40.8763333802224,1332.2346738030037,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakHour,hourOfYear,Both,936,8455,1241,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +cb68bed195af496bb255a13ffa5c58e9,cooling.designLoad,W,TasOnly,3415.618896484375,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakLoad,W,Both,3415.45556640625,5332.620570657522,1917.165004251272,0.3595164851593561,35.95164851593561,1917.165004251272,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/diagnostics.txt b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/diagnostics.txt new file mode 100644 index 00000000..b3530a51 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 21.3 s, log C:\TasOut\s05\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 7.5 s, log C:\TasOut\s05\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/engine-comparison-run.json new file mode 100644 index 00000000..2ceb2f81 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "1d63d4f7", + "status": "Compared", + "startedUtc": "2026-10-20T05:41:50.0566200Z", + "finishedUtc": "2026-10-20T05:42:19.3370897Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 21.297, + "log": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 7.496, + "log": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\comparison.md", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054150_1d63d4f7\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/run-folder-TasOpenStudio_20261020-054150_1d63d4f7.txt b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/run-folder-TasOpenStudio_20261020-054150_1d63d4f7.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c3b-both-explicit-session2/run-folder-TasOpenStudio_20261020-054150_1d63d4f7.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-OpenStudio.json new file mode 100644 index 00000000..f87352c3 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-OpenStudio.json @@ -0,0 +1,140 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:43:05.1896039Z", + "durationSeconds": 4.7303882, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + }, + "model": { + "consumptionHeating": { + "value": 2081.898258221715, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 4731.6249445886115, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 3.1898434973694196, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.3905924182132985, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 3189.8434973694198, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 5390.5924182132985, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-TAS.json new file mode 100644 index 00000000..374263ac --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/benchmark-TAS.json @@ -0,0 +1,136 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:42:44.4153865Z", + "durationSeconds": 18.8313655, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 220.62682055425643, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 5540.314465834558, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.4238231201171876, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 775, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 3.126279052734375, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3901, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1927.0106201171875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1926.94873046875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 3415.618896484375, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 3415.45556640625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/case-folder.txt b/documentation/evidence/s05-20261020/cases/c4-both-embedded/case-folder.txt new file mode 100644 index 00000000..b16f7b1b --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579 +507507 box-aperture.json +4515 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison-summary.json new file mode 100644 index 00000000..cb571f53 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison-summary.json @@ -0,0 +1,627 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Warn", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 6, + "warn": 1, + "fail": 9, + "notApplicable": 2 + }, + "coverage": { + "status": "Warn", + "requiredMetricCount": 18, + "comparableMetricCount": 16, + "unavailableRequiredMetricCount": 2, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:42:44.4153865Z", + "durationSeconds": 18.8313655, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:43:05.1896039Z", + "durationSeconds": 4.7303882, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 220.62682055425643, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 2081.898258221715, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 1861.2714376674585, + "relativeDifference": 0.8940261275098486, + "signedDifference": 1861.2714376674585 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Warn", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5540.314465834558, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 4731.6249445886115, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 808.6895212459467, + "relativeDifference": 0.14596455241537104, + "signedDifference": -808.6895212459467 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.4238231201171876, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 3.1898434973694196, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 1.766020377252232, + "relativeDifference": 0.5536385652489292, + "signedDifference": 1.766020377252232 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 775, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1080, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3.126279052734375, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 5.3905924182132985, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 2.2643133654789236, + "relativeDifference": 0.42004907620699433, + "signedDifference": 2.2643133654789236 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3901, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1128, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "tasName": "Office", + "openStudioName": "Office", + "matchKind": "Guid", + "metrics": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 1927.0106201171875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1926.94873046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 3189.8434973694198, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1262.8947669006698, + "relativeDifference": 0.3959112000140903, + "signedDifference": 1262.8947669006698 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1241, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 3415.618896484375, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3415.45556640625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 5390.5924182132985, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1975.1368518070485, + "relativeDifference": 0.36640441320208433, + "signedDifference": 1975.1368518070485 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 1, + "openStudioCount": 1, + "matchedByGuid": 1, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison.csv b/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison.csv new file mode 100644 index 00000000..8a383ea1 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/comparison.csv @@ -0,0 +1,19 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,220.62682055425643,2081.898258221715,1861.2714376674585,0.8940261275098486,89.40261275098486,1861.2714376674585,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,5540.314465834558,4731.6249445886115,808.6895212459467,0.14596455241537104,14.596455241537104,-808.6895212459467,Warn,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.4238231201171876,3.1898434973694196,1.766020377252232,0.5536385652489292,55.36385652489292,1.766020377252232,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,775,8455,1080,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,3.126279052734375,5.3905924182132985,2.2643133654789236,0.42004907620699433,42.004907620699434,2.2643133654789236,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3901,5029,1128,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,area,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,heating.designLoad,W,TasOnly,1927.0106201171875,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakLoad,W,Both,1926.94873046875,3189.8434973694198,1262.8947669006698,0.3959112000140903,39.59112000140903,1262.8947669006698,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakHour,hourOfYear,Both,936,8455,1241,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +cb68bed195af496bb255a13ffa5c58e9,cooling.designLoad,W,TasOnly,3415.618896484375,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakLoad,W,Both,3415.45556640625,5390.5924182132985,1975.1368518070485,0.36640441320208433,36.64044132020843,1975.1368518070485,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/diagnostics.txt b/documentation/evidence/s05-20261020/cases/c4-both-embedded/diagnostics.txt new file mode 100644 index 00000000..1c4e6ba6 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 1 warn, 9 fail (3 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 1 warn, 9 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 20.5 s, log C:\TasOut\s05\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 7 s, log C:\TasOut\s05\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c4-both-embedded/engine-comparison-run.json new file mode 100644 index 00000000..7b36f1cb --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/engine-comparison-run.json @@ -0,0 +1,232 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "0850a579", + "status": "Compared", + "startedUtc": "2026-10-20T05:42:43.3272327Z", + "finishedUtc": "2026-10-20T05:43:11.4277726Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "Embedded", + "path": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\weather.epw", + "sha256": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.535, + "log": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 7.007, + "log": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\comparison.md", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054243_0850a579\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "Embedded", + "sha256": "sha256:5afbeb329bea4ce807f402f095fbc695f7fce8a2a29aa6c7b0d93a31a0063082", + "originalPath": "unknown" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "weather.originalPath": "the weather is the model\u0027s embedded WeatherData, exported to EPW once for both producers; sha256 identifies the exported file", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c4-both-embedded/run-folder-TasOpenStudio_20261020-054243_0850a579.txt b/documentation/evidence/s05-20261020/cases/c4-both-embedded/run-folder-TasOpenStudio_20261020-054243_0850a579.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c4-both-embedded/run-folder-TasOpenStudio_20261020-054243_0850a579.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-OpenStudio.json new file mode 100644 index 00000000..c97c19d7 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-OpenStudio.json @@ -0,0 +1,202 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:44:43.3937215Z", + "durationSeconds": 5.5837984, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) \u2192 SAM_InternalCondition_S37_OfficeCell_950dd279", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly humidity profile was approximated as a constant dew point (13.8 \u00B0C) from 31% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly humidity profile was approximated as a constant dew point (-8.9 \u00B0C) from 55% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)" + ] + }, + "model": { + "consumptionHeating": { + "value": 32586.624958703087, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 3928.4621857377015, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 17.98919781223135, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 22.221319656078137, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 80, + "unit": "m2", + "available": true + }, + "volume": { + "value": 240, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "36181d863fae4cd999a7397be71f1147", + "name": "Cell 1", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 742.7775192618877, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 8986.196025194962, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2733.000340122116, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 11119.755912860499, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + }, + { + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "name": "Cell 2", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 742.6694335805023, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 9003.001787036388, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2697.479436878951, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 11101.563743217635, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-TAS.json new file mode 100644 index 00000000..2247426f --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/benchmark-TAS.json @@ -0,0 +1,194 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:44:19.1666482Z", + "durationSeconds": 22.3211706, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 250.31320778632164, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 9895.84994206661, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.866144775390625, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.26841064453125, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3902, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 80, + "unit": "m2", + "available": true + }, + "volume": { + "value": 240, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "36181d863fae4cd999a7397be71f1147", + "name": "Cell 1", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1423.5592041015625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1423.5155029296875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2915.32373046875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 2915.218017578125, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + }, + { + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "name": "Cell 2", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1423.5572509765625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1423.5166015625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2614.4775390625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 2614.3857421875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4359, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/case-folder.txt b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/case-folder.txt new file mode 100644 index 00000000..3ccbda94 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309 +5726 driver-console.txt +0 evidence +109908 two-cell.sam diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison-summary.json new file mode 100644 index 00000000..5f07d5ba --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison-summary.json @@ -0,0 +1,870 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Pass", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 12, + "warn": 3, + "fail": 13, + "notApplicable": 0 + }, + "coverage": { + "status": "Pass", + "requiredMetricCount": 28, + "comparableMetricCount": 28, + "unavailableRequiredMetricCount": 0, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:44:19.1666482Z", + "durationSeconds": 22.3211706, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:44:43.3937215Z", + "durationSeconds": 5.5837984, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) \u2192 SAM_InternalCondition_S37_OfficeCell_950dd279", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly humidity profile was approximated as a constant dew point (13.8 \u00B0C) from 31% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly humidity profile was approximated as a constant dew point (-8.9 \u00B0C) from 55% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 250.31320778632164, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 32586.624958703087, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 32336.311750916764, + "relativeDifference": 0.9923185292093445, + "signedDifference": 32336.311750916764 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 9895.84994206661, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 3928.4621857377015, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 5967.387756328909, + "relativeDifference": 0.6030192243479697, + "signedDifference": -5967.387756328909 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.866144775390625, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 17.98919781223135, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 16.123053036840723, + "relativeDifference": 0.8962630354688865, + "signedDifference": 16.123053036840723 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Match", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 0, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5.26841064453125, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 22.221319656078137, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 16.952909011546886, + "relativeDifference": 0.7629118915496004, + "signedDifference": 16.952909011546886 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3902, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1127, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 80, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 80, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 240, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 240, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "36181d863fae4cd999a7397be71f1147", + "guid": "36181d863fae4cd999a7397be71f1147", + "tasName": "Cell 1", + "openStudioName": "Cell 1", + "matchKind": "Guid", + "metrics": [ + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 40, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 40, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 120, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 120, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.designLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5592041015625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 742.7775192618877, + "available": true, + "unit": "W" + }, + "absoluteDifference": 680.7816848396748, + "relativeDifference": 0.47822505932890236, + "signedDifference": -680.7816848396748 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5155029296875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 8986.196025194962, + "available": true, + "unit": "W" + }, + "absoluteDifference": 7562.680522265275, + "relativeDifference": 0.8415886434105689, + "signedDifference": 7562.680522265275 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Warn", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 17, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.designLoad", + "unit": "W", + "availability": "Both", + "band": "Warn", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2915.32373046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 2733.000340122116, + "available": true, + "unit": "W" + }, + "absoluteDifference": 182.32339034663391, + "relativeDifference": 0.06253967216097762, + "signedDifference": -182.32339034663391 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2915.218017578125, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 11119.755912860499, + "available": true, + "unit": "W" + }, + "absoluteDifference": 8204.537895282374, + "relativeDifference": 0.7378343517229057, + "signedDifference": 8204.537895282374 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "tasName": "Cell 2", + "openStudioName": "Cell 2", + "matchKind": "Guid", + "metrics": [ + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 40, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 40, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 120, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 120, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.designLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5572509765625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 742.6694335805023, + "available": true, + "unit": "W" + }, + "absoluteDifference": 680.8878173960602, + "relativeDifference": 0.47830026992519625, + "signedDifference": -680.8878173960602 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5166015625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 9003.001787036388, + "available": true, + "unit": "W" + }, + "absoluteDifference": 7579.485185473888, + "relativeDifference": 0.841884225368893, + "signedDifference": 7579.485185473888 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Warn", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 17, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.designLoad", + "unit": "W", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2614.4775390625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 2697.479436878951, + "available": true, + "unit": "W" + }, + "absoluteDifference": 83.00189781645122, + "relativeDifference": 0.03077016887753792, + "signedDifference": 83.00189781645122 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2614.3857421875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 11101.563743217635, + "available": true, + "unit": "W" + }, + "absoluteDifference": 8487.178001030135, + "relativeDifference": 0.7645029292576258, + "signedDifference": 8487.178001030135 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4359, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 670, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 2, + "openStudioCount": 2, + "matchedByGuid": 2, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 80, + "modelTotalAvailable": true, + "sumOfSpaces": 80, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 240, + "modelTotalAvailable": true, + "sumOfSpaces": 240, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 80, + "modelTotalAvailable": true, + "sumOfSpaces": 80, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 240, + "modelTotalAvailable": true, + "sumOfSpaces": 240, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison.csv b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison.csv new file mode 100644 index 00000000..ac050262 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/comparison.csv @@ -0,0 +1,29 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,250.31320778632164,32586.624958703087,32336.311750916764,0.9923185292093445,99.23185292093444,32336.311750916764,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,9895.84994206661,3928.4621857377015,5967.387756328909,0.6030192243479697,60.30192243479697,-5967.387756328909,Fail,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.866144775390625,17.98919781223135,16.123053036840723,0.8962630354688865,89.62630354688865,16.123053036840723,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,919,919,0,,,,Match,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,5.26841064453125,22.221319656078137,16.952909011546886,0.7629118915496004,76.29118915496004,16.952909011546886,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3902,5029,1127,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,80,80,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,240,240,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,area,m2,Both,40,40,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,volume,m3,Both,120,120,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,heating.designLoad,W,Both,1423.5592041015625,742.7775192618877,680.7816848396748,0.47822505932890236,47.82250593289024,-680.7816848396748,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,heating.peakLoad,W,Both,1423.5155029296875,8986.196025194962,7562.680522265275,0.8415886434105689,84.1588643410569,7562.680522265275,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,heating.peakHour,hourOfYear,Both,936,919,17,,,,Warn,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +36181d863fae4cd999a7397be71f1147,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +36181d863fae4cd999a7397be71f1147,cooling.designLoad,W,Both,2915.32373046875,2733.000340122116,182.32339034663391,0.06253967216097762,6.253967216097762,-182.32339034663391,Warn,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,cooling.peakLoad,W,Both,2915.218017578125,11119.755912860499,8204.537895282374,0.7378343517229057,73.78343517229057,8204.537895282374,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +36181d863fae4cd999a7397be71f1147,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +ac7a101a974e4f48962092d649ccf0ad,area,m2,Both,40,40,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +ac7a101a974e4f48962092d649ccf0ad,volume,m3,Both,120,120,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +ac7a101a974e4f48962092d649ccf0ad,heating.designLoad,W,Both,1423.5572509765625,742.6694335805023,680.8878173960602,0.47830026992519625,47.83002699251963,-680.8878173960602,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,heating.peakLoad,W,Both,1423.5166015625,9003.001787036388,7579.485185473888,0.841884225368893,84.18842253688929,7579.485185473888,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,heating.peakHour,hourOfYear,Both,936,919,17,,,,Warn,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +ac7a101a974e4f48962092d649ccf0ad,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +ac7a101a974e4f48962092d649ccf0ad,cooling.designLoad,W,Both,2614.4775390625,2697.479436878951,83.00189781645122,0.03077016887753792,3.0770168877537922,83.00189781645122,Match,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,cooling.peakLoad,W,Both,2614.3857421875,11101.563743217635,8487.178001030135,0.7645029292576258,76.45029292576257,8487.178001030135,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,cooling.peakHour,hourOfYear,Both,4359,5029,670,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +ac7a101a974e4f48962092d649ccf0ad,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/diagnostics.txt b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/diagnostics.txt new file mode 100644 index 00000000..a39735e2 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/diagnostics.txt @@ -0,0 +1,32 @@ +Banner: Gate Fail: 12 match, 3 warn, 13 fail (8 contributing to numerical status, 5 informational and excluded); 0 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 2 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Pass, provenance Pass, reconciliation Pass) +Metrics: 12 match, 3 warn, 13 fail, 0 N/A; 28 of 28 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 2, OpenStudio 2; matched by GUID 2, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 80, sum of 2 spaces 80 m2 -> Match + TAS volume: model 240, sum of 2 spaces 240 m3 -> Match + OpenStudio floorArea: model 80, sum of 2 spaces 80 m2 -> Match + OpenStudio volume: model 240, sum of 2 spaces 240 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) → SAM_InternalCondition_S37_OfficeCell_950dd279 + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=>GRad': the hourly humidity profile was approximated as a constant dew point (13.8 °C) from 31% RH at the maximum-dry-bulb hour + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=>GRad': the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB': the hourly humidity profile was approximated as a constant dew point (-8.9 °C) from 55% RH at the maximum-dry-bulb hour + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB': the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c6a-multizone-both-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 24 s, log C:\TasOut\s05\runs\c6a-multizone-both-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 8.9 s, log C:\TasOut\s05\runs\c6a-multizone-both-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c6a-multizone-both-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/engine-comparison-run.json new file mode 100644 index 00000000..0a005bd8 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "cf022309", + "status": "Compared", + "startedUtc": "2026-10-20T05:44:18.1627020Z", + "finishedUtc": "2026-10-20T05:44:51.6211360Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\two-cell.sam", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\snapshot.json", + "sha256": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 24.029, + "log": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 8.929, + "log": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\comparison.md", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c6a-multizone-both-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054418_cf022309\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/run-folder-TasOpenStudio_20261020-054418_cf022309.txt b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/run-folder-TasOpenStudio_20261020-054418_cf022309.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6a-multizone-both-session1/run-folder-TasOpenStudio_20261020-054418_cf022309.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-OpenStudio.json new file mode 100644 index 00000000..e112462a --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-OpenStudio.json @@ -0,0 +1,202 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:45:50.677093Z", + "durationSeconds": 6.3495347, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) \u2192 SAM_InternalCondition_S37_OfficeCell_950dd279", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly humidity profile was approximated as a constant dew point (13.8 \u00B0C) from 31% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly humidity profile was approximated as a constant dew point (-8.9 \u00B0C) from 55% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)" + ] + }, + "model": { + "consumptionHeating": { + "value": 32586.624958690154, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 3928.4621856845138, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 17.98919781226556, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 22.22131965605325, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 80, + "unit": "m2", + "available": true + }, + "volume": { + "value": 240, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "36181d863fae4cd999a7397be71f1147", + "name": "Cell 1", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 742.777519282341, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 8986.196025213874, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2733.0003400824153, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 11119.755912844083, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + }, + { + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "name": "Cell 2", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 742.669433603851, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 9003.001787051686, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2697.4794368746548, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 11101.563743209164, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-TAS.json new file mode 100644 index 00000000..5e04f789 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/benchmark-TAS.json @@ -0,0 +1,194 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:45:25.8545522Z", + "durationSeconds": 23.0974819, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 250.31320778632164, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 9895.84994206661, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.866144775390625, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 919, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.26841064453125, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3902, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 80, + "unit": "m2", + "available": true + }, + "volume": { + "value": 240, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "36181d863fae4cd999a7397be71f1147", + "name": "Cell 1", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1423.5592041015625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1423.5155029296875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2915.32373046875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 2915.218017578125, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + }, + { + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "name": "Cell 2", + "area": { + "value": 40, + "unit": "m2", + "available": true + }, + "volume": { + "value": 120, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1423.5572509765625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1423.5166015625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 2614.4775390625, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 2614.3857421875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4359, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/case-folder.txt b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/case-folder.txt new file mode 100644 index 00000000..c4e99c5e --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc +5726 driver-console.txt +0 evidence +109908 two-cell.sam diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison-summary.json new file mode 100644 index 00000000..eb60e530 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison-summary.json @@ -0,0 +1,870 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Pass", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 12, + "warn": 3, + "fail": 13, + "notApplicable": 0 + }, + "coverage": { + "status": "Pass", + "requiredMetricCount": 28, + "comparableMetricCount": 28, + "unavailableRequiredMetricCount": 0, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:45:25.8545522Z", + "durationSeconds": 23.0974819, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "b74990da73b240978846cc12560be0aa", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "runTimestampUtc": "2026-10-20T05:45:50.677093Z", + "durationSeconds": 6.3495347, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) \u2192 SAM_InternalCondition_S37_OfficeCell_950dd279", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly humidity profile was approximated as a constant dew point (13.8 \u00B0C) from 31% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=\u003EGRad\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly humidity profile was approximated as a constant dew point (-8.9 \u00B0C) from 55% RH at the maximum-dry-bulb hour", + "[SAM-OS-RUN-002] Warning: Embedded design day \u0027London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB\u0027: the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 250.31320778632164, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 32586.624958690154, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 32336.31175090383, + "relativeDifference": 0.9923185292093415, + "signedDifference": 32336.31175090383 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 9895.84994206661, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 3928.4621856845138, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 5967.387756382097, + "relativeDifference": 0.6030192243533445, + "signedDifference": -5967.387756382097 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.866144775390625, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 17.98919781226556, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 16.123053036874932, + "relativeDifference": 0.8962630354690838, + "signedDifference": 16.123053036874932 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Match", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 0, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5.26841064453125, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 22.22131965605325, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 16.952909011522, + "relativeDifference": 0.7629118915493348, + "signedDifference": 16.952909011522 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3902, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1127, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 80, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 80, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 240, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 240, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "36181d863fae4cd999a7397be71f1147", + "guid": "36181d863fae4cd999a7397be71f1147", + "tasName": "Cell 1", + "openStudioName": "Cell 1", + "matchKind": "Guid", + "metrics": [ + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 40, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 40, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 120, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 120, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.designLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5592041015625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 742.777519282341, + "available": true, + "unit": "W" + }, + "absoluteDifference": 680.7816848192215, + "relativeDifference": 0.4782250593145347, + "signedDifference": -680.7816848192215 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5155029296875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 8986.196025213874, + "available": true, + "unit": "W" + }, + "absoluteDifference": 7562.680522284187, + "relativeDifference": 0.8415886434109023, + "signedDifference": 7562.680522284187 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Warn", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 17, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.designLoad", + "unit": "W", + "availability": "Both", + "band": "Warn", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2915.32373046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 2733.0003400824153, + "available": true, + "unit": "W" + }, + "absoluteDifference": 182.32339038633472, + "relativeDifference": 0.06253967217459559, + "signedDifference": -182.32339038633472 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2915.218017578125, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 11119.755912844083, + "available": true, + "unit": "W" + }, + "absoluteDifference": 8204.537895265958, + "relativeDifference": 0.7378343517225187, + "signedDifference": 8204.537895265958 + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "36181d863fae4cd999a7397be71f1147", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "guid": "ac7a101a974e4f48962092d649ccf0ad", + "tasName": "Cell 2", + "openStudioName": "Cell 2", + "matchKind": "Guid", + "metrics": [ + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 40, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 40, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 120, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 120, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.designLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5572509765625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 742.669433603851, + "available": true, + "unit": "W" + }, + "absoluteDifference": 680.8878173727115, + "relativeDifference": 0.47830026990879465, + "signedDifference": -680.8878173727115 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1423.5166015625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 9003.001787051686, + "available": true, + "unit": "W" + }, + "absoluteDifference": 7579.485185489186, + "relativeDifference": 0.8418842253691615, + "signedDifference": 7579.485185489186 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Warn", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 919, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 17, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.designLoad", + "unit": "W", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2614.4775390625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 2697.4794368746548, + "available": true, + "unit": "W" + }, + "absoluteDifference": 83.00189781215477, + "relativeDifference": 0.030770168875994163, + "signedDifference": 83.00189781215477 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 2614.3857421875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 11101.563743209164, + "available": true, + "unit": "W" + }, + "absoluteDifference": 8487.178001021664, + "relativeDifference": 0.7645029292574461, + "signedDifference": 8487.178001021664 + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4359, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 670, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "ac7a101a974e4f48962092d649ccf0ad", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 2, + "openStudioCount": 2, + "matchedByGuid": 2, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 80, + "modelTotalAvailable": true, + "sumOfSpaces": 80, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 240, + "modelTotalAvailable": true, + "sumOfSpaces": 240, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 80, + "modelTotalAvailable": true, + "sumOfSpaces": 80, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 240, + "modelTotalAvailable": true, + "sumOfSpaces": 240, + "contributingSpaces": 2, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison.csv b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison.csv new file mode 100644 index 00000000..f9aa629d --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/comparison.csv @@ -0,0 +1,29 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,250.31320778632164,32586.624958690154,32336.31175090383,0.9923185292093415,99.23185292093414,32336.31175090383,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,9895.84994206661,3928.4621856845138,5967.387756382097,0.6030192243533445,60.301922435334454,-5967.387756382097,Fail,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.866144775390625,17.98919781226556,16.123053036874932,0.8962630354690838,89.62630354690837,16.123053036874932,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,919,919,0,,,,Match,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,5.26841064453125,22.22131965605325,16.952909011522,0.7629118915493348,76.29118915493348,16.952909011522,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3902,5029,1127,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,80,80,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,240,240,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,area,m2,Both,40,40,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,volume,m3,Both,120,120,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +36181d863fae4cd999a7397be71f1147,heating.designLoad,W,Both,1423.5592041015625,742.777519282341,680.7816848192215,0.4782250593145347,47.82250593145347,-680.7816848192215,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,heating.peakLoad,W,Both,1423.5155029296875,8986.196025213874,7562.680522284187,0.8415886434109023,84.15886434109024,7562.680522284187,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,heating.peakHour,hourOfYear,Both,936,919,17,,,,Warn,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +36181d863fae4cd999a7397be71f1147,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +36181d863fae4cd999a7397be71f1147,cooling.designLoad,W,Both,2915.32373046875,2733.0003400824153,182.32339038633472,0.06253967217459559,6.253967217459559,-182.32339038633472,Warn,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,cooling.peakLoad,W,Both,2915.218017578125,11119.755912844083,8204.537895265958,0.7378343517225187,73.78343517225187,8204.537895265958,Fail,,default,0.05,0.15,1,24,10,false +36181d863fae4cd999a7397be71f1147,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +36181d863fae4cd999a7397be71f1147,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +ac7a101a974e4f48962092d649ccf0ad,area,m2,Both,40,40,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +ac7a101a974e4f48962092d649ccf0ad,volume,m3,Both,120,120,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +ac7a101a974e4f48962092d649ccf0ad,heating.designLoad,W,Both,1423.5572509765625,742.669433603851,680.8878173727115,0.47830026990879465,47.83002699087947,-680.8878173727115,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,heating.peakLoad,W,Both,1423.5166015625,9003.001787051686,7579.485185489186,0.8418842253691615,84.18842253691615,7579.485185489186,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,heating.peakHour,hourOfYear,Both,936,919,17,,,,Warn,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +ac7a101a974e4f48962092d649ccf0ad,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +ac7a101a974e4f48962092d649ccf0ad,cooling.designLoad,W,Both,2614.4775390625,2697.4794368746548,83.00189781215477,0.030770168875994163,3.077016887599416,83.00189781215477,Match,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,cooling.peakLoad,W,Both,2614.3857421875,11101.563743209164,8487.178001021664,0.7645029292574461,76.4502929257446,8487.178001021664,Fail,,default,0.05,0.15,1,24,10,false +ac7a101a974e4f48962092d649ccf0ad,cooling.peakHour,hourOfYear,Both,4359,5029,670,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +ac7a101a974e4f48962092d649ccf0ad,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/diagnostics.txt b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/diagnostics.txt new file mode 100644 index 00000000..db226ed1 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/diagnostics.txt @@ -0,0 +1,32 @@ +Banner: Gate Fail: 12 match, 3 warn, 13 fail (8 contributing to numerical status, 5 informational and excluded); 0 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 2 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Pass, provenance Pass, reconciliation Pass) +Metrics: 12 match, 3 warn, 13 fail, 0 N/A; 28 of 28 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 2, OpenStudio 2; matched by GUID 2, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 80, sum of 2 spaces 80 m2 -> Match + TAS volume: model 240, sum of 2 spaces 240 m3 -> Match + OpenStudio floorArea: model 80, sum of 2 spaces 80 m2 -> Match + OpenStudio volume: model 240, sum of 2 spaces 240 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition a7560745-3e17-4a82-a7e3-e6f4878feb62) → SAM_InternalCondition_S37_OfficeCell_950dd279 + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=>GRad': the hourly humidity profile was approximated as a constant dew point (13.8 °C) from 31% RH at the maximum-dry-bulb hour + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN CLG 0% CONDS DB=>GRad': the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 1.0; daily dry-bulb range, mean wind/pressure and the SummerDesignDay day type are derived from the SAM hourly profile + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB': the hourly humidity profile was approximated as a constant dew point (-8.9 °C) from 55% RH at the maximum-dry-bulb hour + Warning: [SAM-OS-RUN-002] Warning: Embedded design day 'London.Wea.Ctr-St.James.Park ANN HTG 100% CONDS DB': the hourly solar profile was approximated by the ASHRAEClearSky model with clearness 0.0; daily dry-bulb range, mean wind/pressure and the WinterDesignDay day type are derived from the SAM hourly profile + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Design-day source: AnalyticalModel heating/cooling design days (2 imported) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c6b-multizone-both-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 24.9 s, log C:\TasOut\s05\runs\c6b-multizone-both-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 9 s, log C:\TasOut\s05\runs\c6b-multizone-both-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c6b-multizone-both-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/engine-comparison-run.json new file mode 100644 index 00000000..cff2b1c9 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "7e6722bc", + "status": "Compared", + "startedUtc": "2026-10-20T05:45:24.9298332Z", + "finishedUtc": "2026-10-20T05:45:59.1803598Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\two-cell.sam", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\snapshot.json", + "sha256": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 24.87, + "log": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 8.956, + "log": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\comparison.md", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c6b-multizone-both-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054524_7e6722bc\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "EmbeddedModel", + "sourceFileHash": "sha256:a3b8cff8c90cb5e9827688fe56e244045585420268638c8667b8c11f44507f07", + "canonicalModelHash": "sha256:356dcbed711b91d47a0f391ff306aaa352b102581f6a8f062da4858578026317", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/run-folder-TasOpenStudio_20261020-054524_7e6722bc.txt b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/run-folder-TasOpenStudio_20261020-054524_7e6722bc.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c6b-multizone-both-session2/run-folder-TasOpenStudio_20261020-054524_7e6722bc.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box.tas-run.json b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box.tas-run.json new file mode 100644 index 00000000..6a353fa4 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box.tas-run.json @@ -0,0 +1,702 @@ +{ + "schema": "sam-ui.tas-run/1", + "id": "9fc75fce", + "status": "Failed", + "startedUtc": "2026-10-20T05:46:36.7549046Z", + "finishedUtc": "2026-10-20T05:46:52.6026415Z", + "durationSeconds": 15.848, + "sourcePath": "C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\box-aperture.json", + "projectName": "box", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "outputs": { + "directory": "C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out", + "tbd": "C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box.tbd", + "tsd": null + }, + "refusal": null, + "failure": "TAS return code: 0\nTAS error log: C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box_error_log.txt\nError: Simulating Model: TAS refused the simulation: TBDDocument.simulate returned 0. TAS return code: 0; TAS error log: C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box_error_log.txt. (TAS-SIM-001)\nError: Simulating Model: TAS wrote an error log for this run: C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box_error_log.txt (TAS return code: 0)\r\nError accessing the TSD file for writing (TAS-SIM-001)\nError: Simulating Model: The run produced no output file: C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box.tsd TAS return code: 0; TAS error log: C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box_error_log.txt. (TAS-SIM-001)", + "notes": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Tas", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Tas", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Tas.dll", + "sha256": "sha256:c4f19541b888298349390af2eaef795efbd8929b1ef8dfd542e09f753987e44a" + } + ] + }, + "engine": { + "comServer": "TBD.Document", + "executable": { + "path": "C:\\Program Files\\Environmental Design Solutions Ltd\\Tas\\TBD.exe", + "sha256": "sha256:aa658fcdeec8f5e3acbd64523376b5a7362c499beecc280715edca64851e49ae", + "fileVersion": "2, 0, 0, 1", + "productVersion": "9.5.7.0" + }, + "version": "9.5.7.0" + }, + "weather": { + "source": "Embedded", + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b", + "contentHashOf": "the SAM WeatherData JSON given to TAS without its own Guid, canonical JSON v1 (SAM_Validation)", + "file": "unknown" + }, + "designDays": { + "source": "DerivedFromWeather", + "heating": [ + "Budapest.Met.Center ANN HTG 100% CONDS DB" + ], + "cooling": [ + "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad" + ], + "usedForSizing": true + }, + "settings": { + "inputs": { + "simulate": true, + "fullYearSimulation": true, + "fullYearSimulationFrom": 1, + "fullYearSimulationTo": 365, + "sizing": true, + "unmetHours": false, + "useWidths": false, + "solarCalculationMethod": "TAS", + "directT3D": false, + "updateConstructionLayersByPanelType": true, + "createTM59": false, + "createSAP": false, + "createTPD": false, + "createPartL": false, + "printRoomDataSheets": false, + "zoneCategory": "(none)" + }, + "workflow": { + "_type": "SAM.Analytical.Tas.WorkflowSettings,SAM.Analytical.Tas", + "Path_TBD": "C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box.tbd", + "Path_gbXML": "C:\\TasOut\\s05\\runs\\c7-tas-refusal-energy-simulation\\out\\box.xml", + "T3DRoute": "GbXML", + "WeatherData": { + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b" + }, + "DesignDays_Heating": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + -16.3, + -16.5, + -16.6, + -16.3, + -15.4, + -15.2, + -16.1, + -16.2, + -15.9, + -14.5, + -15.2, + -13.5, + -14.4, + -14.5, + -14.5, + -15, + -15.8, + -15.1, + -14.1, + -13.8, + -13.8, + -13, + -12.8, + -14.6 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN HTG 100% CONDS DB", + "Description": "Heating Design Day automated :) \n *calculated from weather data as day with min temp - single value and its wind speed all remaining values are zero", + "Year": 2018, + "Month": 2, + "Day": 8 + } + ], + "DesignDays_Cooling": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + 21.1, + 21.7, + 22.4, + 22.6, + 23.1, + 23.8, + 22.1, + 23.9, + 25.6, + 27.2, + 28.9, + 30.6, + 32.2, + 33.9, + 33.2, + 32.6, + 32, + 31.3, + 24.4, + 23.3, + 22.8, + 22.9, + 23, + 23.1 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + 19.1, + 19.6, + 20, + 20.7, + 20.4, + 20.1, + 21.9, + 19.4, + 18.9, + 18.3, + 17.8, + 17.2, + 16.6, + 16.1, + 15.7, + 15.1, + 14.6, + 14, + 24.2, + 23.2, + 21.7, + 20.7, + 19.5, + 18.7 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 89, + 88, + 86, + 89, + 85, + 80, + 100, + 76, + 66, + 58, + 51, + 45, + 39, + 35, + 35, + 35, + 35, + 35, + 99, + 99, + 93, + 87, + 80, + 76 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 99788, + 99758, + 99718, + 99733, + 99677, + 99631, + 99825, + 99544, + 99514, + 99484, + 99455, + 99425, + 99395, + 99365, + 99333, + 99300, + 99267, + 99235, + 99709, + 99788, + 99829, + 99830, + 99830, + 99831 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 101, + 141, + 251, + 523, + 739, + 851, + 903, + 896, + 835, + 680, + 501, + 357, + 208, + 71, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 83, + 123, + 200, + 259, + 205, + 154, + 177, + 211, + 193, + 230, + 243, + 179, + 120, + 49, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 140, + 138, + 159, + 198, + 177, + 195, + 168, + 84, + 263, + 204, + 23, + 77, + 315, + 164, + 277, + 95, + 27, + 292, + 97, + 160, + 79, + 147, + 74, + 40 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 1, + 1, + 1, + 1, + 0.8, + 0.5, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.8, + 1.5, + 2.3, + 3.1, + 3.8, + 4.6, + 4.6, + 4.6, + 4.6, + 4.6 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad", + "Description": "Cooling Design Day automated :) \n *calculated from weather data as day with max temp and then radation replaced from max global radation day and cloud cover removed", + "Year": 2018, + "Month": 7, + "Day": 1 + } + ], + "SurfaceOutputSpecs": [ + { + "_type": "SAM.Core.Tas.SurfaceOutputSpec,SAM.Core.Tas", + "Name": "Tas.Simulate", + "Guid": "9e587c1c-aec0-416b-9165-ca374f18a289", + "ApertureData": true, + "Condensation": false, + "Convection": false, + "SolarGain": true, + "Conduction": true, + "LongWave": false, + "Temperature": true + } + ], + "UnmetHours": false, + "Simulate": true, + "Sizing": true, + "UpdateZones": true, + "UseWidths": false, + "AddIZAMs": true, + "RemoveIZAMs": false, + "RemoveMechanicalVentilationGains": false, + "SimulateFrom": 1, + "SimulateTo": 365, + "RemoveExistingTBD": false, + "UpdateWindowPositionType": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.Tas].informationalVersion": "the assembly carries no InformationalVersion", + "weather.file": "the weather is the model\u0027s embedded WeatherData, not a file; contentSha256 identifies it" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box_error_log.txt b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box_error_log.txt new file mode 100644 index 00000000..d60e98a8 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/box_error_log.txt @@ -0,0 +1 @@ +Error accessing the TSD file for writing \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/case-folder.txt b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/case-folder.txt new file mode 100644 index 00000000..c1781125 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +507507 box-aperture.json +5587 driver-console.txt +0 evidence +0 out diff --git a/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/message-box.txt b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/message-box.txt new file mode 100644 index 00000000..a15941d2 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c7-tas-refusal-energy-simulation/message-box.txt @@ -0,0 +1,12 @@ +Title: Simulation failed +Simulation failed: the TAS simulation did not complete, so this run produced no results. + +TAS return code: 0 +TAS error log: C:\TasOut\s05\runs\c7-tas-refusal-energy-simulation\out\box_error_log.txt +Error: Simulating Model: TAS refused the simulation: TBDDocument.simulate returned 0. TAS return code: 0; TAS error log: C:\TasOut\s05\runs\c7-tas-refusal-energy-simulation\out\box_error_log.txt. (TAS-SIM-001) +Error: Simulating Model: TAS wrote an error log for this run: C:\TasOut\s05\runs\c7-tas-refusal-energy-simulation\out\box_error_log.txt (TAS return code: 0) +Error accessing the TSD file for writing (TAS-SIM-001) +Error: Simulating Model: The run produced no output file: C:\TasOut\s05\runs\c7-tas-refusal-energy-simulation\out\box.tsd TAS return code: 0; TAS error log: C:\TasOut\s05\runs\c7-tas-refusal-energy-simulation\out\box_error_log.txt. (TAS-SIM-001) + +The open model was not changed. + Time elapsed: 0min16sec diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/04-progress-before-cancel.png b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/04-progress-before-cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..872cde4ceac756232af7cf5016d80624ab860d22 GIT binary patch literal 9293 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 X9KO3cw+DOzgr%aWsZb$r7W#hx?qJx; literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-compare.png b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..be013521e0009637b93697a2024dc115ed99a4a7 GIT binary patch literal 43781 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ⅅSrvP3Tov&eK~a;ydRAu$wc}6jnH&!D>tZv`{>Jwl!7(|9|$dw*C3*pe1 z0N2|(1%hDmxz8VA6$tDa^g>yBEf zYG}b(4c!pGHo zG?G`;sR}SvVDw6DogCRC6Omi`K}FT*h*G%d%z^LnJ<<^ zn6jYtfMxB#A5_c^fCspt`C2-ecoBU1m{9;!!X+O;pO|ghXYer^)^`n|JP%f*9tEXY z`5@LBR82gBnAhnD+B+S2r@pU@G1R&J5!E*bbO?1~IQME*`eT;v!Se8+7&dz&=Vp)5=A^ecyg}A_H018+MCyh(#f@cUM7T1zouxDKeI1W2HfdCIq~hv# N${F=-nPXtee*lQHsA2#B literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-diagnostics.txt b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-diagnostics.txt new file mode 100644 index 00000000..65aba62f --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/05-diagnostics.txt @@ -0,0 +1,5 @@ +Banner: CANCELLED - nothing to show or compare. See Diagnostics for each engine's exit code, error and log. + +Run: Cancelled - C:\TasOut\s05\runs\c8a-cancel-both\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a +Tas producer: did not complete, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code -, 5.3 s, log C:\TasOut\s05\runs\c8a-cancel-both\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\benchmark-tas.log +Run record: C:\TasOut\s05\runs\c8a-cancel-both\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/case-folder.txt b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/case-folder.txt new file mode 100644 index 00000000..0794fa9a --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a +507507 box-aperture.json +3045 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/engine-comparison-run.json new file mode 100644 index 00000000..f3cdf4e9 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/engine-comparison-run.json @@ -0,0 +1,143 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "eb0e846a", + "status": "Cancelled", + "startedUtc": "2026-10-20T05:49:52.2277903Z", + "finishedUtc": "2026-10-20T05:49:57.8794166Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\benchmark-TAS.json" + ], + "exitCode": null, + "durationSeconds": 5.324, + "log": "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\benchmark-tas.log", + "benchmark": null, + "error": null, + "succeeded": false + } + ], + "gate": null, + "reports": [], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c8a-cancel-both\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-054952_eb0e846a\\benchmark-TAS.json" + ], + "succeeded": false, + "reported": "unknown" + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported": "the producer wrote no B1a document" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/processes.txt b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/processes.txt new file mode 100644 index 00000000..fe48c67c --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/processes.txt @@ -0,0 +1,2 @@ +2026-10-20T05:49:57.5165373Z [running, before Cancel] benchmark-tas.exe#44424(parent 28180) +2026-10-20T05:50:04.7824093Z [after the comparison window opened] none diff --git a/documentation/evidence/s05-20261020/cases/c8a-cancel-both/run-folder-TasOpenStudio_20261020-054952_eb0e846a.txt b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/run-folder-TasOpenStudio_20261020-054952_eb0e846a.txt new file mode 100644 index 00000000..1a909e4c --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8a-cancel-both/run-folder-TasOpenStudio_20261020-054952_eb0e846a.txt @@ -0,0 +1,5 @@ +benchmark-tas.log +engine-comparison-run.json +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.png b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..39c6354cda8c92fe201834c4bf0a2502eeb5c29f GIT binary patch literal 18703 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 literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.txt b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.txt new file mode 100644 index 00000000..ba2c21ff --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/05-summary.txt @@ -0,0 +1,13 @@ +Title: OpenStudio Simulation +The OpenStudio simulation was cancelled. No result model was saved and the open model was not changed. + +Run folder: C:\TasOut\s05\runs\c8b-cancel-openstudio\000000_SAM_AnalyticalModel_OpenStudio_20261020-055053_87a6b4d4 +Weather: File +EnergyPlus: exit code -1, 0 warnings, 0 severe, 0 fatal + +Diagnostics: +- Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) +- Warning SAM-OS-RUN-001: Simulation cancelled; the CLI/EnergyPlus process tree was terminated + +Open the run folder? + diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/case-folder.txt b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/case-folder.txt new file mode 100644 index 00000000..d8702b00 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/case-folder.txt @@ -0,0 +1,7 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_OpenStudio_20261020-055053_87a6b4d4 +507507 box-aperture.json +3575 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/openstudio-run.json b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/openstudio-run.json new file mode 100644 index 00000000..c8bab800 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/openstudio-run.json @@ -0,0 +1,159 @@ +{ + "schema": "sam-ui.openstudio-run/1", + "id": "87a6b4d4", + "status": "Cancelled", + "startedUtc": "2026-10-20T05:50:53.6380124Z", + "finishedUtc": "2026-10-20T05:50:56.5074801Z", + "durationSeconds": 2.869, + "sourcePath": "C:\\TasOut\\s05\\runs\\c8b-cancel-openstudio\\box-aperture.json", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "snapshot": { + "path": "snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "engine": { + "route": "Native-OpenStudio", + "samOpenStudioVersion": "1.0.0.0", + "cliPath": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "exitCode": -1, + "warningCount": 0, + "severeCount": 0, + "fatalCount": 0 + }, + "outputs": { + "osm": "000000_SAM_AnalyticalModel.osm", + "osw": "000000_SAM_AnalyticalModel.osw", + "sql": "run/eplusout.sql", + "err": "run/eplusout.err", + "resultModel": null + }, + "resultCount": 0, + "removedResultCount": 0, + "diagnostics": [ + "Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope)", + "Information SAM-OS-HVAC-001: Exhaust air flows (ExhaustAirFlowPerPerson) are not converted \u2014 exhaust needs fan/air-loop equipment, deferred to the detailed-HVAC programme", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (5.565) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2.7) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (24) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-RUN-002: Annual weather source: explicit EPW (Budapest.epw)", + "Information SAM-OS-RUN-001: Site coordinates taken from the SAM model Location (lat 47.517, lon 19.033, elevation 129 m), overriding the EPW header; the time zone stays with the EPW header", + "Information SAM-OS-RUN-002: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "Information SAM-OS-RUN-002: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides", + "Warning SAM-OS-RUN-001: Simulation cancelled; the CLI/EnergyPlus process tree was terminated" + ], + "resultDiagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "OpenStudio", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.OpenStudio.dll", + "sha256": "sha256:965716bd87ded52ded7ac085810ef6b93d1fb3a000f0e12e9f74be32b7958c66" + }, + { + "name": "SAM.Core.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.OpenStudio.dll", + "sha256": "sha256:f9bf4cd63a390425c8d9bb527713f34e91247e1b69991ae656f02356e4bc43d3" + } + ] + }, + "engine": { + "openStudioSdkVersion": "3.10.0", + "energyPlusVersionOfSdk": "25.1.0", + "energyPlusVersion": "unknown", + "cli": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "sha256": "sha256:46a80a3d340696bcc189d9a7ae7ec4b70ea4db0fdb4565a33ecd25aa8ebf6361", + "fileVersion": "3.10.0", + "productVersion": "3.10.0.86d7e215a1" + } + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "None" + }, + "settings": { + "runOptions": { + "epwPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw", + "outputDirectory": "C:\\TasOut\\s05\\runs\\c8b-cancel-openstudio\\000000_SAM_AnalyticalModel_OpenStudio_20261020-055053_87a6b4d4", + "conversionOptions": "SAM_OpenStudio defaults", + "run": true, + "cliPath": "(discovered by SAM_OpenStudio; the CLI that ran is engine.cli)", + "runDirectory": "(not set: a directory next to the OSW file)", + "ddyPath": "(none)", + "timeoutSeconds": 3600, + "useUniqueRunDirectory": false, + "extractTimeSeries": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion", + "application.components[SAM.Core.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion", + "engine.energyPlusVersion": "EnergyPlus wrote no eplusout.err with its version line (it did not run, or the run stopped before it)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/processes.txt b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/processes.txt new file mode 100644 index 00000000..de5062f7 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/processes.txt @@ -0,0 +1,2 @@ +2026-10-20T05:50:56.4216194Z [running, before Cancel] openstudio.exe#56332(parent 51980), energyplus.exe#36496(parent 56332) +2026-10-20T05:51:03.4796590Z [3 s after the summary] none diff --git a/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/run-folder-OpenStudio_20261020-055053_87a6b4d4.txt b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/run-folder-OpenStudio_20261020-055053_87a6b4d4.txt new file mode 100644 index 00000000..ee50a8a2 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c8b-cancel-openstudio/run-folder-OpenStudio_20261020-055053_87a6b4d4.txt @@ -0,0 +1,7 @@ +000000_SAM_AnalyticalModel.osm +000000_SAM_AnalyticalModel.osw +generated_files +openstudio-run.json +run +snapshot.json +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/05-diagnostics.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/05-diagnostics.txt new file mode 100644 index 00000000..50125ded --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/05-diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c9-concurrent-start-run2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 20.8 s, log C:\TasOut\s05\runs\c9-concurrent-start-run2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 6.9 s, log C:\TasOut\s05\runs\c9-concurrent-start-run2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c9-concurrent-start-run2\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/07-summary.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/07-summary.txt new file mode 100644 index 00000000..7b9286ba --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/07-summary.txt @@ -0,0 +1,13 @@ +Title: OpenStudio Simulation +The OpenStudio/EnergyPlus simulation finished. The open model was not changed. + +Run folder: C:\TasOut\s05\runs\c9-concurrent-start-run2\000000_SAM_AnalyticalModel_OpenStudio_20261020-055443_c894a4a3 +Result model: 000000_SAM_AnalyticalModel_OpenStudio.json (13 results) +Weather: File +EnergyPlus: exit code 0, 10 warnings, 0 severe, 0 fatal + +Diagnostics: +- Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) + +Open the run folder? + diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-OpenStudio.json new file mode 100644 index 00000000..703275ae --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-OpenStudio.json @@ -0,0 +1,140 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:54:29.7143415Z", + "durationSeconds": 4.9093101, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + }, + "model": { + "consumptionHeating": { + "value": 2173.9185033546732, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 4556.226212241192, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 3.2591834042717536, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.332620570657522, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 3259.1834042717537, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 5332.620570657522, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-TAS.json new file mode 100644 index 00000000..5dbbc6a2 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/benchmark-TAS.json @@ -0,0 +1,136 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:54:08.7571499Z", + "durationSeconds": 18.9989642, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 220.62682055425643, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 5540.314465834558, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.4238231201171876, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 775, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 3.126279052734375, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3901, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1927.0106201171875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1926.94873046875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 3415.618896484375, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 3415.45556640625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/case-folder.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/case-folder.txt new file mode 100644 index 00000000..67619b66 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/case-folder.txt @@ -0,0 +1,8 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_OpenStudio_20261020-055443_c894a4a3 +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247 +507507 box-aperture.json +7870 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison-summary.json new file mode 100644 index 00000000..232efd8d --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison-summary.json @@ -0,0 +1,627 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Warn", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 6, + "warn": 0, + "fail": 10, + "notApplicable": 2 + }, + "coverage": { + "status": "Warn", + "requiredMetricCount": 18, + "comparableMetricCount": 16, + "unavailableRequiredMetricCount": 2, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:54:08.7571499Z", + "durationSeconds": 18.9989642, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:54:29.7143415Z", + "durationSeconds": 4.9093101, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 220.62682055425643, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 2173.9185033546732, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 1953.2916828004168, + "relativeDifference": 0.8985119174367405, + "signedDifference": 1953.2916828004168 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5540.314465834558, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 4556.226212241192, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 984.0882535933661, + "relativeDifference": 0.17762317638501215, + "signedDifference": -984.0882535933661 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.4238231201171876, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 3.2591834042717536, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 1.835360284154566, + "relativeDifference": 0.5631350115949265, + "signedDifference": 1.835360284154566 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 775, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1080, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3.126279052734375, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 5.332620570657522, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 2.2063415179231467, + "relativeDifference": 0.4137443286446125, + "signedDifference": 2.2063415179231467 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3901, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1128, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "tasName": "Office", + "openStudioName": "Office", + "matchKind": "Guid", + "metrics": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 1927.0106201171875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1926.94873046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 3259.1834042717537, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1332.2346738030037, + "relativeDifference": 0.408763333802224, + "signedDifference": 1332.2346738030037 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1241, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 3415.618896484375, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3415.45556640625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 5332.620570657522, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1917.165004251272, + "relativeDifference": 0.3595164851593561, + "signedDifference": 1917.165004251272 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 1, + "openStudioCount": 1, + "matchedByGuid": 1, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison.csv b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison.csv new file mode 100644 index 00000000..9cc7c3cd --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/comparison.csv @@ -0,0 +1,19 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,220.62682055425643,2173.9185033546732,1953.2916828004168,0.8985119174367405,89.85119174367405,1953.2916828004168,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,5540.314465834558,4556.226212241192,984.0882535933661,0.17762317638501215,17.762317638501216,-984.0882535933661,Fail,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.4238231201171876,3.2591834042717536,1.835360284154566,0.5631350115949265,56.31350115949265,1.835360284154566,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,775,8455,1080,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,3.126279052734375,5.332620570657522,2.2063415179231467,0.4137443286446125,41.374432864461255,2.2063415179231467,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3901,5029,1128,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,area,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,heating.designLoad,W,TasOnly,1927.0106201171875,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakLoad,W,Both,1926.94873046875,3259.1834042717537,1332.2346738030037,0.408763333802224,40.8763333802224,1332.2346738030037,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakHour,hourOfYear,Both,936,8455,1241,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +cb68bed195af496bb255a13ffa5c58e9,cooling.designLoad,W,TasOnly,3415.618896484375,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakLoad,W,Both,3415.45556640625,5332.620570657522,1917.165004251272,0.3595164851593561,35.95164851593561,1917.165004251272,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/concurrency.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/concurrency.txt new file mode 100644 index 00000000..24b15bfa --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/concurrency.txt @@ -0,0 +1,15 @@ +Energy Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +Run Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +OpenStudio Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +Comparison window Run: REFUSED: An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +Energy Simulation during OpenStudio (ribbon): REFUSED: An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/engine-comparison-run.json new file mode 100644 index 00000000..6b471123 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "40b31247", + "status": "Compared", + "startedUtc": "2026-10-20T05:54:07.7920838Z", + "finishedUtc": "2026-10-20T05:54:35.9378513Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.825, + "log": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 6.91, + "log": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\comparison.md", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055407_40b31247\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/openstudio-run.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/openstudio-run.json new file mode 100644 index 00000000..822f6ec7 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/openstudio-run.json @@ -0,0 +1,157 @@ +{ + "schema": "sam-ui.openstudio-run/1", + "id": "c894a4a3", + "status": "Succeeded", + "startedUtc": "2026-10-20T05:54:43.7139802Z", + "finishedUtc": "2026-10-20T05:54:51.5543448Z", + "durationSeconds": 7.84, + "sourcePath": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\box-aperture.json", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "snapshot": { + "path": "snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "engine": { + "route": "Native-OpenStudio", + "samOpenStudioVersion": "1.0.0.0", + "cliPath": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "exitCode": 0, + "warningCount": 10, + "severeCount": 0, + "fatalCount": 0 + }, + "outputs": { + "osm": "000000_SAM_AnalyticalModel.osm", + "osw": "000000_SAM_AnalyticalModel.osw", + "sql": "run/eplusout.sql", + "err": "run/eplusout.err", + "resultModel": "000000_SAM_AnalyticalModel_OpenStudio.json" + }, + "resultCount": 13, + "removedResultCount": 0, + "diagnostics": [ + "Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope)", + "Information SAM-OS-HVAC-001: Exhaust air flows (ExhaustAirFlowPerPerson) are not converted \u2014 exhaust needs fan/air-loop equipment, deferred to the detailed-HVAC programme", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (5.565) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2.7) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (24) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-RUN-002: Annual weather source: explicit EPW (Budapest.epw)", + "Information SAM-OS-RUN-001: Site coordinates taken from the SAM model Location (lat 47.517, lon 19.033, elevation 129 m), overriding the EPW header; the time zone stays with the EPW header", + "Information SAM-OS-RUN-002: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "Information SAM-OS-RUN-002: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ], + "resultDiagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "OpenStudio", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.OpenStudio.dll", + "sha256": "sha256:965716bd87ded52ded7ac085810ef6b93d1fb3a000f0e12e9f74be32b7958c66" + }, + { + "name": "SAM.Core.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.OpenStudio.dll", + "sha256": "sha256:f9bf4cd63a390425c8d9bb527713f34e91247e1b69991ae656f02356e4bc43d3" + } + ] + }, + "engine": { + "openStudioSdkVersion": "3.10.0", + "energyPlusVersionOfSdk": "25.1.0", + "energyPlusVersion": "25.1.0-1c11a3d85f", + "cli": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "sha256": "sha256:46a80a3d340696bcc189d9a7ae7ec4b70ea4db0fdb4565a33ecd25aa8ebf6361", + "fileVersion": "3.10.0", + "productVersion": "3.10.0.86d7e215a1" + } + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "None" + }, + "settings": { + "runOptions": { + "epwPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw", + "outputDirectory": "C:\\TasOut\\s05\\runs\\c9-concurrent-start-run2\\000000_SAM_AnalyticalModel_OpenStudio_20261020-055443_c894a4a3", + "conversionOptions": "SAM_OpenStudio defaults", + "run": true, + "cliPath": "(discovered by SAM_OpenStudio; the CLI that ran is engine.cli)", + "runDirectory": "(not set: a directory next to the OSW file)", + "ddyPath": "(none)", + "timeoutSeconds": 3600, + "useUniqueRunDirectory": false, + "extractTimeSeries": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion", + "application.components[SAM.Core.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/processes.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/processes.txt new file mode 100644 index 00000000..7eb7a268 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/processes.txt @@ -0,0 +1,5 @@ +2026-10-20T05:54:08.9164425Z [before Energy Simulation (ribbon)] benchmark-tas.exe#29660(parent 41572) +2026-10-20T05:54:10.2090007Z [before Run Simulation (ribbon)] benchmark-tas.exe#29660(parent 41572) +2026-10-20T05:54:11.4079273Z [before OpenStudio Simulation (ribbon)] benchmark-tas.exe#29660(parent 41572) +2026-10-20T05:54:44.6832379Z [before Comparison window Run] openstudio.exe#29896(parent 41572) +2026-10-20T05:54:46.0718128Z [before Energy Simulation during OpenStudio (ribbon)] openstudio.exe#29896(parent 41572), energyplus.exe#22688(parent 29896) diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-ComparisonwindowRun.png b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-ComparisonwindowRun.png new file mode 100644 index 0000000000000000000000000000000000000000..cb049c44b9b9b4eafa91c742406c19a473d40dc9 GIT binary patch literal 18622 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 Ef{EvXZvX%Q literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-EnergySimulationribbon.png b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusal-EnergySimulationribbon.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6be2ba673b730f4f1ea22520e9bfc61219cbad GIT binary patch literal 13314 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 literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusals.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusals.txt new file mode 100644 index 00000000..ba65fbad --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/refusals.txt @@ -0,0 +1,25 @@ +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Compare Tas / OpenStudio +An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-OpenStudio_20261020-055443_c894a4a3.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-OpenStudio_20261020-055443_c894a4a3.txt new file mode 100644 index 00000000..f49f3a97 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-OpenStudio_20261020-055443_c894a4a3.txt @@ -0,0 +1,10 @@ +000000_SAM_AnalyticalModel.osm +000000_SAM_AnalyticalModel.osw +000000_SAM_AnalyticalModel_OpenStudio.json +generated_files +openstudio-run.json +out.osw +reports +run +snapshot.json +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-TasOpenStudio_20261020-055407_40b31247.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-TasOpenStudio_20261020-055407_40b31247.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start-run2/run-folder-TasOpenStudio_20261020-055407_40b31247.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/05-diagnostics.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/05-diagnostics.txt new file mode 100644 index 00000000..6d35b2fd --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/05-diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05\runs\c9-concurrent-start\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 20.4 s, log C:\TasOut\s05\runs\c9-concurrent-start\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe, exit code 0, 7.1 s, log C:\TasOut\s05\runs\c9-concurrent-start\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\benchmark-openstudio.log +Run record: C:\TasOut\s05\runs\c9-concurrent-start\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\engine-comparison-run.json diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/07-summary.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/07-summary.txt new file mode 100644 index 00000000..1c517d08 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/07-summary.txt @@ -0,0 +1,13 @@ +Title: OpenStudio Simulation +The OpenStudio/EnergyPlus simulation finished. The open model was not changed. + +Run folder: C:\TasOut\s05\runs\c9-concurrent-start\000000_SAM_AnalyticalModel_OpenStudio_20261020-055231_dc3f547b +Result model: 000000_SAM_AnalyticalModel_OpenStudio.json (13 results) +Weather: File +EnergyPlus: exit code 0, 10 warnings, 0 severe, 0 fatal + +Diagnostics: +- Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) + +Open the run folder? + diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-OpenStudio.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-OpenStudio.json new file mode 100644 index 00000000..f8693438 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-OpenStudio.json @@ -0,0 +1,140 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:52:18.1041202Z", + "durationSeconds": 5.1856947, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + }, + "model": { + "consumptionHeating": { + "value": 2173.9185033546732, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 4556.226212241192, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 3.2591834042717536, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 5.332620570657522, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 3259.1834042717537, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 8455, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": null, + "unit": "W", + "available": false + }, + "peakLoad": { + "value": 5332.620570657522, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 5029, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-TAS.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-TAS.json new file mode 100644 index 00000000..d02a2c44 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/benchmark-TAS.json @@ -0,0 +1,136 @@ +{ + "schemaVersion": "1.0.0", + "provenance": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:51:57.4777035Z", + "durationSeconds": 18.4908279, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "model": { + "consumptionHeating": { + "value": 220.62682055425643, + "unit": "kWh", + "available": true + }, + "consumptionCooling": { + "value": 5540.314465834558, + "unit": "kWh", + "available": true + }, + "peakHeatingLoad": { + "value": 1.4238231201171876, + "unit": "kW", + "available": true + }, + "peakHeatingHour": { + "value": 775, + "unit": "hourOfYear", + "available": true + }, + "peakCoolingLoad": { + "value": 3.126279052734375, + "unit": "kW", + "available": true + }, + "peakCoolingHour": { + "value": 3901, + "unit": "hourOfYear", + "available": true + }, + "floorArea": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + } + }, + "spaces": [ + { + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "name": "Office", + "area": { + "value": 50, + "unit": "m2", + "available": true + }, + "volume": { + "value": 150, + "unit": "m3", + "available": true + }, + "heating": { + "designLoad": { + "value": 1927.0106201171875, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 1926.94873046875, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 936, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + }, + "cooling": { + "designLoad": { + "value": 3415.618896484375, + "unit": "W", + "available": true + }, + "peakLoad": { + "value": 3415.45556640625, + "unit": "W", + "available": true + }, + "peakHour": { + "value": 4358, + "unit": "hourOfYear", + "available": true + }, + "unmetHours": { + "value": 0, + "unit": "h", + "available": true + } + } + } + ] +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/case-folder.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/case-folder.txt new file mode 100644 index 00000000..ee9d5c22 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/case-folder.txt @@ -0,0 +1,8 @@ + +0 . +0 .. +0 000000_SAM_AnalyticalModel_OpenStudio_20261020-055231_dc3f547b +0 000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de +507507 box-aperture.json +7484 driver-console.txt +0 evidence diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison-summary.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison-summary.json new file mode 100644 index 00000000..47929062 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison-summary.json @@ -0,0 +1,627 @@ +{ + "summarySchemaVersion": "1.0.0", + "toleranceProfile": "default", + "toleranceProfileDetail": { + "name": "default", + "warnRelative": 0.05, + "failRelative": 0.15, + "hourWarnAbsolute": 1, + "hourFailAbsolute": 24, + "defaultNearZeroFloor": 0, + "nearZeroFloors": { + "kWh": 1, + "Wh": 1000, + "kW": 0.01, + "W": 10, + "m2": 0.01, + "m3": 0.01, + "h": 0.5 + } + }, + "gate": "Fail", + "statuses": { + "overall": "Fail", + "numerical": "Fail", + "coverage": "Warn", + "provenance": "Pass", + "reconciliation": "Pass" + }, + "provenanceCompatibility": { + "compatible": true, + "mismatches": [] + }, + "counts": { + "match": 6, + "warn": 0, + "fail": 10, + "notApplicable": 2 + }, + "coverage": { + "status": "Warn", + "requiredMetricCount": 18, + "comparableMetricCount": 16, + "unavailableRequiredMetricCount": 2, + "unmatchedSpaceCount": 0, + "ambiguousSpaceCount": 0, + "duplicateSpaceIdentityCount": 0 + }, + "schema": { + "tas": "1.0.0", + "openStudio": "1.0.0", + "driftNote": null + }, + "provenance": { + "tas": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": null + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:51:57.4777035Z", + "durationSeconds": 18.4908279, + "state": "Success", + "resultSources": [ + "SAM.Analytical.Tas" + ], + "warnings": [], + "notes": [ + "Shared gbXML was exported from the source model (no --gbxml supplied)." + ] + }, + "openStudio": { + "sourceModelName": "000000_SAM_AnalyticalModel", + "sourceModelGuid": "1988f7b93ec047d0b87bf9cb345d9eab", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "runTimestampUtc": "2026-10-20T05:52:18.1041202Z", + "durationSeconds": 5.1856947, + "state": "Success", + "resultSources": [ + "SAM.Analytical.OpenStudio" + ], + "warnings": [ + "[SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) \u2192 SAM_InternalCondition_S39_OfficeOpen_30b69a1f" + ], + "notes": [ + "[SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw)", + "[SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "[SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ] + } + }, + "modelMetrics": [ + { + "scope": "model", + "key": "consumptionHeating", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 220.62682055425643, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 2173.9185033546732, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 1953.2916828004168, + "relativeDifference": 0.8985119174367405, + "signedDifference": 1953.2916828004168 + }, + { + "scope": "model", + "key": "consumptionCooling", + "unit": "kWh", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 5540.314465834558, + "available": true, + "unit": "kWh" + }, + "openStudio": { + "value": 4556.226212241192, + "available": true, + "unit": "kWh" + }, + "absoluteDifference": 984.0882535933661, + "relativeDifference": 0.17762317638501215, + "signedDifference": -984.0882535933661 + }, + { + "scope": "model", + "key": "peakHeatingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1.4238231201171876, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 3.2591834042717536, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 1.835360284154566, + "relativeDifference": 0.5631350115949265, + "signedDifference": 1.835360284154566 + }, + { + "scope": "model", + "key": "peakHeatingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 775, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1080, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "peakCoolingLoad", + "unit": "kW", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3.126279052734375, + "available": true, + "unit": "kW" + }, + "openStudio": { + "value": 5.332620570657522, + "available": true, + "unit": "kW" + }, + "absoluteDifference": 2.2063415179231467, + "relativeDifference": 0.4137443286446125, + "signedDifference": 2.2063415179231467 + }, + { + "scope": "model", + "key": "peakCoolingHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 3901, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1128, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "model", + "key": "floorArea", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "model", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ], + "spaces": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "guid": "cb68bed195af496bb255a13ffa5c58e9", + "tasName": "Office", + "openStudioName": "Office", + "matchKind": "Guid", + "metrics": [ + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "area", + "unit": "m2", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 50, + "available": true, + "unit": "m2" + }, + "openStudio": { + "value": 50, + "available": true, + "unit": "m2" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "volume", + "unit": "m3", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 150, + "available": true, + "unit": "m3" + }, + "openStudio": { + "value": 150, + "available": true, + "unit": "m3" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 1927.0106201171875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 1926.94873046875, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 3259.1834042717537, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1332.2346738030037, + "relativeDifference": 0.408763333802224, + "signedDifference": 1332.2346738030037 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 936, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 8455, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 1241, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "heating.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.designLoad", + "unit": "W", + "availability": "TasOnly", + "band": "N/A", + "informational": false, + "notApplicableReason": "unavailable", + "circular": false, + "tas": { + "value": 3415.618896484375, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": null, + "available": false, + "unit": "W" + }, + "absoluteDifference": null, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakLoad", + "unit": "W", + "availability": "Both", + "band": "Fail", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 3415.45556640625, + "available": true, + "unit": "W" + }, + "openStudio": { + "value": 5332.620570657522, + "available": true, + "unit": "W" + }, + "absoluteDifference": 1917.165004251272, + "relativeDifference": 0.3595164851593561, + "signedDifference": 1917.165004251272 + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.peakHour", + "unit": "hourOfYear", + "availability": "Both", + "band": "Fail", + "informational": true, + "notApplicableReason": null, + "circular": true, + "tas": { + "value": 4358, + "available": true, + "unit": "hourOfYear" + }, + "openStudio": { + "value": 5029, + "available": true, + "unit": "hourOfYear" + }, + "absoluteDifference": 671, + "relativeDifference": null, + "signedDifference": null + }, + { + "scope": "cb68bed195af496bb255a13ffa5c58e9", + "key": "cooling.unmetHours", + "unit": "h", + "availability": "Both", + "band": "Match", + "informational": false, + "notApplicableReason": null, + "circular": false, + "tas": { + "value": 0, + "available": true, + "unit": "h" + }, + "openStudio": { + "value": 0, + "available": true, + "unit": "h" + }, + "absoluteDifference": 0, + "relativeDifference": 0, + "signedDifference": 0 + } + ] + } + ], + "spaceDiagnostics": { + "tasCount": 1, + "openStudioCount": 1, + "matchedByGuid": 1, + "matchedByName": 0, + "onlyInTas": [], + "onlyInOpenStudio": [], + "duplicateTasGuids": [], + "duplicateOpenStudioGuids": [], + "duplicateTasNames": [], + "duplicateOpenStudioNames": [], + "ambiguousNameMatches": [] + }, + "reconciliation": [ + { + "engine": "TAS", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "TAS", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "floorArea", + "unit": "m2", + "modelTotal": 50, + "modelTotalAvailable": true, + "sumOfSpaces": 50, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + }, + { + "engine": "OpenStudio", + "key": "volume", + "unit": "m3", + "modelTotal": 150, + "modelTotalAvailable": true, + "sumOfSpaces": 150, + "contributingSpaces": 1, + "spacesMissingValue": 0, + "excludedSpaces": 0, + "complete": true, + "absoluteDifference": 0, + "relativeDifference": 0, + "band": "Match", + "notApplicableReason": null + } + ] +} diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison.csv b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison.csv new file mode 100644 index 00000000..9cc7c3cd --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/comparison.csv @@ -0,0 +1,19 @@ +scope,metric,unit,availability,tasValue,openStudioValue,absoluteDifference,relativeDifference,relativePercent,signedDifference,band,note,toleranceProfile,warnRelative,failRelative,hourWarnAbsolute,hourFailAbsolute,nearZeroFloor,informational +model,consumptionHeating,kWh,Both,220.62682055425643,2173.9185033546732,1953.2916828004168,0.8985119174367405,89.85119174367405,1953.2916828004168,Fail,,default,0.05,0.15,1,24,1,false +model,consumptionCooling,kWh,Both,5540.314465834558,4556.226212241192,984.0882535933661,0.17762317638501215,17.762317638501216,-984.0882535933661,Fail,,default,0.05,0.15,1,24,1,false +model,peakHeatingLoad,kW,Both,1.4238231201171876,3.2591834042717536,1.835360284154566,0.5631350115949265,56.31350115949265,1.835360284154566,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakHeatingHour,hourOfYear,Both,775,8455,1080,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,peakCoolingLoad,kW,Both,3.126279052734375,5.332620570657522,2.2063415179231467,0.4137443286446125,41.374432864461255,2.2063415179231467,Fail,informational (excluded from the numerical status),default,0.05,0.15,1,24,0.01,true +model,peakCoolingHour,hourOfYear,Both,3901,5029,1128,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +model,floorArea,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +model,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,area,m2,Both,50,50,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,volume,m3,Both,150,150,0,0,0,0,Match,,default,0.05,0.15,1,24,0.01,false +cb68bed195af496bb255a13ffa5c58e9,heating.designLoad,W,TasOnly,1927.0106201171875,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakLoad,W,Both,1926.94873046875,3259.1834042717537,1332.2346738030037,0.408763333802224,40.8763333802224,1332.2346738030037,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,heating.peakHour,hourOfYear,Both,936,8455,1241,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,heating.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false +cb68bed195af496bb255a13ffa5c58e9,cooling.designLoad,W,TasOnly,3415.618896484375,,,,,,N/A,unavailable (TasOnly),default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakLoad,W,Both,3415.45556640625,5332.620570657522,1917.165004251272,0.3595164851593561,35.95164851593561,1917.165004251272,Fail,,default,0.05,0.15,1,24,10,false +cb68bed195af496bb255a13ffa5c58e9,cooling.peakHour,hourOfYear,Both,4358,5029,671,,,,Fail,circular hour difference; informational (excluded from the numerical status),default,0.05,0.15,1,24,0,true +cb68bed195af496bb255a13ffa5c58e9,cooling.unmetHours,h,Both,0,0,0,0,0,0,Match,,default,0.05,0.15,1,24,0.5,false diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/concurrency.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/concurrency.txt new file mode 100644 index 00000000..058e399a --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/concurrency.txt @@ -0,0 +1,13 @@ +Energy Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +Run Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +OpenStudio Simulation (ribbon): REFUSED: A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: True, after: True +Comparison window Run: NOT REFUSED; windows now: 'SAM Analytical [000000_SAM_AnalyticalModel]' (Window), 'OpenStudio Simulation' (#32770), 'Compare Tas / OpenStudio' (Window) | first run's progress window open before: True, after: False +Energy Simulation during OpenStudio (ribbon): REFUSED: An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. | first run's progress window open before: False, after: False diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/engine-comparison-run.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/engine-comparison-run.json new file mode 100644 index 00000000..6f8ecaec --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "c4d119de", + "status": "Compared", + "startedUtc": "2026-10-20T05:51:56.5947668Z", + "finishedUtc": "2026-10-20T05:52:24.4325037Z", + "sourcePath": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.361, + "log": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 7.112, + "log": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\comparison.md", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\comparison.csv", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:4b90a15b30c0fc9c305db2e8683c5d0d20c2f1bb810b19bc52c06147bf323c16" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:d9db90db60c0e4cfac1833adc3da0a3b04c2f96d0fd8b23a02c6307c0db9da2e" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:2c13740afdfa6b7478f04e219097362fc6b9d4ef4c10ceed166ec14d51ada7a9", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\weather.epw", + "--tbd", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Debug\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:4f53433a8617d12c78f792e5885d0ad9b2f027f676d76ba9ec9eb0670a5740dd", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\snapshot.json", + "--weather", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\weather.epw", + "--out", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_TasOpenStudio_20261020-055156_c4d119de\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/openstudio-run.json b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/openstudio-run.json new file mode 100644 index 00000000..51c83728 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/openstudio-run.json @@ -0,0 +1,157 @@ +{ + "schema": "sam-ui.openstudio-run/1", + "id": "dc3f547b", + "status": "Succeeded", + "startedUtc": "2026-10-20T05:52:31.8788264Z", + "finishedUtc": "2026-10-20T05:52:39.4171979Z", + "durationSeconds": 7.538, + "sourcePath": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\box-aperture.json", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "snapshot": { + "path": "snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "engine": { + "route": "Native-OpenStudio", + "samOpenStudioVersion": "1.0.0.0", + "cliPath": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "exitCode": 0, + "warningCount": 10, + "severeCount": 0, + "fatalCount": 0 + }, + "outputs": { + "osm": "000000_SAM_AnalyticalModel.osm", + "osw": "000000_SAM_AnalyticalModel.osw", + "sql": "run/eplusout.sql", + "err": "run/eplusout.err", + "resultModel": "000000_SAM_AnalyticalModel_OpenStudio.json" + }, + "resultCount": 13, + "removedResultCount": 0, + "diagnostics": [ + "Warning SAM-OS-IC-001: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope)", + "Information SAM-OS-HVAC-001: Exhaust air flows (ExhaustAirFlowPerPerson) are not converted \u2014 exhaust needs fan/air-loop equipment, deferred to the detailed-HVAC programme", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (5.565) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2.7) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (24) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (2) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (1) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-MAT-002: Vapour diffusion factor (9999) is not converted \u2014 EnergyPlus moisture modelling (HAMT/EMPD) needs data SAM does not carry", + "Information SAM-OS-RUN-002: Annual weather source: explicit EPW (Budapest.epw)", + "Information SAM-OS-RUN-001: Site coordinates taken from the SAM model Location (lat 47.517, lon 19.033, elevation 129 m), overriding the EPW header; the time zone stays with the EPW header", + "Information SAM-OS-RUN-002: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values)", + "Information SAM-OS-RUN-002: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides" + ], + "resultDiagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "OpenStudio", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM Analytical.dll", + "sha256": "sha256:22f51eafdabd1804b6abca0ce92516f8e3b3293533eafdf0dec495fbce9d146f" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.dll", + "sha256": "sha256:166c28cee37681a5276befd3133104821a7a1d6b7e888f6b657d203a41fb3132" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.dll", + "sha256": "sha256:186f03095d4ec2352fe4dfecf7144561f566c09d6a99d50e5d443d5c0a783e12" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:0d4e368af288068fde16519e92f60c25a7e0f10740680ac0c750f32f43002a15" + }, + { + "name": "SAM.Analytical.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Analytical.OpenStudio.dll", + "sha256": "sha256:965716bd87ded52ded7ac085810ef6b93d1fb3a000f0e12e9f74be32b7958c66" + }, + { + "name": "SAM.Core.OpenStudio", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05\\app\\SAM.Core.OpenStudio.dll", + "sha256": "sha256:f9bf4cd63a390425c8d9bb527713f34e91247e1b69991ae656f02356e4bc43d3" + } + ] + }, + "engine": { + "openStudioSdkVersion": "3.10.0", + "energyPlusVersionOfSdk": "25.1.0", + "energyPlusVersion": "25.1.0-1c11a3d85f", + "cli": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\.icon-migration\\runtime\\OpenStudio-3.10.0\u002B86d7e215a1-Windows\\bin\\openstudio.exe", + "sha256": "sha256:46a80a3d340696bcc189d9a7ae7ec4b70ea4db0fdb4565a33ecd25aa8ebf6361", + "fileVersion": "3.10.0", + "productVersion": "3.10.0.86d7e215a1" + } + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "None" + }, + "settings": { + "runOptions": { + "epwPath": "C:\\TasOut\\s05\\inputs\\Budapest.epw", + "outputDirectory": "C:\\TasOut\\s05\\runs\\c9-concurrent-start\\000000_SAM_AnalyticalModel_OpenStudio_20261020-055231_dc3f547b", + "conversionOptions": "SAM_OpenStudio defaults", + "run": true, + "cliPath": "(discovered by SAM_OpenStudio; the CLI that ran is engine.cli)", + "runDirectory": "(not set: a directory next to the OSW file)", + "ddyPath": "(none)", + "timeoutSeconds": 3600, + "useUniqueRunDirectory": false, + "extractTimeSeries": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion", + "application.components[SAM.Core.OpenStudio].informationalVersion": "the assembly carries no InformationalVersion" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/processes.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/processes.txt new file mode 100644 index 00000000..7f53d890 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/processes.txt @@ -0,0 +1,5 @@ +2026-10-20T05:51:57.6958336Z [before Energy Simulation (ribbon)] benchmark-tas.exe#24388(parent 28848) +2026-10-20T05:51:59.0906431Z [before Run Simulation (ribbon)] benchmark-tas.exe#24388(parent 28848) +2026-10-20T05:52:00.1282347Z [before OpenStudio Simulation (ribbon)] benchmark-tas.exe#24388(parent 28848) +2026-10-20T05:52:32.8168386Z [before Comparison window Run] none +2026-10-20T05:52:53.4182436Z [before Energy Simulation during OpenStudio (ribbon)] none diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/refusals.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/refusals.txt new file mode 100644 index 00000000..564249ee --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/refusals.txt @@ -0,0 +1,20 @@ +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +A Tas + OpenStudio run is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + +Title: Simulation already running +An OpenStudio simulation is already running for this model, so nothing was started. + +Wait until it finishes, or cancel it, then start the simulation again. + diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-OpenStudio_20261020-055231_dc3f547b.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-OpenStudio_20261020-055231_dc3f547b.txt new file mode 100644 index 00000000..f49f3a97 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-OpenStudio_20261020-055231_dc3f547b.txt @@ -0,0 +1,10 @@ +000000_SAM_AnalyticalModel.osm +000000_SAM_AnalyticalModel.osw +000000_SAM_AnalyticalModel_OpenStudio.json +generated_files +openstudio-run.json +out.osw +reports +run +snapshot.json +weather.epw diff --git a/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-TasOpenStudio_20261020-055156_c4d119de.txt b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-TasOpenStudio_20261020-055156_c4d119de.txt new file mode 100644 index 00000000..be3afe36 --- /dev/null +++ b/documentation/evidence/s05-20261020/cases/c9-concurrent-start/run-folder-TasOpenStudio_20261020-055156_c4d119de.txt @@ -0,0 +1,12 @@ +benchmark-OpenStudio.json +benchmark-TAS.json +benchmark-openstudio.log +benchmark-tas.log +comparison-summary.json +comparison.csv +comparison.md +engine-comparison-run.json +openstudio +snapshot.json +tas +weather.epw diff --git a/documentation/evidence/s05-20261020/producers.txt b/documentation/evidence/s05-20261020/producers.txt new file mode 100644 index 00000000..5ead6582 --- /dev/null +++ b/documentation/evidence/s05-20261020/producers.txt @@ -0,0 +1,3 @@ +tas=C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe +openstudio=C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Debug\net8.0\benchmark-openstudio.exe +samCommit=62b5415697d1a5af143c6b581b7d42fbd6551ca8 diff --git a/documentation/evidence/s05-20261020/tools/drive-s05.ps1 b/documentation/evidence/s05-20261020/tools/drive-s05.ps1 new file mode 100644 index 00000000..3667957a --- /dev/null +++ b/documentation/evidence/s05-20261020/tools/drive-s05.ps1 @@ -0,0 +1,235 @@ +param( + [Parameter(Mandatory)] [ValidateSet('OpenStudio', 'CancelOpenStudio', 'CancelBoth', 'Concurrent')] [string] $Scenario, + [Parameter(Mandatory)] [string] $ModelPath, + [Parameter(Mandatory)] [string] $EvidenceDir, + [string] $EpwPath = $null, # null/empty = answer Yes (the model's embedded weather) + [int] $TimeoutMinutes = 20 +) +# S05 licensed acceptance driver (test harness, not product code) for the cases the S01b drivers do not cover: +# OpenStudio case 2: Run Simulation > OpenStudio from the ribbon, to the closing summary. +# CancelOpenStudio case 8: Run Simulation > OpenStudio, Cancel in the progress window while EnergyPlus runs. +# CancelBoth case 8: Run Simulation > Both, Cancel in the progress window while the Tas producer runs. +# Concurrent case 9: while Run Simulation > Both runs, start Energy Simulation, Run Simulation and OpenStudio +# Simulation from the ribbon; then, with the comparison window open, while an OpenStudio Simulation +# runs, start the comparison window's Run. Each must be refused with the S02 message. +# The app under test is $env:SAM_APP_EXE; the run folder is the model's folder (each case uses its own fresh folder). +$ErrorActionPreference = 'Stop' +. (Join-Path $PSScriptRoot 's05-uia.ps1') + +$exe = if ($env:SAM_APP_EXE) { $env:SAM_APP_EXE } else { throw 'Set SAM_APP_EXE to the SAM Analytical.exe under test' } +$folder_Model = Split-Path -Parent $ModelPath +Log "Scenario $Scenario; app $exe; model $ModelPath; EPW '$EpwPath'" +Log ("SAM_BENCHMARK_TAS=" + $env:SAM_BENCHMARK_TAS + " SAM_BENCHMARK_OPENSTUDIO=" + $env:SAM_BENCHMARK_OPENSTUDIO + " SAM_COMMIT=" + $env:SAM_COMMIT) +Get-ChildItem -Force $folder_Model | ForEach-Object { Log (" before: {0}" -f $_.Name) } +$proc = Start-Process -FilePath $exe -ArgumentList "`"/Path=$ModelPath`"" -PassThru +Log "pid $($proc.Id)" +$main = Find-Window 'SAM Analytical `[*' 240 $proc.Id +if (-not $main) { throw 'Main window did not appear' } +Start-Sleep -Seconds 5 +$title_Before = $main.Current.Name +Log "Main window: $title_Before" +Shot $main '01-main.png' + +function Find-Progress([string]$title, [int]$seconds) { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + foreach ($w in (Windows-Of $proc.Id)) { try { if ($w.Current.Name -eq $title -and $w.Current.ClassName -ne '#32770') { return $w } } catch {} } + Start-Sleep -Milliseconds 250 + } + return $null +} +function Progress-Alive([string]$title) { + foreach ($w in (Windows-Of $proc.Id)) { try { if ($w.Current.Name -eq $title -and $w.Current.ClassName -ne '#32770') { return $true } } catch {} } + return $false +} +function Wait-EngineProcess([string]$name, [int]$seconds) { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + $p = @(Get-CimInstance Win32_Process -Filter ("Name='{0}'" -f $name)) + if ($p.Count -gt 0) { return $true } + Start-Sleep -Milliseconds 250 + } + return $false +} +function Start-FromRunSimulation([string]$engine) { + Invoke-El (Find-ById $main 'RibbonTab_Simulate') + Start-Sleep -Seconds 1 + Invoke-El (Find-ById $main 'RibbonButton_RunSimulation') + $dlg = Find-Window 'Run Simulation' 30 $proc.Id + if (-not $dlg) { throw 'Run Simulation dialog not found' } + Invoke-El (Find-ById $dlg ('RadioButton_' + $engine)) + Start-Sleep -Milliseconds 500 + Shot $dlg ('02-run-simulation-' + $engine.ToLowerInvariant() + '.png') + Log "Run Simulation > $engine > Run" + Invoke-El (Find-ById $dlg 'Button_Run') +} +# The folder dialog (preset: the model's folder), then the weather question and, for an explicit EPW, the open dialog. +function Answer-Setup([string]$folderTitle, [string]$weatherTitle, [string]$epwTitle, [string]$prefix) { + $folder = Find-Window $folderTitle 60 $proc.Id + if (-not $folder) { throw "Folder dialog '$folderTitle' not found" } + Shot $folder ($prefix + '-folder.png') + Log 'Folder dialog: accepting the preset folder (the model folder)' + Invoke-El (Find-ByName $folder 'Select Folder') + $msg = Find-Dialog 60 $proc.Id $weatherTitle + if (-not $msg) { Log 'No weather question (model has no embedded weather)' } + else { + Shot $msg ($prefix + '-weather-question.png') + if ([string]::IsNullOrEmpty($EpwPath)) { Log 'Weather: Yes (model weather)'; Click-DialogButton $msg 'Yes'; return } + Log "Weather: No, EPW $EpwPath"; Click-DialogButton $msg 'No' + } + if ([string]::IsNullOrEmpty($EpwPath)) { return } + $open = Find-Window $epwTitle 60 $proc.Id + if (-not $open) { throw 'EPW open dialog not found' } + Shot $open ($prefix + '-epw-dialog.png') + # The file-name box (Edit inside ComboBox 1148) exposes no Value pattern: set its text with WM_SETTEXT and press Open + # (button id 1) with BM_CLICK. Unlike drive-both.ps1's SendKeys this does not depend on keyboard focus. + Start-Sleep -Milliseconds 700 + $edit = $null + foreach ($x in $open.FindAll($TS::Descendants, (New-Object $PC($AE::ClassNameProperty, 'Edit')))) { if ($x.Current.AutomationId -eq '1148') { $edit = $x } } + if (-not $edit) { throw 'EPW file-name box not found' } + [S05W32T]::SendMessage([IntPtr]$edit.Current.NativeWindowHandle, 0x000C, [IntPtr]::Zero, $EpwPath) | Out-Null + Start-Sleep -Milliseconds 300 + $ok = $null + foreach ($x in $open.FindAll($TS::Descendants, (New-Object $PC($AE::ClassNameProperty, 'Button')))) { if ($x.Current.AutomationId -eq '1') { $ok = $x } } + if (-not $ok) { throw 'EPW Open button not found' } + [S05W32]::SendMessage([IntPtr]$ok.Current.NativeWindowHandle, 0xF5, [IntPtr]::Zero, [IntPtr]::Zero) | Out-Null + Log "EPW set: $EpwPath" +} +function Capture-Comparison([string]$prefix) { + $cmp = Find-Window 'Compare Tas / OpenStudio' ($TimeoutMinutes * 60) $proc.Id + if (-not $cmp) { Log 'Compare window did not appear before the timeout'; return $null } + Start-Sleep -Seconds 3 + $banner = (Find-ById $cmp 'TextBlock_Banner').Current.Name + Log "Banner: $banner" + Shot $cmp ($prefix + '-compare.png') + foreach ($tab in $cmp.FindAll($TS::Descendants, (New-Object $PC($AE::ControlTypeProperty, $CT::TabItem)))) { + if ($tab.Current.Name -like '*Diagnostics*') { try { Invoke-El $tab; Start-Sleep -Seconds 1 } catch {} } + } + $diag = Find-ById $cmp 'TextBox_Diagnostics' + $vp = $null + $diagText = if ($diag.TryGetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern, [ref]$vp)) { $vp.Current.Value } else { $diag.Current.Name } + Set-Content -Path (Join-Path $EvidenceDir ($prefix + '-diagnostics.txt')) -Value ("Banner: " + $banner + "`r`n`r`n" + $diagText) -Encoding UTF8 + Shot $cmp ($prefix + '-compare-diagnostics.png') + return $cmp +} +# The OpenStudio closing summary: a message box titled "OpenStudio Simulation" (the progress window has the same title +# but is not a #32770 dialog). Answers No to "Open the run folder?" (or OK). +function Capture-OpenStudioSummary([string]$prefix) { + $box = Find-Dialog ($TimeoutMinutes * 60) $proc.Id 'OpenStudio Simulation' + if (-not $box) { Log 'No OpenStudio summary before the timeout'; return $null } + Start-Sleep -Seconds 1 + $text = Capture-Dialog $box ($prefix + '-summary.txt') ($prefix + '-summary.png') + $parts = Dialog-Parts $box + if ($parts.Buttons.ContainsKey('No')) { Click-DialogButton $box 'No' } else { Click-DialogButton $box 'OK' } + Start-Sleep -Seconds 2 + return $text +} +# One concurrent start: invoke a ribbon button (or the comparison window's Run) and expect the S02 refusal box. +function Attempt-Start($root, [string]$id, [string]$label, [string]$progressTitle, [string]$refusalTitle = 'Simulation already running') { + $alive = Progress-Alive $progressTitle + Log ("Concurrent attempt: {0} (first run's progress window open: {1})" -f $label, $alive) + Engine-Processes ("before " + $label) | Out-Null + Invoke-El (Find-ById $root $id) + $box = Find-Dialog 20 $proc.Id $refusalTitle + if ($box) { + $text = Capture-Dialog $box 'refusals.txt' ('refusal-' + ($label -replace '[^A-Za-z]', '') + '.png') + Click-DialogButton $box 'OK' + Start-Sleep -Milliseconds 700 + $result = "REFUSED: $text" + } else { + $other = @(Windows-Of $proc.Id | ForEach-Object { try { "'" + $_.Current.Name + "' (" + $_.Current.ClassName + ")" } catch {} }) + $result = "NOT REFUSED; windows now: " + ($other -join ', ') + } + $aliveAfter = Progress-Alive $progressTitle + Log (" -> {0}; first run still running after the attempt: {1}" -f $result, $aliveAfter) + Add-Content -Path (Join-Path $EvidenceDir 'concurrency.txt') -Value ("{0}: {1} | first run's progress window open before: {2}, after: {3}" -f $label, $result, $alive, $aliveAfter) -Encoding UTF8 +} + +$status = 0 +switch ($Scenario) { + 'OpenStudio' { + Start-FromRunSimulation 'OpenStudio' + Answer-Setup 'Select the folder for the OpenStudio run*' 'OpenStudio Simulation' 'Select the EPW weather file for the OpenStudio run' '03' + $started = Get-Date + if (Find-Progress 'OpenStudio Simulation' 60) { Log 'Progress window up' } + $text = Capture-OpenStudioSummary '04' + Log ("Summary after {0:0} s" -f ((Get-Date) - $started).TotalSeconds) + if (-not $text) { $status = 2 } + } + 'CancelOpenStudio' { + Start-FromRunSimulation 'OpenStudio' + Answer-Setup 'Select the folder for the OpenStudio run*' 'OpenStudio Simulation' 'Select the EPW weather file for the OpenStudio run' '03' + $progress = Find-Progress 'OpenStudio Simulation' 60 + if (-not $progress) { throw 'OpenStudio progress window not found' } + $ep = Wait-EngineProcess 'energyplus.exe' 180 + if (-not $ep) { Log 'energyplus.exe never appeared; cancelling anyway' } + Engine-Processes 'running, before Cancel' | Out-Null + Shot $progress '04-progress-before-cancel.png' + Log 'Cancel' + Invoke-El (Find-ById $progress 'Button_Cancel') + $text = Capture-OpenStudioSummary '05' + Start-Sleep -Seconds 3 + Engine-Processes '3 s after the summary' | Out-Null + if (-not $text) { $status = 2 } + } + 'CancelBoth' { + Start-FromRunSimulation 'Both' + Answer-Setup 'Select the folder for the Tas + OpenStudio run*' 'Run Simulation - Tas + OpenStudio' 'Select the EPW weather file for both engines' '03' + $progress = Find-Progress 'Run Simulation - Tas + OpenStudio' 60 + if (-not $progress) { throw 'Both progress window not found' } + $tas = Wait-EngineProcess 'benchmark-tas.exe' 180 + if (-not $tas) { Log 'benchmark-tas.exe never appeared; cancelling anyway' } + Start-Sleep -Seconds 4 # let the producer reach TAS + Engine-Processes 'running, before Cancel' | Out-Null + Shot $progress '04-progress-before-cancel.png' + Log 'Cancel' + Invoke-El (Find-ById $progress 'Button_Cancel') + $cmp = Capture-Comparison '05' + Start-Sleep -Seconds 2 + Engine-Processes 'after the comparison window opened' | Out-Null + if (-not $cmp) { $status = 2 } + } + 'Concurrent' { + Start-FromRunSimulation 'Both' + Answer-Setup 'Select the folder for the Tas + OpenStudio run*' 'Run Simulation - Tas + OpenStudio' 'Select the EPW weather file for both engines' '03' + if (-not (Find-Progress 'Run Simulation - Tas + OpenStudio' 60)) { throw 'Both progress window not found' } + Log 'Both is running; starting the other entry points' + $main = Find-Window 'SAM Analytical `[*' 10 $proc.Id + Attempt-Start $main 'RibbonButton_EnergySimulation' 'Energy Simulation (ribbon)' 'Run Simulation - Tas + OpenStudio' + Attempt-Start $main 'RibbonButton_RunSimulation' 'Run Simulation (ribbon)' 'Run Simulation - Tas + OpenStudio' + Attempt-Start $main 'RibbonButton_OpenStudioSimulation' 'OpenStudio Simulation (ribbon)' 'Run Simulation - Tas + OpenStudio' + $cmp = Capture-Comparison '05' + if (-not $cmp) { $status = 2 } + else { + # Phase 2: the comparison window's Run while an OpenStudio Simulation runs for the same model. + Log 'Phase 2: OpenStudio Simulation from the ribbon, then the comparison window Run while it runs' + Invoke-El (Find-ById $main 'RibbonButton_OpenStudioSimulation') + Answer-Setup 'Select the folder for the OpenStudio run*' 'OpenStudio Simulation' 'Select the EPW weather file for the OpenStudio run' '06' + if (-not (Find-Progress 'OpenStudio Simulation' 60)) { throw 'OpenStudio progress window not found' } + Attempt-Start $cmp 'Button_Run' 'Comparison window Run' 'OpenStudio Simulation' 'Compare Tas / OpenStudio' + Attempt-Start $main 'RibbonButton_EnergySimulation' 'Energy Simulation during OpenStudio (ribbon)' 'OpenStudio Simulation' + $text = Capture-OpenStudioSummary '07' + if (-not $text) { $status = 2 } + } + } +} + +$main = Find-Window 'SAM Analytical `[*' 30 $proc.Id +Log "Main window after: $($main.Current.Name) (before: $title_Before)" +Shot $main '09-main-after.png' +Get-ChildItem -Force $folder_Model | ForEach-Object { Log (" after: {0} {1}" -f $_.Name, $(if ($_.PSIsContainer) { '

' } else { $_.Length })) } + +# Close without saving: no route may write the model file. +foreach ($w in @(Windows-Of $proc.Id)) { + try { if ($w.Current.Name -like 'Compare Tas / OpenStudio*') { $wp = $null; if ($w.TryGetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern, [ref]$wp)) { $wp.Close(); Start-Sleep -Seconds 2 } } } catch {} +} +$wp = $null +if ($main -and $main.TryGetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern, [ref]$wp)) { $wp.Close() } +$save = Find-Dialog 15 $proc.Id +if ($save) { + Log ("Close prompt: '{0}' {1}" -f $save.Current.Name, ((Dialog-Parts $save).Texts -join ' | ')) + try { Click-DialogButton $save 'No' } catch { Log "$_" } +} +if (-not $proc.WaitForExit(60000)) { Log 'App did not exit within 60 s' } else { Log "App exited ($($proc.ExitCode))" } +Log "Done (driver status $status)" +exit $status diff --git a/documentation/evidence/s05-20261020/tools/run-s05-case.ps1 b/documentation/evidence/s05-20261020/tools/run-s05-case.ps1 new file mode 100644 index 00000000..bfbd6c3d --- /dev/null +++ b/documentation/evidence/s05-20261020/tools/run-s05-case.ps1 @@ -0,0 +1,40 @@ +param( + [Parameter(Mandatory)] [string] $Name, + [Parameter(Mandatory)] [ValidateSet('TasRunSimulation', 'TasEnergySimulationRefusal', 'OpenStudio', 'Both', 'CancelBoth', 'CancelOpenStudio', 'Concurrent')] [string] $Kind, + [string] $Model = 'C:\TasOut\s05\inputs\box-aperture.json', + [string] $EpwPath = '', + [int] $TimeoutMinutes = 20 +) +# One S05 licensed acceptance case (test harness): a fresh folder with a copy of the model, an isolated APPDATA/USERPROFILE, +# the freshly built app and producers, then the driver. The S01b drivers are used unchanged for Tas and Both; drive-s05.ps1 +# covers OpenStudio, cancellation and concurrent starts. +$ErrorActionPreference = 'Stop' +$S05 = 'C:\TasOut\s05' +$R = Join-Path $S05 "runs\$Name" +if (Test-Path $R) { throw "$R exists; each case uses a fresh folder" } +New-Item -ItemType Directory -Force $R | Out-Null +$modelCopy = Join-Path $R (Split-Path -Leaf $Model) +Copy-Item $Model $modelCopy +$env:APPDATA = "$S05\sandbox\AppData" +$env:USERPROFILE = "$S05\sandbox\Profile" +$env:SAM_APP_EXE = "$S05\app\SAM Analytical.exe" +$env:SAM_BENCHMARK_TAS = (Get-Content "$S05\producers.txt" | Select-String '^tas=').ToString().Substring(4) +$env:SAM_BENCHMARK_OPENSTUDIO = (Get-Content "$S05\producers.txt" | Select-String '^openstudio=').ToString().Substring(11) +$env:PATH = 'C:\Users\michal\Documents\GitHub\SAM-BIM\.icon-migration\runtime\OpenStudio-3.10.0+86d7e215a1-Windows\bin;' + $env:PATH +# Owner decision 2026-10-20: SAM_COMMIT is a temporary requirement of developer-built producers in Both runs, until S06. +# It is set only for the Both routes, to the SAM commit the producers were verified to be built from (producers.txt). +Remove-Item Env:SAM_COMMIT -ErrorAction SilentlyContinue +if ($Kind -in 'Both', 'CancelBoth', 'Concurrent') { $env:SAM_COMMIT = (Get-Content "$S05\producers.txt" | Select-String '^samCommit=').ToString().Substring(10) } +$ev = Join-Path $R 'evidence' +$tools = "$S05\tools" +Start-Transcript -Path (Join-Path $R 'driver-console.txt') | Out-Null +try { + switch ($Kind) { + 'TasRunSimulation' { & "$tools\drive-tas.ps1" -ModelPath $modelCopy -EvidenceDir $ev -Entry RunSimulationTas -OutputDirectory "$R\out" -ProjectName box -TimeoutMinutes $TimeoutMinutes } + 'TasEnergySimulationRefusal' { & "$tools\drive-tas.ps1" -ModelPath $modelCopy -EvidenceDir $ev -Entry EnergySimulation -OutputDirectory "$R\out" -ProjectName box -BlockTsd -TimeoutMinutes $TimeoutMinutes } + 'Both' { & "$tools\drive-both.ps1" -ModelPath $modelCopy -EvidenceDir $ev -EpwPath $EpwPath -TimeoutMinutes $TimeoutMinutes } + default { & "$tools\drive-s05.ps1" -Scenario $Kind -ModelPath $modelCopy -EvidenceDir $ev -EpwPath $EpwPath -TimeoutMinutes $TimeoutMinutes } + } +} finally { + Stop-Transcript | Out-Null +} diff --git a/documentation/evidence/s05-20261020/tools/s05-uia.ps1 b/documentation/evidence/s05-20261020/tools/s05-uia.ps1 new file mode 100644 index 00000000..54de65bb --- /dev/null +++ b/documentation/evidence/s05-20261020/tools/s05-uia.ps1 @@ -0,0 +1,133 @@ +# S05 licensed acceptance: UI Automation helpers shared by drive-s05.ps1. Dot-source it after setting $EvidenceDir. +# Taken from the S01b drivers (documentation/evidence/s01b-20261019/tools/drive-tas.ps1 and drive-both.ps1) unchanged in +# behaviour; only gathered in one file so the new S05 scenarios use exactly the same window/dialog handling. +Add-Type -AssemblyName UIAutomationClient, UIAutomationTypes, System.Windows.Forms, System.Drawing +$AE = [System.Windows.Automation.AutomationElement] +$TS = [System.Windows.Automation.TreeScope] +$PC = [System.Windows.Automation.PropertyCondition] +$CT = [System.Windows.Automation.ControlType] +New-Item -ItemType Directory -Force $EvidenceDir | Out-Null +$log = Join-Path $EvidenceDir 'driver.log' +function Log($m) { $l = '{0:o} {1}' -f (Get-Date).ToUniversalTime(), $m; try { Add-Content -Path $log -Value $l -Encoding UTF8 -ErrorAction Stop } catch {}; Write-Host $l } + +function Windows-Of([int]$procId) { + $result = @() + foreach ($w in $AE::RootElement.FindAll($TS::Children, [System.Windows.Automation.Condition]::TrueCondition)) { + try { + if ($w.Current.ProcessId -ne $procId) { continue } + $result += $w + foreach ($c in $w.FindAll($TS::Children, (New-Object $PC($AE::ControlTypeProperty, $CT::Window)))) { $result += $c; foreach ($g in $c.FindAll($TS::Children, (New-Object $PC($AE::ControlTypeProperty, $CT::Window)))) { $result += $g } } + } catch {} + } + return $result +} +function Find-Window([string]$titleLike, [int]$seconds, [int]$procId) { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + foreach ($w in (Windows-Of $procId)) { try { if ($w.Current.Name -like $titleLike) { return $w } } catch {} } + Start-Sleep -Milliseconds 300 + } + return $null +} +# A Win32 dialog (#32770): MessageBox (Windows Forms or WPF) and the common file/folder dialogs. +function Find-Dialog([int]$seconds, [int]$procId, [string]$titleLike = '*') { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + foreach ($w in (Windows-Of $procId)) { try { if ($w.Current.ClassName -eq '#32770' -and $w.Current.Name -like $titleLike) { return $w } } catch {} } + Start-Sleep -Milliseconds 300 + } + return $null +} +function Find-ById($root, [string]$id, [int]$seconds = 30) { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + $e = $root.FindFirst($TS::Descendants, (New-Object $PC($AE::AutomationIdProperty, $id))) + if ($e) { return $e } + Start-Sleep -Milliseconds 300 + } + throw "Element '$id' not found" +} +function Find-ByName($root, [string]$name, [int]$seconds = 30) { + $sw = [Diagnostics.Stopwatch]::StartNew() + while ($sw.Elapsed.TotalSeconds -lt $seconds) { + $e = $root.FindFirst($TS::Descendants, (New-Object $PC($AE::NameProperty, $name))) + if ($e) { return $e } + Start-Sleep -Milliseconds 300 + } + throw "Element named '$name' not found" +} +Add-Type -TypeDefinition @' +using System; using System.Runtime.InteropServices; +public static class S05W32 { + [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr h, uint m, IntPtr w, IntPtr l); + [DllImport("user32.dll")] public static extern bool SetCursorPos(int x, int y); + [DllImport("user32.dll")] public static extern void mouse_event(uint f, uint x, uint y, uint d, UIntPtr e); +} +'@ +Add-Type -TypeDefinition @' +using System; using System.Runtime.InteropServices; +public static class S05W32T { [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr SendMessage(IntPtr h, uint m, IntPtr w, string l); } +'@ +function Invoke-El($e) { + $p = $null + if ($e.TryGetCurrentPattern([System.Windows.Automation.InvokePattern]::Pattern, [ref]$p)) { $p.Invoke(); return } + if ($e.TryGetCurrentPattern([System.Windows.Automation.SelectionItemPattern]::Pattern, [ref]$p)) { $p.Select(); return } + # A Win32 button with no pattern (the folder dialog's "Select Folder"): BM_CLICK on its handle, which does not depend + # on focus or on what is under the mouse (the S05 first OpenStudio attempt's mouse click was lost). + if ($e.Current.ClassName -eq 'Button' -and $e.Current.NativeWindowHandle -ne 0) { + [S05W32]::SendMessage([IntPtr]$e.Current.NativeWindowHandle, 0xF5, [IntPtr]::Zero, [IntPtr]::Zero) | Out-Null; return + } + # Win32 file-dialog buttons can expose no pattern: click the centre of the element (as drive-both.ps1). + $r = $e.Current.BoundingRectangle + [S05W32]::SetCursorPos([int]($r.X + $r.Width / 2), [int]($r.Y + $r.Height / 2)) | Out-Null + [S05W32]::mouse_event(2, 0, 0, 0, [UIntPtr]::Zero); Start-Sleep -Milliseconds 80; [S05W32]::mouse_event(4, 0, 0, 0, [UIntPtr]::Zero) +} +# MessageBox Static text and Buttons are raw panes with no patterns: read them through the raw view, click with BM_CLICK. +function Dialog-Parts($dialog) { + $walker = [System.Windows.Automation.TreeWalker]::RawViewWalker + $texts = @(); $buttons = @{} + $c = $walker.GetFirstChild($dialog) + while ($c) { + if ($c.Current.ClassName -eq 'Static' -and $c.Current.Name) { $texts += $c.Current.Name } + if ($c.Current.ClassName -eq 'Button') { $buttons[($c.Current.Name -replace '&', '')] = [IntPtr]$c.Current.NativeWindowHandle } + $c = $walker.GetNextSibling($c) + } + return @{ Texts = $texts; Buttons = $buttons } +} +function Click-DialogButton($dialog, [string]$name) { + $parts = Dialog-Parts $dialog + if (-not $parts.Buttons.ContainsKey($name)) { throw "No '$name' button; buttons: $($parts.Buttons.Keys -join ', ')" } + # BM_CLICK can be ignored by an inactive dialog (here: when TAS has put Notepad in the foreground); WM_ACTIVATE first, + # as the Win32 documentation of BM_CLICK advises. + [S05W32]::SendMessage([IntPtr]$dialog.Current.NativeWindowHandle, 0x0006, [IntPtr]1, [IntPtr]::Zero) | Out-Null + [S05W32]::SendMessage($parts.Buttons[$name], 0xF5, [IntPtr]::Zero, [IntPtr]::Zero) | Out-Null +} +# Records a message box (title, text, buttons) to the log and to , takes its screenshot, and returns its text. +function Capture-Dialog($dialog, [string]$file, [string]$shot) { + $parts = Dialog-Parts $dialog + $text = ($parts.Texts -join "`r`n") + Log (" dialog '{0}': {1}" -f $dialog.Current.Name, ($text -replace "`r`n", ' | ' -replace "`n", ' | ')) + Log (" buttons: " + ($parts.Buttons.Keys -join ', ')) + Add-Content -Path (Join-Path $EvidenceDir $file) -Value ("Title: " + $dialog.Current.Name + "`r`n" + $text + "`r`n") -Encoding UTF8 + Shot $dialog $shot + return $text +} +function Shot($w, [string]$name) { + try { + $r = $w.Current.BoundingRectangle + $bmp = New-Object System.Drawing.Bitmap ([int]$r.Width), ([int]$r.Height) + $g = [System.Drawing.Graphics]::FromImage($bmp) + $g.CopyFromScreen([int]$r.X, [int]$r.Y, 0, 0, $bmp.Size) + $bmp.Save((Join-Path $EvidenceDir $name), [System.Drawing.Imaging.ImageFormat]::Png) + $g.Dispose(); $bmp.Dispose() + } catch { Log "screenshot $name failed: $_" } +} +# Engine processes (name, pid, parent) at this moment, for the cancellation and concurrency evidence. +function Engine-Processes([string]$label) { + $names = 'benchmark-tas.exe', 'benchmark-openstudio.exe', 'openstudio.exe', 'energyplus.exe', 'TBD.exe', 'TasEngine.exe', 'TSD.exe' + $ps = @(Get-CimInstance Win32_Process | Where-Object { $names -contains $_.Name }) + $line = if ($ps.Count) { ($ps | ForEach-Object { '{0}#{1}(parent {2})' -f $_.Name, $_.ProcessId, $_.ParentProcessId }) -join ', ' } else { 'none' } + Log ("processes [{0}]: {1}" -f $label, $line) + Add-Content -Path (Join-Path $EvidenceDir 'processes.txt') -Value ('{0:o} [{1}] {2}' -f (Get-Date).ToUniversalTime(), $label, $line) -Encoding UTF8 + return $ps +} diff --git a/documentation/evidence/s05-20261020/tools/summarise-both.ps1 b/documentation/evidence/s05-20261020/tools/summarise-both.ps1 new file mode 100644 index 00000000..328d75da --- /dev/null +++ b/documentation/evidence/s05-20261020/tools/summarise-both.ps1 @@ -0,0 +1,38 @@ +param([Parameter(Mandatory)] [string[]] $Cases, [string] $Out = 'C:\TasOut\s05\both-summary.txt') +# S05 evidence summary of Run Simulation > Both runs: the manifest's status, snapshot, weather, producer outcomes and what +# each producer reported in its B1a document, plus a line-ending-normalised hash of comparison.csv. +$ErrorActionPreference = 'Stop' +function NormHash([string]$path) { + if (-not (Test-Path $path)) { return 'missing' } + $text = [IO.File]::ReadAllText($path) -replace "`r`n", "`n" + $sha = [Security.Cryptography.SHA256]::Create() + return 'sha256:' + (($sha.ComputeHash([Text.Encoding]::UTF8.GetBytes($text)) | ForEach-Object { $_.ToString('x2') }) -join '').Substring(0, 16) +} +$lines = @() +foreach ($case in $Cases) { + $root = "C:\TasOut\s05\runs\$case" + $runs = @(Get-ChildItem $root -Directory | Where-Object { $_.Name -like '*_TasOpenStudio_*' }) + foreach ($run in $runs) { + $j = Get-Content (Join-Path $run.FullName 'engine-comparison-run.json') -Raw | ConvertFrom-Json + $p = $j.provenance + $lines += "== $case / $($run.Name)" + $lines += " status: $($j.status) started $($j.startedUtc) finished $($j.finishedUtc)" + $lines += " snapshot: $($j.snapshot.sha256)" + $lines += " weather: $($j.weather.source) $($j.weather.sha256)" + $lines += " environment SAM_COMMIT: $($p.environment.SAM_COMMIT) RUNNER_COMMIT: $($p.environment.RUNNER_COMMIT)" + foreach ($pr in $j.producers) { + $lines += (" producer {0}: succeeded={1} exit={2} {3:0.0}s error={4}" -f $pr.engine, $pr.succeeded, $pr.exitCode, $pr.durationSeconds, $pr.error) + $r = $p.producers.($pr.engine).reported + if ($r) { + $lines += (" reported: state={0} samCommit={1} runnerCommit={2} engine={3} {4} route={5} weather={6} designDays={7}" -f $r.state, $r.samCommit, $r.runnerCommit, $r.engine.name, $r.engine.version, $r.route, $r.weather.hash, $r.designDaySource) + $lines += (" sourceFileHash={0} canonicalModelHash={1} canonicalization={2}" -f $r.sourceFileHash, $r.canonicalModelHash, $r.canonicalizationVersion) + } + $lines += (" executable sha256: {0}" -f $p.producers.($pr.engine).executable.sha256) + } + $lines += " comparison.csv (LF-normalised): $(NormHash (Join-Path $run.FullName 'comparison.csv'))" + $lines += " comparison.md (LF-normalised): $(NormHash (Join-Path $run.FullName 'comparison.md'))" + if ($p.unknown) { foreach ($k in $p.unknown.PSObject.Properties) { $lines += " unknown: $($k.Name): $($k.Value)" } } + } +} +$lines | Set-Content -Path $Out -Encoding UTF8 +$lines From 4f0d12b0657d90e78a88604237b6b075792e5218 Mon Sep 17 00:00:00 2001 From: Michal Dengusiak Date: Tue, 20 Oct 2026 08:08:53 +0200 Subject: [PATCH 2/2] docs: S05 record - full unit suite on the rebuilt dependencies Co-Authored-By: Claude Opus 5.5 --- documentation/S05-LicensedAcceptance.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/documentation/S05-LicensedAcceptance.md b/documentation/S05-LicensedAcceptance.md index cd6d5382..d7626859 100644 --- a/documentation/S05-LicensedAcceptance.md +++ b/documentation/S05-LicensedAcceptance.md @@ -33,6 +33,9 @@ the merged S01-S04 content. Branch `docs/s05-acceptance`, base `sow/2026-Q4` `ad the sandboxed profile; every file in them was newer than the build start. No tracked file changed in any repository. Installed SAM and the real `%APPDATA%\SAM` were not touched. +5. Unit tests on the same content with the rebuilt (post-F1) dependencies: `dotnet test WPF/SAM.Analytical.UI.WPF.Tests -c + Release` **2926/2926 PASS** (4 min 19 s; machine-local log `C:\TasOut\s05\logs\fulltest-q4-fresh-deps.txt`). + ## Environment - TAS 9.5.7.0 (licensed; `TBD.exe` sha256 `aa658fcd…`). - OpenStudio 3.10.0 (`.icon-migration\runtime\OpenStudio-3.10.0+86d7e215a1-Windows\bin` first on `PATH`; CLI sha256