geoloop 0.0.1__tar.gz → 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 (63) hide show
  1. geoloop-0.0.1/LICENSE → geoloop-1.0.0/LICENSE.md +2 -1
  2. geoloop-1.0.0/PKG-INFO +120 -0
  3. geoloop-1.0.0/README.md +92 -0
  4. geoloop-1.0.0/pyproject.toml +85 -0
  5. geoloop-1.0.0/src/geoloop/axisym/AxisymetricEL.py +751 -0
  6. geoloop-1.0.0/src/geoloop/axisym/__init__.py +3 -0
  7. geoloop-1.0.0/src/geoloop/bin/Flowdatamain.py +89 -0
  8. geoloop-1.0.0/src/geoloop/bin/Lithologymain.py +84 -0
  9. geoloop-1.0.0/src/geoloop/bin/Loadprofilemain.py +100 -0
  10. geoloop-1.0.0/src/geoloop/bin/Plotmain.py +250 -0
  11. geoloop-1.0.0/src/geoloop/bin/Runbatch.py +81 -0
  12. geoloop-1.0.0/src/geoloop/bin/Runmain.py +86 -0
  13. geoloop-1.0.0/src/geoloop/bin/SingleRunSim.py +928 -0
  14. geoloop-1.0.0/src/geoloop/bin/__init__.py +3 -0
  15. geoloop-1.0.0/src/geoloop/cli/batch.py +106 -0
  16. geoloop-1.0.0/src/geoloop/cli/main.py +105 -0
  17. geoloop-1.0.0/src/geoloop/configuration.py +946 -0
  18. geoloop-1.0.0/src/geoloop/constants.py +112 -0
  19. geoloop-1.0.0/src/geoloop/geoloopcore/CoaxialPipe.py +503 -0
  20. geoloop-1.0.0/src/geoloop/geoloopcore/CustomPipe.py +727 -0
  21. geoloop-1.0.0/src/geoloop/geoloopcore/__init__.py +3 -0
  22. geoloop-1.0.0/src/geoloop/geoloopcore/b2g.py +739 -0
  23. geoloop-1.0.0/src/geoloop/geoloopcore/b2g_ana.py +516 -0
  24. geoloop-1.0.0/src/geoloop/geoloopcore/boreholedesign.py +683 -0
  25. geoloop-1.0.0/src/geoloop/geoloopcore/getloaddata.py +112 -0
  26. geoloop-1.0.0/src/geoloop/geoloopcore/pyg_ana.py +280 -0
  27. geoloop-1.0.0/src/geoloop/geoloopcore/pygfield_ana.py +519 -0
  28. geoloop-1.0.0/src/geoloop/geoloopcore/simulationparameters.py +130 -0
  29. geoloop-1.0.0/src/geoloop/geoloopcore/soilproperties.py +152 -0
  30. geoloop-1.0.0/src/geoloop/geoloopcore/strat_interpolator.py +194 -0
  31. geoloop-1.0.0/src/geoloop/lithology/__init__.py +3 -0
  32. geoloop-1.0.0/src/geoloop/lithology/plot_lithology.py +277 -0
  33. geoloop-1.0.0/src/geoloop/lithology/process_lithology.py +695 -0
  34. geoloop-1.0.0/src/geoloop/loadflowdata/__init__.py +3 -0
  35. geoloop-1.0.0/src/geoloop/loadflowdata/flow_data.py +161 -0
  36. geoloop-1.0.0/src/geoloop/loadflowdata/loadprofile.py +325 -0
  37. geoloop-1.0.0/src/geoloop/plotting/__init__.py +3 -0
  38. geoloop-1.0.0/src/geoloop/plotting/create_plots.py +1142 -0
  39. geoloop-1.0.0/src/geoloop/plotting/load_data.py +432 -0
  40. geoloop-1.0.0/src/geoloop/utils/RunManager.py +164 -0
  41. geoloop-1.0.0/src/geoloop/utils/__init__.py +0 -0
  42. geoloop-1.0.0/src/geoloop/utils/helpers.py +841 -0
  43. geoloop-1.0.0/src/geoloop.egg-info/PKG-INFO +120 -0
  44. geoloop-1.0.0/src/geoloop.egg-info/SOURCES.txt +57 -0
  45. geoloop-1.0.0/src/geoloop.egg-info/entry_points.txt +2 -0
  46. geoloop-1.0.0/src/geoloop.egg-info/requires.txt +16 -0
  47. geoloop-1.0.0/test/test_b2g.py +147 -0
  48. geoloop-1.0.0/test/test_b2g_ana.py +192 -0
  49. geoloop-1.0.0/test/test_h5.py +97 -0
  50. geoloop-1.0.0/test/test_lithology.py +72 -0
  51. geoloop-1.0.0/test/test_loadflowdata.py +182 -0
  52. geoloop-1.0.0/test/test_plotting.py +201 -0
  53. geoloop-1.0.0/test/test_pyg_ana.py +133 -0
  54. geoloop-1.0.0/test/test_pygfield_ana.py +150 -0
  55. geoloop-0.0.1/PKG-INFO +0 -10
  56. geoloop-0.0.1/pyproject.toml +0 -16
  57. geoloop-0.0.1/src/geoloop.egg-info/PKG-INFO +0 -10
  58. geoloop-0.0.1/src/geoloop.egg-info/SOURCES.txt +0 -8
  59. {geoloop-0.0.1 → geoloop-1.0.0}/setup.cfg +0 -0
  60. {geoloop-0.0.1 → geoloop-1.0.0}/src/geoloop/__init__.py +0 -0
  61. /geoloop-0.0.1/README.md → /geoloop-1.0.0/src/geoloop/cli/__init__.py +0 -0
  62. {geoloop-0.0.1 → geoloop-1.0.0}/src/geoloop.egg-info/dependency_links.txt +0 -0
  63. {geoloop-0.0.1 → geoloop-1.0.0}/src/geoloop.egg-info/top_level.txt +0 -0
@@ -1,4 +1,5 @@
1
- Copyright 2025 TNO
1
+ Copyright (c) 2025, TNO
2
+ All rights reserved.
2
3
 
3
4
  Licensed under the Apache License, Version 2.0 (the "License");
4
5
  you may not use this file except in compliance with the License.
geoloop-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.4
2
+ Name: geoloop
3
+ Version: 1.0.0
4
+ Summary: This is a Python package for simulation of (deep) vertical Borehole Heat Exchanger (BHE) systems
5
+ Author-email: Zanne Korevaar <zanne.korevaar@tno.nl>, Jan-Diederik van Wees <jan_diederik.vanwees@tno.nl>
6
+ License-Expression: Apache-2.0
7
+ Keywords: borehole heat exchanger,BHE,geothermal,ground-source heat pump,deep borehole heat exchanger
8
+ Requires-Python: <3.14,>=3.12
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE.md
11
+ Requires-Dist: pygfunction>=2.2.2
12
+ Requires-Dist: matplotlib>=3.10.1
13
+ Requires-Dist: numpy>=2.2.4
14
+ Requires-Dist: scipy>=1.7.3
15
+ Requires-Dist: h5py>=3.4.0
16
+ Requires-Dist: xarray>=2025.3.1
17
+ Requires-Dist: pandas<3,>=2.2.3
18
+ Requires-Dist: seaborn>=0.13.2
19
+ Requires-Dist: tqdm>=4.67.1
20
+ Requires-Dist: netCDF4>=1.7.2
21
+ Requires-Dist: SecondaryCoolantProps>=1.3
22
+ Requires-Dist: openpyxl>=3.1.5
23
+ Requires-Dist: h5netcdf>=1.7.3
24
+ Requires-Dist: pathlib>=1.0.1
25
+ Requires-Dist: pydantic>=2.12.4
26
+ Requires-Dist: typer>=0.20.0
27
+ Dynamic: license-file
28
+
29
+ # Geoloop: A BHE Calculator for Python
30
+
31
+ [![PyPI](https://img.shields.io/pypi/v/geoloop.svg)](https://pypi.org/project/geoloop/)
32
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue)](https://geoloop-8f7a36.ci.tno.nl/)
33
+
34
+ ## What is **Geoloop**?
35
+
36
+ **Geoloop** is a Python package for simulating vertical borehole heat exchanger (BHE) systems,
37
+ with a focus on the impact of depth-dependent thermal properties and geothermal gradient and their impact on system performance.
38
+
39
+ **Geoloop** incorporates (uncertainty in) depth-variations in subsurface thermal conductivity, subsurface temperature,
40
+ BHE design and diverse operational boundary conditions such as seasonal load variations or
41
+ minimum fluid temperatures. It allows for deterministic or stochastic performance analyses with the opportunity
42
+ for optimization of the system design and operation. This makes Geoloop well suited for scenario analyses and sensitivity
43
+ studies in both research and practical applications.
44
+
45
+ **Geoloop** provides a novel depth-dependent approach for thermal response calculations.
46
+ A detailed description and benchmark of this depth-dependent semi-analytical method is provided in Korevaar et al. (2026).
47
+ **Geoloop** uses the *pygfunction* package, developed by Cimmino & Cook (2022), including its implementation
48
+ of *g*-functions, time aggregation schemes for varying loads, borehole and fluid thermal properties, and various visualization capabilities
49
+
50
+ **Geoloop's** generic framework allows for easy switching between simulation methods, including the
51
+ depth-dependent model, the depth-uniform implementation of g-functions as implemented in *pygfunction* and a numerical
52
+ finite volume approach.
53
+
54
+ ---
55
+
56
+ ## Installation
57
+
58
+ Install from PyPI using:
59
+
60
+ ```bash
61
+ pip install geoloop
62
+ ```
63
+
64
+ For detailed setup instructions (including uv-based environments and development setup),
65
+ see the [Installation Guide](https://geoloop-8f7a36.ci.tno.nl/installation/install/).
66
+
67
+ ---
68
+
69
+ ## Requirements
70
+
71
+ Geoloop requires **Python 3.12 or higher**.
72
+
73
+ Core dependencies include:
74
+ - pygfunction
75
+ - matplotlib
76
+ - numpy
77
+ - scipy
78
+ - h5py
79
+ - xarray
80
+ - pandas
81
+ - seaborn
82
+ - tqdm
83
+ - netCDF4
84
+ - SecondaryCoolantProps
85
+ - openpyxl
86
+ - h5netcdf
87
+ - pathlib
88
+ - pydantic
89
+ - typer
90
+
91
+ ---
92
+
93
+ ## Quick Start
94
+
95
+ Explore the [Examples](docs/examples/) folder to get started quickly with Geoloop.
96
+
97
+ Read the full documenation [here](https://geoloop-8f7a36.ci.tno.nl/).
98
+
99
+ ---
100
+
101
+ ## License
102
+
103
+ This project is licensed under the Apache 2.0 License.
104
+ See the [LICENSE.md](LICENSE.md) file for details.
105
+
106
+ ---
107
+
108
+ ## Acknowledgments
109
+
110
+ Developed with the support of the Dutch funding agency **RVO**, in a consortium project with grant nr. MOOI322009.
111
+
112
+ ---
113
+
114
+
115
+ ## References
116
+
117
+ - Cimmino, M. and Cook, J.: pygfunction 2.2: New features and improvements in accuracy and computational efficiency,
118
+ in: Proceedings of the IGSHPA Research Track 2022, International Ground Source Heat Pump Association,
119
+ https://doi.org/10.22488/okstate.22.000015, 2022.
120
+ - Korevaar, Z., Brett, H., Van Wees, J.D.: Geoloop (v1.0) – a stochastic, depth-dependent borehole heat exchanger model, Geoscientific Model Development (in prep), 2026
@@ -0,0 +1,92 @@
1
+ # Geoloop: A BHE Calculator for Python
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/geoloop.svg)](https://pypi.org/project/geoloop/)
4
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue)](https://geoloop-8f7a36.ci.tno.nl/)
5
+
6
+ ## What is **Geoloop**?
7
+
8
+ **Geoloop** is a Python package for simulating vertical borehole heat exchanger (BHE) systems,
9
+ with a focus on the impact of depth-dependent thermal properties and geothermal gradient and their impact on system performance.
10
+
11
+ **Geoloop** incorporates (uncertainty in) depth-variations in subsurface thermal conductivity, subsurface temperature,
12
+ BHE design and diverse operational boundary conditions such as seasonal load variations or
13
+ minimum fluid temperatures. It allows for deterministic or stochastic performance analyses with the opportunity
14
+ for optimization of the system design and operation. This makes Geoloop well suited for scenario analyses and sensitivity
15
+ studies in both research and practical applications.
16
+
17
+ **Geoloop** provides a novel depth-dependent approach for thermal response calculations.
18
+ A detailed description and benchmark of this depth-dependent semi-analytical method is provided in Korevaar et al. (2026).
19
+ **Geoloop** uses the *pygfunction* package, developed by Cimmino & Cook (2022), including its implementation
20
+ of *g*-functions, time aggregation schemes for varying loads, borehole and fluid thermal properties, and various visualization capabilities
21
+
22
+ **Geoloop's** generic framework allows for easy switching between simulation methods, including the
23
+ depth-dependent model, the depth-uniform implementation of g-functions as implemented in *pygfunction* and a numerical
24
+ finite volume approach.
25
+
26
+ ---
27
+
28
+ ## Installation
29
+
30
+ Install from PyPI using:
31
+
32
+ ```bash
33
+ pip install geoloop
34
+ ```
35
+
36
+ For detailed setup instructions (including uv-based environments and development setup),
37
+ see the [Installation Guide](https://geoloop-8f7a36.ci.tno.nl/installation/install/).
38
+
39
+ ---
40
+
41
+ ## Requirements
42
+
43
+ Geoloop requires **Python 3.12 or higher**.
44
+
45
+ Core dependencies include:
46
+ - pygfunction
47
+ - matplotlib
48
+ - numpy
49
+ - scipy
50
+ - h5py
51
+ - xarray
52
+ - pandas
53
+ - seaborn
54
+ - tqdm
55
+ - netCDF4
56
+ - SecondaryCoolantProps
57
+ - openpyxl
58
+ - h5netcdf
59
+ - pathlib
60
+ - pydantic
61
+ - typer
62
+
63
+ ---
64
+
65
+ ## Quick Start
66
+
67
+ Explore the [Examples](docs/examples/) folder to get started quickly with Geoloop.
68
+
69
+ Read the full documenation [here](https://geoloop-8f7a36.ci.tno.nl/).
70
+
71
+ ---
72
+
73
+ ## License
74
+
75
+ This project is licensed under the Apache 2.0 License.
76
+ See the [LICENSE.md](LICENSE.md) file for details.
77
+
78
+ ---
79
+
80
+ ## Acknowledgments
81
+
82
+ Developed with the support of the Dutch funding agency **RVO**, in a consortium project with grant nr. MOOI322009.
83
+
84
+ ---
85
+
86
+
87
+ ## References
88
+
89
+ - Cimmino, M. and Cook, J.: pygfunction 2.2: New features and improvements in accuracy and computational efficiency,
90
+ in: Proceedings of the IGSHPA Research Track 2022, International Ground Source Heat Pump Association,
91
+ https://doi.org/10.22488/okstate.22.000015, 2022.
92
+ - Korevaar, Z., Brett, H., Van Wees, J.D.: Geoloop (v1.0) – a stochastic, depth-dependent borehole heat exchanger model, Geoscientific Model Development (in prep), 2026
@@ -0,0 +1,85 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "geoloop"
7
+ version = "1.0.0"
8
+ description = "This is a Python package for simulation of (deep) vertical Borehole Heat Exchanger (BHE) systems"
9
+ authors = [
10
+ { name = "Zanne Korevaar", email = "zanne.korevaar@tno.nl" },
11
+ { name = "Jan-Diederik van Wees", email = "jan_diederik.vanwees@tno.nl" }
12
+ ]
13
+ readme = "README.md"
14
+ license = "Apache-2.0"
15
+ license-files = ["LICENSE.md"]
16
+ requires-python = ">=3.12,<3.14"
17
+ keywords = [
18
+ "borehole heat exchanger", "BHE", "geothermal", "ground-source heat pump",
19
+ "deep borehole heat exchanger"
20
+ ]
21
+ dependencies = [
22
+ "pygfunction>=2.2.2",
23
+ "matplotlib>=3.10.1",
24
+ "numpy>=2.2.4",
25
+ "scipy>=1.7.3",
26
+ "h5py>=3.4.0",
27
+ "xarray>=2025.3.1",
28
+ "pandas>=2.2.3,<3",
29
+ "seaborn>=0.13.2",
30
+ "tqdm>=4.67.1",
31
+ "netCDF4>=1.7.2",
32
+ "SecondaryCoolantProps>=1.3",
33
+ "openpyxl>=3.1.5",
34
+ "h5netcdf>=1.7.3",
35
+ "pathlib>=1.0.1",
36
+ "pydantic>=2.12.4",
37
+ "typer>=0.20.0",
38
+ ]
39
+
40
+ [dependency-groups]
41
+ dev = [
42
+ "ruff>=0.14.6",
43
+ "black",
44
+ "flake8",
45
+ "pytest>=8.4.2",
46
+ "mkdocs>=1.6.1",
47
+ "mkdocs-material>=9.6.23",
48
+ "mike>=2.1.3,<3",
49
+ "mkdocstrings>=0.30.1",
50
+ "mkdocstrings-python>=1.18.2",
51
+ "build>=1.3.0",
52
+ "twine>=6.2.0",
53
+ "wheel>=0.45.1",
54
+ "setuptools>=80.9.0",
55
+ ]
56
+
57
+ [tool.setuptools.packages.find]
58
+ where = ["src"]
59
+
60
+ [project.scripts]
61
+ geoloop = "geoloop.cli.main:simulation"
62
+
63
+ [tool.uv.workspace]
64
+ members = [
65
+ "geoloop",
66
+ ]
67
+
68
+ [tool.ruff]
69
+ line-length = 88
70
+
71
+ [tool.ruff.lint]
72
+ select = [
73
+ # pycodestyle (style guide violations)
74
+ "E",
75
+ # Pyflakes (bug detection)
76
+ "F",
77
+ # pyupgrade (modern Python syntax)
78
+ "UP",
79
+ # flake8-bugbear (common bugs and design issues)
80
+ "B",
81
+ # flake8-simplify (simplifiable constructs)
82
+ "SIM",
83
+ # isort (import sorting)
84
+ "I",
85
+ ]