epinterface 1.0.0__tar.gz → 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {epinterface-1.0.0 → epinterface-1.0.1}/PKG-INFO +1 -1
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/constants/__init__.py +19 -14
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/builder.py +83 -40
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/flat_model.py +1 -1
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/idf-demo.py +1 -1
- {epinterface-1.0.0 → epinterface-1.0.1}/pyproject.toml +1 -1
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_components/test_builder.py +1 -1
- {epinterface-1.0.0 → epinterface-1.0.1}/.editorconfig +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.github/actions/setup-python-env/action.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.github/workflows/main.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.github/workflows/on-release-main.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.github/workflows/validate-codecov-config.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.gitignore +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.pre-commit-config.yaml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.prettierignore +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.python-version +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/.vscode/settings.json +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/CONTRIBUTING.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/LICENSE +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/Makefile +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/README.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/codecov.yaml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/cli.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/index.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/actions.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/builder.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/climate-studio.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/geometry.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/interface.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/sbem/components.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/sbem/composer.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/sbem/index.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/docs/modules/weather.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/actions.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/builder.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/cli.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/climate_studio/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/climate_studio/builder.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/climate_studio/interface.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/Minimal.idf +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/USA_MA_Boston-Logan.Intl.AP.725090_TMYx.2009-2023.ddy +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/USA_MA_Boston-Logan.Intl.AP.725090_TMYx.2009-2023.epw +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/USA_MA_Boston-Logan.Intl.AP.725090_TMYx.2009-2023.zip +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/data/res_schedules.parquet +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/ddy_injector_bayes.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/ddy_interface_bayes.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/geometry.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/interface.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/py.typed +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/annotations.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/common.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/composer.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/envelope.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/materials.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/operations.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/schedules.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/space_use.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/systems.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/components/zones.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/exceptions.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/fields/__init__.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/fields/spec.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/interface.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/model_graph_structure.md +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/client.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250309133033_create_initial_schema/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250310162045_switch_to_using_one_week_per_month/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250317202733_change_names_ventilation/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250325185158_add_mutually_exclusive_ventilation_techtypes/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250326141941_reduce_naming_complexity_ventilation/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250331141910_add_support_for_attic_and_basement_constructions/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/20250919152559_decouple_basement_infiltration/migration.sql +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/migration_lock.toml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/partial_types.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/schema.prisma +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/seed_fns.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/utils.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/epinterface/weather.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/mkdocs.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/everett_lib.json +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/everett_lib_v2.ipynb +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/everett_retrofit_actions.ipynb +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/everett_retrofits.yaml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/idf-demo.ipynb +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/notebooks/view-geo.ipynb +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/scripts/gridsim.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/conftest.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/20251001_Template_MAWebApp.xlsx +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/USA_MA_Chicopee-Westover.Metro.AP.744910_TMYx.2009-2023.zip +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/component-map-ma.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/components-ma.db +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/0318_Template_MAWebApp.xlsx +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/Template_MAWebApp.xlsx +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/component-map-ma.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/components-ma-old.db +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/components-ma.db +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/components-ma.db Kopie +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/components-ma.db Kopie 2 +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/components-ma.db Kopie 3 +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/old/semantic-fields-ma.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/semantic-fields-ma.yml +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/test_lib.json +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/data/tester_lib.xlsx +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_actions.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_components/test_component_lib.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_components/test_envelope_comps.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_components/test_operations.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_components/test_space_use_comps.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_composer.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_db.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_example.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_geometry.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tests/test_weather.py +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/tox.ini +0 -0
- {epinterface-1.0.0 → epinterface-1.0.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: epinterface
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: This is a repository for dynamically generating energy models within Python, relying on Archetypal and Eppy for most of its functionality.
|
|
5
5
|
Project-URL: Homepage, https://github.com/szvsw/epinterface
|
|
6
6
|
Project-URL: Documentation, https://szvsw.github.io/epinterface
|
|
@@ -34,21 +34,26 @@ class AssumedConstants(BaseModel, frozen=True):
|
|
|
34
34
|
FractionLostEquipment: float = Field(default=0, ge=0, le=1)
|
|
35
35
|
|
|
36
36
|
MetabolicRate_met: float = Field(default=1.2, ge=0, frozen=True)
|
|
37
|
+
# SiteGroundTemperature_degC: list[float] = Field(
|
|
38
|
+
# default=[
|
|
39
|
+
# 18.3,
|
|
40
|
+
# 18.2,
|
|
41
|
+
# 18.3,
|
|
42
|
+
# 18.4,
|
|
43
|
+
# 20.1,
|
|
44
|
+
# 22.0,
|
|
45
|
+
# 22.3,
|
|
46
|
+
# 22.5,
|
|
47
|
+
# 22.5,
|
|
48
|
+
# 20.7,
|
|
49
|
+
# 18.9,
|
|
50
|
+
# 18.5,
|
|
51
|
+
# ],
|
|
52
|
+
# frozen=True,
|
|
53
|
+
# )
|
|
54
|
+
|
|
37
55
|
SiteGroundTemperature_degC: list[float] = Field(
|
|
38
|
-
default=[
|
|
39
|
-
18.3,
|
|
40
|
-
18.2,
|
|
41
|
-
18.3,
|
|
42
|
-
18.4,
|
|
43
|
-
20.1,
|
|
44
|
-
22.0,
|
|
45
|
-
22.3,
|
|
46
|
-
22.5,
|
|
47
|
-
22.5,
|
|
48
|
-
20.7,
|
|
49
|
-
18.9,
|
|
50
|
-
18.5,
|
|
51
|
-
],
|
|
56
|
+
default=[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
|
|
52
57
|
frozen=True,
|
|
53
58
|
)
|
|
54
59
|
Sensible_Heat_Recovery_Effectiveness: float = Field(
|
|
@@ -45,6 +45,13 @@ DESIRED_METERS = (
|
|
|
45
45
|
"WaterSystems:DistrictHeating",
|
|
46
46
|
)
|
|
47
47
|
|
|
48
|
+
# TODO: add the meters for HVAC systems
|
|
49
|
+
DESIRED_VARIABLES = (
|
|
50
|
+
"Zone Mean Air Temperature",
|
|
51
|
+
"Zone Air Relative Humidity",
|
|
52
|
+
"Site Outdoor Air Drybulb Temperature",
|
|
53
|
+
)
|
|
54
|
+
|
|
48
55
|
|
|
49
56
|
class SimulationPathConfig(BaseModel):
|
|
50
57
|
"""The configuration for the simulation's pathing."""
|
|
@@ -815,13 +822,33 @@ class Model(BaseWeather, validate_assignment=True):
|
|
|
815
822
|
target_base_filepath = config.output_dir / "Minimal.idf"
|
|
816
823
|
shutil.copy(base_filepath, target_base_filepath)
|
|
817
824
|
epw_path, ddy_path = asyncio.run(self.fetch_weather(config.weather_dir))
|
|
818
|
-
output_meters =
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
+
output_meters = (
|
|
826
|
+
[
|
|
827
|
+
{
|
|
828
|
+
"key": "OUTPUT:METER",
|
|
829
|
+
"Key_Name": meter,
|
|
830
|
+
"Reporting_Frequency": "Monthly",
|
|
831
|
+
}
|
|
832
|
+
for meter in DESIRED_METERS
|
|
833
|
+
]
|
|
834
|
+
+ [
|
|
835
|
+
{
|
|
836
|
+
"key": "OUTPUT:METER",
|
|
837
|
+
"Key_Name": meter,
|
|
838
|
+
"Reporting_Frequency": "Hourly",
|
|
839
|
+
}
|
|
840
|
+
for meter in DESIRED_METERS
|
|
841
|
+
]
|
|
842
|
+
+ [
|
|
843
|
+
{
|
|
844
|
+
"key": "OUTPUT:VARIABLE",
|
|
845
|
+
"Key_Value": "*",
|
|
846
|
+
"Variable_Name": variable,
|
|
847
|
+
"Reporting_Frequency": "Hourly",
|
|
848
|
+
}
|
|
849
|
+
for variable in DESIRED_VARIABLES
|
|
850
|
+
]
|
|
851
|
+
)
|
|
825
852
|
idf = IDF(
|
|
826
853
|
target_base_filepath.as_posix(),
|
|
827
854
|
as_version="22.2", # pyright: ignore [reportArgumentType]
|
|
@@ -983,7 +1010,7 @@ class Model(BaseWeather, validate_assignment=True):
|
|
|
983
1010
|
"""
|
|
984
1011
|
err_files = filter(
|
|
985
1012
|
lambda x: x.suffix == ".err",
|
|
986
|
-
[
|
|
1013
|
+
[Path(f) for f in idf.simulation_files],
|
|
987
1014
|
)
|
|
988
1015
|
err_text = "\n".join([f.read_text() for f in err_files])
|
|
989
1016
|
return err_text
|
|
@@ -1228,20 +1255,29 @@ class Model(BaseWeather, validate_assignment=True):
|
|
|
1228
1255
|
self,
|
|
1229
1256
|
weather_dir: Path | None = None,
|
|
1230
1257
|
post_geometry_callback: Callable[[IDF], IDF] | None = None,
|
|
1231
|
-
|
|
1258
|
+
eplus_parent_dir: Path | None = None,
|
|
1259
|
+
) -> tuple[IDF, pd.Series, str, Sql, Path | None]:
|
|
1232
1260
|
"""Build and simualte the idf model.
|
|
1233
1261
|
|
|
1234
1262
|
Args:
|
|
1235
1263
|
weather_dir (Path): The directory to store the weather files.
|
|
1236
1264
|
post_geometry_callback (Callable[[IDF],IDF] | None): A callback to run after the geometry is added.
|
|
1265
|
+
eplus_parent_dir (Path | None): The parent directory to store the eplus working directory. If None, a temporary directory will be used.
|
|
1237
1266
|
|
|
1238
1267
|
Returns:
|
|
1239
1268
|
idf (IDF): The built energy model.
|
|
1240
|
-
results (
|
|
1269
|
+
results (pd.Series): The postprocessed results including energy, peak, and temperature data.
|
|
1241
1270
|
err_text (str): The warning text.
|
|
1271
|
+
sql (Sql): The SQL results file with simulation data.
|
|
1272
|
+
eplus_dir (Path | None): The path to the eplus artifact directory (None if a temporary directory was used).
|
|
1242
1273
|
"""
|
|
1243
|
-
with tempfile.TemporaryDirectory() as
|
|
1244
|
-
output_dir =
|
|
1274
|
+
with tempfile.TemporaryDirectory() as output_dir_name:
|
|
1275
|
+
output_dir = (
|
|
1276
|
+
Path(output_dir_name)
|
|
1277
|
+
if eplus_parent_dir is None
|
|
1278
|
+
else eplus_parent_dir / "eplus_simulation"
|
|
1279
|
+
)
|
|
1280
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
1245
1281
|
config = (
|
|
1246
1282
|
SimulationPathConfig(
|
|
1247
1283
|
output_dir=output_dir,
|
|
@@ -1257,8 +1293,11 @@ class Model(BaseWeather, validate_assignment=True):
|
|
|
1257
1293
|
)
|
|
1258
1294
|
results = self.standard_results_postprocess(sql)
|
|
1259
1295
|
err_text = self.get_warnings(idf)
|
|
1296
|
+
|
|
1260
1297
|
gc.collect()
|
|
1261
|
-
|
|
1298
|
+
# if eplus_parent_dir is not None, we return the path to the output directory
|
|
1299
|
+
output_dir_result = output_dir if eplus_parent_dir is not None else None
|
|
1300
|
+
return idf, results, err_text, sql, output_dir_result
|
|
1262
1301
|
|
|
1263
1302
|
|
|
1264
1303
|
if __name__ == "__main__":
|
|
@@ -1271,8 +1310,10 @@ if __name__ == "__main__":
|
|
|
1271
1310
|
from epinterface.sbem.prisma.client import PrismaSettings
|
|
1272
1311
|
|
|
1273
1312
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
1274
|
-
database_path = Path("
|
|
1275
|
-
component_map_path = Path(
|
|
1313
|
+
database_path = Path("/Users/daryaguettler/globi/data/Brazil/components-lib.db")
|
|
1314
|
+
component_map_path = Path(
|
|
1315
|
+
"/Users/daryaguettler/globi/data/Brazil/component-map.yaml"
|
|
1316
|
+
)
|
|
1276
1317
|
settings = PrismaSettings(
|
|
1277
1318
|
database_path=database_path,
|
|
1278
1319
|
auto_register=False,
|
|
@@ -1289,32 +1330,17 @@ if __name__ == "__main__":
|
|
|
1289
1330
|
selector = SelectorModel.model_validate(component_map_yaml)
|
|
1290
1331
|
db = settings.db
|
|
1291
1332
|
context = {
|
|
1292
|
-
"
|
|
1293
|
-
"
|
|
1294
|
-
"
|
|
1295
|
-
"
|
|
1296
|
-
"AtticFloorInsulation": "NoInsulation",
|
|
1297
|
-
"RoofInsulation": "UninsulatedRoof",
|
|
1298
|
-
"BasementCeilingInsulation": "InsulatedCeiling",
|
|
1299
|
-
"BasementWallsInsulation": "UninsulatedWalls",
|
|
1300
|
-
"GroundSlabInsulation": "UninsulatedGroundSlab",
|
|
1301
|
-
"Walls": "SomeInsulationWalls",
|
|
1302
|
-
"Weatherization": "SomewhatLeakyEnvelope",
|
|
1303
|
-
"Windows": "DoublePaneLowE",
|
|
1304
|
-
"Heating": "ASHPHeating",
|
|
1305
|
-
"Cooling": "ASHPCooling",
|
|
1306
|
-
"Distribution": "Steam",
|
|
1307
|
-
"DHW": "NaturalGasDHW",
|
|
1308
|
-
"Lighting": "NoLED",
|
|
1309
|
-
"Equipment": "LowEfficiencyEquipment",
|
|
1310
|
-
"Thermostat": "NoControls",
|
|
1333
|
+
"region": "SP",
|
|
1334
|
+
"income": "Low",
|
|
1335
|
+
"typology": "Residential",
|
|
1336
|
+
"scenario": "withAC",
|
|
1311
1337
|
}
|
|
1312
1338
|
with settings.db:
|
|
1313
1339
|
zone = cast(ZoneComponent, selector.get_component(context=context, db=db))
|
|
1314
1340
|
|
|
1315
1341
|
model = Model(
|
|
1316
1342
|
Weather=(
|
|
1317
|
-
"https://climate.onebuilding.org/
|
|
1343
|
+
"https://climate.onebuilding.org/WMO_Region_3_South_America/BRA_Brazil/SP_Sao_Paulo/BRA_SP_Guaratingueta.AP.837080_TMYx.2009-2023.zip"
|
|
1318
1344
|
), # pyright: ignore [reportArgumentType]
|
|
1319
1345
|
Zone=zone,
|
|
1320
1346
|
Attic=AtticAssumptions(
|
|
@@ -1328,10 +1354,10 @@ if __name__ == "__main__":
|
|
|
1328
1354
|
geometry=ShoeboxGeometry(
|
|
1329
1355
|
x=0,
|
|
1330
1356
|
y=0,
|
|
1331
|
-
w=
|
|
1332
|
-
d=
|
|
1357
|
+
w=20,
|
|
1358
|
+
d=20,
|
|
1333
1359
|
h=3,
|
|
1334
|
-
wwr=0.
|
|
1360
|
+
wwr=0.3,
|
|
1335
1361
|
num_stories=3,
|
|
1336
1362
|
basement=False,
|
|
1337
1363
|
zoning="by_storey",
|
|
@@ -1341,10 +1367,27 @@ if __name__ == "__main__":
|
|
|
1341
1367
|
)
|
|
1342
1368
|
|
|
1343
1369
|
# post_geometry_callback = lambda x: x.saveas("notebooks/badgeo.idf")
|
|
1344
|
-
|
|
1370
|
+
|
|
1371
|
+
_idf, results, _err_text, _sql, _ = model.run(
|
|
1345
1372
|
# post_geometry_callback=post_geometry_callback,
|
|
1346
1373
|
)
|
|
1374
|
+
|
|
1375
|
+
# temp_config = TemperatureOutputConfig(mode="hours_above_threshold", threshold=26.0)
|
|
1376
|
+
# _idf, results, _err_text, _sql = model.run(temp_config=temp_config)
|
|
1347
1377
|
# _idf.saveas("test-out.idf")
|
|
1348
1378
|
print(_err_text)
|
|
1349
1379
|
print(results)
|
|
1350
|
-
|
|
1380
|
+
|
|
1381
|
+
if "Temperature" in results.index.get_level_values("Measurement"):
|
|
1382
|
+
zone_temp_results = results.loc["Temperature"]
|
|
1383
|
+
print("Zone Temperature Results:")
|
|
1384
|
+
print(zone_temp_results)
|
|
1385
|
+
else:
|
|
1386
|
+
print("No temperature data found in results")
|
|
1387
|
+
print(
|
|
1388
|
+
f"Available measurements: {results.index.get_level_values('Measurement').unique().tolist()}"
|
|
1389
|
+
)
|
|
1390
|
+
|
|
1391
|
+
energy_raw = results.loc["Energy"].loc["Raw"]
|
|
1392
|
+
print("Energy Raw Results:")
|
|
1393
|
+
print(energy_raw.groupby(level=0).sum())
|
|
@@ -2126,7 +2126,7 @@ class FlatModel(BaseModel):
|
|
|
2126
2126
|
"""Simulate the model and return the IDF, result, and error."""
|
|
2127
2127
|
model, cb = self.to_model()
|
|
2128
2128
|
|
|
2129
|
-
idf, result, err = model.run(post_geometry_callback=cb)
|
|
2129
|
+
idf, result, err, _sql, _ = model.run(post_geometry_callback=cb)
|
|
2130
2130
|
|
|
2131
2131
|
return idf, result, err
|
|
2132
2132
|
|
|
@@ -921,7 +921,7 @@ if __name__ == "__main__":
|
|
|
921
921
|
|
|
922
922
|
model = params.to_model()
|
|
923
923
|
|
|
924
|
-
idf, results, err_text = model.run()
|
|
924
|
+
idf, results, err_text, *_ = model.run()
|
|
925
925
|
idf.saveas("model.idf")
|
|
926
926
|
results.to_csv("results.csv")
|
|
927
927
|
agg_results = results.groupby(["Meter", "Aggregation"]).sum()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "epinterface"
|
|
3
|
-
version = "v1.0.
|
|
3
|
+
version = "v1.0.1"
|
|
4
4
|
description = "This is a repository for dynamically generating energy models within Python, relying on Archetypal and Eppy for most of its functionality."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{epinterface-1.0.0 → epinterface-1.0.1}/epinterface/sbem/prisma/migrations/migration_lock.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|