A structured catalog of typical problems, tools, use cases, and challenges in using energy modeling tools for buildings.
| Category | Count | IDs |
|---|---|---|
| Problems | 8 | prob_001 – prob_008 |
| Tools | 9 | tool_001 – tool_009 |
| Use Cases | 21 | uc_001 – uc_021 |
| Challenges | 9 | chal_001 – chal_009 |
This folder uses a matrix-based workflow driven by data.yaml.
- Problems: 8 (
prob_001toprob_008) - Tools: 9 (
tool_001totool_009) - Use cases: 21 (
uc_001touc_021) - Challenges: 9 (
chal_001tochal_009)
The use_cases section is the source of truth for problem-tool combinations.
-
generate_interface_matrix.py- Generates
index.htmlfromdata.yaml - Includes the matrix UI, problem/tool/use-case modals, and challenges list
- Persists current page header and matrix header layout
- Generates
-
_reconcile_connections.py- Rebuilds
tools[].use_casesfromuse_cases - Rebuilds
tools[].problems_addressedfromuse_cases - Validates references across problems/tools/use_cases/challenges
- Rebuilds
- Edit
data.yaml - Run reconciliation
- Regenerate HTML
python _reconcile_connections.py
python generate_interface_matrix.py- Manual edits to
index.htmlcan be overwritten by regeneration. - If a UI text change should persist, update
generate_interface_matrix.pyand regenerate.
| File | Purpose |
|---|---|
| data.yaml | All data — edit this to add entries |
| index.html | 🌐 Interactive web explorer — problems, tools, use cases, challenges with cross-references |
| generate_interface_matrix.py | 🔧 Generates the matrix-style index.html from data.yaml |
| _reconcile_connections.py | ✅ Rebuilds and validates cross-references from use_cases |
Open index.html in your web browser to explore the interactive matrix:
- Click on a Problem (left column) → See details, relevant users, and applicable tools
- Click on a Tool (column header) → See details, all problems it addresses, key attributes
- Click on a Matrix Cell (✓) → See the full use case with pros/cons and challenges
The matrix displays all 21 use cases across 8 problems and 9 tools. Hover for visual feedback.
After editing data.yaml, regenerate the HTML interface:
python _reconcile_connections.py
python generate_interface_matrix.pyThe use_cases section is the matrix source of truth for problem-tool connections.
After any edit, re-sync and validate cross-references before regenerating outputs:
python _reconcile_connections.py
python generate_interface_matrix.pyThis guarantees that each tool's use_cases and problems_addressed are rebuilt
from the matrix and all references across problems/tools/use_cases/challenges are valid.
All data lives in data.yaml in four top-level sections. Every entry has a
unique ID used to cross-reference other sections.
Things that need to be solved.
| Field | Type | Description |
|---|---|---|
id |
prob_NNN |
Unique identifier |
name |
string | Short label |
description |
string | One-paragraph description |
tags |
list of strings | Free-form keywords |
users |
list of strings | Who faces this problem (e.g., "Building Designers", "Policy Makers") |
Software or methods used to address problems.
| Field | Type | Description |
|---|---|---|
id |
tool_NNN |
Unique identifier |
name |
string | Tool name |
description |
string | One-paragraph description |
url |
string (optional) | Homepage or repo |
problems_addressed |
list of prob_NNN |
Which problems this tool handles |
use_cases |
list of uc_NNN |
Use cases where this tool is applied |
ease_of_use |
high|med|low |
Learning curve & operational complexity |
time_required |
high|med|low |
Analysis time per building (high=days, med=hours, low=min/sec) |
expense |
high|med|low |
Total cost including labor |
challenges |
list of chal_NNN |
Challenges this tool faces |
attributes |
dict | Named characteristics for comparison (e.g., accuracy, data_requirements) |
Specific scenarios combining a problem and a tool.
| Field | Type | Description |
|---|---|---|
id |
uc_NNN |
Unique identifier |
name |
string | Short label |
description |
string | One-paragraph description |
problem |
prob_NNN |
Problem this use case addresses |
tool |
tool_NNN |
Tool used in this use case |
users |
list of strings | Relevant user roles (e.g., "Building Owners", "Policy Makers") |
challenges |
list of chal_NNN |
Challenges relevant to this use case |
pros |
list of strings | Advantages of this approach |
cons |
list of strings | Disadvantages/limitations |
Cross-cutting difficulties that affect multiple problems and tools.
| Field | Type | Description |
|---|---|---|
id |
chal_NNN |
Unique identifier |
name |
string | Short label |
description |
string | One-paragraph description |
problems |
list of prob_NNN |
Problems this challenge complicates |
tools |
list of tool_NNN |
Tools most affected |
- Append to the
use_caseslist with the nextuc_NNNid. - Specify the relevant
problem(single ID) andtool(single ID). - Fill in name and description.
- Add
users(list of user roles) andchallenges(list ofchal_NNNIDs). - List
prosandcons(advantages and disadvantages of this combination). - Run:
python _reconcile_connections.py
python generate_interface_matrix.py- Append to the
problemslist with the nextprob_NNNid. - Fill in name, description, and tags.
- Add
users(list of user roles who face this problem). - Update relevant tools'
problems_addressedlists. - Create corresponding use cases.
- Run:
python _reconcile_connections.py
python generate_interface_matrix.py