gebpy 1.1.3__py3-none-any.whl

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 (254) hide show
  1. gebpy/__init__.py +55 -0
  2. gebpy/__pycache__/__init__.cpython-310.pyc +0 -0
  3. gebpy/adapters/__init__.py +0 -0
  4. gebpy/cli/__init__.py +0 -0
  5. gebpy/core/__init__.py +0 -0
  6. gebpy/core/chemistry/__init__.py +0 -0
  7. gebpy/core/chemistry/common.py +1369 -0
  8. gebpy/core/chemistry/elements.py +317 -0
  9. gebpy/core/chemistry/geochemistry.py +1728 -0
  10. gebpy/core/fluids/__init__.py +0 -0
  11. gebpy/core/io/__init__.py +0 -0
  12. gebpy/core/mathematics/__init__.py +0 -0
  13. gebpy/core/minerals/__init__.py +0 -0
  14. gebpy/core/minerals/carbonates.py +412 -0
  15. gebpy/core/minerals/common.py +555 -0
  16. gebpy/core/minerals/config.py +77 -0
  17. gebpy/core/minerals/cyclosilicates.py +0 -0
  18. gebpy/core/minerals/halides.py +0 -0
  19. gebpy/core/minerals/inosilicates.py +0 -0
  20. gebpy/core/minerals/nesosilicates.py +0 -0
  21. gebpy/core/minerals/organics.py +0 -0
  22. gebpy/core/minerals/oxides.py +589 -0
  23. gebpy/core/minerals/phosphates.py +0 -0
  24. gebpy/core/minerals/phospides.py +0 -0
  25. gebpy/core/minerals/phyllosilicates.py +436 -0
  26. gebpy/core/minerals/sorosilicates.py +0 -0
  27. gebpy/core/minerals/sulfates.py +0 -0
  28. gebpy/core/minerals/sulfides.py +459 -0
  29. gebpy/core/minerals/synthesis.py +201 -0
  30. gebpy/core/minerals/tectosilicates.py +433 -0
  31. gebpy/core/physics/__init__.py +0 -0
  32. gebpy/core/physics/common.py +53 -0
  33. gebpy/core/physics/geophysics.py +351 -0
  34. gebpy/core/rocks/__init__.py +0 -0
  35. gebpy/core/rocks/anisotropic_rocks.py +395 -0
  36. gebpy/core/rocks/common.py +95 -0
  37. gebpy/core/rocks/config.py +77 -0
  38. gebpy/core/rocks/isotropic_rocks.py +395 -0
  39. gebpy/core/rocks/sedimentary.py +385 -0
  40. gebpy/core/subsurface/__init__.py +0 -0
  41. gebpy/data_minerals/__init__.py +0 -0
  42. gebpy/data_minerals/albite.yaml +59 -0
  43. gebpy/data_minerals/anatase.yaml +43 -0
  44. gebpy/data_minerals/ankerite.yaml +47 -0
  45. gebpy/data_minerals/annite.yaml +57 -0
  46. gebpy/data_minerals/anorthite.yaml +59 -0
  47. gebpy/data_minerals/antigorite.yaml +53 -0
  48. gebpy/data_minerals/aragonite.yaml +48 -0
  49. gebpy/data_minerals/argutite.yaml +43 -0
  50. gebpy/data_minerals/arsenolite.yaml +40 -0
  51. gebpy/data_minerals/au3oxide.yaml +46 -0
  52. gebpy/data_minerals/avicennite.yaml +40 -0
  53. gebpy/data_minerals/azurite.yaml +53 -0
  54. gebpy/data_minerals/baddeleyite.yaml +49 -0
  55. gebpy/data_minerals/bismite.yaml +49 -0
  56. gebpy/data_minerals/boehmite.yaml +48 -0
  57. gebpy/data_minerals/brookite.yaml +46 -0
  58. gebpy/data_minerals/brucite.yaml +45 -0
  59. gebpy/data_minerals/bunsenite.yaml +40 -0
  60. gebpy/data_minerals/calcite.yaml +45 -0
  61. gebpy/data_minerals/cassiterite.yaml +43 -0
  62. gebpy/data_minerals/cerussite.yaml +48 -0
  63. gebpy/data_minerals/chamosite.yaml +56 -0
  64. gebpy/data_minerals/chlorite.yaml +75 -0
  65. gebpy/data_minerals/chromite.yaml +42 -0
  66. gebpy/data_minerals/chrysotile.yaml +53 -0
  67. gebpy/data_minerals/claudetite.yaml +49 -0
  68. gebpy/data_minerals/clinochlore.yaml +55 -0
  69. gebpy/data_minerals/cochromite.yaml +42 -0
  70. gebpy/data_minerals/corundum.yaml +43 -0
  71. gebpy/data_minerals/crocoite.yaml +51 -0
  72. gebpy/data_minerals/cuprite.yaml +40 -0
  73. gebpy/data_minerals/cuprospinel.yaml +42 -0
  74. gebpy/data_minerals/diaspore.yaml +48 -0
  75. gebpy/data_minerals/dolomite.yaml +47 -0
  76. gebpy/data_minerals/eastonite.yaml +57 -0
  77. gebpy/data_minerals/eskolaite.yaml +43 -0
  78. gebpy/data_minerals/fechlorite.yaml +61 -0
  79. gebpy/data_minerals/fecolumbite.yaml +48 -0
  80. gebpy/data_minerals/ferberite.yaml +51 -0
  81. gebpy/data_minerals/fetantalite.yaml +48 -0
  82. gebpy/data_minerals/franklinite.yaml +42 -0
  83. gebpy/data_minerals/gahnite.yaml +42 -0
  84. gebpy/data_minerals/galaxite.yaml +42 -0
  85. gebpy/data_minerals/geikielite.yaml +45 -0
  86. gebpy/data_minerals/gibbsite.yaml +51 -0
  87. gebpy/data_minerals/glauconite.yaml +69 -0
  88. gebpy/data_minerals/goethite.yaml +48 -0
  89. gebpy/data_minerals/groutite.yaml +48 -0
  90. gebpy/data_minerals/hematite.yaml +43 -0
  91. gebpy/data_minerals/hercynite.yaml +42 -0
  92. gebpy/data_minerals/huebnerite.yaml +51 -0
  93. gebpy/data_minerals/ikaite.yaml +53 -0
  94. gebpy/data_minerals/illite.yaml +55 -0
  95. gebpy/data_minerals/ilmenite.yaml +45 -0
  96. gebpy/data_minerals/jacobsite.yaml +42 -0
  97. gebpy/data_minerals/kalsilite.yaml +47 -0
  98. gebpy/data_minerals/kaolinite.yaml +59 -0
  99. gebpy/data_minerals/karelianite.yaml +43 -0
  100. gebpy/data_minerals/lime.yaml +40 -0
  101. gebpy/data_minerals/litharge.yaml +43 -0
  102. gebpy/data_minerals/magnesiochromite.yaml +42 -0
  103. gebpy/data_minerals/magnesioferrite.yaml +42 -0
  104. gebpy/data_minerals/magnesite.yaml +45 -0
  105. gebpy/data_minerals/magnetite.yaml +41 -0
  106. gebpy/data_minerals/malachite.yaml +53 -0
  107. gebpy/data_minerals/manganite.yaml +51 -0
  108. gebpy/data_minerals/manganochromite.yaml +42 -0
  109. gebpy/data_minerals/manganosite.yaml +40 -0
  110. gebpy/data_minerals/marialite.yaml +49 -0
  111. gebpy/data_minerals/massicot.yaml +46 -0
  112. gebpy/data_minerals/meionite.yaml +49 -0
  113. gebpy/data_minerals/mgchlorite.yaml +61 -0
  114. gebpy/data_minerals/mgcolumbite.yaml +48 -0
  115. gebpy/data_minerals/mgtantalite.yaml +48 -0
  116. gebpy/data_minerals/microcline.yaml +59 -0
  117. gebpy/data_minerals/minium.yaml +44 -0
  118. gebpy/data_minerals/mnchlorite.yaml +61 -0
  119. gebpy/data_minerals/mncolumbite.yaml +48 -0
  120. gebpy/data_minerals/mntantalite.yaml +48 -0
  121. gebpy/data_minerals/monteponite.yaml +40 -0
  122. gebpy/data_minerals/montmorillonite.yaml +77 -0
  123. gebpy/data_minerals/muscovite.yaml +55 -0
  124. gebpy/data_minerals/nanepheline.yaml +47 -0
  125. gebpy/data_minerals/nichlorite.yaml +61 -0
  126. gebpy/data_minerals/nichromite.yaml +42 -0
  127. gebpy/data_minerals/nimite.yaml +55 -0
  128. gebpy/data_minerals/nontronite.yaml +73 -0
  129. gebpy/data_minerals/orthoclase.yaml +53 -0
  130. gebpy/data_minerals/paratellurite.yaml +43 -0
  131. gebpy/data_minerals/pennantite.yaml +61 -0
  132. gebpy/data_minerals/periclase.yaml +40 -0
  133. gebpy/data_minerals/phlogopite.yaml +57 -0
  134. gebpy/data_minerals/plattnerite.yaml +43 -0
  135. gebpy/data_minerals/powellite.yaml +45 -0
  136. gebpy/data_minerals/pyrite.yaml +40 -0
  137. gebpy/data_minerals/pyrolusite.yaml +43 -0
  138. gebpy/data_minerals/pyrophanite.yaml +45 -0
  139. gebpy/data_minerals/pyrophyllite.yaml +59 -0
  140. gebpy/data_minerals/quartz.yaml +43 -0
  141. gebpy/data_minerals/rhodochrosite.yaml +45 -0
  142. gebpy/data_minerals/rutile.yaml +43 -0
  143. gebpy/data_minerals/saponite.yaml +77 -0
  144. gebpy/data_minerals/scheelite.yaml +45 -0
  145. gebpy/data_minerals/scrutinyite.yaml +46 -0
  146. gebpy/data_minerals/senarmontite.yaml +40 -0
  147. gebpy/data_minerals/siderite.yaml +45 -0
  148. gebpy/data_minerals/siderophyllite.yaml +57 -0
  149. gebpy/data_minerals/smithsonite.yaml +45 -0
  150. gebpy/data_minerals/spinel.yaml +42 -0
  151. gebpy/data_minerals/stishovite.yaml +43 -0
  152. gebpy/data_minerals/stolzite.yaml +45 -0
  153. gebpy/data_minerals/talc.yaml +53 -0
  154. gebpy/data_minerals/tistarite.yaml +43 -0
  155. gebpy/data_minerals/trevorite.yaml +42 -0
  156. gebpy/data_minerals/ulvoespinel.yaml +42 -0
  157. gebpy/data_minerals/uraninite.yaml +40 -0
  158. gebpy/data_minerals/valentinite.yaml +46 -0
  159. gebpy/data_minerals/vermiculite.yaml +69 -0
  160. gebpy/data_minerals/wulfenite.yaml +45 -0
  161. gebpy/data_minerals/wustite.yaml +40 -0
  162. gebpy/data_minerals/zincite.yaml +43 -0
  163. gebpy/data_minerals/zincochromite.yaml +42 -0
  164. gebpy/data_rocks/__init__.py +0 -0
  165. gebpy/data_rocks/dolostone.yaml +40 -0
  166. gebpy/data_rocks/limestone.yaml +40 -0
  167. gebpy/data_rocks/marl.yaml +50 -0
  168. gebpy/data_rocks/sandstone.yaml +39 -0
  169. gebpy/data_rocks/shale.yaml +50 -0
  170. gebpy/gebpy_app.py +8732 -0
  171. gebpy/gui/__init__.py +0 -0
  172. gebpy/lib/images/GebPy_Header.png +0 -0
  173. gebpy/lib/images/GebPy_Icon.png +0 -0
  174. gebpy/lib/images/GebPy_Logo.png +0 -0
  175. gebpy/main.py +29 -0
  176. gebpy/modules/__init__.py +0 -0
  177. gebpy/modules/__pycache__/__init__.cpython-310.pyc +0 -0
  178. gebpy/modules/__pycache__/metamorphics.cpython-310.pyc +0 -0
  179. gebpy/modules/__pycache__/silicates.cpython-310.pyc +0 -0
  180. gebpy/modules/carbonates.py +2658 -0
  181. gebpy/modules/chemistry.py +1369 -0
  182. gebpy/modules/core.py +1805 -0
  183. gebpy/modules/elements.py +317 -0
  184. gebpy/modules/evaporites.py +1299 -0
  185. gebpy/modules/exploration.py +1145 -0
  186. gebpy/modules/fluids.py +339 -0
  187. gebpy/modules/geochemistry.py +1727 -0
  188. gebpy/modules/geophysics.py +351 -0
  189. gebpy/modules/gui.py +9093 -0
  190. gebpy/modules/gui_elements.py +145 -0
  191. gebpy/modules/halides.py +485 -0
  192. gebpy/modules/igneous.py +2241 -0
  193. gebpy/modules/metamorphics.py +3222 -0
  194. gebpy/modules/mineralogy.py +442 -0
  195. gebpy/modules/minerals.py +7954 -0
  196. gebpy/modules/ore.py +1648 -0
  197. gebpy/modules/organics.py +530 -0
  198. gebpy/modules/oxides.py +9057 -0
  199. gebpy/modules/petrophysics.py +98 -0
  200. gebpy/modules/phosphates.py +589 -0
  201. gebpy/modules/phospides.py +194 -0
  202. gebpy/modules/plotting.py +619 -0
  203. gebpy/modules/pyllosilicates.py +380 -0
  204. gebpy/modules/sedimentary_rocks.py +908 -0
  205. gebpy/modules/sequences.py +2166 -0
  206. gebpy/modules/series.py +1625 -0
  207. gebpy/modules/silicates.py +11102 -0
  208. gebpy/modules/siliciclastics.py +1846 -0
  209. gebpy/modules/subsurface_2d.py +179 -0
  210. gebpy/modules/sulfates.py +1629 -0
  211. gebpy/modules/sulfides.py +4786 -0
  212. gebpy/plotting/__init__.py +0 -0
  213. gebpy/ui_nb/__init__.py +0 -0
  214. gebpy/user_data/.gitkeep +0 -0
  215. gebpy-1.1.3.dist-info/LICENSE +165 -0
  216. gebpy-1.1.3.dist-info/METADATA +207 -0
  217. gebpy-1.1.3.dist-info/RECORD +254 -0
  218. gebpy-1.1.3.dist-info/WHEEL +5 -0
  219. gebpy-1.1.3.dist-info/entry_points.txt +2 -0
  220. gebpy-1.1.3.dist-info/top_level.txt +1 -0
  221. modules/__init__.py +0 -0
  222. modules/carbonates.py +2658 -0
  223. modules/chemistry.py +1369 -0
  224. modules/core.py +1805 -0
  225. modules/elements.py +317 -0
  226. modules/evaporites.py +1299 -0
  227. modules/exploration.py +765 -0
  228. modules/fluids.py +339 -0
  229. modules/geochemistry.py +1727 -0
  230. modules/geophysics.py +337 -0
  231. modules/gui.py +9093 -0
  232. modules/gui_elements.py +145 -0
  233. modules/halides.py +485 -0
  234. modules/igneous.py +2196 -0
  235. modules/metamorphics.py +2699 -0
  236. modules/mineralogy.py +442 -0
  237. modules/minerals.py +7954 -0
  238. modules/ore.py +1628 -0
  239. modules/organics.py +530 -0
  240. modules/oxides.py +9057 -0
  241. modules/petrophysics.py +98 -0
  242. modules/phosphates.py +589 -0
  243. modules/phospides.py +194 -0
  244. modules/plotting.py +619 -0
  245. modules/pyllosilicates.py +380 -0
  246. modules/sedimentary_rocks.py +908 -0
  247. modules/sequences.py +2166 -0
  248. modules/series.py +1625 -0
  249. modules/silicates.py +11102 -0
  250. modules/siliciclastics.py +1830 -0
  251. modules/subsurface_2d.py +179 -0
  252. modules/sulfates.py +1629 -0
  253. modules/sulfides.py +4786 -0
  254. notebooks/__init__.py +0 -0
@@ -0,0 +1,179 @@
1
+ #!/usr/bin/env python
2
+ # -*-coding: utf-8 -*-
3
+
4
+ #-----------------------------------------------
5
+
6
+ # Name: subsurface_2d.py
7
+ # Author: Maximilian A. Beeskow
8
+ # Version: 1.0
9
+ # Date: 17.07.2021
10
+
11
+ #-----------------------------------------------
12
+
13
+ ## MODULES
14
+ import numpy as np
15
+ import scipy.interpolate as interp
16
+ from numpy import round
17
+ import random as rd
18
+ from itertools import chain
19
+ from random import randint
20
+ from modules.carbonates import limestone, dolomite
21
+ from modules.siliciclastics import sandstone, shale, ore, Soil
22
+ from modules.igneous import plutonic, volcanic, Plutonic, Volcanic
23
+ from modules.evaporites import evaporites, Evaporites
24
+ from modules import minerals, sequences
25
+ from modules.elements import elements
26
+ from modules import fluids
27
+
28
+ class structural_geology:
29
+ #
30
+ def __init__(self):
31
+ pass
32
+ #
33
+ #def create_tilted_structures(self, y, dip=30):
34
+ # x = y*np.tan(dip*np.pi/180)
35
+
36
+ #
37
+ def generate_2d_horizontal(self, max_thickness=500, n=10, x=100):
38
+ data_boreholes = []
39
+ data = sequences.SedimentaryBasin()
40
+ data_sedbasin = data.create_sedimentary_basin(maximum_thickness=max_thickness)
41
+ for i in range(n):
42
+ data_boreholes.append([data_sedbasin, x*i])
43
+ #
44
+ return data_boreholes
45
+ #
46
+ #def generate_2d_tilted(self, dip=20, max_thickness=500, n=10, x=50):
47
+ # data_boreholes = []
48
+ # data = sequences.SedimentaryBasin()
49
+ # data_sedbasin = data.create_sedimentary_basin(maximum_thickness=max_thickness)
50
+
51
+ class Surface:
52
+ #
53
+ def __init__(self, coordinates):
54
+ self.coordinates = coordinates
55
+ #
56
+ def create_linear_surface(self):
57
+ # y = a*x + b
58
+ x1 = self.coordinates[0][0]
59
+ y1 = self.coordinates[0][1]
60
+ x2 = self.coordinates[1][0]
61
+ y2 = self.coordinates[1][1]
62
+ #
63
+ b = (x1*y2 - x2*y1)/(x1 - x2)
64
+ a = (y1 - b)/x1
65
+ #
66
+ return a, b
67
+ #
68
+ def create_quadratic_surface(self):
69
+ # y = a*x**2 + b*x + c
70
+ x1 = self.coordinates[0][0]
71
+ y1 = self.coordinates[0][1]
72
+ x2 = self.coordinates[1][0]
73
+ y2 = self.coordinates[1][1]
74
+ x3 = self.coordinates[2][0]
75
+ y3 = self.coordinates[2][1]
76
+ #
77
+ a = ((x2 - x3)*(y1 - y3) - (x1 - x3)*(y2 - y3))/((x2 - x3)*(x1**2 - x3**2) - (x1 - x3)*(x2**2 - x3**2))
78
+ b = (y1 - y3 - a*(x1**2 - x3**2))/(x1 - x3)
79
+ c = y3 - a*x3**2 - b*x3
80
+ #
81
+ return a, b, c
82
+ #
83
+ def create_interpolated_surface(self):
84
+ self.coordinates = np.array(self.coordinates)
85
+ x = self.coordinates[:, 0]
86
+ y = self.coordinates[:, 1]
87
+ #
88
+ f = interp.CubicSpline(x, y)
89
+ #
90
+ return f
91
+
92
+ class Units:
93
+ #
94
+ def __init__(self, x_limits, y_limits, number):
95
+ self.x_limits = x_limits
96
+ self.y_limits = y_limits
97
+ self.number = number
98
+ #
99
+ def create_outcrops(self, extrema):
100
+ condition = False
101
+ while condition == False:
102
+ x_outcrops = np.sort(rd.sample(list(range(int(self.x_limits[0]*(1-0.05)),
103
+ int(extrema[-1][0]-5))) + list(range(int(extrema[-1][0]+5),
104
+ int(self.x_limits[1]*(1-0.05)))), self.number))
105
+ x_diff = np.diff(x_outcrops)
106
+ check = any(item in np.arange(0, 5) for item in x_diff)
107
+ if check == False:
108
+ condition = True
109
+ else:
110
+ continue
111
+ #
112
+ return x_outcrops
113
+ #
114
+ def create_units(self, f_surface, kind=None):
115
+ x_units = []
116
+ y_units = []
117
+ f1 = interp.CubicSpline.derivative(f_surface)
118
+ f2 = interp.CubicSpline.derivative(f1)
119
+ x_extreme = np.around(f1.solve(), 4)
120
+ y_extreme = np.around(f_surface(x_extreme), 4)
121
+ extrema_type = np.around(f2(x_extreme), 4)
122
+ data_extrema = []
123
+ for i in range(len(x_extreme)):
124
+ if extrema_type[i] < 0:
125
+ data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Maximum"])
126
+ elif extrema_type[i] > 0:
127
+ data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Minimum"])
128
+ elif extrema_type[i] == 0:
129
+ data_extrema.append([round(x_extreme[i], 2), round(y_extreme[i], 2), "Saddle"])
130
+ if len(x_extreme) == 0:
131
+ data_extrema.append([round(max(self.x_limits), 2), round(max(self.y_limits), 2), "Maximum"])
132
+ data_extrema.append([round(min(self.x_limits), 2), round(min(self.y_limits), 2), "Minimum"])
133
+ data_extrema = np.array(data_extrema, dtype="object")
134
+ data_extrema = data_extrema[data_extrema[:, 1].argsort()]
135
+ print("Global Minimum:", data_extrema[0])
136
+ print("Global Maximum:", data_extrema[-1])
137
+
138
+ self.x_outcrops = self.create_outcrops(extrema=data_extrema)
139
+ self.y_outcrops = f_surface(self.x_outcrops)
140
+ n_units = len(self.x_outcrops)
141
+
142
+ if kind == None:
143
+ x_delta = rd.randint(-25, 25)
144
+ self.x_outcrops_bottom = self.x_outcrops + x_delta
145
+ y_min = min(self.y_limits)
146
+ for i in range(n_units):
147
+ if self.x_outcrops is not self.x_outcrops_bottom:
148
+ x1 = self.x_outcrops[i]
149
+ x2 = self.x_outcrops_bottom[i]
150
+ y1 = self.y_outcrops[i]
151
+ y2 = y_min
152
+ b = (x1*y2 - x2*y1)/(x1 - x2)
153
+ if x1 != 0:
154
+ a = (y1 - b)/x1
155
+ else:
156
+ a = (y2 - b)/x2
157
+ x = np.linspace(self.x_outcrops[i], self.x_outcrops_bottom[i], 25+1)
158
+ upper_limit = np.argwhere(x > self.x_limits[-1])
159
+ if len(upper_limit) > 0:
160
+ x = x[:upper_limit[0][0]]
161
+ x_units.append(x)
162
+ y_units.append(a*x + b)
163
+ else:
164
+ x1 = self.x_outcrops[i]
165
+ x2 = self.x_outcrops_bottom[i]
166
+ y1 = self.y_outcrops[i]
167
+ y2 = y_min
168
+ x_units.append(np.array([x1, x2]))
169
+ y_units.append(np.array([y1, y2]))
170
+ elif kind == "horizontal":
171
+ for i in range(len(self.x_outcrops)):
172
+ if self.x_outcrops[i] < data_extrema[-1][0]:
173
+ x_units.append([self.x_outcrops[i], f_surface.solve(y=self.y_outcrops[i])[2]])
174
+ y_units.append([self.y_outcrops[i], self.y_outcrops[i]])
175
+ elif self.x_outcrops[i] > data_extrema[-1][0]:
176
+ x_units.append([self.x_outcrops[i], f_surface.solve(y=self.y_outcrops[i])[1]])
177
+ y_units.append([self.y_outcrops[i], self.y_outcrops[i]])
178
+ #
179
+ return x_units, y_units, self.x_outcrops