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
gebpy/modules/core.py ADDED
@@ -0,0 +1,1805 @@
1
+ #!/usr/bin/env python
2
+ # -*-coding: utf-8 -*-
3
+
4
+ #-----------------------------------------------
5
+
6
+ # Name: core.py
7
+ # Author: Maximilian A. Beeskow
8
+ # Version: 1.0
9
+ # Date: 13.01.2021
10
+
11
+ #-----------------------------------------------
12
+
13
+ ## MODULES
14
+ import numpy as np
15
+ from scipy import constants
16
+ from numpy import round
17
+ import sys
18
+ from random import *
19
+ from modules import minerals
20
+ from modules.elements import elements
21
+ import matplotlib.pyplot as plt
22
+ from modules.geochemistry import elementanalysis
23
+ from modules import siliciclastics, carbonates, igneous, evaporites
24
+ from modules import fluids
25
+
26
+ ## CONSTANTS / PROPERTIES
27
+ pi = constants.pi
28
+ avogadro = constants.Avogadro
29
+
30
+ class sample:
31
+ #
32
+ def __init__(self, sequences, radius):
33
+ self.sequences = sequences
34
+ self.radius = radius
35
+ #
36
+ def createCore(self):
37
+ volume = []
38
+ for i in range(0, len(self.sequences)):
39
+ volume.append(pi*self.radius**2*self.sequences[i][1])
40
+ #
41
+ mass = []
42
+ for i in range(0, len(volume)):
43
+ mass.append(volume[i]*self.sequences[i][4]*1000)
44
+ #
45
+ data = []
46
+ for i in range(0, len(volume)):
47
+ data.append([self.sequences[i][0], volume[i], mass[i], self.sequences[i][4], self.sequences[i][9]])
48
+ #
49
+ # WRITING A CSV FILE
50
+ #
51
+ try:
52
+ SequencyStratigraphy = open("./outputs/SequenceStratigraphy.csv", "w")
53
+ except:
54
+ print("Error")
55
+ sys.exit(0)
56
+ SequencyStratigraphy.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("PE") + "\n")
57
+ for i in range(0, len(self.sequences)):
58
+ SequencyStratigraphy.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][11]) + "\n")
59
+ #
60
+ try:
61
+ RockProperties_Sandstone = open("./outputs/RockProperties_Sandstone.csv", "w")
62
+ except:
63
+ print("Error")
64
+ sys.exit(0)
65
+ RockProperties_Sandstone.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Qz") + "," + str("Cal") + "," + str("Dol") + "," + str("Kfs") + "," + str("Pl") + "," + str("Bt") + "," + str("Glt") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("w(Qz)") + "," + str("w(Cal)") + "," + str("w(Dol)") + "," + str("w(Kfs)") + "," + str("w(Pl)") + "," + str("w(Bt)") + "," + str("w(Glt)") + "\n")
66
+ for i in range(0, len(self.sequences)):
67
+ if self.sequences[i][0] == "sandstone":
68
+ VCore = pi*self.radius**2*self.sequences[i][1]
69
+ mCore = pi*self.radius**2*self.sequences[i][1]*self.sequences[i][4]*1000
70
+ RockProperties_Sandstone.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "\n")
71
+ #
72
+ try:
73
+ RockProperties_Limestone = open("./outputs/RockProperties_Limestone.csv", "w")
74
+ except:
75
+ print("Error")
76
+ sys.exit(0)
77
+ RockProperties_Limestone.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Cal") + "," + str("Dol") + "," + str("Sd") + "," + str("Qz") + "," + str("Kfs") + "," + str("Pl") + "," + str("Kln") + "," + str("Chl") + "," + str("Ilt") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Cal)") + "," + str("m(Dol)") + "," + str("m(Sd)") + "," + str("m(Qz)") + "," + str("m(Kfs)") + "," + str("m(Pl)") + "," + str("m(Kln)") + "," + str("m(Chl)") + "," + str("m(Ilt)") + "\n")
78
+ for i in range(0, len(self.sequences)):
79
+ if self.sequences[i][0] == "limestone":
80
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
81
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
82
+ RockProperties_Limestone.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.sequences[i][9][7][1]) + "," + str(self.sequences[i][9][8][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "," + str(mCore*self.sequences[i][9][7][1]) + "," + str(mCore*self.sequences[i][9][8][1]) + "\n")
83
+ #
84
+ try:
85
+ RockProperties_Dolomite = open("./outputs/RockProperties_Dolomite.csv", "w")
86
+ except:
87
+ print("Error")
88
+ sys.exit(0)
89
+ RockProperties_Dolomite.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Cal") + "," + str("Dol") + "," + str("Mgs") + "," + str("Qz") + "," + str("Kfs") + "," + str("Pl") + "," + str("Kln") + "," + str("Chl") + "," + str("Ilt") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Cal)") + "," + str("m(Dol)") + "," + str("m(Mgs)") + "," + str("m(Qz)") + "," + str("m(Kfs)") + "," + str("m(Pl)") + "," + str("m(Kln)") + "," + str("m(Chl)") + "," + str("m(Ilt)") + "\n")
90
+ for i in range(0, len(self.sequences)):
91
+ if self.sequences[i][0] == "dolomite":
92
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
93
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
94
+ RockProperties_Dolomite.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.sequences[i][9][7][1]) + "," + str(self.sequences[i][9][8][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "," + str(mCore*self.sequences[i][9][7][1]) + "," + str(mCore*self.sequences[i][9][8][1]) + "\n")
95
+ #
96
+ try:
97
+ RockProperties_Shale = open("./outputs/RockProperties_Shale.csv", "w")
98
+ except:
99
+ print("Error")
100
+ sys.exit(0)
101
+ RockProperties_Shale.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Qz") + "," + str("Kln") + "," + str("Chl") + "," + str("Ilt") + "," + str("Cal") + "," + str("Dol") + "," + str("Kfs") + "," + str("Pl") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Qz)") + "," + str("m(Kln)") + "," + str("m(Chl)") + "," + str("m(Ilt)") + "," + str("m(Cal)") + "," + str("m(Dol)") + "," + str("m(Kfs)") + "," + str("m(Pl)") + "\n")
102
+ for i in range(0, len(self.sequences)):
103
+ if self.sequences[i][0] == "shale":
104
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
105
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
106
+ RockProperties_Shale.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.sequences[i][9][7][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "," + str(mCore*self.sequences[i][9][7][1]) + "\n")
107
+ #
108
+ try:
109
+ RockProperties_Halite = open("./outputs/RockProperties_Halite.csv", "w")
110
+ except:
111
+ print("Error")
112
+ sys.exit(0)
113
+ RockProperties_Halite.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Hl") + "," + str("Anh") + "," + str("Gp") + "," + str("Syl") + "," + str("Ilt") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Hl)") + "," + str("m(Anh)") + "," + str("m(Gp)") + "," + str("m(Syl)") + "," + str("m(Ilt)") + "\n")
114
+ for i in range(0, len(self.sequences)):
115
+ if self.sequences[i][0] == "halite":
116
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
117
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
118
+ RockProperties_Halite.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "\n")
119
+ #
120
+ try:
121
+ RockProperties_Anhydrite = open("./outputs/RockProperties_Anhydrite.csv", "w")
122
+ except:
123
+ print("Error")
124
+ sys.exit(0)
125
+ RockProperties_Anhydrite.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Anh") + "," + str("Hl") + "," + str("Cal") + "," + str("Gn") + "," + str("Ccp") + "," + str("Mol") + "," + str("Py") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Anh)") + "," + str("m(Hl)") + "," + str("m(Cal)") + "," + str("m(Gn)") + "," + str("m(Ccp)") + "," + str("m(Mol)") + "," + str("m(Py)") + "\n")
126
+ for i in range(0, len(self.sequences)):
127
+ if self.sequences[i][0] == "anhydrite":
128
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
129
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
130
+ RockProperties_Anhydrite.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "\n")
131
+ #
132
+ try:
133
+ RockProperties_Granite = open("./outputs/RockProperties_Granite.csv", "w")
134
+ except:
135
+ print("Error")
136
+ sys.exit(0)
137
+ RockProperties_Granite.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Qz") + "," + str("Or") + "," + str("Ab") + "," + str("An") + "," + str("Bt") + "," + str("Ms") + "," + str("Py") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Qz)") + "," + str("m(Or)") + "," + str("m(Ab)") + "," + str("m(An)") + "," + str("m(Bt)") + "," + str("m(Ms)") + "," + str("m(Py)") + "\n")
138
+ for i in range(0, len(self.sequences)):
139
+ if self.sequences[i][0] == "granite":
140
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
141
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
142
+ RockProperties_Granite.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "\n")
143
+ #
144
+ try:
145
+ RockProperties_Basalt = open("./outputs/RockProperties_Basalt.csv", "w")
146
+ except:
147
+ print("Error")
148
+ sys.exit(0)
149
+ RockProperties_Basalt.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Pl") + "," + str("En") + "," + str("Fs") + "," + str("Bt") + "," + str("Act") + "," + str("Tr") + "," + str("Ol") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Pl)") + "," + str("m(En)") + "," + str("m(Fs)") + "," + str("m(Bt)") + "," + str("m(Act)") + "," + str("m(Tr)") + "," + str("m(Ol)") + "\n")
150
+ for i in range(0, len(self.sequences)):
151
+ if self.sequences[i][0] == "basalt":
152
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
153
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
154
+ RockProperties_Basalt.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.sequences[i][9][6][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "," + str(mCore*self.sequences[i][9][6][1]) + "\n")
155
+ #
156
+ try:
157
+ RockProperties_Ore_Fe = open("./outputs/RockProperties_Ore_Fe.csv", "w")
158
+ except:
159
+ print("Error")
160
+ sys.exit(0)
161
+ RockProperties_Ore_Fe.write(str("ROCK") + "," + str("THICKNESS") + "," + str("TOP") + "," + str("BOTTOM") + "," + str("RHOB") + "," + str("VP") + "," + str("VS") + "," + str("GR") + "," + str("PHIN") + "," + str("FLUID") + "," + str("POISSON") + "," + str("Mag") + "," + str("Hem") + "," + str("Qz") + "," + str("Cal") + "," + str("Kfs") + "," + str("Pl") + "," + str("R(Core)") + "," + str("V(Core)") + "," + str("m(Core)") + "," + str("m(Mag)") + "," + str("m(Hem)") + "," + str("m(Qz)") + "," + str("m(Cal)") + "," + str("m(Kfs)") + "," + str("m(Pl)") + "\n")
162
+ for i in range(0, len(self.sequences)):
163
+ if self.sequences[i][0] == "ore":
164
+ VCore = pi * self.radius ** 2 * self.sequences[i][1]
165
+ mCore = pi * self.radius ** 2 * self.sequences[i][1] * self.sequences[i][4] * 1000
166
+ RockProperties_Ore_Fe.write(str(self.sequences[i][0]) + "," + str(self.sequences[i][1]) + "," + str(self.sequences[i][2]) + "," + str(self.sequences[i][3]) + "," + str(self.sequences[i][4]) + "," + str(self.sequences[i][5][0]) + "," + str(self.sequences[i][5][1]) + "," + str(self.sequences[i][6]) + "," + str(self.sequences[i][7]) + "," + str(self.sequences[i][8]) + "," + str(self.sequences[i][10]) + "," + str(self.sequences[i][9][0][1]) + "," + str(self.sequences[i][9][1][1]) + "," + str(self.sequences[i][9][2][1]) + "," + str(self.sequences[i][9][3][1]) + "," + str(self.sequences[i][9][4][1]) + "," + str(self.sequences[i][9][5][1]) + "," + str(self.radius) + "," + str(VCore) + "," + str(mCore) + "," + str(mCore*self.sequences[i][9][0][1]) + "," + str(mCore*self.sequences[i][9][1][1]) + "," + str(mCore*self.sequences[i][9][2][1]) + "," + str(mCore*self.sequences[i][9][3][1]) + "," + str(mCore*self.sequences[i][9][4][1]) + "," + str(mCore*self.sequences[i][9][5][1]) + "\n")
167
+ #
168
+ return data
169
+ #
170
+ class geochemistry:
171
+ #
172
+ def __init__(self, input, sequences):
173
+ self.input = input
174
+ self.sequences = sequences
175
+ #
176
+ def calculateConcentration(self):
177
+ # [symbol, atomic number, atomic mass, molar volume, density, bulk modulus, shear modulus, young's modulus, vP, vS]
178
+ chemH = elements.H(self)
179
+ chemO = elements.O(self)
180
+ chemSi = elements.Si(self)
181
+ chemCa = elements.Ca(self)
182
+ chemC = elements.C(self)
183
+ chemMg = elements.Mg(self)
184
+ chemK = elements.K(self)
185
+ chemAl = elements.Al(self)
186
+ chemMn = elements.Mn(self)
187
+ chemFe = elements.Fe(self)
188
+ chemNa = elements.Na(self)
189
+ chemCl = elements.Cl(self)
190
+ chemS = elements.S(self)
191
+ chemF = elements.F(self)
192
+ chemPb = elements.Pb(self)
193
+ chemMo = elements.Mo(self)
194
+ chemCu = elements.Cu(self)
195
+ # [molar mass, density, bulk modulus, shear modulus, vP, vS, GR]
196
+ # Oxides
197
+ chemQuartz = minerals.oxides.quartz("")
198
+ chem_chromite = minerals.oxides.chromite("")
199
+ chem_spinel = minerals.oxides.spinel("")
200
+ chem_magnetite = minerals.oxides.magnetite("")
201
+ chem_hematite = minerals.oxides.hematite("")
202
+ chem_boehmite = minerals.oxides.boehmite("")
203
+ chem_diaspore = minerals.oxides.diaspore("")
204
+ chem_gibbsite = minerals.oxides.gibbsite("")
205
+ chem_uraninite = minerals.oxides.uraninite("")
206
+ chem_cuprite = minerals.oxides.cuprite("")
207
+ # Carbonates
208
+ chemDolomite = minerals.carbonates.dolomite("")
209
+ chemCalcite = minerals.carbonates.calcite("")
210
+ chemSiderite = minerals.carbonates.siderite("")
211
+ chemMagnesite = minerals.carbonates.magnesite("")
212
+ chem_ankerite = minerals.carbonates.ankerite("")
213
+ chem_malachite = minerals.carbonates.malachite("")
214
+ chem_aragonite = minerals.carbonates.aragonite("")
215
+ # Tectosilicates
216
+ chemOrthoclase = minerals.tectosilicates.orthoclase("")
217
+ chemAnorthite = minerals.tectosilicates.anorthite("")
218
+ chemAlbite = minerals.tectosilicates.albite("")
219
+ chemAlkalifeldspar = minerals.feldspars.alkalifeldspar(self, "Alkalifeldspar")
220
+ chemPlagioclase = minerals.feldspars.plagioclase(self, "Plagioclase")
221
+ chem_alkalifeldspar_granite = minerals.feldspars.alkalifeldspar(self, "K")
222
+ chem_plagioclase_granite = minerals.feldspars.plagioclase(self, "Na")
223
+ chem_scapolite = minerals.tectosilicates.scapolite(self, "Scapolite")
224
+ # Inosilicates
225
+ chem_actinolite = minerals.inosilicates.actinolite("")
226
+ chem_tremolite = minerals.inosilicates.tremolite("")
227
+ chem_enstatite = minerals.inosilicates.enstatite("")
228
+ chem_ferrosilite = minerals.inosilicates.ferrosilite("")
229
+ chem_augite = minerals.inosilicates.augite("")
230
+ chem_diopside = minerals.inosilicates.diopside("")
231
+ chem_aegirine = minerals.inosilicates.aegirine("")
232
+ chem_hedenbergite = minerals.inosilicates.hedenbergite("")
233
+ # Phyllosilicates
234
+ chemBiotite = minerals.phyllosilicates.biotite("")
235
+ chemGlauconite = minerals.phyllosilicates.glauconite("")
236
+ chemChlorite = minerals.phyllosilicates.chamosite("")
237
+ chemIllite = minerals.phyllosilicates.illite("")
238
+ chemMuscovite = minerals.phyllosilicates.muscovite("")
239
+ chemKaolinite = minerals.phyllosilicates.kaolinite("")
240
+ chem_biotite = minerals.Biotites.biotite_group(self, "Biotite")
241
+ chem_clinochlore = minerals.phyllosilicates.clinochlore("")
242
+ chem_montmorillonite = minerals.phyllosilicates.montmorillonite("")
243
+ # Nesosilicates
244
+ chem_olivine = minerals.nesosilicates.olivine(self, "Olivine")
245
+ chem_garnet_pyralspite = minerals.nesosilicates.garnet_pyralspite(self)
246
+ chem_garnet_ugrandite = minerals.nesosilicates.garnet_ugrandite(self)
247
+ # Halides
248
+ chemHalite = minerals.halides.halite("")
249
+ chem_fluorite = minerals.halides.fluorite("")
250
+ chemSylvite = minerals.halides.sylvite("")
251
+ chem_carobbiite = minerals.halides.carobbiite("")
252
+ # Sulfates
253
+ chemAnhydrite = minerals.sulfates.anhydrite("")
254
+ chemGypsum = minerals.sulfates.gypsum("")
255
+ chem_scheelite = minerals.sulfates.scheelite("")
256
+ chem_barite = minerals.sulfates.barite("")
257
+ # Sulfides
258
+ chemPyrite = minerals.sulfides.pyrite("")
259
+ chem_bornite = minerals.sulfides.bornite("")
260
+ chemGalena = minerals.sulfides.galena("")
261
+ chemChalcopyrite = minerals.sulfides.chalcopyrite("")
262
+ chemMolybdenite = minerals.sulfides.molybdenite("")
263
+ chem_stibnite = minerals.sulfides.stibnite("")
264
+ chem_arsenopyrite = minerals.sulfides.arsenopyrite("")
265
+ chem_acanthite = minerals.sulfides.acanthite("")
266
+ chem_argentite = minerals.sulfides.argentite("")
267
+ chem_alabandite = minerals.sulfides.alabandite("")
268
+ chem_berthierite = minerals.sulfides.berthierite("")
269
+ chem_pyrrhotite = minerals.sulfides.pyrrhotite("")
270
+ chem_cobaltite = minerals.sulfides.cobaltite("")
271
+ chem_carrollite = minerals.sulfides.carrollite("")
272
+ chem_chalcocite = minerals.sulfides.chalcocite("")
273
+ chem_digenite = minerals.sulfides.digenite("")
274
+ # Antimonides
275
+ chem_allargentum = minerals.antimonides.allargentum("")
276
+ chem_dyscrasite = minerals.antimonides.dyscrasite("")
277
+ # Arsenides
278
+ # Tourmalines
279
+ chem_schorl = minerals.Tourmalines.schorl("")
280
+ chem_dravite = minerals.Tourmalines.dravite("")
281
+ chem_elbaite = minerals.Tourmalines.elbaite("")
282
+ chem_liddicoatite = minerals.Tourmalines.liddicoatite("")
283
+ # Natives
284
+ chem_arsenic = minerals.natives.arsenic("")
285
+ chem_bismuth = minerals.natives.bismuth("")
286
+ # Coltans
287
+ chem_columbite = minerals.Coltans.columbite("")
288
+ chem_tantalite = minerals.Coltans.tantalite("")
289
+ chem_coltan = minerals.Coltans.coltan("")
290
+
291
+ #print(chemCalcite)
292
+ #print(chem_aragonite)
293
+
294
+ # print("Evaporites")
295
+ # data = evaporites.Evaporites("water", 2500)
296
+ # data_rocksalt_01 = data.create_simple_rocksalt()
297
+ # print(data_rocksalt_01)
298
+ # data_anhydrite_01 = data.create_simple_anhydrite()
299
+ # print(data_anhydrite_01)
300
+
301
+ # print("Soils")
302
+ # data = siliciclastics.Soil()
303
+ # data_soil_01 = data.create_simple_soil()
304
+ # print(data_soil_01)
305
+ # data_sand_01 = data.create_simple_sand()
306
+ # print(data_sand_01)
307
+
308
+ # print("Igneous rocks: Plutonics")
309
+ # data = igneous.Plutonic("water", 4000)
310
+ # data_granite_01 = data.create_simple_granite()
311
+ # print(data_granite_01)
312
+ # data_syenite_01 = data.create_simple_syenite()
313
+ # print(data_syenite_01)
314
+ # data_monzonite_01 = data.create_simple_monzonite()
315
+ # print(data_monzonite_01)
316
+ # data_gabbro_01 = data.create_simple_gabbro()
317
+ # print(data_gabbro_01)
318
+ # data_diorite_01 = data.create_simple_diorite()
319
+ # print(data_diorite_01)
320
+ # data_granodiorite_01 = data.create_simple_granodiorite()
321
+ # print(data_granodiorite_01)
322
+ # data_tonalite_01 = data.create_simple_tonalite()
323
+ # print(data_tonalite_01)
324
+ # data_quartzrich_granitoid_01 = data.create_simple_quartzrich_granitoid()
325
+ # print(data_quartzrich_granitoid_01)
326
+ # data_quartzolite_01 = data.create_simple_quartzolite()
327
+ # print(data_quartzolite_01)
328
+
329
+ # print("Igneous rocks: Volcanics")
330
+ # data = igneous.Volcanic("water", 4000)
331
+ # data_basalt_01 = data.create_simple_basalt()
332
+ # print(data_basalt_01)
333
+ # data_andesite_01 = data.create_simple_andesite()
334
+ # print(data_andesite_01)
335
+ # data_latite_01 = data.create_simple_latite()
336
+ # print(data_latite_01)
337
+ # data_trachyte_01 = data.create_simple_trachyte()
338
+ # print(data_trachyte_01)
339
+ # data_rhyolite_01 = data.create_simple_rhyolite()
340
+ # print(data_rhyolite_01)
341
+ # data_dacite_01 = data.create_simple_dacite()
342
+ # print(data_dacite_01)
343
+
344
+ # data = igneous.Plutonic("water", 4000)
345
+ # data_granite_01 = data.create_simple_granite()
346
+ # print(data_granite_01)
347
+ # data_granite_01a = data.create_simple_granite(amounts=data_granite_01[8])
348
+ # print(data_granite_01a)
349
+ # data_granite_01b = data.create_simple_granite(amounts=data_granite_01a[8])
350
+ # print(data_granite_01b)
351
+ # data_granite_01c = data.create_simple_granite(amounts=data_granite_01b[8])
352
+ # print(data_granite_01c)
353
+ # data_granite_01d = data.create_simple_granite(amounts=data_granite_01c[8])
354
+ # print(data_granite_01d)
355
+ #
356
+ # data = siliciclastics.sandstone("water", 100)
357
+ # data_sandstone1 = data.create_simple_sandstone()
358
+ # print(data_sandstone1)
359
+ # data_sandstone1a = data.create_simple_sandstone(amounts=data_sandstone1[8])
360
+ # print(data_sandstone1a)
361
+ # data_sandstone1b = data.create_simple_sandstone(amounts=data_sandstone1a[8])
362
+ # print(data_sandstone1b)
363
+ # data_sandstone1c = data.create_simple_sandstone(amounts=data_sandstone1b[8])
364
+ # print(data_sandstone1c)
365
+ # data_sandstone1d = data.create_simple_sandstone(amounts=data_sandstone1c[8])
366
+ # print(data_sandstone1d)
367
+ # data_sandstone2 = data.create_simple_sandstone(w_Fe=0.1)
368
+ # data_sandstone3 = data.create_simple_sandstone(w_Fe=0.2)
369
+ # data_sandstone4 = data.create_simple_sandstone(w_Fe=0.3)
370
+ # data_sandstone5 = data.create_simple_sandstone(w_Fe=0.4)
371
+ # data_sandstone6 = data.create_simple_sandstone(w_Fe=0.5)
372
+ # print(data_sandstone1)
373
+ # print(data_sandstone2)
374
+ # print(data_sandstone3)
375
+ # print(data_sandstone4)
376
+ # print(data_sandstone5)
377
+ # print(data_sandstone6)
378
+ #
379
+ #data = siliciclastics.shale()
380
+ #data_shale1 = data.create_simple_shale()
381
+ #print(data_shale1)
382
+ #data_shale1a = data.create_simple_shale(amounts=data_shale1[8])
383
+ #print(data_shale1a)
384
+ #data_shale1b = data.create_simple_shale(amounts=data_shale1a[8])
385
+ #print(data_shale1b)
386
+ #data_shale1c = data.create_simple_shale(amounts=data_shale1b[8])
387
+ #print(data_shale1c)
388
+ #data_shale1d = data.create_simple_shale(amounts=data_shale1c[8])
389
+ #print(data_shale1d)
390
+ # data_shale2 = data.create_simple_shale()
391
+ # data_shale3 = data.create_simple_shale()
392
+ # data_shale4 = data.create_simple_shale(w_C=0.05)
393
+ # print(data_shale1)
394
+ # print(data_shale2)
395
+ # print(data_shale3)
396
+ # print(data_shale4)
397
+ #
398
+ # data = carbonates.limestone("water", 100)
399
+ # data_limestone1 = data.create_simple_limestone()
400
+ # print(data_limestone1)
401
+ # data_limestone1a = data.create_simple_limestone(amounts=data_limestone1[8])
402
+ # print(data_limestone1a)
403
+ # data_limestone1b = data.create_simple_limestone(amounts=data_limestone1a[8])
404
+ # print(data_limestone1b)
405
+ # data_limestone1c = data.create_simple_limestone(amounts=data_limestone1b[8])
406
+ # print(data_limestone1c)
407
+ # data_limestone1d = data.create_simple_limestone(amounts=data_limestone1c[8])
408
+ # print(data_limestone1d)
409
+ #data_limestone2 = data.create_simple_limestone(w_K=0.01)
410
+ #print(data_limestone2)
411
+ #data_limestone3 = data.create_simple_limestone(w_Mg=0.05)
412
+ #data_limestone4 = data.create_simple_limestone(w_K=0.05)
413
+ #data_limestone5 = data.create_simple_limestone(w_Ca=0.3)
414
+ #data_limestone6 = data.create_simple_limestone(w_Fe=0.05)
415
+ #print(data_limestone3)
416
+ #print(data_limestone4)
417
+ #print(data_limestone5)
418
+ #print(data_limestone6)
419
+ #
420
+ # data = carbonates.dolomite("water", 100)
421
+ # data_dolomite_01 = data.create_simple_dolomite()
422
+ # print(data_dolomite_01)
423
+ # data_dolomite_01a = data.create_simple_dolomite(amounts=data_dolomite_01[8])
424
+ # print(data_dolomite_01a)
425
+ # data_dolomite_01b = data.create_simple_dolomite(amounts=data_dolomite_01a[8])
426
+ # print(data_dolomite_01b)
427
+ # data_dolomite_01c = data.create_simple_dolomite(amounts=data_dolomite_01b[8])
428
+ # print(data_dolomite_01c)
429
+ # data_dolomite_01d = data.create_simple_dolomite(amounts=data_dolomite_01c[8])
430
+ # print(data_dolomite_01d)
431
+ #data_dolomite_02 = data.create_simple_dolomite(w_Mg=0.1)
432
+ #print(data_dolomite_02)
433
+ #data_dolomite_03 = data.create_simple_dolomite(w_Ca=0.15)
434
+ #print(data_dolomite_03)
435
+ #data_dolomite_04 = data.create_simple_dolomite(w_Fe=0.025)
436
+ #print(data_dolomite_04)
437
+ #
438
+ #data = fluids.Hydrocarbons()
439
+ #data_oil_01 = data.oil()
440
+ #print(data_oil_01)
441
+ #data_gas_01 = data.natural_gas()
442
+ #print(data_gas_01)
443
+ #
444
+ #data = fluids.Water()
445
+ #data_water_01 = data.water()
446
+ #print(data_water_01)
447
+ #
448
+ mineralsSandstone = [chemQuartz, chemCalcite, chemDolomite, chemAlkalifeldspar, chemPlagioclase, chemBiotite, chemGlauconite]
449
+ mineralsShale = [chemQuartz, chemKaolinite, chemChlorite, chemIllite, chemCalcite, chemDolomite, chemAlkalifeldspar, chemPlagioclase]
450
+ mineralsLimestone = [chemCalcite, chemDolomite, chemSiderite, chemQuartz, chemAlkalifeldspar, chemPlagioclase, chemKaolinite, chemChlorite, chemIllite]
451
+ mineralsDolomite = [chemCalcite, chemDolomite, chemMagnesite, chemQuartz, chemAlkalifeldspar, chemPlagioclase, chemKaolinite, chemChlorite, chemIllite]
452
+ mineralsGranite = [chemQuartz, chem_alkalifeldspar_granite, chem_plagioclase_granite, chemBiotite, chemMuscovite, chem_actinolite, chem_tremolite]
453
+ mineralsHalite = [chemHalite, chemAnhydrite, chemGypsum, chemSylvite, chemIllite]
454
+ mineralsAnhydrite = [chemAnhydrite, chemHalite, chemCalcite, chemGalena, chemChalcopyrite, chemMolybdenite, chemPyrite]
455
+ minerals_ore_Fe = [chem_magnetite, chem_hematite, chemQuartz, chemCalcite, chemAlkalifeldspar, chemPlagioclase]
456
+ minerals_basalt = [chemPlagioclase, chem_enstatite, chem_ferrosilite, chem_biotite, chem_actinolite, chem_tremolite, chem_olivine]
457
+ #
458
+ # input = core --> createCore
459
+ lithologies = []
460
+ mineralogy = []
461
+ massMinerals = []
462
+ for i in range(2, len(self.input)):
463
+ massMinerals.append([self.input[i][0], self.input[i][2]])
464
+ if self.input[i][0] not in lithologies:
465
+ lithologies.append(self.input[i][0])
466
+ for i in range(0, len(massMinerals)):
467
+ if massMinerals[i][0] == "sandstone":
468
+ for j in range(0, len(mineralsSandstone)):
469
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
470
+ if self.input[i+2][4][j][0] not in mineralogy:
471
+ mineralogy.append(self.input[i+2][4][j][0])
472
+ elif massMinerals[i][0] == "shale":
473
+ for j in range(0, len(mineralsShale)):
474
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
475
+ if self.input[i+2][4][j][0] not in mineralogy:
476
+ mineralogy.append(self.input[i+2][4][j][0])
477
+ elif massMinerals[i][0] == "limestone":
478
+ for j in range(0, len(mineralsLimestone)):
479
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
480
+ if self.input[i+2][4][j][0] not in mineralogy:
481
+ mineralogy.append(self.input[i+2][4][j][0])
482
+ elif massMinerals[i][0] == "dolomite":
483
+ for j in range(0, len(mineralsDolomite)):
484
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
485
+ if self.input[i+2][4][j][0] not in mineralogy:
486
+ mineralogy.append(self.input[i+2][4][j][0])
487
+ elif massMinerals[i][0] == "granite":
488
+ for j in range(0, len(mineralsGranite)):
489
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
490
+ if self.input[i+2][4][j][0] not in mineralogy:
491
+ mineralogy.append(self.input[i+2][4][j][0])
492
+ elif massMinerals[i][0] == "halite":
493
+ for j in range(0, len(mineralsHalite)):
494
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
495
+ if self.input[i+2][4][j][0] not in mineralogy:
496
+ mineralogy.append(self.input[i+2][4][j][0])
497
+ elif massMinerals[i][0] == "anhydrite":
498
+ for j in range(0, len(mineralsAnhydrite)):
499
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
500
+ if self.input[i+2][4][j][0] not in mineralogy:
501
+ mineralogy.append(self.input[i+2][4][j][0])
502
+ elif massMinerals[i][0] == "ore":
503
+ for j in range(0, len(minerals_ore_Fe)):
504
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
505
+ if self.input[i+2][4][j][0] not in mineralogy:
506
+ mineralogy.append(self.input[i+2][4][j][0])
507
+ elif massMinerals[i][0] == "basalt":
508
+ for j in range(0, len(minerals_basalt)):
509
+ massMinerals[i].extend([[self.input[i+2][4][j][0], self.input[i+2][4][j][1]*self.input[i+2][2]]])
510
+ if self.input[i+2][4][j][0] not in mineralogy:
511
+ mineralogy.append(self.input[i+2][4][j][0])
512
+ #for i in range(0, len(massMinerals)):
513
+ # if massMinerals[i][0] == "sandstone":
514
+ # print(massMinerals[i])
515
+ lithologies = sorted(lithologies, key=str.lower)
516
+ #print(lithologies)
517
+ mineralogy = sorted(mineralogy, key=str.lower)
518
+ #print(mineralogy)
519
+ #
520
+ n = []
521
+ for i in range(0, len(massMinerals)):
522
+ n.append([massMinerals[i][0]])
523
+ for i in range(0, len(n)):
524
+ if n[i][0] == "sandstone":
525
+ for j in range(0, len(mineralsSandstone)):
526
+ if mineralsSandstone[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
527
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsSandstone[j][1])]])
528
+ elif mineralsSandstone[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
529
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsSandstone[j][1][0]), mineralsSandstone[j][1][1]]])
530
+ else:
531
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsSandstone[j][0])]])
532
+ elif n[i][0] == "shale":
533
+ for j in range(0, len(mineralsShale)):
534
+ if mineralsShale[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
535
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsShale[j][1])]])
536
+ elif mineralsShale[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
537
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsShale[j][1][0]), mineralsShale[j][1][1]]])
538
+ else:
539
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsShale[j][0])]])
540
+ elif n[i][0] == "limestone":
541
+ for j in range(0, len(mineralsLimestone)):
542
+ if mineralsLimestone[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
543
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsLimestone[j][1])]])
544
+ elif mineralsLimestone[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
545
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsLimestone[j][1][0]), mineralsLimestone[j][1][1]]])
546
+ else:
547
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsLimestone[j][0])]])
548
+ elif n[i][0] == "dolomite":
549
+ for j in range(0, len(mineralsDolomite)):
550
+ if mineralsDolomite[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
551
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsDolomite[j][1])]])
552
+ elif mineralsDolomite[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
553
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsDolomite[j][1][0]), mineralsDolomite[j][1][1]]])
554
+ else:
555
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsDolomite[j][0])]])
556
+ elif n[i][0] == "granite":
557
+ for j in range(0, len(mineralsGranite)):
558
+ if mineralsGranite[j][0] in ["Qz", "Ms", "Tr"]:
559
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsGranite[j][1])]])
560
+ elif mineralsGranite[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
561
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsGranite[j][1][0]), mineralsGranite[j][1][1]]])
562
+ else:
563
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsGranite[j][0])]])
564
+ elif n[i][0] == "halite":
565
+ for j in range(0, len(mineralsHalite)):
566
+ if mineralsHalite[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
567
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsHalite[j][1])]])
568
+ elif mineralsHalite[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
569
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsHalite[j][1][0]), mineralsHalite[j][1][1]]])
570
+ else:
571
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsHalite[j][0])]])
572
+ elif n[i][0] == "anhydrite":
573
+ for j in range(0, len(mineralsAnhydrite)):
574
+ if mineralsAnhydrite[j][0] in ["Cal", "Dol", "Qz", "Or", "Hl", "Kln", "Bt", "Glt", "Chl", "Ilt", "Sd", "Mgs", "Anh", "Gp", "Hl", "Tr", "Gn", "Py", "Ccp", "Mol", "Syl"]:
575
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsAnhydrite[j][1])]])
576
+ elif mineralsAnhydrite[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
577
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsAnhydrite[j][1][0]), mineralsAnhydrite[j][1][1]]])
578
+ else:
579
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*mineralsAnhydrite[j][0])]])
580
+ elif n[i][0] == "ore":
581
+ for j in range(0, len(minerals_ore_Fe)):
582
+ if minerals_ore_Fe[j][0] in ["Mag", "Hem", "Qz", "Cal"]:
583
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_ore_Fe[j][1])]])
584
+ elif minerals_ore_Fe[j][0] in ["Kfs", "Afs", "Pl"]:
585
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_ore_Fe[j][1][0]), minerals_ore_Fe[j][1][1]]])
586
+ else:
587
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_ore_Fe[j][0])]])
588
+ elif n[i][0] == "basalt":
589
+ for j in range(0, len(minerals_basalt)):
590
+ if minerals_basalt[j][0] in ["En", "Fs", "Tr"]:
591
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_basalt[j][1])]])
592
+ elif minerals_basalt[j][0] in ["Kfs", "Afs", "Pl", "Act"]:
593
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_basalt[j][1][0]), minerals_basalt[j][1][1]]])
594
+ elif minerals_basalt[j][0] in ["Bt", "Ol"]:
595
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_basalt[j][1][0]), minerals_basalt[j][1][1], minerals_basalt[j][1][2], minerals_basalt[j][1][3]]])
596
+ else:
597
+ n[i].extend([[massMinerals[i][j+2][0], massMinerals[i][j+2][1]/(0.001*minerals_basalt[j][0])]])
598
+ #
599
+ data = elementanalysis(n, massMinerals)
600
+ if "Qz" in mineralogy:
601
+ dataQz = data.analyzeQuartz()
602
+ if "Cal" in mineralogy:
603
+ dataCal = data.analyzeCalcite()
604
+ if "Dol" in mineralogy:
605
+ dataDol = data.analyzeDolomite()
606
+ if "Bt" in mineralogy:
607
+ data_Bt = data.analyze_biotite(self.sequences)
608
+ if "Ilt" in mineralogy:
609
+ dataIlt = data.analyzeIllite()
610
+ if "Chl" in mineralogy:
611
+ dataChl = data.analyzeChlorite()
612
+ if "Glt" in mineralogy:
613
+ dataGlt = data.analyzeGlauconite()
614
+ if "Ms" in mineralogy:
615
+ dataMs = data.analyzeMuscovite()
616
+ if "Py" in mineralogy:
617
+ dataPy = data.analyzePyrite()
618
+ if "Hl" in mineralogy:
619
+ dataHl = data.analyzeHalite()
620
+ if "Anh" in mineralogy:
621
+ dataAnh = data.analyzeAnhydrite()
622
+ if "Gp" in mineralogy:
623
+ dataGp = data.analyzeGypsum()
624
+ if "Syl" in mineralogy:
625
+ dataSyl = data.analyzeSylvite()
626
+ if "Gn" in mineralogy:
627
+ dataGn = data.analyzeGalena()
628
+ if "Ccp" in mineralogy:
629
+ dataCcp = data.analyzeChalcopyrite()
630
+ if "Mol" in mineralogy:
631
+ dataMol = data.analyzeMolybdenite()
632
+ if "Kln" in mineralogy:
633
+ dataKln = data.analyzeKaolinite()
634
+ if "Afs" in mineralogy or "Kfs" in mineralogy:
635
+ dataKfs = data.analyzeAlkalifeldspar(self.sequences)
636
+ if "Pl" in mineralogy:
637
+ dataPl = data.analyzePlagioclase(self.sequences)
638
+ if "Sd" in mineralogy:
639
+ dataSd = data.analyzeSiderite()
640
+ if "Mgs" in mineralogy:
641
+ dataMgs = data.analyzeMagnesite()
642
+ if "Act" in mineralogy:
643
+ dataAct = data.analyzeActinolite(self.sequences)
644
+ if "Tr" in mineralogy:
645
+ dataTr = data.analyzeTremolite()
646
+ if "Mag" in mineralogy:
647
+ data_Mag = data.analyzeMagnetite()
648
+ if "Hem" in mineralogy:
649
+ data_Hem = data.analyzeHematite()
650
+ if "En" in mineralogy:
651
+ data_En = data.analyze_enstatite()
652
+ if "Fs" in mineralogy:
653
+ data_Fs = data.analyze_ferrosilite()
654
+ if "Ol" in mineralogy:
655
+ data_Ol = data.analyze_olivine(self.sequences)
656
+ #
657
+ sandstone = []
658
+ limestone = []
659
+ dolomite = []
660
+ shale = []
661
+ granite = []
662
+ halite = []
663
+ anhydrite = []
664
+ ore_Fe = []
665
+ basalt = []
666
+ for i in range(0, len(n)):
667
+ if n[i][0] == "sandstone":
668
+ sandstone.append([])
669
+ elif n[i][0] == "shale":
670
+ shale.append([])
671
+ elif n[i][0] == "limestone":
672
+ limestone.append([])
673
+ elif n[i][0] == "dolomite":
674
+ dolomite.append([])
675
+ elif n[i][0] == "granite":
676
+ granite.append([])
677
+ elif n[i][0] == "halite":
678
+ halite.append([])
679
+ elif n[i][0] == "anhydrite":
680
+ anhydrite.append([])
681
+ elif n[i][0] == "ore":
682
+ ore_Fe.append([])
683
+ elif n[i][0] == "basalt":
684
+ basalt.append([])
685
+ #
686
+ results = []
687
+ #
688
+ if "sandstone" in lithologies:
689
+ ## SANDSTONE
690
+ #
691
+ QzSandstone = []
692
+ CalSandstone = []
693
+ DolSandstone = []
694
+ KfsSandstone = []
695
+ PlSandstone = []
696
+ BtSandstone = []
697
+ GltSandstone = []
698
+ for i in range(0, len(dataQz)):
699
+ if dataQz[i][0] == "sandstone":
700
+ QzSandstone.append(dataQz[i][1])
701
+ for i in range(0, len(dataCal)):
702
+ if dataCal[i][0] == "sandstone":
703
+ CalSandstone.append(dataCal[i][1])
704
+ for i in range(0, len(dataDol)):
705
+ if dataDol[i][0] == "sandstone":
706
+ DolSandstone.append(dataDol[i][1])
707
+ for i in range(0, len(dataKfs)):
708
+ if dataKfs[i][0] == "sandstone":
709
+ KfsSandstone.append(dataKfs[i][1])
710
+ for i in range(0, len(dataPl)):
711
+ if dataPl[i][0] == "sandstone":
712
+ PlSandstone.append(dataPl[i][1])
713
+ for i in range(0, len(data_Bt)):
714
+ if data_Bt[i][0] == "sandstone":
715
+ BtSandstone.append(data_Bt[i][1])
716
+ for i in range(0, len(dataGlt)):
717
+ if dataGlt[i][0] == "sandstone":
718
+ GltSandstone.append(dataGlt[i][1])
719
+ for i in range(0, len(sandstone)):
720
+ sandstone[i].extend(QzSandstone[i])
721
+ sandstone[i].extend(CalSandstone[i])
722
+ sandstone[i].extend(DolSandstone[i])
723
+ sandstone[i].extend(KfsSandstone[i])
724
+ sandstone[i].extend(PlSandstone[i])
725
+ sandstone[i].extend(BtSandstone[i])
726
+ sandstone[i].extend(GltSandstone[i])
727
+ elementsSandstone = []
728
+ for i in range(0, len(sandstone)):
729
+ elementsSandstone.append([])
730
+ for i in range(0, len(sandstone)):
731
+ for j in range(0, len(sandstone[i])):
732
+ if [sandstone[i][j][0],0] in elementsSandstone[i]:
733
+ pass
734
+ else:
735
+ elementsSandstone[i].append([sandstone[i][j][0], 0])
736
+ #print("Elements Sandstone:", elementsSandstone[0])
737
+ for i in range(0, len(sandstone)):
738
+ for j in range(0, len(sandstone[i])):
739
+ for k in range(0, len(elementsSandstone[i])):
740
+ if elementsSandstone[i][k][0] == sandstone[i][j][0]:
741
+ elementsSandstone[i][k][1] += sandstone[i][j][1]
742
+ else:
743
+ pass
744
+ mSandstone = []
745
+ for i in range(2, len(self.input)):
746
+ if self.input[i][0] == "sandstone":
747
+ mSandstone.append(round(self.input[i][2],3))
748
+ #print("m:", mSandstone)
749
+ dataM = []
750
+ for i in range(0, len(elementsSandstone)):
751
+ m = 0
752
+ for j in range(0, len(elementsSandstone[i])):
753
+ m += round(elementsSandstone[i][j][1], 3)
754
+ dataM.append(round(m, 3))
755
+ #print("dataM", dataM)
756
+ for i in range(0, len(elementsSandstone)):
757
+ for j in range(0, len(elementsSandstone[i])):
758
+ if elementsSandstone[i][j][0] == "H":
759
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemH[2]))
760
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
761
+ elif elementsSandstone[i][j][0] == "C":
762
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemC[2]))
763
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
764
+ elif elementsSandstone[i][j][0] == "O":
765
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemO[2]))
766
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
767
+ elif elementsSandstone[i][j][0] == "F":
768
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemF[2]))
769
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
770
+ elif elementsSandstone[i][j][0] == "Na":
771
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemNa[2]))
772
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
773
+ elif elementsSandstone[i][j][0] == "Mg":
774
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemMg[2]))
775
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
776
+ elif elementsSandstone[i][j][0] == "Al":
777
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemAl[2]))
778
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
779
+ elif elementsSandstone[i][j][0] == "Si":
780
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemSi[2]))
781
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
782
+ elif elementsSandstone[i][j][0] == "K":
783
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemK[2]))
784
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
785
+ elif elementsSandstone[i][j][0] == "Ca":
786
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemCa[2]))
787
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
788
+ elif elementsSandstone[i][j][0] == "Fe":
789
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/(0.001*chemFe[2]))
790
+ elementsSandstone[i][j].append(elementsSandstone[i][j][1]/dataM[i]*100)
791
+ resultsSandstone = []
792
+ for i in range(0, len(elementsSandstone)):
793
+ resultsSandstone.append(["sandstone", round(dataM[i],3)])
794
+ for i in range(0, len(elementsSandstone)):
795
+ for j in range(0, len(elementsSandstone[i])):
796
+ resultsSandstone[i].append([elementsSandstone[i][j][0], round(elementsSandstone[i][j][1],3), round(elementsSandstone[i][j][2],1), round(elementsSandstone[i][j][3],2)])
797
+ #
798
+ results.append(resultsSandstone)
799
+ #print("Results Sandstone:")
800
+ #for j in range(0, len(resultsSandstone)):
801
+ # print(j+1, ":", resultsSandstone[j])
802
+ #
803
+ # WRITING A CSV FILE
804
+ try:
805
+ Geochemistry_Sandstone = open("./outputs/Geochemistry_Sandstone.csv","w")
806
+ except:
807
+ print("Error")
808
+ sys.exit(0)
809
+ Geochemistry_Sandstone.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("C")+","+str("O")+","+str("F")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
810
+ for i in range(0, len(resultsSandstone)):
811
+ Geochemistry_Sandstone.write(str(resultsSandstone[i][0])+","+str(resultsSandstone[i][1])+","+str(resultsSandstone[i][11][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][5][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][3][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][12][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][7][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][6][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][9][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][2][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][8][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][4][1]/resultsSandstone[i][1])+","+str(resultsSandstone[i][10][1]/resultsSandstone[i][1])+"\n")
812
+ #
813
+ if "limestone" in lithologies:
814
+ ## LIMESTONE
815
+ #
816
+ CalLimestone = []
817
+ DolLimestone = []
818
+ QzLimestone = []
819
+ SdLimestone = []
820
+ KfsLimestone = []
821
+ PlLimestone = []
822
+ KlnLimestone = []
823
+ ChlLimestone = []
824
+ IltLimestone = []
825
+ for i in range(0, len(dataQz)):
826
+ if dataQz[i][0] == "limestone":
827
+ QzLimestone.append(dataQz[i][1])
828
+ for i in range(0, len(dataCal)):
829
+ if dataCal[i][0] == "limestone":
830
+ CalLimestone.append(dataCal[i][1])
831
+ for i in range(0, len(dataDol)):
832
+ if dataDol[i][0] == "limestone":
833
+ DolLimestone.append(dataDol[i][1])
834
+ for i in range(0, len(dataSd)):
835
+ if dataSd[i][0] == "limestone":
836
+ SdLimestone.append(dataSd[i][1])
837
+ for i in range(0, len(dataKfs)):
838
+ if dataKfs[i][0] == "limestone":
839
+ KfsLimestone.append(dataKfs[i][1])
840
+ for i in range(0, len(dataPl)):
841
+ if dataPl[i][0] == "limestone":
842
+ PlLimestone.append(dataPl[i][1])
843
+ for i in range(0, len(dataKln)):
844
+ if dataKln[i][0] == "limestone":
845
+ KlnLimestone.append(dataKln[i][1])
846
+ for i in range(0, len(dataChl)):
847
+ if dataChl[i][0] == "limestone":
848
+ ChlLimestone.append(dataChl[i][1])
849
+ for i in range(0, len(dataIlt)):
850
+ if dataIlt[i][0] == "limestone":
851
+ IltLimestone.append(dataIlt[i][1])
852
+ for i in range(0, len(limestone)):
853
+ limestone[i].extend(CalLimestone[i])
854
+ limestone[i].extend(DolLimestone[i])
855
+ limestone[i].extend(QzLimestone[i])
856
+ limestone[i].extend(SdLimestone[i])
857
+ limestone[i].extend(KfsLimestone[i])
858
+ limestone[i].extend(PlLimestone[i])
859
+ limestone[i].extend(KlnLimestone[i])
860
+ limestone[i].extend(ChlLimestone[i])
861
+ limestone[i].extend(IltLimestone[i])
862
+ elementsLimestone = []
863
+ for i in range(0, len(limestone)):
864
+ elementsLimestone.append([])
865
+ for i in range(0, len(limestone)):
866
+ for j in range(0, len(limestone[i])):
867
+ if [limestone[i][j][0],0] in elementsLimestone[i]:
868
+ pass
869
+ else:
870
+ elementsLimestone[i].append([limestone[i][j][0], 0])
871
+ #print("Elements Limestone:", elementsLimestone[0])
872
+ for i in range(0, len(limestone)):
873
+ for j in range(0, len(limestone[i])):
874
+ for k in range(0, len(elementsLimestone[i])):
875
+ if elementsLimestone[i][k][0] == limestone[i][j][0]:
876
+ elementsLimestone[i][k][1] += limestone[i][j][1]
877
+ else:
878
+ pass
879
+ mLimestone = []
880
+ for i in range(2, len(self.input)):
881
+ if self.input[i][0] == "limestone":
882
+ mLimestone.append(round(self.input[i][2],3))
883
+ #print("m:", mLimestone)
884
+ dataM = []
885
+ for i in range(0, len(elementsLimestone)):
886
+ m = 0
887
+ for j in range(0, len(elementsLimestone[i])):
888
+ m += round(elementsLimestone[i][j][1], 3)
889
+ dataM.append(round(m, 3))
890
+ # print("dataM", dataM)
891
+ for i in range(0, len(elementsLimestone)):
892
+ for j in range(0, len(elementsLimestone[i])):
893
+ if elementsLimestone[i][j][0] == "Ca":
894
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemCa[2]))
895
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
896
+ elif elementsLimestone[i][j][0] == "C":
897
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemC[2]))
898
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
899
+ elif elementsLimestone[i][j][0] == "O":
900
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemO[2]))
901
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
902
+ elif elementsLimestone[i][j][0] == "Mg":
903
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemMg[2]))
904
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
905
+ elif elementsLimestone[i][j][0] == "Si":
906
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemSi[2]))
907
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
908
+ elif elementsLimestone[i][j][0] == "K":
909
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemK[2]))
910
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
911
+ elif elementsLimestone[i][j][0] == "Al":
912
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemAl[2]))
913
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
914
+ elif elementsLimestone[i][j][0] == "Fe":
915
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemFe[2]))
916
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
917
+ elif elementsLimestone[i][j][0] == "Na":
918
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemNa[2]))
919
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
920
+ elif elementsLimestone[i][j][0] == "H":
921
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/(0.001*chemH[2]))
922
+ elementsLimestone[i][j].append(elementsLimestone[i][j][1]/dataM[i]*100)
923
+ resultsLimestone = []
924
+ for i in range(0, len(elementsLimestone)):
925
+ resultsLimestone.append(["limestone", round(dataM[i],3)])
926
+ for i in range(0, len(elementsLimestone)):
927
+ for j in range(0, len(elementsLimestone[i])):
928
+ resultsLimestone[i].append([elementsLimestone[i][j][0], round(elementsLimestone[i][j][1],3), round(elementsLimestone[i][j][2],1), round(elementsLimestone[i][j][3],2)])
929
+ #
930
+ results.append(resultsLimestone)
931
+ #print("Results Limestone:")
932
+ #for j in range(0, len(resultsLimestone)):
933
+ # print(j+1, ":", resultsLimestone[j])
934
+ #
935
+ # WRITING A CSV FILE
936
+ try:
937
+ Geochemistry_Limestone = open("./outputs/Geochemistry_Limestone.csv","w")
938
+ except:
939
+ print("Error")
940
+ sys.exit(0)
941
+ Geochemistry_Limestone.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("C")+","+str("O")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
942
+ for i in range(0, len(resultsLimestone)):
943
+ Geochemistry_Limestone.write(str(resultsLimestone[i][0])+","+str(resultsLimestone[i][1])+","+str(resultsLimestone[i][11][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][3][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][4][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][8][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][5][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][10][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][6][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][9][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][2][1]/resultsLimestone[i][1])+","+str(resultsLimestone[i][7][1]/resultsLimestone[i][1])+"\n")
944
+ #
945
+ if "dolomite" in lithologies:
946
+ ## DOLOMITE
947
+ #
948
+ CalDolomite = []
949
+ DolDolomite = []
950
+ QzDolomite = []
951
+ MgsDolomite = []
952
+ KfsDolomite = []
953
+ PlDolomite = []
954
+ KlnDolomite = []
955
+ ChlDolomite = []
956
+ IltDolomite = []
957
+ for i in range(0, len(dataQz)):
958
+ if dataQz[i][0] == "dolomite":
959
+ QzDolomite.append(dataQz[i][1])
960
+ for i in range(0, len(dataCal)):
961
+ if dataCal[i][0] == "dolomite":
962
+ CalDolomite.append(dataCal[i][1])
963
+ for i in range(0, len(dataDol)):
964
+ if dataDol[i][0] == "dolomite":
965
+ DolDolomite.append(dataDol[i][1])
966
+ for i in range(0, len(dataMgs)):
967
+ if dataMgs[i][0] == "dolomite":
968
+ MgsDolomite.append(dataMgs[i][1])
969
+ for i in range(0, len(dataKfs)):
970
+ if dataKfs[i][0] == "dolomite":
971
+ KfsDolomite.append(dataKfs[i][1])
972
+ for i in range(0, len(dataPl)):
973
+ if dataPl[i][0] == "dolomite":
974
+ PlDolomite.append(dataPl[i][1])
975
+ for i in range(0, len(dataKln)):
976
+ if dataKln[i][0] == "dolomite":
977
+ KlnDolomite.append(dataKln[i][1])
978
+ for i in range(0, len(dataChl)):
979
+ if dataChl[i][0] == "dolomite":
980
+ ChlDolomite.append(dataChl[i][1])
981
+ for i in range(0, len(dataIlt)):
982
+ if dataIlt[i][0] == "dolomite":
983
+ IltDolomite.append(dataIlt[i][1])
984
+ for i in range(0, len(dolomite)):
985
+ dolomite[i].extend(CalDolomite[i])
986
+ dolomite[i].extend(DolDolomite[i])
987
+ dolomite[i].extend(QzDolomite[i])
988
+ dolomite[i].extend(MgsDolomite[i])
989
+ dolomite[i].extend(KfsDolomite[i])
990
+ dolomite[i].extend(PlDolomite[i])
991
+ dolomite[i].extend(KlnDolomite[i])
992
+ dolomite[i].extend(ChlDolomite[i])
993
+ dolomite[i].extend(IltDolomite[i])
994
+ elementsDolomite = []
995
+ for i in range(0, len(dolomite)):
996
+ elementsDolomite.append([])
997
+ for i in range(0, len(dolomite)):
998
+ for j in range(0, len(dolomite[i])):
999
+ if [dolomite[i][j][0],0] in elementsDolomite[i]:
1000
+ pass
1001
+ else:
1002
+ elementsDolomite[i].append([dolomite[i][j][0], 0])
1003
+ #print("Elements Dolomite:", elementsDolomite[0])
1004
+ for i in range(0, len(dolomite)):
1005
+ for j in range(0, len(dolomite[i])):
1006
+ for k in range(0, len(elementsDolomite[i])):
1007
+ if elementsDolomite[i][k][0] == dolomite[i][j][0]:
1008
+ elementsDolomite[i][k][1] += dolomite[i][j][1]
1009
+ else:
1010
+ pass
1011
+ mDolomite = []
1012
+ for i in range(2, len(self.input)):
1013
+ if self.input[i][0] == "dolomite":
1014
+ mDolomite.append(round(self.input[i][2],3))
1015
+ #print("m:", mDolomite)
1016
+ dataM = []
1017
+ for i in range(0, len(elementsDolomite)):
1018
+ m = 0
1019
+ for j in range(0, len(elementsDolomite[i])):
1020
+ m += round(elementsDolomite[i][j][1], 3)
1021
+ dataM.append(round(m, 3))
1022
+ # print("dataM", dataM)
1023
+ for i in range(0, len(elementsDolomite)):
1024
+ for j in range(0, len(elementsDolomite[i])):
1025
+ if elementsDolomite[i][j][0] == "Ca":
1026
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemCa[2]))
1027
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1028
+ elif elementsDolomite[i][j][0] == "C":
1029
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemC[2]))
1030
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1031
+ elif elementsDolomite[i][j][0] == "O":
1032
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemO[2]))
1033
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1034
+ elif elementsDolomite[i][j][0] == "Mg":
1035
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemMg[2]))
1036
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1037
+ elif elementsDolomite[i][j][0] == "Si":
1038
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemSi[2]))
1039
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1040
+ elif elementsDolomite[i][j][0] == "K":
1041
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemK[2]))
1042
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1043
+ elif elementsDolomite[i][j][0] == "Al":
1044
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemAl[2]))
1045
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1046
+ elif elementsDolomite[i][j][0] == "Fe":
1047
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemFe[2]))
1048
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1049
+ elif elementsDolomite[i][j][0] == "Na":
1050
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemNa[2]))
1051
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1052
+ elif elementsDolomite[i][j][0] == "H":
1053
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/(0.001*chemH[2]))
1054
+ elementsDolomite[i][j].append(elementsDolomite[i][j][1]/dataM[i]*100)
1055
+ resultsDolomite = []
1056
+ for i in range(0, len(elementsDolomite)):
1057
+ resultsDolomite.append(["dolomite", round(dataM[i],3)])
1058
+ for i in range(0, len(elementsDolomite)):
1059
+ for j in range(0, len(elementsDolomite[i])):
1060
+ resultsDolomite[i].append([elementsDolomite[i][j][0], round(elementsDolomite[i][j][1],3), round(elementsDolomite[i][j][2],1), round(elementsDolomite[i][j][3],2)])
1061
+ #
1062
+ results.append(resultsDolomite)
1063
+ #print("Results Dolomite:")
1064
+ #for j in range(0, len(resultsDolomite)):
1065
+ # print(j+1, ":", resultsDolomite[j])
1066
+ #
1067
+ # WRITING A CSV FILE
1068
+ try:
1069
+ Geochemistry_Dolomite = open("./outputs/Geochemistry_Dolomite.csv","w")
1070
+ except:
1071
+ print("Error")
1072
+ sys.exit(0)
1073
+ Geochemistry_Dolomite.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("C")+","+str("O")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
1074
+ for i in range(0, len(resultsDolomite)):
1075
+ Geochemistry_Dolomite.write(str(resultsDolomite[i][0])+","+str(resultsDolomite[i][1])+","+str(resultsDolomite[i][10][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][3][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][4][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][7][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][5][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][9][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][6][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][8][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][2][1]/resultsDolomite[i][1])+","+str(resultsDolomite[i][11][1]/resultsDolomite[i][1])+"\n")
1076
+ #
1077
+ if "shale" in lithologies:
1078
+ ## SHALE
1079
+ #
1080
+ QzShale = []
1081
+ KlnShale = []
1082
+ ChlShale = []
1083
+ IltShale = []
1084
+ CalShale = []
1085
+ DolShale = []
1086
+ KfsShale = []
1087
+ PlShale = []
1088
+ for i in range(0, len(dataQz)):
1089
+ if dataQz[i][0] == "shale":
1090
+ QzShale.append(dataQz[i][1])
1091
+ for i in range(0, len(dataKln)):
1092
+ if dataKln[i][0] == "shale":
1093
+ KlnShale.append(dataKln[i][1])
1094
+ for i in range(0, len(dataChl)):
1095
+ if dataChl[i][0] == "shale":
1096
+ ChlShale.append(dataChl[i][1])
1097
+ for i in range(0, len(dataIlt)):
1098
+ if dataIlt[i][0] == "shale":
1099
+ IltShale.append(dataIlt[i][1])
1100
+ for i in range(0, len(dataCal)):
1101
+ if dataCal[i][0] == "shale":
1102
+ CalShale.append(dataCal[i][1])
1103
+ for i in range(0, len(dataDol)):
1104
+ if dataDol[i][0] == "shale":
1105
+ DolShale.append(dataDol[i][1])
1106
+ for i in range(0, len(dataKfs)):
1107
+ if dataKfs[i][0] == "shale":
1108
+ KfsShale.append(dataKfs[i][1])
1109
+ for i in range(0, len(dataPl)):
1110
+ if dataPl[i][0] == "shale":
1111
+ PlShale.append(dataPl[i][1])
1112
+ for i in range(0, len(shale)):
1113
+ shale[i].extend(QzShale[i])
1114
+ shale[i].extend(KlnShale[i])
1115
+ shale[i].extend(ChlShale[i])
1116
+ shale[i].extend(IltShale[i])
1117
+ shale[i].extend(CalShale[i])
1118
+ shale[i].extend(DolShale[i])
1119
+ shale[i].extend(KfsShale[i])
1120
+ shale[i].extend(PlShale[i])
1121
+ elementsShale = []
1122
+ for i in range(0, len(shale)):
1123
+ elementsShale.append([])
1124
+ for i in range(0, len(shale)):
1125
+ for j in range(0, len(shale[i])):
1126
+ if [shale[i][j][0],0] in elementsShale[i]:
1127
+ pass
1128
+ else:
1129
+ elementsShale[i].append([shale[i][j][0], 0])
1130
+ #print("Elements Shale:", elementsShale[0])
1131
+ for i in range(0, len(shale)):
1132
+ for j in range(0, len(shale[i])):
1133
+ for k in range(0, len(elementsShale[i])):
1134
+ if elementsShale[i][k][0] == shale[i][j][0]:
1135
+ elementsShale[i][k][1] += shale[i][j][1]
1136
+ else:
1137
+ pass
1138
+ mShale = []
1139
+ for i in range(2, len(self.input)):
1140
+ if self.input[i][0] == "shale":
1141
+ mShale.append(round(self.input[i][2],3))
1142
+ #print("m:", mShale)
1143
+ dataM = []
1144
+ for i in range(0, len(elementsShale)):
1145
+ m = 0
1146
+ for j in range(0, len(elementsShale[i])):
1147
+ m += round(elementsShale[i][j][1], 3)
1148
+ dataM.append(round(m, 3))
1149
+ # print("dataM", dataM)
1150
+ for i in range(0, len(elementsShale)):
1151
+ for j in range(0, len(elementsShale[i])):
1152
+ if elementsShale[i][j][0] == "Si":
1153
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemSi[2]))
1154
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1155
+ elif elementsShale[i][j][0] == "O":
1156
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemO[2]))
1157
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1158
+ elif elementsShale[i][j][0] == "K":
1159
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemK[2]))
1160
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1161
+ elif elementsShale[i][j][0] == "Mg":
1162
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemMg[2]))
1163
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1164
+ elif elementsShale[i][j][0] == "Fe":
1165
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemFe[2]))
1166
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1167
+ elif elementsShale[i][j][0] == "Al":
1168
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemAl[2]))
1169
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1170
+ elif elementsShale[i][j][0] == "H":
1171
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemH[2]))
1172
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1173
+ elif elementsShale[i][j][0] == "Ca":
1174
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemCa[2]))
1175
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1176
+ elif elementsShale[i][j][0] == "Na":
1177
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemNa[2]))
1178
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1179
+ elif elementsShale[i][j][0] == "C":
1180
+ elementsShale[i][j].append(elementsShale[i][j][1]/(0.001*chemC[2]))
1181
+ elementsShale[i][j].append(elementsShale[i][j][1]/dataM[i]*100)
1182
+ resultsShale = []
1183
+ for i in range(0, len(elementsShale)):
1184
+ resultsShale.append(["shale", round(dataM[i],3)])
1185
+ for i in range(0, len(elementsShale)):
1186
+ for j in range(0, len(elementsShale[i])):
1187
+ resultsShale[i].append([elementsShale[i][j][0], round(elementsShale[i][j][1],3), round(elementsShale[i][j][2],1), round(elementsShale[i][j][3],2)])
1188
+ #
1189
+ results.append(resultsShale)
1190
+ #print("Results Shale:")
1191
+ #for j in range(0, len(resultsShale)):
1192
+ # print(j+1, ":", resultsShale[j])
1193
+ #
1194
+ # WRITING A CSV FILE
1195
+ try:
1196
+ Geochemistry_Shale = open("./outputs/Geochemistry_Shale.csv","w")
1197
+ except:
1198
+ print("Error")
1199
+ sys.exit(0)
1200
+ Geochemistry_Shale.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("C")+","+str("O")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
1201
+ for i in range(0, len(resultsShale)):
1202
+ Geochemistry_Shale.write(str(resultsShale[i][0])+","+str(resultsShale[i][1])+","+str(resultsShale[i][5][1]/resultsShale[i][1])+","+str(resultsShale[i][10][1]/resultsShale[i][1]/resultsShale[i][1])+","+str(resultsShale[i][3][1]/resultsShale[i][1])+","+str(resultsShale[i][11][1]/resultsShale[i][1])+","+str(resultsShale[i][7][1]/resultsShale[i][1])+","+str(resultsShale[i][4][1]/resultsShale[i][1])+","+str(resultsShale[i][2][1]/resultsShale[i][1])+","+str(resultsShale[i][8][1]/resultsShale[i][1])+","+str(resultsShale[i][9][1]/resultsShale[i][1])+","+str(resultsShale[i][6][1]/resultsShale[i][1])+"\n")
1203
+ #
1204
+ if "granite" in lithologies:
1205
+ ## GRANITE
1206
+ #
1207
+ QzGranite = []
1208
+ KfsGranite = []
1209
+ PlGranite = []
1210
+ BtGranite = []
1211
+ MsGranite = []
1212
+ ActGranite = []
1213
+ TrGranite = []
1214
+
1215
+ for i in range(0, len(dataQz)):
1216
+ if dataQz[i][0] == "granite":
1217
+ QzGranite.append(dataQz[i][1])
1218
+ for i in range(0, len(dataKfs)):
1219
+ if dataKfs[i][0] == "granite":
1220
+ KfsGranite.append(dataKfs[i][1])
1221
+ for i in range(0, len(dataPl)):
1222
+ if dataPl[i][0] == "granite":
1223
+ PlGranite.append(dataPl[i][1])
1224
+ for i in range(0, len(data_Bt)):
1225
+ if data_Bt[i][0] == "granite":
1226
+ BtGranite.append(data_Bt[i][1])
1227
+ for i in range(0, len(dataMs)):
1228
+ if dataMs[i][0] == "granite":
1229
+ MsGranite.append(dataMs[i][1])
1230
+ for i in range(0, len(dataAct)):
1231
+ if dataAct[i][0] == "granite":
1232
+ ActGranite.append(dataAct[i][1])
1233
+ for i in range(0, len(dataTr)):
1234
+ if dataTr[i][0] == "granite":
1235
+ TrGranite.append(dataTr[i][1])
1236
+ for i in range(0, len(granite)):
1237
+ granite[i].extend(QzGranite[i])
1238
+ granite[i].extend(KfsGranite[i])
1239
+ granite[i].extend(PlGranite[i])
1240
+ granite[i].extend(BtGranite[i])
1241
+ granite[i].extend(MsGranite[i])
1242
+ granite[i].extend(ActGranite[i])
1243
+ granite[i].extend(TrGranite[i])
1244
+ elementsGranite = []
1245
+ for i in range(0, len(granite)):
1246
+ elementsGranite.append([])
1247
+ for i in range(0, len(granite)):
1248
+ for j in range(0, len(granite[i])):
1249
+ if [granite[i][j][0],0] in elementsGranite[i]:
1250
+ pass
1251
+ else:
1252
+ elementsGranite[i].append([granite[i][j][0], 0])
1253
+ #print("Elements Granite:", elementsGranite[0])
1254
+ for i in range(0, len(granite)):
1255
+ for j in range(0, len(granite[i])):
1256
+ for k in range(0, len(elementsGranite[i])):
1257
+ if elementsGranite[i][k][0] == granite[i][j][0]:
1258
+ elementsGranite[i][k][1] += granite[i][j][1]
1259
+ else:
1260
+ pass
1261
+ mGranite = []
1262
+ for i in range(2, len(self.input)):
1263
+ if self.input[i][0] == "granite":
1264
+ mGranite.append(round(self.input[i][2],3))
1265
+ #print("m:", mGranite)
1266
+ dataM = []
1267
+ for i in range(0, len(elementsGranite)):
1268
+ m = 0
1269
+ for j in range(0, len(elementsGranite[i])):
1270
+ m += round(elementsGranite[i][j][1], 3)
1271
+ dataM.append(round(m, 3))
1272
+ # print("dataM", dataM)
1273
+ for i in range(0, len(elementsGranite)):
1274
+ for j in range(0, len(elementsGranite[i])):
1275
+ if elementsGranite[i][j][0] == "H":
1276
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemH[2]))
1277
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1278
+ elif elementsGranite[i][j][0] == "O":
1279
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemO[2]))
1280
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1281
+ elif elementsGranite[i][j][0] == "F":
1282
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemF[2]))
1283
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1284
+ elif elementsGranite[i][j][0] == "Na":
1285
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemNa[2]))
1286
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1287
+ elif elementsGranite[i][j][0] == "Mg":
1288
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemMg[2]))
1289
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1290
+ elif elementsGranite[i][j][0] == "Al":
1291
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemAl[2]))
1292
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1293
+ elif elementsGranite[i][j][0] == "Si":
1294
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemSi[2]))
1295
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1296
+ elif elementsGranite[i][j][0] == "K":
1297
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemK[2]))
1298
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1299
+ elif elementsGranite[i][j][0] == "Ca":
1300
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemCa[2]))
1301
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1302
+ elif elementsGranite[i][j][0] == "Fe":
1303
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/(0.001*chemFe[2]))
1304
+ elementsGranite[i][j].append(elementsGranite[i][j][1]/dataM[i]*100)
1305
+ resultsGranite = []
1306
+ for i in range(0, len(elementsGranite)):
1307
+ resultsGranite.append(["granite", round(mGranite[i],3)])
1308
+ for i in range(0, len(elementsGranite)):
1309
+ for j in range(0, len(elementsGranite[i])):
1310
+ resultsGranite[i].append([elementsGranite[i][j][0], round(elementsGranite[i][j][1],3), round(elementsGranite[i][j][2],1), round(elementsGranite[i][j][3],2)])
1311
+ #
1312
+ results.append(resultsGranite)
1313
+ #print("Results Granite:")
1314
+ #for j in range(0, len(resultsGranite)):
1315
+ # print(j+1, ":", resultsGranite[j])
1316
+ #
1317
+ # WRITING A CSV FILE
1318
+ try:
1319
+ Geochemistry_Granite = open("./outputs/Geochemistry_Granite.csv","w")
1320
+ except:
1321
+ print("Error")
1322
+ sys.exit(0)
1323
+ Geochemistry_Granite.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("O")+","+str("F")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("S")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
1324
+ for i in range(0, len(resultsGranite)):
1325
+ Geochemistry_Granite.write(str(resultsGranite[i][0])+","+str(resultsGranite[i][1])+","+str(resultsGranite[i][8][1]/resultsGranite[i][1])+","+str(resultsGranite[i][3][1]/resultsGranite[i][1])+","+str(resultsGranite[i][9][1]/resultsGranite[i][1])+","+str(resultsGranite[i][6][1]/resultsGranite[i][1])+","+str(resultsGranite[i][5][1]/resultsGranite[i][1])+","+str(resultsGranite[i][2][1]/resultsGranite[i][1])+","+str(resultsGranite[i][10][1]/resultsGranite[i][1])+","+str(resultsGranite[i][4][1]/resultsGranite[i][1])+","+str(resultsGranite[i][7][1]/resultsGranite[i][1])+"\n")
1326
+ #
1327
+ if "halite" in lithologies:
1328
+ ## HALITE
1329
+ #
1330
+ HlHalite = [] # NaCl
1331
+ AnhHalite = [] # CaSO4
1332
+ GpHalite = [] # CaSO4*H2O
1333
+ SylHalite = [] # KCl
1334
+ IltHalite = [] # (K,H3,O)(Al,Mg,Fe)2(Si,Al)4O10[(OH)2,(H2O)]
1335
+
1336
+ for i in range(0, len(dataHl)):
1337
+ if dataHl[i][0] == "halite":
1338
+ HlHalite.append(dataHl[i][1])
1339
+ for i in range(0, len(dataAnh)):
1340
+ if dataAnh[i][0] == "halite":
1341
+ AnhHalite.append(dataAnh[i][1])
1342
+ for i in range(0, len(dataGp)):
1343
+ if dataGp[i][0] == "halite":
1344
+ GpHalite.append(dataGp[i][1])
1345
+ for i in range(0, len(dataSyl)):
1346
+ if dataSyl[i][0] == "halite":
1347
+ SylHalite.append(dataSyl[i][1])
1348
+ for i in range(0, len(dataIlt)):
1349
+ if dataIlt[i][0] == "halite":
1350
+ IltHalite.append(dataIlt[i][1])
1351
+ for i in range(0, len(halite)):
1352
+ halite[i].extend(HlHalite[i])
1353
+ halite[i].extend(AnhHalite[i])
1354
+ halite[i].extend(GpHalite[i])
1355
+ halite[i].extend(SylHalite[i])
1356
+ halite[i].extend(IltHalite[i])
1357
+ elementsHalite = []
1358
+ for i in range(0, len(halite)):
1359
+ elementsHalite.append([])
1360
+ for i in range(0, len(halite)):
1361
+ for j in range(0, len(halite[i])):
1362
+ if [halite[i][j][0],0] in elementsHalite[i]:
1363
+ pass
1364
+ else:
1365
+ elementsHalite[i].append([halite[i][j][0], 0])
1366
+ #print("Elements Halite:", elementsHalite[0])
1367
+ for i in range(0, len(halite)):
1368
+ for j in range(0, len(halite[i])):
1369
+ for k in range(0, len(elementsHalite[i])):
1370
+ if elementsHalite[i][k][0] == halite[i][j][0]:
1371
+ elementsHalite[i][k][1] += halite[i][j][1]
1372
+ else:
1373
+ pass
1374
+ mHalite = []
1375
+ for i in range(2, len(self.input)):
1376
+ if self.input[i][0] == "halite":
1377
+ mHalite.append(round(self.input[i][2],3))
1378
+ #print("m:", mHalite)
1379
+ dataM = []
1380
+ for i in range(0, len(elementsHalite)):
1381
+ m = 0
1382
+ for j in range(0, len(elementsHalite[i])):
1383
+ m += round(elementsHalite[i][j][1], 3)
1384
+ dataM.append(round(m, 3))
1385
+ # print("dataM", dataM)
1386
+ for i in range(0, len(elementsHalite)):
1387
+ for j in range(0, len(elementsHalite[i])):
1388
+ if elementsHalite[i][j][0] == "H":
1389
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemH[2]))
1390
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1391
+ elif elementsHalite[i][j][0] == "O":
1392
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemO[2]))
1393
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1394
+ elif elementsHalite[i][j][0] == "Na":
1395
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemNa[2]))
1396
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1397
+ elif elementsHalite[i][j][0] == "Mg":
1398
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemMg[2]))
1399
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1400
+ elif elementsHalite[i][j][0] == "Al":
1401
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemAl[2]))
1402
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1403
+ elif elementsHalite[i][j][0] == "Si":
1404
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemSi[2]))
1405
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1406
+ elif elementsHalite[i][j][0] == "S":
1407
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemS[2]))
1408
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1409
+ elif elementsHalite[i][j][0] == "Cl":
1410
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemCl[2]))
1411
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1412
+ elif elementsHalite[i][j][0] == "K":
1413
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemK[2]))
1414
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1415
+ elif elementsHalite[i][j][0] == "Ca":
1416
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemCa[2]))
1417
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1418
+ elif elementsHalite[i][j][0] == "Fe":
1419
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/(0.001*chemFe[2]))
1420
+ elementsHalite[i][j].append(elementsHalite[i][j][1]/dataM[i]*100)
1421
+
1422
+ resultsHalite = []
1423
+ for i in range(0, len(elementsHalite)):
1424
+ resultsHalite.append(["halite", round(dataM[i],3)])
1425
+ for i in range(0, len(elementsHalite)):
1426
+ for j in range(0, len(elementsHalite[i])):
1427
+ resultsHalite[i].append([elementsHalite[i][j][0], round(elementsHalite[i][j][1],3), round(elementsHalite[i][j][2],1), round(elementsHalite[i][j][3],2)])
1428
+ #
1429
+ results.append(resultsHalite)
1430
+ #print("Results Halite:")
1431
+ #for j in range(0, len(resultsHalite)):
1432
+ # print(j+1, ":", resultsHalite[j])
1433
+ #
1434
+ # WRITING A CSV FILE
1435
+ try:
1436
+ Geochemistry_Halite = open("./outputs/Geochemistry_Halite.csv","w")
1437
+ except:
1438
+ print("Error")
1439
+ sys.exit(0)
1440
+ Geochemistry_Halite.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("O")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("S")+","+str("Cl")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
1441
+ for i in range(0, len(resultsHalite)):
1442
+ Geochemistry_Halite.write(str(resultsHalite[i][0])+","+str(resultsHalite[i][1])+","+str(resultsHalite[i][8][1]/resultsHalite[i][1])+","+str(resultsHalite[i][3][1]/resultsHalite[i][1])+","+str(resultsHalite[i][9][1]/resultsHalite[i][1])+","+str(resultsHalite[i][6][1]/resultsHalite[i][1])+","+str(resultsHalite[i][5][1]/resultsHalite[i][1])+","+str(resultsHalite[i][2][1]/resultsHalite[i][1])+","+str(resultsHalite[i][10][1]/resultsHalite[i][1])+","+str(resultsHalite[i][4][1]/resultsHalite[i][1])+","+str(resultsHalite[i][7][1]/resultsHalite[i][1])+"\n")
1443
+ #
1444
+ if "anhydrite" in lithologies:
1445
+ ## ANHYDRITE
1446
+ #
1447
+ AnhAnhydrite = [] # CaSO4
1448
+ HlAnhydrite = [] # NaCl
1449
+ CalAnhydrite = [] # CaCO3
1450
+ GnAnhydrite = [] # PbS
1451
+ CcpAnhydrite = [] # CuFeS2
1452
+ MolAnhydrite = [] # MoS2
1453
+ PyAnhydrite = [] # FeS2
1454
+
1455
+ for i in range(0, len(dataAnh)):
1456
+ if dataAnh[i][0] == "anhydrite":
1457
+ AnhAnhydrite.append(dataAnh[i][1])
1458
+ for i in range(0, len(dataHl)):
1459
+ if dataHl[i][0] == "anhydrite":
1460
+ HlAnhydrite.append(dataHl[i][1])
1461
+ for i in range(0, len(dataCal)):
1462
+ if dataCal[i][0] == "anhydrite":
1463
+ CalAnhydrite.append(dataCal[i][1])
1464
+ for i in range(0, len(dataGn)):
1465
+ if dataGn[i][0] == "anhydrite":
1466
+ GnAnhydrite.append(dataGn[i][1])
1467
+ for i in range(0, len(dataCcp)):
1468
+ if dataCcp[i][0] == "anhydrite":
1469
+ CcpAnhydrite.append(dataCcp[i][1])
1470
+ for i in range(0, len(dataMol)):
1471
+ if dataMol[i][0] == "anhydrite":
1472
+ MolAnhydrite.append(dataMol[i][1])
1473
+ for i in range(0, len(dataPy)):
1474
+ if dataPy[i][0] == "anhydrite":
1475
+ PyAnhydrite.append(dataPy[i][1])
1476
+ for i in range(0, len(anhydrite)):
1477
+ anhydrite[i].extend(AnhAnhydrite[i])
1478
+ anhydrite[i].extend(HlAnhydrite[i])
1479
+ anhydrite[i].extend(CalAnhydrite[i])
1480
+ anhydrite[i].extend(GnAnhydrite[i])
1481
+ anhydrite[i].extend(CcpAnhydrite[i])
1482
+ anhydrite[i].extend(MolAnhydrite[i])
1483
+ anhydrite[i].extend(PyAnhydrite[i])
1484
+ elementsAnhydrite = []
1485
+ for i in range(0, len(anhydrite)):
1486
+ elementsAnhydrite.append([])
1487
+ for i in range(0, len(anhydrite)):
1488
+ for j in range(0, len(anhydrite[i])):
1489
+ if [anhydrite[i][j][0], 0] in elementsAnhydrite[i]:
1490
+ pass
1491
+ else:
1492
+ elementsAnhydrite[i].append([anhydrite[i][j][0], 0])
1493
+ # print("Elements Anhydrite:", elementsAnhydrite[0])
1494
+ for i in range(0, len(anhydrite)):
1495
+ for j in range(0, len(anhydrite[i])):
1496
+ for k in range(0, len(elementsAnhydrite[i])):
1497
+ if elementsAnhydrite[i][k][0] == anhydrite[i][j][0]:
1498
+ elementsAnhydrite[i][k][1] += anhydrite[i][j][1]
1499
+ else:
1500
+ pass
1501
+ mAnhydrite = []
1502
+ for i in range(2, len(self.input)):
1503
+ if self.input[i][0] == "anhydrite":
1504
+ mAnhydrite.append(round(self.input[i][2], 3))
1505
+ # print("m:", mAnhydrite)
1506
+ dataM = []
1507
+ for i in range(0, len(elementsAnhydrite)):
1508
+ m = 0
1509
+ for j in range(0, len(elementsAnhydrite[i])):
1510
+ m += round(elementsAnhydrite[i][j][1], 3)
1511
+ dataM.append(round(m, 3))
1512
+ # print("dataM", dataM)
1513
+ for i in range(0, len(elementsAnhydrite)):
1514
+ for j in range(0, len(elementsAnhydrite[i])):
1515
+ if elementsAnhydrite[i][j][0] == "C":
1516
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemC[2]))
1517
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1518
+ elif elementsAnhydrite[i][j][0] == "O":
1519
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemO[2]))
1520
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1521
+ elif elementsAnhydrite[i][j][0] == "Na":
1522
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemNa[2]))
1523
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1524
+ elif elementsAnhydrite[i][j][0] == "S":
1525
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemS[2]))
1526
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1527
+ elif elementsAnhydrite[i][j][0] == "Cl":
1528
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemCl[2]))
1529
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1530
+ elif elementsAnhydrite[i][j][0] == "Ca":
1531
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemCa[2]))
1532
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1533
+ elif elementsAnhydrite[i][j][0] == "Fe":
1534
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemFe[2]))
1535
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1536
+ elif elementsAnhydrite[i][j][0] == "Cu":
1537
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemCu[2]))
1538
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1539
+ elif elementsAnhydrite[i][j][0] == "Mo":
1540
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemMo[2]))
1541
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM [i] * 100)
1542
+ elif elementsAnhydrite[i][j][0] == "Pb":
1543
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / (0.001 * chemPb[2]))
1544
+ elementsAnhydrite[i][j].append(elementsAnhydrite[i][j][1] / dataM[i] * 100)
1545
+
1546
+ resultsAnhydrite = []
1547
+ for i in range(0, len(elementsAnhydrite)):
1548
+ resultsAnhydrite.append(["anhydrite", round(dataM[i], 3)])
1549
+ for i in range(0, len(elementsAnhydrite)):
1550
+ for j in range(0, len(elementsAnhydrite[i])):
1551
+ resultsAnhydrite[i].append([elementsAnhydrite[i][j][0], round(elementsAnhydrite[i][j][1], 3), round(elementsAnhydrite[i][j][2], 1), round(elementsAnhydrite[i][j][3], 2)])
1552
+ #
1553
+ results.append(resultsAnhydrite)
1554
+ #print("Results Anhydrite:")
1555
+ #for j in range(0, len(resultsAnhydrite)):
1556
+ # print(j + 1, ":", resultsAnhydrite[j])
1557
+ #
1558
+ # WRITING A CSV FILE
1559
+ try:
1560
+ Geochemistry_Anhydrite = open("./outputs/Geochemistry_Anhydrite.csv","w")
1561
+ except:
1562
+ print("Error")
1563
+ sys.exit(0)
1564
+ Geochemistry_Anhydrite.write(str("rock")+","+str("sample mass")+","+str("C")+","+str("O")+","+str("Na")+","+str("S")+","+str("Cl")+","+str("Ca")+","+str("Fe")+","+str("Cu")+","+str("Mo")+","+str("Pb")+"\n")
1565
+ for i in range(0, len(resultsAnhydrite)):
1566
+ Geochemistry_Anhydrite.write(str(resultsAnhydrite[i][0])+","+str(resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][7][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][4][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][5][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][3][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][6][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][2][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][10][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][9][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][11][1]/resultsAnhydrite[i][1])+","+str(resultsAnhydrite[i][8][1]/resultsAnhydrite[i][1])+"\n")
1567
+ #
1568
+ if "ore" in lithologies:
1569
+ ## ORE (IRON)
1570
+ #
1571
+ Mag_ore_Fe = []
1572
+ Hem_ore_Fe = []
1573
+ Qz_ore_Fe = []
1574
+ Cal_ore_Fe = []
1575
+ Kfs_ore_Fe = []
1576
+ Pl_ore_Fe = []
1577
+ for i in range(0, len(data_Mag)):
1578
+ if data_Mag[i][0] == "ore":
1579
+ Mag_ore_Fe.append(data_Mag[i][1])
1580
+ for i in range(0, len(data_Hem)):
1581
+ if data_Hem[i][0] == "ore":
1582
+ Hem_ore_Fe.append(data_Hem[i][1])
1583
+ for i in range(0, len(dataQz)):
1584
+ if dataQz[i][0] == "ore":
1585
+ Qz_ore_Fe.append(dataQz[i][1])
1586
+ for i in range(0, len(dataCal)):
1587
+ if dataCal[i][0] == "ore":
1588
+ Cal_ore_Fe.append(dataCal[i][1])
1589
+ for i in range(0, len(dataKfs)):
1590
+ if dataKfs[i][0] == "ore":
1591
+ Kfs_ore_Fe.append(dataKfs[i][1])
1592
+ for i in range(0, len(dataPl)):
1593
+ if dataPl[i][0] == "ore":
1594
+ Pl_ore_Fe.append(dataPl[i][1])
1595
+ for i in range(0, len(ore_Fe)):
1596
+ ore_Fe[i].extend(Mag_ore_Fe[i])
1597
+ ore_Fe[i].extend(Hem_ore_Fe[i])
1598
+ ore_Fe[i].extend(Qz_ore_Fe[i])
1599
+ ore_Fe[i].extend(Cal_ore_Fe[i])
1600
+ ore_Fe[i].extend(Kfs_ore_Fe[i])
1601
+ ore_Fe[i].extend(Pl_ore_Fe[i])
1602
+ elements_ore_Fe = []
1603
+ for i in range(0, len(ore_Fe)):
1604
+ elements_ore_Fe.append([])
1605
+ for i in range(0, len(ore_Fe)):
1606
+ for j in range(0, len(ore_Fe[i])):
1607
+ if [ore_Fe[i][j][0],0] in elements_ore_Fe[i]:
1608
+ pass
1609
+ else:
1610
+ elements_ore_Fe[i].append([ore_Fe[i][j][0], 0])
1611
+ #print("Elements Ore (Fe):", elements_ore_Fe[0])
1612
+ for i in range(0, len(ore_Fe)):
1613
+ for j in range(0, len(ore_Fe[i])):
1614
+ for k in range(0, len(elements_ore_Fe[i])):
1615
+ if elements_ore_Fe[i][k][0] == ore_Fe[i][j][0]:
1616
+ elements_ore_Fe[i][k][1] += ore_Fe[i][j][1]
1617
+ else:
1618
+ pass
1619
+ m_ore_Fe = []
1620
+ for i in range(2, len(self.input)):
1621
+ if self.input[i][0] == "ore":
1622
+ m_ore_Fe.append(round(self.input[i][2],3))
1623
+ #print("m:", m_ore_Fe)
1624
+ dataM = []
1625
+ for i in range(0, len(elements_ore_Fe)):
1626
+ m = 0
1627
+ for j in range(0, len(elements_ore_Fe[i])):
1628
+ m += round(elements_ore_Fe[i][j][1], 3)
1629
+ dataM.append(round(m, 3))
1630
+ #print("dataM", dataM)
1631
+ for i in range(0, len(elements_ore_Fe)):
1632
+ for j in range(0, len(elements_ore_Fe[i])):
1633
+ if elements_ore_Fe[i][j][0] == "C":
1634
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemC[2]))
1635
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1636
+ elif elements_ore_Fe[i][j][0] == "O":
1637
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemO[2]))
1638
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1639
+ elif elements_ore_Fe[i][j][0] == "Na":
1640
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemNa[2]))
1641
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1642
+ elif elements_ore_Fe[i][j][0] == "Al":
1643
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemAl[2]))
1644
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1645
+ elif elements_ore_Fe[i][j][0] == "Si":
1646
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemSi[2]))
1647
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1648
+ elif elements_ore_Fe[i][j][0] == "K":
1649
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemK[2]))
1650
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1651
+ elif elements_ore_Fe[i][j][0] == "Ca":
1652
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemCa[2]))
1653
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1654
+ elif elements_ore_Fe[i][j][0] == "Fe":
1655
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/(0.001*chemFe[2]))
1656
+ elements_ore_Fe[i][j].append(elements_ore_Fe[i][j][1]/dataM[i]*100)
1657
+ results_ore_Fe = []
1658
+ for i in range(0, len(elements_ore_Fe)):
1659
+ results_ore_Fe.append(["ore", round(dataM[i],3)])
1660
+ for i in range(0, len(elements_ore_Fe)):
1661
+ for j in range(0, len(elements_ore_Fe[i])):
1662
+ results_ore_Fe[i].append([elements_ore_Fe[i][j][0], round(elements_ore_Fe[i][j][1],3), round(elements_ore_Fe[i][j][2],1), round(elements_ore_Fe[i][j][3],2)])
1663
+ #
1664
+ results.append(results_ore_Fe)
1665
+ #print("Results Ore (Fe):")
1666
+ #for j in range(0, len(results_ore_Fe)):
1667
+ # print(j+1, ":", results_ore_Fe[j])
1668
+ #
1669
+ # WRITING A CSV FILE
1670
+ try:
1671
+ Geochemistry_Ore_Fe = open("./outputs/Geochemistry_Ore_Fe.csv","w")
1672
+ except:
1673
+ print("Error")
1674
+ sys.exit(0)
1675
+ Geochemistry_Ore_Fe.write(str("rock")+","+str("sample mass")+","+str("C")+","+str("O")+","+str("Na")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Fe")+"\n")
1676
+ for i in range(0, len(results_ore_Fe)):
1677
+ Geochemistry_Ore_Fe.write(str(results_ore_Fe[i][0])+","+str(results_ore_Fe[i][1])+","+str(results_ore_Fe[i][6][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][3][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][7][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][9][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][4][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][8][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][5][1]/results_ore_Fe[i][1])+","+str(results_ore_Fe[i][2][1]/results_ore_Fe[i][1])+"\n")
1678
+ #
1679
+ if "basalt" in lithologies:
1680
+ ## Basalt
1681
+ #
1682
+ basalt_Pl = []
1683
+ basalt_En = []
1684
+ basalt_Fs = []
1685
+ basalt_Bt = []
1686
+ basalt_Act = []
1687
+ basalt_Tr = []
1688
+ basalt_Ol = []
1689
+ for i in range(0, len(dataPl)):
1690
+ if dataPl[i][0] == "basalt":
1691
+ basalt_Pl.append(dataPl[i][1])
1692
+ for i in range(0, len(data_En)):
1693
+ if data_En[i][0] == "basalt":
1694
+ basalt_En.append(data_En[i][1])
1695
+ for i in range(0, len(data_Fs)):
1696
+ if data_Fs[i][0] == "basalt":
1697
+ basalt_Fs.append(data_Fs[i][1])
1698
+ for i in range(0, len(data_Bt)):
1699
+ if data_Bt[i][0] == "basalt":
1700
+ basalt_Bt.append(data_Bt[i][1])
1701
+ for i in range(0, len(dataAct)):
1702
+ if dataAct[i][0] == "basalt":
1703
+ basalt_Act.append(dataAct[i][1])
1704
+ for i in range(0, len(dataTr)):
1705
+ if dataTr[i][0] == "basalt":
1706
+ basalt_Tr.append(dataTr[i][1])
1707
+ for i in range(0, len(data_Ol)):
1708
+ if data_Ol[i][0] == "basalt":
1709
+ basalt_Ol.append(data_Ol[i][1])
1710
+ for i in range(0, len(basalt)):
1711
+ basalt[i].extend(basalt_Pl[i])
1712
+ basalt[i].extend(basalt_En[i])
1713
+ basalt[i].extend(basalt_Fs[i])
1714
+ basalt[i].extend(basalt_Bt[i])
1715
+ basalt[i].extend(basalt_Act[i])
1716
+ basalt[i].extend(basalt_Tr[i])
1717
+ basalt[i].extend(basalt_Ol[i])
1718
+ elements_basalt = []
1719
+ for i in range(0, len(basalt)):
1720
+ elements_basalt.append([])
1721
+ for i in range(0, len(basalt)):
1722
+ for j in range(0, len(basalt[i])):
1723
+ if [basalt[i][j][0],0] in elements_basalt[i]:
1724
+ pass
1725
+ else:
1726
+ elements_basalt[i].append([basalt[i][j][0], 0])
1727
+ #print("Elements Basalt:", elements_basalt[0])
1728
+ for i in range(0, len(basalt)):
1729
+ for j in range(0, len(basalt[i])):
1730
+ for k in range(0, len(elements_basalt[i])):
1731
+ if elements_basalt[i][k][0] == basalt[i][j][0]:
1732
+ elements_basalt[i][k][1] += basalt[i][j][1]
1733
+ else:
1734
+ pass
1735
+ m_basalt = []
1736
+ for i in range(2, len(self.input)):
1737
+ if self.input[i][0] == "basalt":
1738
+ m_basalt.append(round(self.input[i][2],3))
1739
+ #print("m:", m_basalt)
1740
+ dataM = []
1741
+ for i in range(0, len(elements_basalt)):
1742
+ m = 0
1743
+ for j in range(0, len(elements_basalt[i])):
1744
+ m += round(elements_basalt[i][j][1], 3)
1745
+ dataM.append(round(m, 3))
1746
+ #print("dataM", dataM)
1747
+ for i in range(0, len(elements_basalt)):
1748
+ for j in range(0, len(elements_basalt[i])):
1749
+ if elements_basalt[i][j][0] == "H":
1750
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemH[2]))
1751
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1752
+ elif elements_basalt[i][j][0] == "O":
1753
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemO[2]))
1754
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1755
+ elif elements_basalt[i][j][0] == "F":
1756
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemF[2]))
1757
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1758
+ elif elements_basalt[i][j][0] == "Na":
1759
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemNa[2]))
1760
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1761
+ elif elements_basalt[i][j][0] == "Mg":
1762
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemMg[2]))
1763
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1764
+ elif elements_basalt[i][j][0] == "Al":
1765
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemAl[2]))
1766
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1767
+ elif elements_basalt[i][j][0] == "Si":
1768
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemSi[2]))
1769
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1770
+ elif elements_basalt[i][j][0] == "K":
1771
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemK[2]))
1772
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1773
+ elif elements_basalt[i][j][0] == "Ca":
1774
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemCa[2]))
1775
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1776
+ elif elements_basalt[i][j][0] == "Mn":
1777
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemMn[2]))
1778
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1779
+ elif elements_basalt[i][j][0] == "Fe":
1780
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/(0.001*chemFe[2]))
1781
+ elements_basalt[i][j].append(elements_basalt[i][j][1]/dataM[i]*100)
1782
+ results_basalt = []
1783
+ for i in range(0, len(elements_basalt)):
1784
+ results_basalt.append(["basalt", round(dataM[i],3)])
1785
+ for i in range(0, len(elements_basalt)):
1786
+ for j in range(0, len(elements_basalt[i])):
1787
+ results_basalt[i].append([elements_basalt[i][j][0], round(elements_basalt[i][j][1],3), round(elements_basalt[i][j][2],1), round(elements_basalt[i][j][3],2)])
1788
+ #
1789
+ #print(results_basalt)
1790
+ results.append(results_basalt)
1791
+ #print("Results Basalt:")
1792
+ #for j in range(0, len(results_basalt)):
1793
+ # print(j+1, ":", results_basalt[j])
1794
+ #
1795
+ # WRITING A CSV FILE
1796
+ try:
1797
+ Geochemistry_Basalt = open("./outputs/Geochemistry_Basalt.csv","w")
1798
+ except:
1799
+ print("Error")
1800
+ sys.exit(0)
1801
+ Geochemistry_Basalt.write(str("rock")+","+str("sample mass")+","+str("H")+","+str("O")+","+str("F")+","+str("Na")+","+str("Mg")+","+str("Al")+","+str("Si")+","+str("K")+","+str("Ca")+","+str("Mn")+","+str("Fe")+"\n")
1802
+ for i in range(0, len(results_basalt)):
1803
+ Geochemistry_Basalt.write(str(results_basalt[i][0])+","+str(results_basalt[i][1])+","+str(results_basalt[i][9][1]/results_basalt[i][1])+","+str(results_basalt[i][6][1]/results_basalt[i][1])+","+str(results_basalt[i][10][1]/results_basalt[i][1])+","+str(results_basalt[i][2][1]/results_basalt[i][1])+","+str(results_basalt[i][7][1]/results_basalt[i][1])+","+str(results_basalt[i][4][1]/results_basalt[i][1])+","+str(results_basalt[i][5][1]/results_basalt[i][1])+","+str(results_basalt[i][11][1]/results_basalt[i][1])+","+str(results_basalt[i][3][1]/results_basalt[i][1])+","+str(results_basalt[i][12][1]/results_basalt[i][1])+","+str(results_basalt[i][8][1]/results_basalt[i][1])+"\n")
1804
+ #
1805
+ return results