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,1625 @@
1
+ #!/usr/bin/env python
2
+ # -*-coding: utf-8 -*-
3
+
4
+ #-----------------------------------------------
5
+
6
+ # Name: series.py
7
+ # Author: Maximilian A. Beeskow
8
+ # Version: 1.0
9
+ # Date: 08.08.2023
10
+
11
+ #-----------------------------------------------
12
+
13
+ ## MODULES
14
+ import random as rd
15
+ import numpy as np
16
+ from modules.ore import Ores
17
+ from modules.carbonates import CarbonateRocks
18
+ from modules.evaporites import Evaporites
19
+ from modules.siliciclastics import SiliciclasticRocks
20
+ from modules.sedimentary_rocks import SedimentaryRocks
21
+
22
+ #######################
23
+ ## SERIES GENERATION ##
24
+ #######################
25
+ #
26
+ ## ROTLIEGEND
27
+ #
28
+ ## ZECHSTEIN
29
+ class Zechstein:
30
+ #
31
+ def __init__(self, actual_thickness=0, thickness=1000, resolution=25, composition=None):
32
+ self.thickness = thickness
33
+ self.resolution = resolution
34
+ self.composition = composition
35
+ #
36
+ self.actual_thickness = actual_thickness
37
+ #
38
+ def export_lithological_keys(self):
39
+ list_keys = ["Kupferschiefer", "Limestone", "Anhydrite", "Dolostone", "Rock Salt", "Potash", "Mudstone"]
40
+ list_keys.sort()
41
+ #
42
+ return list_keys
43
+ #
44
+ def create_zechstein_z1(self, thickness_z1=100, top_z=0): # Z1 - Werra Series
45
+ fraction_kupferschiefer_pre = round(rd.uniform(11, 18), 4)
46
+ fraction_kupferschiefer = round(round(fraction_kupferschiefer_pre*2)/2/100, 4)
47
+ fraction_limestone_pre = round(rd.uniform(21, 36), 4)
48
+ fraction_limestone = round(round(fraction_limestone_pre*2)/2/100, 4)
49
+ fraction_anhydrite = round(1 - fraction_kupferschiefer - fraction_limestone, 4)
50
+ #
51
+ thickness_kupferschiefer = round(thickness_z1*fraction_kupferschiefer, 4)
52
+ thickness_limestone = round(thickness_z1*fraction_limestone, 4)
53
+ thickness_anhydrite = round(thickness_z1*fraction_anhydrite, 4)
54
+ #
55
+ actual_top = top_z
56
+ actual_bottom = top_z + thickness_anhydrite
57
+ #
58
+ ## Create Anhydrite Unit
59
+ container_anhydrite = {}
60
+ steps_anhydrite = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
61
+ for i in steps_anhydrite:
62
+ depth = round(i, 4)
63
+ container_anhydrite[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
64
+ porosity=[0.05, 0.2])
65
+ actual_top += thickness_anhydrite
66
+ actual_bottom += thickness_limestone
67
+ #
68
+ ## Create Limestone Unit
69
+ container_limestone = {}
70
+ steps_limestone = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
71
+ for i in steps_limestone:
72
+ depth = round(i, 4)
73
+ container_limestone[depth] = CarbonateRocks(fluid="water", actualThickness=0).create_limestone(
74
+ number=1, porosity=[0.0, 0.4])
75
+ actual_top += thickness_limestone
76
+ actual_bottom += thickness_kupferschiefer
77
+ #
78
+ ## Create Kupferschiefer Unit
79
+ container_kupferschiefer = {}
80
+ steps_kupferschiefer = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
81
+ for i in steps_kupferschiefer:
82
+ depth = round(i, 4)
83
+ container_kupferschiefer[depth] = Ores(
84
+ fluid="water", actualThickness=0, porosity=rd.uniform(0.0, 0.05),
85
+ data_type=True).create_kupferschiefer()
86
+ #
87
+ ## TEST
88
+ # for key, value in reversed(container_anhydrite.items()):
89
+ # print(key, value)
90
+ # for key, value in reversed(container_limestone.items()):
91
+ # print(key, value)
92
+ # for key, value in reversed(container_kupferschiefer.items()):
93
+ # print(key, value)
94
+ #
95
+ return container_anhydrite, container_limestone, container_kupferschiefer
96
+ #
97
+ def create_zechstein_z2(self, thickness_z2=300, top_z=0): # Z2 - Straßfurt Series
98
+ condition = False
99
+ while condition == False:
100
+ counter = 0
101
+ #
102
+ fraction_dolomite_pre = round(rd.uniform(6, 10), 4)
103
+ fraction_dolomite = round(round(fraction_dolomite_pre * 2) / 2 / 100, 4)
104
+ fraction_anhydrite_lower_pre = round(rd.uniform(14, 24), 4)
105
+ fraction_anhydrite_lower = round(round(fraction_anhydrite_lower_pre * 2) / 2 / 100, 4)
106
+ fraction_rocksalt_lower_pre = round(rd.uniform(42, 71), 4)
107
+ fraction_rocksalt_lower = round(round(fraction_rocksalt_lower_pre * 2) / 2 / 100, 4)
108
+ fraction_potash_pre = round(rd.uniform(8, 13), 4)
109
+ fraction_potash = round(round(fraction_potash_pre * 2) / 2 / 100, 4)
110
+ fraction_rocksalt_upper_pre = round(rd.uniform(3, 5), 4)
111
+ fraction_rocksalt_upper = round(round(fraction_rocksalt_upper_pre * 2) / 2 / 100, 4)
112
+ fraction_anhydrite_upper = round(1 - fraction_dolomite - fraction_anhydrite_lower - fraction_rocksalt_lower
113
+ - fraction_potash - fraction_rocksalt_upper, 4)
114
+ #
115
+ thickness_dolomite = round(thickness_z2 * fraction_dolomite, 4)
116
+ thickness_anhydrite_lower = round(thickness_z2 * fraction_anhydrite_lower, 4)
117
+ thickness_rocksalt_lower = round(thickness_z2 * fraction_rocksalt_lower, 4)
118
+ thickness_potash = round(thickness_z2 * fraction_potash, 4)
119
+ thickness_rocksalt_upper = round(thickness_z2 * fraction_rocksalt_upper, 4)
120
+ thickness_anhydrite_upper = round(thickness_z2 * fraction_anhydrite_upper, 4)
121
+ list_units = ["Anhydrite (upper)", "Rock Salt (upper)", "Potash", "Rock Salt (lower)", "Anhydrite (lower)",
122
+ "Dolostone"]
123
+ list_thickness = [thickness_anhydrite_upper, thickness_rocksalt_upper, thickness_potash,
124
+ thickness_rocksalt_lower, thickness_anhydrite_lower, thickness_dolomite]
125
+ for thickness in list_thickness:
126
+ if thickness > 0:
127
+ counter += 1
128
+ else:
129
+ counter += 0
130
+ if counter == len(list_thickness) and np.sum(list_thickness) == thickness_z2:
131
+ condition = True
132
+ #
133
+ self.actual_thickness += thickness_dolomite/self.resolution
134
+ actual_top = top_z
135
+ actual_bottom = top_z + thickness_anhydrite_upper
136
+ #
137
+ ## Create Anhydrite (upper) Unit
138
+ container_anhydrite_upper = {}
139
+ steps_anhydrite_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
140
+ for i in steps_anhydrite_upper:
141
+ depth = round(i, 4)
142
+ container_anhydrite_upper[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
143
+ porosity=[0.0, 0.1])
144
+ actual_top += thickness_anhydrite_upper
145
+ actual_bottom += thickness_rocksalt_upper
146
+ #
147
+ ## Create Rock Salt (upper) Unit
148
+ container_rocksalt_upper = {}
149
+ steps_rocksalt_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
150
+ for i in steps_rocksalt_upper:
151
+ depth = round(i, 4)
152
+ container_rocksalt_upper[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
153
+ porosity=[0.0, 0.05])
154
+ actual_top += thickness_rocksalt_upper
155
+ actual_bottom += thickness_potash
156
+ #
157
+ ## Create Potash Unit
158
+ container_potash = {}
159
+ steps_potash = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
160
+ for i in steps_potash:
161
+ depth = round(i, 4)
162
+ container_potash[depth] = Evaporites(fluid="water", actualThickness=0).create_potash(
163
+ porosity=[0.0, 0.05])
164
+ actual_top += thickness_potash
165
+ actual_bottom += thickness_rocksalt_lower
166
+ #
167
+ ## Create Rock Salt (lower) Unit
168
+ container_rocksalt_lower = {}
169
+ steps_rocksalt_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
170
+ for i in steps_rocksalt_lower:
171
+ depth = round(i, 4)
172
+ container_rocksalt_lower[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
173
+ porosity=[0.0, 0.05])
174
+ actual_top += thickness_rocksalt_lower
175
+ actual_bottom += thickness_anhydrite_lower
176
+ #
177
+ ## Create Anhydrite (lower) Unit
178
+ container_anhydrite_lower = {}
179
+ steps_anhydrite_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
180
+ for i in steps_anhydrite_lower:
181
+ depth = round(i, 4)
182
+ container_anhydrite_lower[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
183
+ porosity=[0.0, 0.1])
184
+ actual_top += thickness_anhydrite_lower
185
+ actual_bottom += thickness_dolomite
186
+ #
187
+ ## Create Dolostone Unit
188
+ container_dolomite = {}
189
+ steps_dolomite = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
190
+ for i in steps_dolomite:
191
+ depth = round(i, 4)
192
+ container_dolomite[depth] = CarbonateRocks().create_dolostone(number=1, porosity=[0.1, 0.4])
193
+ actual_top += thickness_dolomite
194
+ actual_bottom += thickness_dolomite
195
+ #
196
+ self.actual_thickness = thickness_dolomite + thickness_anhydrite_lower + thickness_rocksalt_lower \
197
+ + thickness_potash + thickness_rocksalt_upper + thickness_anhydrite_upper
198
+ #
199
+ ## TEST
200
+ # for key, value in reversed(container_anhydrite_upper.items()):
201
+ # print(key, value)
202
+ # for key, value in reversed(container_rocksalt_upper.items()):
203
+ # print(key, value)
204
+ # for key, value in reversed(container_potash.items()):
205
+ # print(key, value)
206
+ # for key, value in reversed(container_rocksalt_lower.items()):
207
+ # print(key, value)
208
+ # for key, value in reversed(container_anhydrite_lower.items()):
209
+ # print(key, value)
210
+ # for key, value in reversed(container_dolomite.items()):
211
+ # print(key, value)
212
+ #
213
+ return container_anhydrite_upper, container_rocksalt_upper, container_potash, container_rocksalt_lower, \
214
+ container_anhydrite_lower, container_dolomite
215
+ #
216
+ def create_zechstein_z3(self, thickness_z3=300, top_z=0): # Z3 - Leine Series
217
+ condition = False
218
+ while condition == False:
219
+ counter = 0
220
+ #
221
+ fraction_mudstone_pre = round(rd.uniform(5, 8), 4)
222
+ fraction_mudstone = round(round(fraction_mudstone_pre * 2) / 2 / 100, 4)
223
+ fraction_anhydrite_pre = round(rd.uniform(14, 24), 4)
224
+ fraction_anhydrite = round(round(fraction_anhydrite_pre * 2) / 2 / 100, 4)
225
+ fraction_rocksalt_lower_pre = round(rd.uniform(13, 22), 4)
226
+ fraction_rocksalt_lower = round(round(fraction_rocksalt_lower_pre * 2) / 2 / 100, 4)
227
+ fraction_potash_lower_pre = round(rd.uniform(4, 7), 4)
228
+ fraction_potash_lower = round(round(fraction_potash_lower_pre * 2) / 2 / 100, 4)
229
+ fraction_rocksalt_medium_pre = round(rd.uniform(25, 42), 4)
230
+ fraction_rocksalt_medium = round(round(fraction_rocksalt_medium_pre * 2) / 2 / 100, 4)
231
+ fraction_potash_upper_pre = round(rd.uniform(4, 6), 4)
232
+ fraction_potash_upper = round(round(fraction_potash_upper_pre * 2) / 2 / 100, 4)
233
+ fraction_rocksalt_upper = round(
234
+ 1 - fraction_mudstone - fraction_anhydrite - fraction_rocksalt_lower - fraction_potash_lower -
235
+ fraction_rocksalt_medium - fraction_potash_upper, 4)
236
+ #
237
+ thickness_mudstone = round(thickness_z3 * fraction_mudstone, 4)
238
+ thickness_anhydrite = round(thickness_z3 * fraction_anhydrite, 4)
239
+ thickness_rocksalt_lower = round(thickness_z3 * fraction_rocksalt_lower, 4)
240
+ thickness_potash_lower = round(thickness_z3 * fraction_potash_lower, 4)
241
+ thickness_rocksalt_medium = round(thickness_z3 * fraction_rocksalt_medium, 4)
242
+ thickness_potash_upper = round(thickness_z3 * fraction_potash_upper, 4)
243
+ thickness_rocksalt_upper = round(thickness_z3 * fraction_rocksalt_upper, 4)
244
+ list_units = ["Rock Salt (upper)", "Potash (upper)", "Rock Salt (medium)", "Potash (lower)",
245
+ "Rock Salt (lower)", "Anhydrite", "Mudstone"]
246
+ list_thickness = [thickness_rocksalt_upper, thickness_potash_upper, thickness_rocksalt_medium,
247
+ thickness_potash_lower, thickness_rocksalt_lower, thickness_anhydrite, thickness_mudstone]
248
+ for thickness in list_thickness:
249
+ if thickness > 0:
250
+ counter += 1
251
+ else:
252
+ counter += 0
253
+ if counter == len(list_thickness) and np.sum(list_thickness) == thickness_z3:
254
+ condition = True
255
+ #
256
+ actual_top = top_z
257
+ actual_bottom = top_z + thickness_rocksalt_upper
258
+ #
259
+ ## Create Rock Salt (upper) Unit
260
+ container_rocksalt_upper = {}
261
+ steps_rocksalt_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
262
+ for i in steps_rocksalt_upper:
263
+ depth = round(i, 4)
264
+ container_rocksalt_upper[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
265
+ porosity=[0.0, 0.05])
266
+ actual_top += thickness_rocksalt_upper
267
+ actual_bottom += thickness_potash_upper
268
+ #
269
+ ## Create Potash (upper) Unit
270
+ container_potash_upper = {}
271
+ steps_potash_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
272
+ for i in steps_potash_upper:
273
+ depth = round(i, 4)
274
+ container_potash_upper[depth] = Evaporites(fluid="water", actualThickness=0).create_potash(
275
+ porosity=[0.0, 0.05])
276
+ actual_top += thickness_potash_upper
277
+ actual_bottom += thickness_rocksalt_medium
278
+ #
279
+ ## Create Rock Salt (medium Unit
280
+ container_rocksalt_medium = {}
281
+ steps_rocksalt_medium = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
282
+ for i in steps_rocksalt_medium:
283
+ depth = round(i, 4)
284
+ container_rocksalt_medium[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
285
+ porosity=[0.0, 0.05])
286
+ actual_top += thickness_rocksalt_medium
287
+ actual_bottom += thickness_potash_lower
288
+ #
289
+ ## Create Potash (lower) Unit
290
+ container_potash_lower = {}
291
+ steps_potash_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
292
+ for i in steps_potash_lower:
293
+ depth = round(i, 4)
294
+ container_potash_lower[depth] = Evaporites(fluid="water", actualThickness=0).create_potash(
295
+ porosity=[0.0, 0.05])
296
+ actual_top += thickness_potash_lower
297
+ actual_bottom += thickness_rocksalt_lower
298
+ #
299
+ ## Create Rock Salt (lower) Unit
300
+ container_rocksalt_lower = {}
301
+ steps_rocksalt_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
302
+ for i in steps_rocksalt_lower:
303
+ depth = round(i, 4)
304
+ container_rocksalt_lower[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
305
+ porosity=[0.0, 0.1])
306
+ actual_top += thickness_rocksalt_lower
307
+ actual_bottom += thickness_anhydrite
308
+ #
309
+ ## Create Anhydrite Unit
310
+ container_anhydrite = {}
311
+ steps_anhydrite = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
312
+ for i in steps_anhydrite:
313
+ depth = round(i, 4)
314
+ container_anhydrite[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
315
+ porosity=[0.05, 0.1])
316
+ actual_top += thickness_anhydrite
317
+ actual_bottom += thickness_mudstone
318
+ #
319
+ ## Create Mudstone Unit
320
+ container_mudstone = {}
321
+ steps_mudstone = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
322
+ for i in steps_mudstone:
323
+ depth = round(i, 4)
324
+ container_mudstone[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
325
+ #
326
+ ## TEST
327
+ # for key, value in reversed(container_anhydrite_upper.items()):
328
+ # print(key, value)
329
+ # for key, value in reversed(container_rocksalt_upper.items()):
330
+ # print(key, value)
331
+ # for key, value in reversed(container_potash.items()):
332
+ # print(key, value)
333
+ # for key, value in reversed(container_rocksalt_lower.items()):
334
+ # print(key, value)
335
+ # for key, value in reversed(container_anhydrite_lower.items()):
336
+ # print(key, value)
337
+ # for key, value in reversed(container_dolomite.items()):
338
+ # print(key, value)
339
+ #
340
+ return container_rocksalt_upper, container_potash_upper, container_rocksalt_medium, container_potash_lower, \
341
+ container_rocksalt_lower, container_anhydrite, container_mudstone
342
+ #
343
+ def create_zechstein_z4(self, thickness_z4=200, top_z=0): # Z4 - Aller Series
344
+ condition = False
345
+ while condition == False:
346
+ counter = 0
347
+ #
348
+ fraction_mudstone_pre = round(rd.uniform(10, 16), 4)
349
+ fraction_mudstone = round(round(fraction_mudstone_pre * 2) / 2 / 100, 4)
350
+ fraction_anhydrite_lower_pre = round(rd.uniform(5, 9), 4)
351
+ fraction_anhydrite_lower = round(round(fraction_anhydrite_lower_pre * 2) / 2 / 100, 4)
352
+ fraction_rocksalt_pre = round(rd.uniform(55, 92), 4)
353
+ fraction_rocksalt = round(round(fraction_rocksalt_pre * 2) / 2 / 100, 4)
354
+ fraction_anhydrite_upper = round(1 - fraction_mudstone - fraction_anhydrite_lower - fraction_rocksalt, 4)
355
+ #
356
+ thickness_mudstone = round(thickness_z4 * fraction_mudstone, 4)
357
+ thickness_anhydrite_lower = round(thickness_z4 * fraction_anhydrite_lower, 4)
358
+ thickness_rocksalt = round(thickness_z4 * fraction_rocksalt, 4)
359
+ thickness_anhydrite_upper = round(thickness_z4 * fraction_anhydrite_upper, 4)
360
+ list_units = ["Anhydrite (upper)", "Rock Salt", "Anhydrite (lower)", "Shale"]
361
+ list_thickness = [thickness_anhydrite_upper, thickness_rocksalt, thickness_anhydrite_lower, thickness_mudstone]
362
+ for thickness in list_thickness:
363
+ if thickness > 0:
364
+ counter += 1
365
+ else:
366
+ counter += 0
367
+ if counter == len(list_thickness) and np.sum(list_thickness) == thickness_z4:
368
+ condition = True
369
+ #
370
+ actual_top = top_z
371
+ actual_bottom = top_z + thickness_anhydrite_upper
372
+ #
373
+ ## Create Anhydrite (upper) Unit
374
+ container_anhydrite_upper = {}
375
+ steps_anhydrite_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
376
+ for i in steps_anhydrite_upper:
377
+ depth = round(i, 4)
378
+ container_anhydrite_upper[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
379
+ porosity=[0.05, 0.1])
380
+ actual_top += thickness_anhydrite_upper
381
+ actual_bottom += thickness_rocksalt
382
+ #
383
+ ## Create Rock Salt Unit
384
+ container_rocksalt = {}
385
+ steps_rocksalt_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
386
+ for i in steps_rocksalt_upper:
387
+ depth = round(i, 4)
388
+ container_rocksalt[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
389
+ porosity=[0.0, 0.05])
390
+ actual_top += thickness_rocksalt
391
+ actual_bottom += thickness_anhydrite_lower
392
+ #
393
+ ## Create Anhydrite (lower) Unit
394
+ container_anhydrite_lower = {}
395
+ steps_anhydrite_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
396
+ for i in steps_anhydrite_lower:
397
+ depth = round(i, 4)
398
+ container_anhydrite_lower[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
399
+ porosity=[0.05, 0.1])
400
+ actual_top += thickness_anhydrite_lower
401
+ actual_bottom += thickness_mudstone
402
+ #
403
+ ## Create Mudstone Unit
404
+ container_mudstone = {}
405
+ steps_mudstone = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
406
+ for i in steps_mudstone:
407
+ depth = round(i, 4)
408
+ container_mudstone[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
409
+ #
410
+ ## TEST
411
+ # for key, value in reversed(container_anhydrite_upper.items()):
412
+ # print(key, value)
413
+ # for key, value in reversed(container_rocksalt_upper.items()):
414
+ # print(key, value)
415
+ # for key, value in reversed(container_potash.items()):
416
+ # print(key, value)
417
+ # for key, value in reversed(container_rocksalt_lower.items()):
418
+ # print(key, value)
419
+ # for key, value in reversed(container_anhydrite_lower.items()):
420
+ # print(key, value)
421
+ # for key, value in reversed(container_dolomite.items()):
422
+ # print(key, value)
423
+ #
424
+ return container_anhydrite_upper, container_rocksalt, container_anhydrite_lower, container_mudstone
425
+ #
426
+ def create_zechstein_z5(self, thickness_z5=100, top_z=0): # 5 - Ohre Series
427
+ fraction_mudstone_lower_pre = round(rd.uniform(22, 36), 4)
428
+ fraction_mudstone_lower = round(round(fraction_mudstone_lower_pre*2)/2/100, 4)
429
+ fraction_anhydrite_pre = round(rd.uniform(11, 19), 4)
430
+ fraction_anhydrite = round(round(fraction_anhydrite_pre*2)/2/100, 4)
431
+ fraction_mudstone_upper = round(1 - fraction_mudstone_lower - fraction_anhydrite, 4)
432
+ #
433
+ thickness_mudstone_lower = round(thickness_z5*fraction_mudstone_lower, 4)
434
+ thickness_anhydrite = round(thickness_z5*fraction_anhydrite, 4)
435
+ thickness_mudstone_upper = round(thickness_z5*fraction_mudstone_upper, 4)
436
+ #
437
+ actual_top = top_z
438
+ actual_bottom = top_z + thickness_mudstone_upper
439
+ #
440
+ ## Create Mudstone Upper Unit
441
+ container_mudstone_upper = {}
442
+ steps_mudstone_upper = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
443
+ for i in steps_mudstone_upper:
444
+ depth = round(i, 4)
445
+ container_mudstone_upper[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
446
+ actual_top += thickness_mudstone_upper
447
+ actual_bottom += thickness_anhydrite
448
+ #
449
+ ## Create Anhydrite Unit
450
+ container_anhydrite = {}
451
+ steps_anhydrite = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
452
+ for i in steps_anhydrite:
453
+ depth = round(i, 4)
454
+ container_anhydrite[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
455
+ porosity=[0.05, 0.1])
456
+ actual_top += thickness_anhydrite
457
+ actual_bottom += thickness_mudstone_lower
458
+ #
459
+ ## Create Mudstone Lower Unit
460
+ container_mudstone_lower = {}
461
+ steps_mudstone_lower = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
462
+ for i in steps_mudstone_lower:
463
+ depth = round(i, 4)
464
+ container_mudstone_lower[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
465
+ #
466
+ ## TEST
467
+ # for key, value in reversed(container_mudstone_upper.items()):
468
+ # print(key, value)
469
+ # for key, value in reversed(container_anhydrite.items()):
470
+ # print(key, value)
471
+ # for key, value in reversed(container_mudstone_lower.items()):
472
+ # print(key, value)
473
+ #
474
+ return container_mudstone_upper, container_anhydrite, container_mudstone_lower
475
+ #
476
+ class Muschelkalk:
477
+ #
478
+ def __init__(self, actual_thickness=0, thickness=1000, resolution=25, composition=None):
479
+ self.thickness = thickness
480
+ self.resolution = resolution
481
+ self.composition = composition
482
+ #
483
+ self.actual_thickness = actual_thickness
484
+ #
485
+ def export_lithological_keys(self):
486
+ list_keys = ["Marl", "Dolostone", "Limestone", "Anhydrite", "Mudstone"]
487
+ list_keys.sort()
488
+ #
489
+ return list_keys
490
+ #
491
+ def create_muschelkalk_unterer(self, thickness_unit=100, top_unit=0): # Unterer Muschelkalk
492
+ fraction_marl_pre = round(rd.uniform(10, 15), 4)
493
+ fraction_marl = round(round(fraction_marl_pre * 2) / 2 / 100, 4)
494
+ fraction_dolomite_pre = round(rd.uniform(30, 40), 4)
495
+ fraction_dolomite = round(round(fraction_dolomite_pre * 2) / 2 / 100, 4)
496
+ fraction_limestone = round(1 - fraction_marl - fraction_dolomite, 4)
497
+ #
498
+ thickness_marl = round(thickness_unit * fraction_marl, 4)
499
+ thickness_dolomite = round(thickness_unit * fraction_dolomite, 4)
500
+ thickness_limestone = round(thickness_unit * fraction_limestone, 4)
501
+ #
502
+ actual_top = top_unit
503
+ actual_bottom = top_unit + thickness_limestone
504
+ #
505
+ ## Create Limestone Unit
506
+ container_limestone = {}
507
+ steps_limestone = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
508
+ for i in steps_limestone:
509
+ depth = round(i, 4)
510
+ # container_limestone[depth] = limestone(fluid="water", actualThickness=0).create_simple_limestone(
511
+ # dict=True, porosity=rd.uniform(0.15, 0.4))
512
+ container_limestone[depth] = CarbonateRocks(
513
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
514
+ actual_top += thickness_limestone
515
+ actual_bottom += thickness_dolomite
516
+ #
517
+ ## Create Dolostone Unit
518
+ container_dolomite = {}
519
+ steps_dolomite = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
520
+ for i in steps_dolomite:
521
+ depth = round(i, 4)
522
+ container_dolomite[depth] = CarbonateRocks(
523
+ fluid="water", actualThickness=0).create_dolostone(number=1, porosity=[0.1, 0.2])
524
+ actual_top += thickness_dolomite
525
+ actual_bottom += thickness_marl
526
+ #
527
+ ## Create Marl Unit
528
+ container_marl = {}
529
+ steps_marl = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
530
+ for i in steps_marl:
531
+ depth = round(i, 4)
532
+ container_marl[depth] = SedimentaryRocks(
533
+ fluid="water", actualThickness=0).create_marl_alt(
534
+ number=1, porosity=rd.uniform(0.1, 0.3))
535
+ #
536
+ ## TEST
537
+ # for key, value in reversed(container_anhydrite.items()):
538
+ # print(key, value)
539
+ # for key, value in reversed(container_limestone.items()):
540
+ # print(key, value)
541
+ # for key, value in reversed(container_kupferschiefer.items()):
542
+ # print(key, value)
543
+ #
544
+ return container_limestone, container_dolomite, container_marl
545
+ #
546
+ def create_muschelkalk_mittlerer(self, thickness_unit=100, top_unit=0): # Mittlerer Muschelkalk
547
+ fraction_dolomite_lower_pre = round(rd.uniform(10, 15), 4)
548
+ fraction_dolomite_lower = round(round(fraction_dolomite_lower_pre * 2) / 2 / 100, 4)
549
+ fraction_anhydrite_pre = round(rd.uniform(15, 25), 4)
550
+ fraction_anhydrite = round(round(fraction_anhydrite_pre * 2) / 2 / 100, 4)
551
+ fraction_dolomite_medium_pre = round(rd.uniform(30, 40), 4)
552
+ fraction_dolomite_medium = round(round(fraction_dolomite_medium_pre * 2) / 2 / 100, 4)
553
+ fraction_marl_pre = round(rd.uniform(5, 10), 4)
554
+ fraction_marl = round(round(fraction_marl_pre * 2) / 2 / 100, 4)
555
+ fraction_dolomite_upper = round(
556
+ 1 - fraction_dolomite_lower - fraction_anhydrite - fraction_dolomite_medium - fraction_marl, 4)
557
+ #
558
+ thickness_dolomite_upper = round(thickness_unit * fraction_dolomite_upper, 4)
559
+ thickness_marl = round(thickness_unit * fraction_marl, 4)
560
+ thickness_dolomite_medium = round(thickness_unit * fraction_dolomite_medium, 4)
561
+ thickness_anhydrite = round(thickness_unit * fraction_anhydrite, 4)
562
+ thickness_dolomite_lower = round(thickness_unit * fraction_dolomite_lower, 4)
563
+ #
564
+ actual_top = top_unit
565
+ actual_bottom = top_unit + thickness_dolomite_upper
566
+ #
567
+ ## Create Dolostone upper Unit
568
+ container_dolomite_upper = {}
569
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
570
+ for i in steps_unit:
571
+ depth = round(i, 4)
572
+ container_dolomite_upper[depth] = CarbonateRocks(
573
+ fluid="water", actualThickness=0).create_dolostone(number=1, porosity=[0.1, 0.2])
574
+ actual_top += thickness_dolomite_upper
575
+ actual_bottom += thickness_marl
576
+ #
577
+ ## Create Marl Unit
578
+ container_marl = {}
579
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
580
+ for i in steps_unit:
581
+ depth = round(i, 4)
582
+ container_marl[depth] = SedimentaryRocks(
583
+ fluid="water", actualThickness=0).create_marl_alt(
584
+ number=1, porosity=rd.uniform(0.1, 0.3))
585
+ actual_top += thickness_marl
586
+ actual_bottom += thickness_dolomite_medium
587
+ #
588
+ ## Create Dolostone medium Unit
589
+ container_dolomite_medium = {}
590
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
591
+ for i in steps_unit:
592
+ depth = round(i, 4)
593
+ container_dolomite_medium[depth] = CarbonateRocks(
594
+ fluid="water", actualThickness=0).create_dolostone(number=1, porosity=[0.1, 0.2])
595
+ actual_top += thickness_dolomite_medium
596
+ actual_bottom += thickness_anhydrite
597
+ #
598
+ ## Create Anhydrite Unit
599
+ container_anhydrite = {}
600
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
601
+ for i in steps_unit:
602
+ depth = round(i, 4)
603
+ container_anhydrite[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
604
+ porosity=[0.05, 0.1])
605
+ actual_top += thickness_anhydrite
606
+ actual_bottom += thickness_dolomite_lower
607
+ #
608
+ ## Create Dolostone lower Unit
609
+ container_dolomite_lower = {}
610
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
611
+ for i in steps_unit:
612
+ depth = round(i, 4)
613
+ container_dolomite_lower[depth] = CarbonateRocks(
614
+ fluid="water", actualThickness=0).create_dolostone(number=1, porosity=[0.1, 0.2])
615
+ #
616
+ ## TEST
617
+ # for key, value in reversed(container_anhydrite.items()):
618
+ # print(key, value)
619
+ # for key, value in reversed(container_limestone.items()):
620
+ # print(key, value)
621
+ # for key, value in reversed(container_kupferschiefer.items()):
622
+ # print(key, value)
623
+ #
624
+ return container_dolomite_upper, container_marl, container_dolomite_medium, container_anhydrite, \
625
+ container_dolomite_lower
626
+ #
627
+ def create_muschelkalk_oberer(self, thickness_unit=100, top_unit=0): # Oberer Muschelkalk
628
+ fraction_limestone_upper_pre = round(rd.uniform(10, 15), 4)
629
+ fraction_limestone_upper = round(round(fraction_limestone_upper_pre * 2) / 2 / 100, 4)
630
+ fraction_mudstone_upper_pre = round(rd.uniform(5, 10), 4)
631
+ fraction_mudstone_upper = round(round(fraction_mudstone_upper_pre * 2) / 2 / 100, 4)
632
+ fraction_limestone_medium_upper_pre = round(rd.uniform(10, 15), 4)
633
+ fraction_limestone_medium_upper = round(round(fraction_limestone_medium_upper_pre * 2) / 2 / 100, 4)
634
+ fraction_marl_pre = round(rd.uniform(5, 10), 4)
635
+ fraction_marl = round(round(fraction_marl_pre * 2) / 2 / 100, 4)
636
+ fraction_limestone_medium_medium_pre = round(rd.uniform(10, 15), 4)
637
+ fraction_limestone_medium_medium = round(round(fraction_limestone_medium_medium_pre * 2) / 2 / 100, 4)
638
+ fraction_mudstone_medium_pre = round(rd.uniform(5, 10), 4)
639
+ fraction_mudstone_medium = round(round(fraction_mudstone_medium_pre * 2) / 2 / 100, 4)
640
+ fraction_limestone_medium_lower_pre = round(rd.uniform(10, 15), 4)
641
+ fraction_limestone_medium_lower = round(round(fraction_limestone_medium_lower_pre * 2) / 2 / 100, 4)
642
+ fraction_mudstone_lower_pre = round(rd.uniform(5, 10), 4)
643
+ fraction_mudstone_lower = round(round(fraction_mudstone_lower_pre * 2) / 2 / 100, 4)
644
+ fraction_limestone_lower = round(
645
+ 1 - fraction_limestone_upper - fraction_mudstone_upper - fraction_limestone_medium_upper - fraction_marl
646
+ - fraction_limestone_medium_medium - fraction_mudstone_medium - fraction_limestone_medium_lower
647
+ - fraction_mudstone_lower, 4)
648
+ #
649
+ thickness_limestone_upper = round(thickness_unit * fraction_limestone_upper, 4)
650
+ thickness_mudstone_upper = round(thickness_unit * fraction_mudstone_upper, 4)
651
+ thickness_limestone_medium_upper = round(thickness_unit * fraction_limestone_medium_upper, 4)
652
+ thickness_marl = round(thickness_unit * fraction_marl, 4)
653
+ thickness_limestone_medium_medium = round(thickness_unit * fraction_limestone_medium_medium, 4)
654
+ thickness_mudstone_medium = round(thickness_unit * fraction_mudstone_medium, 4)
655
+ thickness_limestone_medium_lower = round(thickness_unit * fraction_limestone_medium_lower, 4)
656
+ thickness_mudstone_lower = round(thickness_unit * fraction_mudstone_lower, 4)
657
+ thickness_limestone_lower = round(thickness_unit * fraction_limestone_lower, 4)
658
+ #
659
+ actual_top = top_unit
660
+ actual_bottom = top_unit + thickness_limestone_upper
661
+ #
662
+ ## Create Limestone upper Unit
663
+ container_limestone_upper = {}
664
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
665
+ for i in steps_unit:
666
+ depth = round(i, 4)
667
+ container_limestone_upper[depth] = CarbonateRocks(
668
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
669
+ actual_top += thickness_limestone_upper
670
+ actual_bottom += thickness_mudstone_upper
671
+ #
672
+ ## Create Mudstone upper Unit
673
+ container_mudstone_upper = {}
674
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
675
+ for i in steps_unit:
676
+ depth = round(i, 4)
677
+ container_mudstone_upper[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
678
+ actual_top += thickness_mudstone_upper
679
+ actual_bottom += thickness_limestone_medium_upper
680
+ #
681
+ ## Create Limestone medium upper Unit
682
+ container_limestone_medium_upper = {}
683
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
684
+ for i in steps_unit:
685
+ depth = round(i, 4)
686
+ container_limestone_medium_upper[depth] = CarbonateRocks(
687
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
688
+ actual_top += thickness_limestone_medium_upper
689
+ actual_bottom += thickness_marl
690
+ #
691
+ ## Create Marl Unit
692
+ container_marl = {}
693
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
694
+ for i in steps_unit:
695
+ depth = round(i, 4)
696
+ container_marl[depth] = SedimentaryRocks(
697
+ fluid="water", actualThickness=0).create_marl_alt(
698
+ number=1, porosity=rd.uniform(0.1, 0.3))
699
+ actual_top += thickness_marl
700
+ actual_bottom += thickness_limestone_medium_medium
701
+ #
702
+ ## Create Limestone medium medium Unit
703
+ container_limestone_medium_medium = {}
704
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
705
+ for i in steps_unit:
706
+ depth = round(i, 4)
707
+ container_limestone_medium_medium[depth] = CarbonateRocks(
708
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
709
+ actual_top += thickness_limestone_medium_medium
710
+ actual_bottom += thickness_mudstone_medium
711
+ #
712
+ ## Create Mudstone medium Unit
713
+ container_mudstone_medium = {}
714
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
715
+ for i in steps_unit:
716
+ depth = round(i, 4)
717
+ container_mudstone_medium[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
718
+ actual_top += thickness_mudstone_medium
719
+ actual_bottom += thickness_limestone_medium_lower
720
+ #
721
+ ## Create Limestone medium lower Unit
722
+ container_limestone_medium_lower = {}
723
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
724
+ for i in steps_unit:
725
+ depth = round(i, 4)
726
+ container_limestone_medium_lower[depth] = CarbonateRocks(
727
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
728
+ actual_top += thickness_limestone_medium_lower
729
+ actual_bottom += thickness_mudstone_lower
730
+ #
731
+ ## Create Mudstone lower Unit
732
+ container_mudstone_lower = {}
733
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
734
+ for i in steps_unit:
735
+ depth = round(i, 4)
736
+ container_mudstone_lower[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
737
+ actual_top += thickness_mudstone_lower
738
+ actual_bottom += thickness_limestone_lower
739
+ #
740
+ ## Create Limestone lower Unit
741
+ container_limestone_lower = {}
742
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
743
+ for i in steps_unit:
744
+ depth = round(i, 4)
745
+ container_limestone_lower[depth] = CarbonateRocks(
746
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.0, 0.4])
747
+ #
748
+ ## TEST
749
+ # for key, value in reversed(container_limestone_lower.items()):
750
+ # print(key, value)
751
+ # for key, value in reversed(container_limestone.items()):
752
+ # print(key, value)
753
+ # for key, value in reversed(container_kupferschiefer.items()):
754
+ # print(key, value)
755
+ #
756
+ return container_limestone_upper, container_mudstone_upper, container_limestone_medium_upper, container_marl, \
757
+ container_limestone_medium_medium, container_mudstone_medium, container_limestone_medium_lower, \
758
+ container_mudstone_lower, container_limestone_lower
759
+ #
760
+ class Buntsandstein:
761
+ #
762
+ def __init__(self, actual_thickness=0, thickness=1000, resolution=25, composition=None):
763
+ self.thickness = thickness
764
+ self.resolution = resolution
765
+ self.composition = composition
766
+ #
767
+ self.actual_thickness = actual_thickness
768
+ #
769
+ def export_lithological_keys(self):
770
+ list_keys = ["Sandstone", "Mudstone", "Limestone", "Rock Salt", "Anhydrite"]
771
+ list_keys.sort()
772
+ #
773
+ return list_keys
774
+ #
775
+ def create_buntsandstein_lower(self, thickness_unit=100, top_unit=0):
776
+ thickness_bemburg = int(rd.uniform(0.42, 0.46)*thickness_unit)
777
+ thickness_nordhausen = int(thickness_unit - thickness_bemburg)
778
+ #
779
+ data_bemburg = self.create_bemburg_series(
780
+ top_unit=top_unit, thickness_unit=thickness_bemburg)
781
+ data_nordhausen = self.create_nordhausen_series(
782
+ top_unit=top_unit + thickness_bemburg, thickness_unit=thickness_nordhausen)
783
+ #
784
+ data_units = data_bemburg + data_nordhausen
785
+ #
786
+ return data_units
787
+ #
788
+ def create_buntsandstein_medium(self, thickness_unit=100, top_unit=0):
789
+ thickness_solling = int(rd.uniform(0.05, 0.09)*thickness_unit)
790
+ thickness_hardegsen = int(rd.uniform(0.19, 0.23)*thickness_unit)
791
+ thickness_detfurth = int(rd.uniform(0.31, 0.35)*thickness_unit)
792
+ thickness_volpriehausen = int(thickness_unit - thickness_solling - thickness_hardegsen - thickness_detfurth)
793
+ #
794
+ data_solling = self.create_solling_series(
795
+ top_unit=top_unit, thickness_unit=thickness_solling)
796
+ data_hardegsen = self.create_hardegsen_series(
797
+ top_unit=top_unit + thickness_solling, thickness_unit=thickness_hardegsen)
798
+ data_detfurth = self.create_detfurth_series(
799
+ top_unit=top_unit + thickness_solling + thickness_hardegsen, thickness_unit=thickness_detfurth)
800
+ data_volpriehausen = self.create_detfurth_series(
801
+ top_unit=top_unit + thickness_solling + thickness_hardegsen + thickness_detfurth,
802
+ thickness_unit=thickness_volpriehausen)
803
+ #
804
+ data_units = data_solling + data_hardegsen + data_detfurth + data_volpriehausen
805
+ #
806
+ return data_units
807
+ #
808
+ def create_buntsandstein_upper(self, thickness_unit=100, top_unit=0):
809
+ thickness_myophorien = int(rd.uniform(0.10, 0.14)*thickness_unit)
810
+ thickness_pelitroet = int(rd.uniform(0.44, 0.48)*thickness_unit)
811
+ thickness_salinarroet = int(thickness_unit - thickness_myophorien - thickness_pelitroet)
812
+ #
813
+ data_myophorien = self.create_myophorien_series(
814
+ top_unit=top_unit, thickness_unit=thickness_myophorien)
815
+ data_pelitroet = self.create_pelitroet_series(
816
+ top_unit=top_unit + thickness_myophorien, thickness_unit=thickness_pelitroet)
817
+ data_salinarroet = self.create_salinarroet_series(
818
+ top_unit=top_unit + thickness_myophorien + thickness_pelitroet, thickness_unit=thickness_salinarroet)
819
+ #
820
+ data_units = data_myophorien + data_pelitroet + data_salinarroet
821
+ #
822
+ return data_units
823
+ #
824
+ def create_nordhausen_series(self, thickness_unit=100, top_unit=0):
825
+ fraction_sandstone_05 = round(rd.uniform(0.08, 0.10), 4)
826
+ fraction_mudstone_05 = round(rd.uniform(0.11, 0.13), 4)
827
+ fraction_sandstone_04 = round(rd.uniform(0.06, 0.08), 4)
828
+ fraction_mudstone_04 = round(rd.uniform(0.06, 0.08), 4)
829
+ fraction_sandstone_03 = round(rd.uniform(0.18, 0.20), 4)
830
+ fraction_mudstone_03 = round(rd.uniform(0.06, 0.08), 4)
831
+ fraction_sandstone_02 = round(rd.uniform(0.04, 0.06), 4)
832
+ fraction_mudstone_02 = round(rd.uniform(0.04, 0.06), 4)
833
+ fraction_sandstone_01 = round(rd.uniform(0.04, 0.06), 4)
834
+ fraction_mudstone_01 = round(rd.uniform(0.04, 0.06), 4)
835
+ #
836
+ fraction_mudstone_06 = round(
837
+ 1 - fraction_mudstone_01 - fraction_mudstone_02 - fraction_mudstone_03 - fraction_mudstone_04 -
838
+ fraction_mudstone_05 - fraction_sandstone_01 - fraction_sandstone_02 - fraction_sandstone_03 -
839
+ fraction_sandstone_04 - fraction_sandstone_05, 4)
840
+ #
841
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
842
+ thickness_mudstone_02 = round(thickness_unit*fraction_mudstone_02, 4)
843
+ thickness_mudstone_03 = round(thickness_unit*fraction_mudstone_03, 4)
844
+ thickness_mudstone_04 = round(thickness_unit*fraction_mudstone_04, 4)
845
+ thickness_mudstone_05 = round(thickness_unit*fraction_mudstone_05, 4)
846
+ thickness_mudstone_06 = round(thickness_unit*fraction_mudstone_06, 4)
847
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
848
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
849
+ thickness_sandstone_03 = round(thickness_unit*fraction_sandstone_03, 4)
850
+ thickness_sandstone_04 = round(thickness_unit*fraction_sandstone_04, 4)
851
+ thickness_sandstone_05 = round(thickness_unit*fraction_sandstone_05, 4)
852
+ #
853
+ actual_top = top_unit
854
+ actual_bottom = top_unit + thickness_mudstone_06
855
+ #
856
+ thickness_list = [thickness_mudstone_06, thickness_sandstone_05, thickness_mudstone_05, thickness_sandstone_04,
857
+ thickness_mudstone_04, thickness_sandstone_03, thickness_mudstone_03, thickness_sandstone_02,
858
+ thickness_mudstone_02, thickness_sandstone_01, thickness_mudstone_01]
859
+ #
860
+ ## Create Mudstone 06
861
+ container_mudstone_06 = {}
862
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
863
+ for i in steps_rock:
864
+ depth = round(i, 4)
865
+ container_mudstone_06[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
866
+ actual_top += thickness_mudstone_06
867
+ actual_bottom += thickness_sandstone_05
868
+ #
869
+ ## Create Sandstone 05
870
+ container_sandstone_05 = {}
871
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
872
+ for i in steps_rock:
873
+ depth = round(i, 4)
874
+ container_sandstone_05[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.15, 0.25])
875
+ actual_top += thickness_sandstone_05
876
+ actual_bottom += thickness_mudstone_05
877
+ #
878
+ ## Create Mudstone 05
879
+ container_mudstone_05 = {}
880
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
881
+ for i in steps_rock:
882
+ depth = round(i, 4)
883
+ container_mudstone_05[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
884
+ actual_top += thickness_mudstone_05
885
+ actual_bottom += thickness_sandstone_04
886
+ #
887
+ ## Create Sandstone 04
888
+ container_sandstone_04 = {}
889
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
890
+ for i in steps_rock:
891
+ depth = round(i, 4)
892
+ container_sandstone_04[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.15, 0.25])
893
+ actual_top += thickness_sandstone_04
894
+ actual_bottom += thickness_mudstone_04
895
+ #
896
+ ## Create Mudstone 04
897
+ container_mudstone_04 = {}
898
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
899
+ for i in steps_rock:
900
+ depth = round(i, 4)
901
+ container_mudstone_04[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
902
+ actual_top += thickness_mudstone_04
903
+ actual_bottom += thickness_sandstone_03
904
+ #
905
+ ## Create Sandstone 03
906
+ container_sandstone_03 = {}
907
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
908
+ for i in steps_rock:
909
+ depth = round(i, 4)
910
+ container_sandstone_03[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.15, 0.25])
911
+ actual_top += thickness_sandstone_03
912
+ actual_bottom += thickness_mudstone_03
913
+ #
914
+ ## Create Mudstone 03
915
+ container_mudstone_03 = {}
916
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
917
+ for i in steps_rock:
918
+ depth = round(i, 4)
919
+ container_mudstone_03[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
920
+ actual_top += thickness_mudstone_03
921
+ actual_bottom += thickness_sandstone_02
922
+ #
923
+ ## Create Sandstone 02
924
+ container_sandstone_02 = {}
925
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
926
+ for i in steps_rock:
927
+ depth = round(i, 4)
928
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.15, 0.25])
929
+ actual_top += thickness_sandstone_02
930
+ actual_bottom += thickness_mudstone_02
931
+ #
932
+ ## Create Mudstone 02
933
+ container_mudstone_02 = {}
934
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
935
+ for i in steps_rock:
936
+ depth = round(i, 4)
937
+ container_mudstone_02[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
938
+ actual_top += thickness_mudstone_02
939
+ actual_bottom += thickness_sandstone_01
940
+ #
941
+ ## Create Sandstone 01
942
+ container_sandstone_01 = {}
943
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
944
+ for i in steps_rock:
945
+ depth = round(i, 4)
946
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.2, 0.3])
947
+ actual_top += thickness_sandstone_01
948
+ actual_bottom += thickness_mudstone_01
949
+ #
950
+ ## Create Mudstone 01
951
+ container_mudstone_01 = {}
952
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
953
+ for i in steps_rock:
954
+ depth = round(i, 4)
955
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
956
+ #
957
+ ## TEST
958
+ # for key, value in reversed(container_mudstone_01.items()):
959
+ # print(key, value)
960
+ # for key, value in reversed(container_limestone.items()):
961
+ # print(key, value)
962
+ # for key, value in reversed(container_kupferschiefer.items()):
963
+ # print(key, value)
964
+ #
965
+ return container_mudstone_06, container_sandstone_05, container_mudstone_05, container_sandstone_04, \
966
+ container_mudstone_04, container_sandstone_03, container_mudstone_03, container_sandstone_02, \
967
+ container_mudstone_02, container_sandstone_01, container_mudstone_01
968
+ #
969
+ def create_bemburg_series(self, thickness_unit=100, top_unit=0):
970
+ fraction_sandstone_06 = round(rd.uniform(0.09, 0.11), 4)
971
+ fraction_mudstone_03 = round(rd.uniform(0.10, 0.12), 4)
972
+ fraction_sandstone_05 = round(rd.uniform(0.09, 0.11), 4)
973
+ fraction_sandstone_04 = round(rd.uniform(0.06, 0.08), 4)
974
+ fraction_sandstone_03 = round(rd.uniform(0.09, 0.11), 4)
975
+ fraction_mudstone_02 = round(rd.uniform(0.09, 0.11), 4)
976
+ fraction_sandstone_02 = round(rd.uniform(0.08, 0.10), 4)
977
+ fraction_mudstone_01 = round(rd.uniform(0.05, 0.07), 4)
978
+ fraction_sandstone_01 = round(rd.uniform(0.11, 0.13), 4)
979
+ #
980
+ fraction_mudstone_04 = round(
981
+ 1 - fraction_mudstone_01 - fraction_mudstone_02 - fraction_mudstone_03 - fraction_sandstone_01 -
982
+ fraction_sandstone_02 - fraction_sandstone_03 - fraction_sandstone_04 - fraction_sandstone_05 -
983
+ fraction_sandstone_06, 4)
984
+ #
985
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
986
+ thickness_mudstone_02 = round(thickness_unit*fraction_mudstone_02, 4)
987
+ thickness_mudstone_03 = round(thickness_unit*fraction_mudstone_03, 4)
988
+ thickness_mudstone_04 = round(thickness_unit*fraction_mudstone_04, 4)
989
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
990
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
991
+ thickness_sandstone_03 = round(thickness_unit*fraction_sandstone_03, 4)
992
+ thickness_sandstone_04 = round(thickness_unit*fraction_sandstone_04, 4)
993
+ thickness_sandstone_05 = round(thickness_unit*fraction_sandstone_05, 4)
994
+ thickness_sandstone_06 = round(thickness_unit*fraction_sandstone_06, 4)
995
+ #
996
+ actual_top = top_unit
997
+ actual_bottom = top_unit + thickness_mudstone_04
998
+ #
999
+ thickness_list = [thickness_mudstone_04, thickness_sandstone_06, thickness_mudstone_03, thickness_sandstone_05,
1000
+ thickness_sandstone_04, thickness_sandstone_03, thickness_mudstone_02, thickness_sandstone_02,
1001
+ thickness_mudstone_01, thickness_sandstone_01]
1002
+ #
1003
+ ## Create Mudstone 04
1004
+ container_mudstone_04 = {}
1005
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1006
+ for i in steps_rock:
1007
+ depth = round(i, 4)
1008
+ container_mudstone_04[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1009
+ actual_top += thickness_mudstone_04
1010
+ actual_bottom += thickness_sandstone_06
1011
+ #
1012
+ ## Create Sandstone 06
1013
+ container_sandstone_06 = {}
1014
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1015
+ for i in steps_rock:
1016
+ depth = round(i, 4)
1017
+ container_sandstone_06[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1018
+ actual_top += thickness_sandstone_06
1019
+ actual_bottom += thickness_mudstone_03
1020
+ #
1021
+ ## Create Mudstone 03
1022
+ container_mudstone_03 = {}
1023
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1024
+ for i in steps_rock:
1025
+ depth = round(i, 4)
1026
+ container_mudstone_03[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1027
+ actual_top += thickness_mudstone_03
1028
+ actual_bottom += thickness_sandstone_05
1029
+ #
1030
+ ## Create Sandstone 05
1031
+ container_sandstone_05 = {}
1032
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1033
+ for i in steps_rock:
1034
+ depth = round(i, 4)
1035
+ container_sandstone_05[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1036
+ actual_top += thickness_sandstone_05
1037
+ actual_bottom += thickness_sandstone_04
1038
+ #
1039
+ ## Create Sandstone 04
1040
+ container_sandstone_04 = {}
1041
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1042
+ for i in steps_rock:
1043
+ depth = round(i, 4)
1044
+ container_sandstone_04[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.2, 0.3])
1045
+ actual_top += thickness_sandstone_04
1046
+ actual_bottom += thickness_sandstone_03
1047
+ #
1048
+ ## Create Sandstone 03
1049
+ container_sandstone_03 = {}
1050
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1051
+ for i in steps_rock:
1052
+ depth = round(i, 4)
1053
+ container_sandstone_03[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1054
+ actual_top += thickness_sandstone_03
1055
+ actual_bottom += thickness_mudstone_02
1056
+ #
1057
+ ## Create Mudstone 02
1058
+ container_mudstone_02 = {}
1059
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1060
+ for i in steps_rock:
1061
+ depth = round(i, 4)
1062
+ container_mudstone_02[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1063
+ actual_top += thickness_mudstone_02
1064
+ actual_bottom += thickness_sandstone_02
1065
+ #
1066
+ ## Create Sandstone 02
1067
+ container_sandstone_02 = {}
1068
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1069
+ for i in steps_rock:
1070
+ depth = round(i, 4)
1071
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1072
+ actual_top += thickness_sandstone_02
1073
+ actual_bottom += thickness_mudstone_01
1074
+ #
1075
+ ## Create Mudstone 01
1076
+ container_mudstone_01 = {}
1077
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1078
+ for i in steps_rock:
1079
+ depth = round(i, 4)
1080
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1081
+ actual_top += thickness_mudstone_01
1082
+ actual_bottom += thickness_sandstone_01
1083
+ #
1084
+ ## Create Sandstone 01
1085
+ container_sandstone_01 = {}
1086
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1087
+ for i in steps_rock:
1088
+ depth = round(i, 4)
1089
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1090
+ #
1091
+ ## TEST
1092
+ # for key, value in reversed(container_mudstone_01.items()):
1093
+ # print(key, value)
1094
+ # for key, value in reversed(container_limestone.items()):
1095
+ # print(key, value)
1096
+ # for key, value in reversed(container_kupferschiefer.items()):
1097
+ # print(key, value)
1098
+ #
1099
+ return container_mudstone_04, container_sandstone_06, container_mudstone_03, container_sandstone_05, \
1100
+ container_sandstone_04, container_sandstone_03, container_mudstone_02, container_sandstone_02, \
1101
+ container_mudstone_01, container_sandstone_01
1102
+ #
1103
+ def create_volpriehausen_series(self, thickness_unit=100, top_unit=0):
1104
+ fraction_sandstone_03 = round(rd.uniform(0.13, 0.15), 4)
1105
+ fraction_mudstone_02 = round(rd.uniform(0.22, 0.24), 4)
1106
+ fraction_sandstone_02 = round(rd.uniform(0.13, 0.15), 4)
1107
+ fraction_mudstone_01 = round(rd.uniform(0.09, 0.11), 4)
1108
+ fraction_sandstone_01 = round(rd.uniform(0.28, 0.30), 4)
1109
+ #
1110
+ fraction_mudstone_03 = round(
1111
+ 1 - fraction_mudstone_01 - fraction_mudstone_02 - fraction_sandstone_01 - fraction_sandstone_02 -
1112
+ fraction_sandstone_03, 4)
1113
+ #
1114
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1115
+ thickness_mudstone_02 = round(thickness_unit*fraction_mudstone_02, 4)
1116
+ thickness_mudstone_03 = round(thickness_unit*fraction_mudstone_03, 4)
1117
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
1118
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
1119
+ thickness_sandstone_03 = round(thickness_unit*fraction_sandstone_03, 4)
1120
+ #
1121
+ actual_top = top_unit
1122
+ actual_bottom = top_unit + thickness_mudstone_03
1123
+ #
1124
+ thickness_list = [thickness_mudstone_03, thickness_sandstone_03, thickness_mudstone_02, thickness_sandstone_02,
1125
+ thickness_mudstone_01, thickness_sandstone_01]
1126
+ #
1127
+ ## Create Mudstone 03
1128
+ container_mudstone_03 = {}
1129
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1130
+ for i in steps_rock:
1131
+ depth = round(i, 4)
1132
+ container_mudstone_03[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1133
+ actual_top += thickness_mudstone_03
1134
+ actual_bottom += thickness_sandstone_03
1135
+ #
1136
+ ## Create Sandstone 03
1137
+ container_sandstone_03 = {}
1138
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1139
+ for i in steps_rock:
1140
+ depth = round(i, 4)
1141
+ container_sandstone_03[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1142
+ actual_top += thickness_sandstone_03
1143
+ actual_bottom += thickness_mudstone_02
1144
+ #
1145
+ ## Create Mudstone 02
1146
+ container_mudstone_02 = {}
1147
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1148
+ for i in steps_rock:
1149
+ depth = round(i, 4)
1150
+ container_mudstone_02[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1151
+ actual_top += thickness_mudstone_02
1152
+ actual_bottom += thickness_sandstone_02
1153
+ #
1154
+ ## Create Sandstone 02
1155
+ container_sandstone_02 = {}
1156
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1157
+ for i in steps_rock:
1158
+ depth = round(i, 4)
1159
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1160
+ actual_top += thickness_sandstone_02
1161
+ actual_bottom += thickness_mudstone_01
1162
+ #
1163
+ ## Create Mudstone 01
1164
+ container_mudstone_01 = {}
1165
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1166
+ for i in steps_rock:
1167
+ depth = round(i, 4)
1168
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1169
+ actual_top += thickness_mudstone_01
1170
+ actual_bottom += thickness_sandstone_01
1171
+ #
1172
+ ## Create Sandstone 01
1173
+ container_sandstone_01 = {}
1174
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1175
+ for i in steps_rock:
1176
+ depth = round(i, 4)
1177
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.25, 0.3])
1178
+ #
1179
+ ## TEST
1180
+ # for key, value in reversed(container_mudstone_01.items()):
1181
+ # print(key, value)
1182
+ # for key, value in reversed(container_limestone.items()):
1183
+ # print(key, value)
1184
+ # for key, value in reversed(container_kupferschiefer.items()):
1185
+ # print(key, value)
1186
+ #
1187
+ return container_mudstone_03, container_sandstone_03, container_mudstone_02, container_sandstone_02, \
1188
+ container_mudstone_01, container_sandstone_01
1189
+ #
1190
+ def create_detfurth_series(self, thickness_unit=100, top_unit=0):
1191
+ fraction_sandstone_03 = round(rd.uniform(0.16, 0.18), 4)
1192
+ fraction_mudstone_02 = round(rd.uniform(0.16, 0.18), 4)
1193
+ fraction_sandstone_02 = round(rd.uniform(0.16, 0.18), 4)
1194
+ fraction_mudstone_01 = round(rd.uniform(0.18, 0.20), 4)
1195
+ fraction_sandstone_01 = round(rd.uniform(0.16, 0.18), 4)
1196
+ #
1197
+ fraction_mudstone_03 = round(
1198
+ 1 - fraction_mudstone_01 - fraction_mudstone_02 - fraction_sandstone_01 - fraction_sandstone_02 -
1199
+ fraction_sandstone_03, 4)
1200
+ #
1201
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1202
+ thickness_mudstone_02 = round(thickness_unit*fraction_mudstone_02, 4)
1203
+ thickness_mudstone_03 = round(thickness_unit*fraction_mudstone_03, 4)
1204
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
1205
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
1206
+ thickness_sandstone_03 = round(thickness_unit*fraction_sandstone_03, 4)
1207
+ #
1208
+ actual_top = top_unit
1209
+ actual_bottom = top_unit + thickness_mudstone_03
1210
+ #
1211
+ thickness_list = [thickness_mudstone_03, thickness_sandstone_03, thickness_mudstone_02, thickness_sandstone_02,
1212
+ thickness_mudstone_01, thickness_sandstone_01]
1213
+ #
1214
+ ## Create Mudstone 03
1215
+ container_mudstone_03 = {}
1216
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1217
+ for i in steps_rock:
1218
+ depth = round(i, 4)
1219
+ container_mudstone_03[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1220
+ actual_top += thickness_mudstone_03
1221
+ actual_bottom += thickness_sandstone_03
1222
+ #
1223
+ ## Create Sandstone 03
1224
+ container_sandstone_03 = {}
1225
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1226
+ for i in steps_rock:
1227
+ depth = round(i, 4)
1228
+ container_sandstone_03[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1229
+ actual_top += thickness_sandstone_03
1230
+ actual_bottom += thickness_mudstone_02
1231
+ #
1232
+ ## Create Mudstone 02
1233
+ container_mudstone_02 = {}
1234
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1235
+ for i in steps_rock:
1236
+ depth = round(i, 4)
1237
+ container_mudstone_02[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1238
+ actual_top += thickness_mudstone_02
1239
+ actual_bottom += thickness_sandstone_02
1240
+ #
1241
+ ## Create Sandstone 02
1242
+ container_sandstone_02 = {}
1243
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1244
+ for i in steps_rock:
1245
+ depth = round(i, 4)
1246
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1247
+ actual_top += thickness_sandstone_02
1248
+ actual_bottom += thickness_mudstone_01
1249
+ #
1250
+ ## Create Mudstone 01
1251
+ container_mudstone_01 = {}
1252
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1253
+ for i in steps_rock:
1254
+ depth = round(i, 4)
1255
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1256
+ actual_top += thickness_mudstone_01
1257
+ actual_bottom += thickness_sandstone_01
1258
+ #
1259
+ ## Create Sandstone 01
1260
+ container_sandstone_01 = {}
1261
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1262
+ for i in steps_rock:
1263
+ depth = round(i, 4)
1264
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.25, 0.3])
1265
+ #
1266
+ ## TEST
1267
+ # for key, value in reversed(container_mudstone_01.items()):
1268
+ # print(key, value)
1269
+ # for key, value in reversed(container_limestone.items()):
1270
+ # print(key, value)
1271
+ # for key, value in reversed(container_kupferschiefer.items()):
1272
+ # print(key, value)
1273
+ #
1274
+ return container_mudstone_03, container_sandstone_03, container_mudstone_02, container_sandstone_02, \
1275
+ container_mudstone_01, container_sandstone_01
1276
+ #
1277
+ def create_hardegsen_series(self, thickness_unit=100, top_unit=0):
1278
+ fraction_mudstone_01 = round(rd.uniform(0.37, 0.39), 4)
1279
+ fraction_sandstone_01 = round(rd.uniform(0.30, 0.32), 4)
1280
+ #
1281
+ fraction_sandstone_02 = round(1 - fraction_mudstone_01 - fraction_sandstone_01, 4)
1282
+ #
1283
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1284
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
1285
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
1286
+ #
1287
+ actual_top = top_unit
1288
+ actual_bottom = top_unit + thickness_sandstone_02
1289
+ #
1290
+ thickness_list = [thickness_sandstone_02, thickness_mudstone_01, thickness_sandstone_01]
1291
+ #
1292
+ ## Create Sandstone 02
1293
+ container_sandstone_02 = {}
1294
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1295
+ for i in steps_rock:
1296
+ depth = round(i, 4)
1297
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1298
+ actual_top += thickness_sandstone_02
1299
+ actual_bottom += thickness_mudstone_01
1300
+ #
1301
+ ## Create Mudstone 01
1302
+ container_mudstone_01 = {}
1303
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1304
+ for i in steps_rock:
1305
+ depth = round(i, 4)
1306
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1307
+ actual_top += thickness_mudstone_01
1308
+ actual_bottom += thickness_sandstone_01
1309
+ #
1310
+ ## Create Sandstone 01
1311
+ container_sandstone_01 = {}
1312
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1313
+ for i in steps_rock:
1314
+ depth = round(i, 4)
1315
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.2, 0.3])
1316
+ #
1317
+ ## TEST
1318
+ # for key, value in reversed(container_mudstone_01.items()):
1319
+ # print(key, value)
1320
+ # for key, value in reversed(container_limestone.items()):
1321
+ # print(key, value)
1322
+ # for key, value in reversed(container_kupferschiefer.items()):
1323
+ # print(key, value)
1324
+ #
1325
+ return container_sandstone_02, container_mudstone_01, container_sandstone_01
1326
+ #
1327
+ def create_solling_series(self, thickness_unit=100, top_unit=0):
1328
+ fraction_mudstone_01 = round(rd.uniform(0.32, 0.34), 4)
1329
+ #
1330
+ fraction_sandstone_01 = round(1 - fraction_mudstone_01, 4)
1331
+ #
1332
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1333
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
1334
+ #
1335
+ actual_top = top_unit
1336
+ actual_bottom = top_unit + thickness_sandstone_01
1337
+ #
1338
+ thickness_list = [thickness_sandstone_01, thickness_mudstone_01]
1339
+ #
1340
+ ## Create Sandstone 01
1341
+ container_sandstone_01 = {}
1342
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1343
+ for i in steps_rock:
1344
+ depth = round(i, 4)
1345
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.25, 0.3])
1346
+ actual_top += thickness_sandstone_01
1347
+ actual_bottom += thickness_mudstone_01
1348
+ #
1349
+ ## Create Mudstone 01
1350
+ container_mudstone_01 = {}
1351
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1352
+ for i in steps_rock:
1353
+ depth = round(i, 4)
1354
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1355
+ #
1356
+ ## TEST
1357
+ # for key, value in reversed(container_mudstone_01.items()):
1358
+ # print(key, value)
1359
+ # for key, value in reversed(container_limestone.items()):
1360
+ # print(key, value)
1361
+ # for key, value in reversed(container_kupferschiefer.items()):
1362
+ # print(key, value)
1363
+ #
1364
+ return container_sandstone_01, container_mudstone_01
1365
+ #
1366
+ def create_salinarroet_series(self, thickness_unit=100, top_unit=0):
1367
+ fraction_rocksalt_02 = round(rd.uniform(0.15, 0.17), 4)
1368
+ fraction_anhydrite_02 = round(rd.uniform(0.09, 0.11), 4)
1369
+ fraction_rocksalt_01 = round(rd.uniform(0.35, 0.37), 4)
1370
+ fraction_anhydrite_01 = round(rd.uniform(0.15, 0.17), 4)
1371
+ #
1372
+ fraction_anhydrite_03 = round(1 - fraction_anhydrite_02 - fraction_anhydrite_01 - fraction_rocksalt_02 -
1373
+ fraction_rocksalt_01, 4)
1374
+ #
1375
+ thickness_anhydrite_01 = round(thickness_unit*fraction_anhydrite_01, 4)
1376
+ thickness_anhydrite_02 = round(thickness_unit*fraction_anhydrite_02, 4)
1377
+ thickness_anhydrite_03 = round(thickness_unit*fraction_anhydrite_03, 4)
1378
+ thickness_rocksalt_01 = round(thickness_unit*fraction_rocksalt_01, 4)
1379
+ thickness_rocksalt_02 = round(thickness_unit*fraction_rocksalt_02, 4)
1380
+ #
1381
+ actual_top = top_unit
1382
+ actual_bottom = top_unit + thickness_anhydrite_03
1383
+ #
1384
+ ## Create Anhydrite 03
1385
+ container_anhydrite_03 = {}
1386
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1387
+ for i in steps_rock:
1388
+ depth = round(i, 4)
1389
+ container_anhydrite_03[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1390
+ porosity=[0.05, 0.1])
1391
+ actual_top += thickness_anhydrite_03
1392
+ actual_bottom += thickness_rocksalt_02
1393
+ #
1394
+ ## Create Rock Salt 02
1395
+ container_rocksalt_02 = {}
1396
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1397
+ for i in steps_rock:
1398
+ depth = round(i, 4)
1399
+ container_rocksalt_02[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
1400
+ porosity=[0.0, 0.05])
1401
+ actual_top += thickness_rocksalt_02
1402
+ actual_bottom += thickness_anhydrite_02
1403
+ #
1404
+ ## Create Anhydrite 02
1405
+ container_anhydrite_02 = {}
1406
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1407
+ for i in steps_rock:
1408
+ depth = round(i, 4)
1409
+ container_anhydrite_02[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1410
+ porosity=[0.05, 0.1])
1411
+ actual_top += thickness_anhydrite_02
1412
+ actual_bottom += thickness_rocksalt_01
1413
+ #
1414
+ ## Create Rock Salt 01
1415
+ container_rocksalt_01 = {}
1416
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1417
+ for i in steps_rock:
1418
+ depth = round(i, 4)
1419
+ container_rocksalt_01[depth] = Evaporites(fluid="water", actualThickness=0).create_rocksalt(
1420
+ porosity=[0.0, 0.05])
1421
+ actual_top += thickness_rocksalt_01
1422
+ actual_bottom += thickness_anhydrite_01
1423
+ #
1424
+ ## Create Anhydrite 01
1425
+ container_anhydrite_01 = {}
1426
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1427
+ for i in steps_rock:
1428
+ depth = round(i, 4)
1429
+ container_anhydrite_01[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1430
+ porosity=[0.05, 0.1])
1431
+ #
1432
+ ## TEST
1433
+ # for key, value in reversed(container_mudstone_01.items()):
1434
+ # print(key, value)
1435
+ # for key, value in reversed(container_limestone.items()):
1436
+ # print(key, value)
1437
+ # for key, value in reversed(container_kupferschiefer.items()):
1438
+ # print(key, value)
1439
+ #
1440
+ return container_anhydrite_03, container_rocksalt_02, container_anhydrite_02, container_rocksalt_01, \
1441
+ container_anhydrite_01
1442
+ #
1443
+ def create_pelitroet_series(self, thickness_unit=100, top_unit=0):
1444
+ fraction_anhydrite_03 = round(rd.uniform(0.05, 0.07), 4)
1445
+ fraction_mudstone_05 = round(rd.uniform(0.07, 0.09), 4)
1446
+ fraction_anhydrite_02 = round(rd.uniform(0.05, 0.07), 4)
1447
+ fraction_mudstone_04 = round(rd.uniform(0.14, 0.16), 4)
1448
+ fraction_sandstone_02 = round(rd.uniform(0.11, 0.13), 4)
1449
+ fraction_mudstone_03 = round(rd.uniform(0.09, 0.11), 4)
1450
+ fraction_anhydrite_01 = round(rd.uniform(0.05, 0.07), 4)
1451
+ fraction_mudstone_02 = round(rd.uniform(0.09, 0.11), 4)
1452
+ fraction_sandstone_01 = round(rd.uniform(0.11, 0.13), 4)
1453
+ fraction_mudstone_01 = round(rd.uniform(0.07, 0.09), 4)
1454
+ #
1455
+ fraction_mudstone_06 = round(
1456
+ 1 - fraction_anhydrite_03 - fraction_anhydrite_02 - fraction_anhydrite_01 - fraction_mudstone_05 -
1457
+ fraction_mudstone_04 - fraction_mudstone_03 - fraction_mudstone_02 - fraction_mudstone_01 -
1458
+ fraction_sandstone_02 - fraction_sandstone_01, 4)
1459
+ #
1460
+ thickness_anhydrite_01 = round(thickness_unit*fraction_anhydrite_01, 4)
1461
+ thickness_anhydrite_02 = round(thickness_unit*fraction_anhydrite_02, 4)
1462
+ thickness_anhydrite_03 = round(thickness_unit*fraction_anhydrite_03, 4)
1463
+ thickness_sandstone_01 = round(thickness_unit*fraction_sandstone_01, 4)
1464
+ thickness_sandstone_02 = round(thickness_unit*fraction_sandstone_02, 4)
1465
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1466
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1467
+ thickness_mudstone_02 = round(thickness_unit*fraction_mudstone_02, 4)
1468
+ thickness_mudstone_03 = round(thickness_unit*fraction_mudstone_03, 4)
1469
+ thickness_mudstone_04 = round(thickness_unit*fraction_mudstone_04, 4)
1470
+ thickness_mudstone_05 = round(thickness_unit*fraction_mudstone_05, 4)
1471
+ thickness_mudstone_06 = round(thickness_unit*fraction_mudstone_06, 4)
1472
+ #
1473
+ actual_top = top_unit
1474
+ actual_bottom = top_unit + thickness_mudstone_06
1475
+ #
1476
+ ## Create Mudstone 06
1477
+ container_mudstone_06 = {}
1478
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1479
+ for i in steps_rock:
1480
+ depth = round(i, 4)
1481
+ container_mudstone_06[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1482
+ actual_top += thickness_mudstone_06
1483
+ actual_bottom += thickness_anhydrite_03
1484
+ #
1485
+ ## Create Anhydrite 03
1486
+ container_anhydrite_03 = {}
1487
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1488
+ for i in steps_rock:
1489
+ depth = round(i, 4)
1490
+ container_anhydrite_03[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1491
+ porosity=[0.05, 0.1])
1492
+ actual_top += thickness_anhydrite_03
1493
+ actual_bottom += thickness_mudstone_05
1494
+ #
1495
+ ## Create Mudstone 05
1496
+ container_mudstone_05 = {}
1497
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1498
+ for i in steps_rock:
1499
+ depth = round(i, 4)
1500
+ container_mudstone_05[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1501
+ actual_top += thickness_mudstone_05
1502
+ actual_bottom += thickness_anhydrite_02
1503
+ #
1504
+ ## Create Anhydrite 02
1505
+ container_anhydrite_02 = {}
1506
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1507
+ for i in steps_rock:
1508
+ depth = round(i, 4)
1509
+ container_anhydrite_02[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1510
+ porosity=[0.05, 0.1])
1511
+ actual_top += thickness_anhydrite_02
1512
+ actual_bottom += thickness_mudstone_04
1513
+ #
1514
+ ## Create Mudstone 04
1515
+ container_mudstone_04 = {}
1516
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1517
+ for i in steps_rock:
1518
+ depth = round(i, 4)
1519
+ container_mudstone_04[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1520
+ actual_top += thickness_mudstone_04
1521
+ actual_bottom += thickness_sandstone_02
1522
+ #
1523
+ ## Create Sandstone 02
1524
+ container_sandstone_02 = {}
1525
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1526
+ for i in steps_rock:
1527
+ depth = round(i, 4)
1528
+ container_sandstone_02[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1529
+ actual_top += thickness_sandstone_02
1530
+ actual_bottom += thickness_mudstone_03
1531
+ #
1532
+ ## Create Mudstone 03
1533
+ container_mudstone_03 = {}
1534
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1535
+ for i in steps_rock:
1536
+ depth = round(i, 4)
1537
+ container_mudstone_03[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1538
+ actual_top += thickness_mudstone_03
1539
+ actual_bottom += thickness_anhydrite_01
1540
+ #
1541
+ ## Create Anhydrite 01
1542
+ container_anhydrite_01 = {}
1543
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1544
+ for i in steps_rock:
1545
+ depth = round(i, 4)
1546
+ container_anhydrite_01[depth] = Evaporites(fluid="water", actualThickness=0).create_anhydrite_rock(
1547
+ porosity=[0.05, 0.1])
1548
+ actual_top += thickness_anhydrite_01
1549
+ actual_bottom += thickness_mudstone_02
1550
+ #
1551
+ ## Create Mudstone 02
1552
+ container_mudstone_02 = {}
1553
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1554
+ for i in steps_rock:
1555
+ depth = round(i, 4)
1556
+ container_mudstone_02[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1557
+ actual_top += thickness_mudstone_02
1558
+ actual_bottom += thickness_sandstone_01
1559
+ #
1560
+ ## Create Sandstone 01
1561
+ container_sandstone_01 = {}
1562
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1563
+ for i in steps_rock:
1564
+ depth = round(i, 4)
1565
+ container_sandstone_01[depth] = SiliciclasticRocks().create_sandstone(number=1, porosity=[0.1, 0.25])
1566
+ actual_top += thickness_sandstone_01
1567
+ actual_bottom += thickness_mudstone_01
1568
+ #
1569
+ ## Create Mudstone 01
1570
+ container_mudstone_01 = {}
1571
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1572
+ for i in steps_rock:
1573
+ depth = round(i, 4)
1574
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1575
+ #
1576
+ ## TEST
1577
+ # for key, value in reversed(container_mudstone_01.items()):
1578
+ # print(key, value)
1579
+ # for key, value in reversed(container_limestone.items()):
1580
+ # print(key, value)
1581
+ # for key, value in reversed(container_kupferschiefer.items()):
1582
+ # print(key, value)
1583
+ #
1584
+ return container_mudstone_06, container_anhydrite_03, container_mudstone_05, container_anhydrite_02, \
1585
+ container_mudstone_04, container_sandstone_02, container_mudstone_03, container_anhydrite_01, \
1586
+ container_mudstone_02, container_sandstone_01, container_mudstone_01
1587
+ #
1588
+ def create_myophorien_series(self, thickness_unit=100, top_unit=0):
1589
+ fraction_limestone_01 = round(rd.uniform(0.35, 0.37), 4)
1590
+ #
1591
+ fraction_mudstone_01 = round(1 - fraction_limestone_01, 4)
1592
+ #
1593
+ thickness_mudstone_01 = round(thickness_unit*fraction_mudstone_01, 4)
1594
+ thickness_limestone_01 = round(thickness_unit*fraction_limestone_01, 4)
1595
+ #
1596
+ actual_top = top_unit
1597
+ actual_bottom = top_unit + thickness_mudstone_01
1598
+ #
1599
+ ## Create Mudstone 01
1600
+ container_mudstone_01 = {}
1601
+ steps_rock = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1602
+ for i in steps_rock:
1603
+ depth = round(i, 4)
1604
+ container_mudstone_01[depth] = SiliciclasticRocks().create_mudstone_alt(number=1, porosity=[0.0, 0.1])
1605
+ actual_top += thickness_mudstone_01
1606
+ actual_bottom += thickness_limestone_01
1607
+ #
1608
+ ## Create Limestone 01
1609
+ container_limestone_01 = {}
1610
+ steps_unit = np.linspace(actual_bottom, actual_top, self.resolution, endpoint=False)[::-1]
1611
+ for i in steps_unit:
1612
+ depth = round(i, 4)
1613
+ container_limestone_01[depth] = CarbonateRocks(
1614
+ fluid="water", actualThickness=0).create_limestone(number=1, porosity=[0.2, 0.4])
1615
+ #
1616
+ ## TEST
1617
+ # for key, value in reversed(container_mudstone_01.items()):
1618
+ # print(key, value)
1619
+ # for key, value in reversed(container_limestone.items()):
1620
+ # print(key, value)
1621
+ # for key, value in reversed(container_kupferschiefer.items()):
1622
+ # print(key, value)
1623
+ #
1624
+ return container_mudstone_01, container_limestone_01
1625
+ #