Skip to content

Semi-flat wall constructions#60

Draft
szvsw wants to merge 18 commits intomainfrom
cursor/semi-flat-wall-constructions-2cb3
Draft

Semi-flat wall constructions#60
szvsw wants to merge 18 commits intomainfrom
cursor/semi-flat-wall-constructions-2cb3

Conversation

@szvsw
Copy link
Owner

@szvsw szvsw commented Feb 19, 2026

Add a semi-flat wall construction representation for improved expressivity and ML-friendly feature generation.


Open in Cursor Open in Web

cursoragent and others added 2 commits February 19, 2026 04:29
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
@cursor
Copy link

cursor bot commented Feb 19, 2026

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@codecov-commenter
Copy link

codecov-commenter commented Feb 19, 2026

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 85.26119% with 79 lines in your changes missing coverage. Please review.
✅ Project coverage is 66.8%. Comparing base (f6b3882) to head (07ca72b).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
epinterface/sbem/flat_model.py 0.0% 45 Missing ⚠️
epinterface/sbem/flat_constructions/audit.py 80.0% 6 Missing and 8 partials ⚠️
epinterface/sbem/flat_constructions/roofs.py 94.2% 3 Missing and 3 partials ⚠️
epinterface/sbem/flat_constructions/materials.py 91.8% 4 Missing and 1 partial ⚠️
epinterface/sbem/components/envelope.py 50.0% 3 Missing and 1 partial ⚠️
epinterface/sbem/flat_constructions/slabs.py 95.5% 2 Missing and 1 partial ⚠️
epinterface/sbem/flat_constructions/walls.py 98.2% 0 Missing and 2 partials ⚠️
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##            main     #60     +/-   ##
=======================================
+ Coverage   63.3%   66.8%   +3.4%     
=======================================
  Files         34      42      +8     
  Lines       4907    5472    +565     
  Branches     443     495     +52     
=======================================
+ Hits        3110    3656    +546     
  Misses      1651    1651             
- Partials     146     165     +19     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

cursoragent and others added 11 commits February 19, 2026 04:46
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
Co-authored-by: Sam Wolk <szvsw@users.noreply.github.com>
EnvelopeAssemblyComponent,
)
from epinterface.sbem.flat_constructions.materials import (
CEMENT_MORTAR,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if the materials and their quantities can still be part of the configurations an inputs as well, unless we are collectively exhaustive here

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Part of the goal is for the abstraction to be sufficient that users are not defining materials, only assemblies of materials. And yes, there should be sufficient options in the library to express what is needed. I think that there are probably sufficient options in there now, but we can add more on an as needed basis.



def build_partition_assembly(
*, name: str = "Partition"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be more flexible/handle the boundaries of E+ constructions / what is possible to model in E+. I can test the boundaries a bit!

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I follow here. currently the assumption is that (a) partition construction does not really matter for the most part and (b) it's fine to use a uniform partition for all buildings.

for structural_system, template in WALL_STRUCTURAL_TEMPLATES.items():
if template.supports_cavity_insulation and template.cavity_depth_m is not None:
max_cavity_r = template.cavity_depth_m / FIBERGLASS_BATTS.Conductivity
audit_cavity_r = min(2.0, max_cavity_r * 0.9)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where does the 0.9 come from?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The goal of this test is really to check that the entire assembly comes out reasonably when a reasonable set of user inputs for e.g. cavity insulation, external insulation etc are used; as such, we need to make some sort of choice as to what the user might set for the cavity insulation; for now, it says : "We won't go above RSI-2/R10ish, but otherwise, let's set it to 90% of what the maximum nominal r-value that the cavity could support would be. In other words, if it's 2x4 studs, then the cavity depth is something like 3.x" and so we would use 0.9 * 3.x" of insulation in this test. We could do multiple tests in fact using several different cavity insulation levels; for now though it is just doing one. The goal here is not to test the behavior when the user provides extreme values in excess of what the cavity supports - instead we are trying to test that what we think should be a reasonable layup is in fact a reasonable layup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants