buildingmodel 1.0.0__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.
Files changed (120) hide show
  1. buildingmodel-1.0.0/LICENCE.md +27 -0
  2. buildingmodel-1.0.0/LICENSE +27 -0
  3. buildingmodel-1.0.0/PKG-INFO +168 -0
  4. buildingmodel-1.0.0/README.md +98 -0
  5. buildingmodel-1.0.0/buildingmodel/__init__.py +25 -0
  6. buildingmodel-1.0.0/buildingmodel/creation/__init__.py +0 -0
  7. buildingmodel-1.0.0/buildingmodel/creation/boundary.py +653 -0
  8. buildingmodel-1.0.0/buildingmodel/creation/dwelling.py +41 -0
  9. buildingmodel-1.0.0/buildingmodel/cython_utils/__init__.py +0 -0
  10. buildingmodel-1.0.0/buildingmodel/cython_utils/shading.c +28815 -0
  11. buildingmodel-1.0.0/buildingmodel/data/__init__.py +0 -0
  12. buildingmodel-1.0.0/buildingmodel/data/building_statistics/intermittency_factors.csv +7 -0
  13. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/house_living_area_regression.csv +19 -0
  14. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_100 to 120 m/302/262.pickle +0 -0
  15. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_30 to 40 m/302/262.pickle +0 -0
  16. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_40 to 60 m/302/262.pickle +0 -0
  17. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_60 to 80 m/302/262.pickle +0 -0
  18. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_80 to 100 m/302/262.pickle +0 -0
  19. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_inf 30 m/302/262.pickle +0 -0
  20. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area/metalog_fit_apartment_living_area_sup 120 m/302/262.pickle +0 -0
  21. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_apartment_multiple_use.pickle +0 -0
  22. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_apartment_only.pickle +0 -0
  23. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_0.0_80.0.pickle +0 -0
  24. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_120.0_180.0.pickle +0 -0
  25. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_180.0_280.0.pickle +0 -0
  26. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_280.0_500.0.pickle +0 -0
  27. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_500.0_10000.0.pickle +0 -0
  28. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_only_80.0_120.0.pickle +0 -0
  29. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_with_annex_0.0_150.0.pickle +0 -0
  30. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_with_annex_150.0_250.0.pickle +0 -0
  31. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_with_annex_250.0_350.0.pickle +0 -0
  32. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_house_with_annex_350.0_10000.0.pickle +0 -0
  33. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_multiple_use_0.0_200.0.pickle +0 -0
  34. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_multiple_use_200.0_400.0.pickle +0 -0
  35. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_multiple_use_400.0_600.0.pickle +0 -0
  36. buildingmodel-1.0.0/buildingmodel/data/building_statistics/living_area_share/metalog_fit_multiple_use_600.0_100000.0.pickle +0 -0
  37. buildingmodel-1.0.0/buildingmodel/data/building_statistics/regulation_factors.csv +23 -0
  38. buildingmodel-1.0.0/buildingmodel/data/census/country_level_census.hdf +0 -0
  39. buildingmodel-1.0.0/buildingmodel/data/census/district_level_census_test_sample.hdf +0 -0
  40. buildingmodel-1.0.0/buildingmodel/data/climate/Bordeaux.epw +8768 -0
  41. buildingmodel-1.0.0/buildingmodel/data/climate/Brest.epw +8768 -0
  42. buildingmodel-1.0.0/buildingmodel/data/climate/Clermont-Ferrand.epw +8768 -0
  43. buildingmodel-1.0.0/buildingmodel/data/climate/Dijon.epw +8768 -0
  44. buildingmodel-1.0.0/buildingmodel/data/climate/best_test_weather.epw +8768 -0
  45. buildingmodel-1.0.0/buildingmodel/data/energy_use/cooking_energy_sample.hdf +0 -0
  46. buildingmodel-1.0.0/buildingmodel/data/energy_use/specific_electricity_sample.hdf +0 -0
  47. buildingmodel-1.0.0/buildingmodel/examples/__init__.py +0 -0
  48. buildingmodel-1.0.0/buildingmodel/examples/biot_batipathway.py +154 -0
  49. buildingmodel-1.0.0/buildingmodel/examples/malemort_du_comtat.py +570 -0
  50. buildingmodel-1.0.0/buildingmodel/examples/malemort_du_comtat_batipathway.py +688 -0
  51. buildingmodel-1.0.0/buildingmodel/examples/notebooks/_build_notebooks.py +1171 -0
  52. buildingmodel-1.0.0/buildingmodel/examples/notebooks/notebook_helpers.py +100 -0
  53. buildingmodel-1.0.0/buildingmodel/inference/__init__.py +0 -0
  54. buildingmodel-1.0.0/buildingmodel/inference/boundary.py +85 -0
  55. buildingmodel-1.0.0/buildingmodel/inference/building_attributes.py +137 -0
  56. buildingmodel-1.0.0/buildingmodel/inference/dwelling.py +632 -0
  57. buildingmodel-1.0.0/buildingmodel/inference/gas_network_connection.py +151 -0
  58. buildingmodel-1.0.0/buildingmodel/io/__init__.py +0 -0
  59. buildingmodel-1.0.0/buildingmodel/io/census.py +33 -0
  60. buildingmodel-1.0.0/buildingmodel/io/climate.py +28 -0
  61. buildingmodel-1.0.0/buildingmodel/io/diagnosis.py +13 -0
  62. buildingmodel-1.0.0/buildingmodel/io/gis.py +468 -0
  63. buildingmodel-1.0.0/buildingmodel/io/imbalance_correction.py +405 -0
  64. buildingmodel-1.0.0/buildingmodel/io/plot_3D.py +90 -0
  65. buildingmodel-1.0.0/buildingmodel/logger.py +130 -0
  66. buildingmodel-1.0.0/buildingmodel/main.py +1216 -0
  67. buildingmodel-1.0.0/buildingmodel/models/__init__.py +0 -0
  68. buildingmodel-1.0.0/buildingmodel/models/climate.py +158 -0
  69. buildingmodel-1.0.0/buildingmodel/models/dwelling_needs.py +325 -0
  70. buildingmodel-1.0.0/buildingmodel/models/energy_consumption.py +217 -0
  71. buildingmodel-1.0.0/buildingmodel/models/energy_indicators.py +100 -0
  72. buildingmodel-1.0.0/buildingmodel/models/solar_gains.py +288 -0
  73. buildingmodel-1.0.0/buildingmodel/models/solar_masks.py +143 -0
  74. buildingmodel-1.0.0/buildingmodel/models/thermal_losses.py +298 -0
  75. buildingmodel-1.0.0/buildingmodel/models/thermal_needs.py +162 -0
  76. buildingmodel-1.0.0/buildingmodel/raw_data_process/__init__.py +0 -0
  77. buildingmodel-1.0.0/buildingmodel/raw_data_process/census.py +561 -0
  78. buildingmodel-1.0.0/buildingmodel/raw_data_process/census_polars.py +501 -0
  79. buildingmodel-1.0.0/buildingmodel/raw_data_process/district.py +171 -0
  80. buildingmodel-1.0.0/buildingmodel/renovation/__init__.py +40 -0
  81. buildingmodel-1.0.0/buildingmodel/renovation/apply.py +109 -0
  82. buildingmodel-1.0.0/buildingmodel/renovation/batipathway.py +258 -0
  83. buildingmodel-1.0.0/buildingmodel/renovation/cost.py +181 -0
  84. buildingmodel-1.0.0/buildingmodel/renovation/gestures.py +135 -0
  85. buildingmodel-1.0.0/buildingmodel/renovation/libraries/malemort_default.yaml +62 -0
  86. buildingmodel-1.0.0/buildingmodel/renovation/libraries/rogeau_phd.yaml +260 -0
  87. buildingmodel-1.0.0/buildingmodel/renovation/library.py +196 -0
  88. buildingmodel-1.0.0/buildingmodel/renovation/output.py +81 -0
  89. buildingmodel-1.0.0/buildingmodel/renovation/packages/__init__.py +0 -0
  90. buildingmodel-1.0.0/buildingmodel/renovation/packages/bdd.py +337 -0
  91. buildingmodel-1.0.0/buildingmodel/renovation/packages/mines.py +275 -0
  92. buildingmodel-1.0.0/buildingmodel/renovation/scenario.py +48 -0
  93. buildingmodel-1.0.0/buildingmodel/tests/__init__.py +0 -0
  94. buildingmodel-1.0.0/buildingmodel/tests/conftest.py +30 -0
  95. buildingmodel-1.0.0/buildingmodel/tests/script_perf.py +40 -0
  96. buildingmodel-1.0.0/buildingmodel/tests/test_batipathway_output.py +148 -0
  97. buildingmodel-1.0.0/buildingmodel/tests/test_creation.py +15 -0
  98. buildingmodel-1.0.0/buildingmodel/tests/test_edge_cases.py +515 -0
  99. buildingmodel-1.0.0/buildingmodel/tests/test_energy_indicators.py +73 -0
  100. buildingmodel-1.0.0/buildingmodel/tests/test_inference.py +17 -0
  101. buildingmodel-1.0.0/buildingmodel/tests/test_io.py +14 -0
  102. buildingmodel-1.0.0/buildingmodel/tests/test_models.py +241 -0
  103. buildingmodel-1.0.0/buildingmodel/tests/test_renovation.py +344 -0
  104. buildingmodel-1.0.0/buildingmodel/tests/test_renovation_cost.py +218 -0
  105. buildingmodel-1.0.0/buildingmodel/tests/test_renovation_library.py +248 -0
  106. buildingmodel-1.0.0/buildingmodel/tests/test_renovation_modules.py +574 -0
  107. buildingmodel-1.0.0/buildingmodel/tests/test_run_all.py +14 -0
  108. buildingmodel-1.0.0/buildingmodel/tests/test_tuning_factors.py +47 -0
  109. buildingmodel-1.0.0/buildingmodel/tests/validation/__init__.py +0 -0
  110. buildingmodel-1.0.0/buildingmodel/tests/validation/district_clustering.py +352 -0
  111. buildingmodel-1.0.0/buildingmodel/tests/validation/utils.py +48 -0
  112. buildingmodel-1.0.0/buildingmodel/utils.py +39 -0
  113. buildingmodel-1.0.0/buildingmodel.egg-info/PKG-INFO +168 -0
  114. buildingmodel-1.0.0/buildingmodel.egg-info/SOURCES.txt +118 -0
  115. buildingmodel-1.0.0/buildingmodel.egg-info/dependency_links.txt +1 -0
  116. buildingmodel-1.0.0/buildingmodel.egg-info/requires.txt +21 -0
  117. buildingmodel-1.0.0/buildingmodel.egg-info/top_level.txt +1 -0
  118. buildingmodel-1.0.0/pyproject.toml +132 -0
  119. buildingmodel-1.0.0/setup.cfg +4 -0
  120. buildingmodel-1.0.0/setup.py +27 -0
@@ -0,0 +1,27 @@
1
+ The MIT License (MIT)
2
+ =====================
3
+
4
+ - Copyright © `2021` `Antoine Rogeau`
5
+ - Copyright © `2021` `Robin Girard`
6
+ - Copyright © `2021` `Seddik Yassine Abdelouadoud`
7
+
8
+ Permission is hereby granted, free of charge, to any person
9
+ obtaining a copy of this software and associated documentation
10
+ files (the “Software”), to deal in the Software without
11
+ restriction, including without limitation the rights to use,
12
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the
14
+ Software is furnished to do so, subject to the following
15
+ conditions:
16
+
17
+ The above copyright notice and this permission notice shall be
18
+ included in all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
21
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,27 @@
1
+ The MIT License (MIT)
2
+ =====================
3
+
4
+ - Copyright © `2021` `Antoine Rogeau`
5
+ - Copyright © `2021` `Robin Girard`
6
+ - Copyright © `2021` `Seddik Yassine Abdelouadoud`
7
+
8
+ Permission is hereby granted, free of charge, to any person
9
+ obtaining a copy of this software and associated documentation
10
+ files (the “Software”), to deal in the Software without
11
+ restriction, including without limitation the rights to use,
12
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the
14
+ Software is furnished to do so, subject to the following
15
+ conditions:
16
+
17
+ The above copyright notice and this permission notice shall be
18
+ included in all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
21
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.4
2
+ Name: buildingmodel
3
+ Version: 1.0.0
4
+ Summary: District-level energy simulation of buildings
5
+ Author-email: Yassine Abdelouadoud <yassine.abdelouadoud@gmail.com>
6
+ Maintainer-email: Yassine Abdelouadoud <yassine.abdelouadoud@gmail.com>
7
+ License: The MIT License (MIT)
8
+ =====================
9
+
10
+ - Copyright © `2021` `Antoine Rogeau`
11
+ - Copyright © `2021` `Robin Girard`
12
+ - Copyright © `2021` `Seddik Yassine Abdelouadoud`
13
+
14
+ Permission is hereby granted, free of charge, to any person
15
+ obtaining a copy of this software and associated documentation
16
+ files (the “Software”), to deal in the Software without
17
+ restriction, including without limitation the rights to use,
18
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the
20
+ Software is furnished to do so, subject to the following
21
+ conditions:
22
+
23
+ The above copyright notice and this permission notice shall be
24
+ included in all copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
27
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
28
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
30
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
31
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
33
+ OTHER DEALINGS IN THE SOFTWARE.
34
+
35
+ Classifier: Development Status :: 3 - Alpha
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Operating System :: MacOS :: MacOS X
38
+ Classifier: Operating System :: Microsoft :: Windows
39
+ Classifier: Operating System :: POSIX :: Linux
40
+ Classifier: Programming Language :: Python :: 3.10
41
+ Classifier: Programming Language :: Python :: 3.11
42
+ Classifier: Programming Language :: Python :: 3.12
43
+ Classifier: Programming Language :: Python :: 3.13
44
+ Classifier: Topic :: Scientific/Engineering :: Physics
45
+ Requires-Python: <4.0.0,>=3.8
46
+ Description-Content-Type: text/markdown
47
+ License-File: LICENCE.md
48
+ License-File: LICENSE
49
+ Requires-Dist: geopandas
50
+ Requires-Dist: numpy
51
+ Requires-Dist: polars
52
+ Requires-Dist: pyarrow
53
+ Requires-Dist: topojson
54
+ Requires-Dist: simplification
55
+ Requires-Dist: pvlib
56
+ Requires-Dist: metalog
57
+ Requires-Dist: environs
58
+ Requires-Dist: tqdm
59
+ Requires-Dist: xarray
60
+ Requires-Dist: pyyaml
61
+ Requires-Dist: buildingdata[era5]
62
+ Provides-Extra: dev
63
+ Requires-Dist: pytest; extra == "dev"
64
+ Requires-Dist: pytest-cov; extra == "dev"
65
+ Requires-Dist: ruff; extra == "dev"
66
+ Requires-Dist: bandit; extra == "dev"
67
+ Requires-Dist: pip-audit; extra == "dev"
68
+ Requires-Dist: Cython; extra == "dev"
69
+ Dynamic: license-file
70
+
71
+ # BuildingModel
72
+
73
+ **Description**: BuildingModel is a district-level building energy simulation tool designed to leverage the availability
74
+ of large scale open datasets on building geometry, census-derived dwelling characteristics and energy performance diagnosis.
75
+ The methodology proposed combines GIS data processing with statistical inference techniques to obtain a
76
+ description of each building's envelop geometry (including adjacency), thermal performances (envelop and systems)
77
+ and occupation. This description is then used as the input of a physical model calculating solar gains, losses through
78
+ boundaries and ventilation, heating system consumption and occupant-related energy usage.
79
+
80
+ - **Technology stack**: Python 3, GeoPandas
81
+ - **Status**: Beta (0.2). The complete toolchain is functional, but validation and fine-tuning of the models are still ongoing.
82
+
83
+ **Screenshot**:
84
+ Example of results that can be obtained from a BuildingModel run with the GeoPandas integration allowing easy interactive plotting in Jupyter Notebooks
85
+
86
+ ![](./doc/source/images/energy_by_floor_surface.png)
87
+
88
+ **Documentation**:
89
+ The complete documentation for buildingmodel (methodology and API) is available at [DOCS](https://energytransition.gitlab.io/buildingmodel/)
90
+
91
+ ## Limitations
92
+ BuildingModel has been developed and tested only in the French context, for which GIS, census and energy
93
+ diagnosis data is available. However, the generic character of the methodology should make it suitable for other
94
+ countries as long as similar datasets can be obtained.
95
+ In addition, BuildingModel currently deals only with residential buildings, due to limitations on the availability of data for other building usages.
96
+
97
+ ## Dependencies
98
+
99
+ BuildingModel depends mainly on Python 3 (currently tested on Python 3.8) and GeoPandas. A detailed set of dependencies
100
+ is available in [requirements.txt](./ci/requirements.txt)
101
+
102
+ ## Installation
103
+
104
+ Detailed installation instructions available at [INSTALL](INSTALL.md).
105
+
106
+ ## Usage
107
+
108
+ In its most basic form, BuildingModel can be used by invoking the high level `run_all` function and passing it the
109
+ path to the building GIS file :
110
+
111
+ ```python
112
+ from buildingmodel.main import run_all, Parameters
113
+ from buildingmodel import data_path
114
+ from pathlib import Path
115
+
116
+ parameters = Parameters()
117
+ buildings, boundaries, climate, dwellings = run_all(Path(data_path['gis']) / 'testing' / 'test_sample.gpkg',
118
+ None, parameters)
119
+ ```
120
+
121
+ The results returned ar GeoDataFrame in the case of buildings and boundaries and DataFrame in the case of the climate
122
+ and dwellings. More advanced uses and result processing are available as jupyter notebook examples in the documentation.
123
+
124
+ ## How to test the software
125
+
126
+ From the root folder of BuildingModel, run :
127
+
128
+ ```
129
+ pytest
130
+ ```
131
+
132
+ ## Known issues
133
+
134
+ - Current occupant-related energy usage models are very crude and subject significant future changes.
135
+ - Energy consumption of heating systems relies on a constant efficiency model that will be replaced by technology-specific models (in particular
136
+ for heat pumps).
137
+ - Peak consumption estimates are provided by building but cannot be summed directly to obtain the
138
+ total peak consumption of the district as the peaks may not be all synchronous.
139
+ - Consumption of cooling systems is not modelled
140
+
141
+ ## Getting help
142
+
143
+ If you have questions, concerns, bug reports, etc, please file an issue in this repository's Issue Tracker.
144
+
145
+ ## Getting involved
146
+
147
+ BuildingModel is looking for users to provide feedback and bug reports on the initial set of functionalities as well as
148
+ developers to contribute to the next versions, with a focus on validation of models, cooling need simulation,
149
+ adaptation to other countries' datasets and building usages.
150
+
151
+ Instructions on how to contribute are available at [CONTRIBUTING](CONTRIBUTING.md).
152
+
153
+
154
+ ## Open source licensing info
155
+ 1. [LICENSE](LICENSE)
156
+
157
+ ----
158
+
159
+ ## Credits and references
160
+ BuildingModel physical models are directly derived from the work of Antoine Rogeau in [
161
+ Vers une approche intégrée d’aide à la planification énergétique territoriale : application à la rénovation énergétique des bâtiments](https://www.theses.fr/2020UPSLM014)
162
+
163
+ ### Funding :
164
+
165
+ ### Main contributors :
166
+ - Antoine Rogeau
167
+ - [Robin Girard](https://www.minesparis.psl.eu/Services/Annuaire/robin-girard) -- [gitHub](https://github.com/robingirard) [LinkedIn](https://www.linkedin.com/in/robin-girard-a88baa4/) [google Scholar](https://scholar.google.fr/citations?user=cEYGStIAAAAJ&hl=fr)
168
+ - Seddik Yassine Abdelouadoud
@@ -0,0 +1,98 @@
1
+ # BuildingModel
2
+
3
+ **Description**: BuildingModel is a district-level building energy simulation tool designed to leverage the availability
4
+ of large scale open datasets on building geometry, census-derived dwelling characteristics and energy performance diagnosis.
5
+ The methodology proposed combines GIS data processing with statistical inference techniques to obtain a
6
+ description of each building's envelop geometry (including adjacency), thermal performances (envelop and systems)
7
+ and occupation. This description is then used as the input of a physical model calculating solar gains, losses through
8
+ boundaries and ventilation, heating system consumption and occupant-related energy usage.
9
+
10
+ - **Technology stack**: Python 3, GeoPandas
11
+ - **Status**: Beta (0.2). The complete toolchain is functional, but validation and fine-tuning of the models are still ongoing.
12
+
13
+ **Screenshot**:
14
+ Example of results that can be obtained from a BuildingModel run with the GeoPandas integration allowing easy interactive plotting in Jupyter Notebooks
15
+
16
+ ![](./doc/source/images/energy_by_floor_surface.png)
17
+
18
+ **Documentation**:
19
+ The complete documentation for buildingmodel (methodology and API) is available at [DOCS](https://energytransition.gitlab.io/buildingmodel/)
20
+
21
+ ## Limitations
22
+ BuildingModel has been developed and tested only in the French context, for which GIS, census and energy
23
+ diagnosis data is available. However, the generic character of the methodology should make it suitable for other
24
+ countries as long as similar datasets can be obtained.
25
+ In addition, BuildingModel currently deals only with residential buildings, due to limitations on the availability of data for other building usages.
26
+
27
+ ## Dependencies
28
+
29
+ BuildingModel depends mainly on Python 3 (currently tested on Python 3.8) and GeoPandas. A detailed set of dependencies
30
+ is available in [requirements.txt](./ci/requirements.txt)
31
+
32
+ ## Installation
33
+
34
+ Detailed installation instructions available at [INSTALL](INSTALL.md).
35
+
36
+ ## Usage
37
+
38
+ In its most basic form, BuildingModel can be used by invoking the high level `run_all` function and passing it the
39
+ path to the building GIS file :
40
+
41
+ ```python
42
+ from buildingmodel.main import run_all, Parameters
43
+ from buildingmodel import data_path
44
+ from pathlib import Path
45
+
46
+ parameters = Parameters()
47
+ buildings, boundaries, climate, dwellings = run_all(Path(data_path['gis']) / 'testing' / 'test_sample.gpkg',
48
+ None, parameters)
49
+ ```
50
+
51
+ The results returned ar GeoDataFrame in the case of buildings and boundaries and DataFrame in the case of the climate
52
+ and dwellings. More advanced uses and result processing are available as jupyter notebook examples in the documentation.
53
+
54
+ ## How to test the software
55
+
56
+ From the root folder of BuildingModel, run :
57
+
58
+ ```
59
+ pytest
60
+ ```
61
+
62
+ ## Known issues
63
+
64
+ - Current occupant-related energy usage models are very crude and subject significant future changes.
65
+ - Energy consumption of heating systems relies on a constant efficiency model that will be replaced by technology-specific models (in particular
66
+ for heat pumps).
67
+ - Peak consumption estimates are provided by building but cannot be summed directly to obtain the
68
+ total peak consumption of the district as the peaks may not be all synchronous.
69
+ - Consumption of cooling systems is not modelled
70
+
71
+ ## Getting help
72
+
73
+ If you have questions, concerns, bug reports, etc, please file an issue in this repository's Issue Tracker.
74
+
75
+ ## Getting involved
76
+
77
+ BuildingModel is looking for users to provide feedback and bug reports on the initial set of functionalities as well as
78
+ developers to contribute to the next versions, with a focus on validation of models, cooling need simulation,
79
+ adaptation to other countries' datasets and building usages.
80
+
81
+ Instructions on how to contribute are available at [CONTRIBUTING](CONTRIBUTING.md).
82
+
83
+
84
+ ## Open source licensing info
85
+ 1. [LICENSE](LICENSE)
86
+
87
+ ----
88
+
89
+ ## Credits and references
90
+ BuildingModel physical models are directly derived from the work of Antoine Rogeau in [
91
+ Vers une approche intégrée d’aide à la planification énergétique territoriale : application à la rénovation énergétique des bâtiments](https://www.theses.fr/2020UPSLM014)
92
+
93
+ ### Funding :
94
+
95
+ ### Main contributors :
96
+ - Antoine Rogeau
97
+ - [Robin Girard](https://www.minesparis.psl.eu/Services/Annuaire/robin-girard) -- [gitHub](https://github.com/robingirard) [LinkedIn](https://www.linkedin.com/in/robin-girard-a88baa4/) [google Scholar](https://scholar.google.fr/citations?user=cEYGStIAAAAJ&hl=fr)
98
+ - Seddik Yassine Abdelouadoud
@@ -0,0 +1,25 @@
1
+ from importlib.resources import files
2
+ from pathlib import Path
3
+
4
+ from environs import Env
5
+
6
+ # paths for bundled model-parameter data (small, committed with the package)
7
+ # large reference data (census, diagnosis, districts, gas network) is managed
8
+ # by the buildingdata package and no longer bundled here
9
+ data_path = {
10
+ "building_statistics": files("buildingmodel") / "data" / "building_statistics",
11
+ "energy_use": files("buildingmodel") / "data" / "energy_use",
12
+ "energy_open_data": files("buildingmodel") / "data" / "energy_open_data",
13
+ }
14
+
15
+
16
+ # environ file variable
17
+ # Load environment file
18
+ BASE_DIR = Path(__file__).parent.expanduser().resolve()
19
+ log_dir = BASE_DIR / "logs"
20
+ environ_path = BASE_DIR / ".env"
21
+ env = Env()
22
+ Env.read_env(environ_path)
23
+
24
+ # display plots in tests
25
+ plot = env.bool("plot", False)
File without changes