gebpy 1.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. gebpy/__init__.py +55 -0
  2. gebpy/__pycache__/__init__.cpython-310.pyc +0 -0
  3. gebpy/adapters/__init__.py +0 -0
  4. gebpy/cli/__init__.py +0 -0
  5. gebpy/core/__init__.py +0 -0
  6. gebpy/core/chemistry/__init__.py +0 -0
  7. gebpy/core/chemistry/common.py +1369 -0
  8. gebpy/core/chemistry/elements.py +317 -0
  9. gebpy/core/chemistry/geochemistry.py +1728 -0
  10. gebpy/core/fluids/__init__.py +0 -0
  11. gebpy/core/io/__init__.py +0 -0
  12. gebpy/core/mathematics/__init__.py +0 -0
  13. gebpy/core/minerals/__init__.py +0 -0
  14. gebpy/core/minerals/carbonates.py +412 -0
  15. gebpy/core/minerals/common.py +555 -0
  16. gebpy/core/minerals/config.py +77 -0
  17. gebpy/core/minerals/cyclosilicates.py +0 -0
  18. gebpy/core/minerals/halides.py +0 -0
  19. gebpy/core/minerals/inosilicates.py +0 -0
  20. gebpy/core/minerals/nesosilicates.py +0 -0
  21. gebpy/core/minerals/organics.py +0 -0
  22. gebpy/core/minerals/oxides.py +589 -0
  23. gebpy/core/minerals/phosphates.py +0 -0
  24. gebpy/core/minerals/phospides.py +0 -0
  25. gebpy/core/minerals/phyllosilicates.py +436 -0
  26. gebpy/core/minerals/sorosilicates.py +0 -0
  27. gebpy/core/minerals/sulfates.py +0 -0
  28. gebpy/core/minerals/sulfides.py +459 -0
  29. gebpy/core/minerals/synthesis.py +201 -0
  30. gebpy/core/minerals/tectosilicates.py +433 -0
  31. gebpy/core/physics/__init__.py +0 -0
  32. gebpy/core/physics/common.py +53 -0
  33. gebpy/core/physics/geophysics.py +351 -0
  34. gebpy/core/rocks/__init__.py +0 -0
  35. gebpy/core/rocks/anisotropic_rocks.py +395 -0
  36. gebpy/core/rocks/common.py +95 -0
  37. gebpy/core/rocks/config.py +77 -0
  38. gebpy/core/rocks/isotropic_rocks.py +395 -0
  39. gebpy/core/rocks/sedimentary.py +385 -0
  40. gebpy/core/subsurface/__init__.py +0 -0
  41. gebpy/data_minerals/__init__.py +0 -0
  42. gebpy/data_minerals/albite.yaml +59 -0
  43. gebpy/data_minerals/anatase.yaml +43 -0
  44. gebpy/data_minerals/ankerite.yaml +47 -0
  45. gebpy/data_minerals/annite.yaml +57 -0
  46. gebpy/data_minerals/anorthite.yaml +59 -0
  47. gebpy/data_minerals/antigorite.yaml +53 -0
  48. gebpy/data_minerals/aragonite.yaml +48 -0
  49. gebpy/data_minerals/argutite.yaml +43 -0
  50. gebpy/data_minerals/arsenolite.yaml +40 -0
  51. gebpy/data_minerals/au3oxide.yaml +46 -0
  52. gebpy/data_minerals/avicennite.yaml +40 -0
  53. gebpy/data_minerals/azurite.yaml +53 -0
  54. gebpy/data_minerals/baddeleyite.yaml +49 -0
  55. gebpy/data_minerals/bismite.yaml +49 -0
  56. gebpy/data_minerals/boehmite.yaml +48 -0
  57. gebpy/data_minerals/brookite.yaml +46 -0
  58. gebpy/data_minerals/brucite.yaml +45 -0
  59. gebpy/data_minerals/bunsenite.yaml +40 -0
  60. gebpy/data_minerals/calcite.yaml +45 -0
  61. gebpy/data_minerals/cassiterite.yaml +43 -0
  62. gebpy/data_minerals/cerussite.yaml +48 -0
  63. gebpy/data_minerals/chamosite.yaml +56 -0
  64. gebpy/data_minerals/chlorite.yaml +75 -0
  65. gebpy/data_minerals/chromite.yaml +42 -0
  66. gebpy/data_minerals/chrysotile.yaml +53 -0
  67. gebpy/data_minerals/claudetite.yaml +49 -0
  68. gebpy/data_minerals/clinochlore.yaml +55 -0
  69. gebpy/data_minerals/cochromite.yaml +42 -0
  70. gebpy/data_minerals/corundum.yaml +43 -0
  71. gebpy/data_minerals/crocoite.yaml +51 -0
  72. gebpy/data_minerals/cuprite.yaml +40 -0
  73. gebpy/data_minerals/cuprospinel.yaml +42 -0
  74. gebpy/data_minerals/diaspore.yaml +48 -0
  75. gebpy/data_minerals/dolomite.yaml +47 -0
  76. gebpy/data_minerals/eastonite.yaml +57 -0
  77. gebpy/data_minerals/eskolaite.yaml +43 -0
  78. gebpy/data_minerals/fechlorite.yaml +61 -0
  79. gebpy/data_minerals/fecolumbite.yaml +48 -0
  80. gebpy/data_minerals/ferberite.yaml +51 -0
  81. gebpy/data_minerals/fetantalite.yaml +48 -0
  82. gebpy/data_minerals/franklinite.yaml +42 -0
  83. gebpy/data_minerals/gahnite.yaml +42 -0
  84. gebpy/data_minerals/galaxite.yaml +42 -0
  85. gebpy/data_minerals/geikielite.yaml +45 -0
  86. gebpy/data_minerals/gibbsite.yaml +51 -0
  87. gebpy/data_minerals/glauconite.yaml +69 -0
  88. gebpy/data_minerals/goethite.yaml +48 -0
  89. gebpy/data_minerals/groutite.yaml +48 -0
  90. gebpy/data_minerals/hematite.yaml +43 -0
  91. gebpy/data_minerals/hercynite.yaml +42 -0
  92. gebpy/data_minerals/huebnerite.yaml +51 -0
  93. gebpy/data_minerals/ikaite.yaml +53 -0
  94. gebpy/data_minerals/illite.yaml +55 -0
  95. gebpy/data_minerals/ilmenite.yaml +45 -0
  96. gebpy/data_minerals/jacobsite.yaml +42 -0
  97. gebpy/data_minerals/kalsilite.yaml +47 -0
  98. gebpy/data_minerals/kaolinite.yaml +59 -0
  99. gebpy/data_minerals/karelianite.yaml +43 -0
  100. gebpy/data_minerals/lime.yaml +40 -0
  101. gebpy/data_minerals/litharge.yaml +43 -0
  102. gebpy/data_minerals/magnesiochromite.yaml +42 -0
  103. gebpy/data_minerals/magnesioferrite.yaml +42 -0
  104. gebpy/data_minerals/magnesite.yaml +45 -0
  105. gebpy/data_minerals/magnetite.yaml +41 -0
  106. gebpy/data_minerals/malachite.yaml +53 -0
  107. gebpy/data_minerals/manganite.yaml +51 -0
  108. gebpy/data_minerals/manganochromite.yaml +42 -0
  109. gebpy/data_minerals/manganosite.yaml +40 -0
  110. gebpy/data_minerals/marialite.yaml +49 -0
  111. gebpy/data_minerals/massicot.yaml +46 -0
  112. gebpy/data_minerals/meionite.yaml +49 -0
  113. gebpy/data_minerals/mgchlorite.yaml +61 -0
  114. gebpy/data_minerals/mgcolumbite.yaml +48 -0
  115. gebpy/data_minerals/mgtantalite.yaml +48 -0
  116. gebpy/data_minerals/microcline.yaml +59 -0
  117. gebpy/data_minerals/minium.yaml +44 -0
  118. gebpy/data_minerals/mnchlorite.yaml +61 -0
  119. gebpy/data_minerals/mncolumbite.yaml +48 -0
  120. gebpy/data_minerals/mntantalite.yaml +48 -0
  121. gebpy/data_minerals/monteponite.yaml +40 -0
  122. gebpy/data_minerals/montmorillonite.yaml +77 -0
  123. gebpy/data_minerals/muscovite.yaml +55 -0
  124. gebpy/data_minerals/nanepheline.yaml +47 -0
  125. gebpy/data_minerals/nichlorite.yaml +61 -0
  126. gebpy/data_minerals/nichromite.yaml +42 -0
  127. gebpy/data_minerals/nimite.yaml +55 -0
  128. gebpy/data_minerals/nontronite.yaml +73 -0
  129. gebpy/data_minerals/orthoclase.yaml +53 -0
  130. gebpy/data_minerals/paratellurite.yaml +43 -0
  131. gebpy/data_minerals/pennantite.yaml +61 -0
  132. gebpy/data_minerals/periclase.yaml +40 -0
  133. gebpy/data_minerals/phlogopite.yaml +57 -0
  134. gebpy/data_minerals/plattnerite.yaml +43 -0
  135. gebpy/data_minerals/powellite.yaml +45 -0
  136. gebpy/data_minerals/pyrite.yaml +40 -0
  137. gebpy/data_minerals/pyrolusite.yaml +43 -0
  138. gebpy/data_minerals/pyrophanite.yaml +45 -0
  139. gebpy/data_minerals/pyrophyllite.yaml +59 -0
  140. gebpy/data_minerals/quartz.yaml +43 -0
  141. gebpy/data_minerals/rhodochrosite.yaml +45 -0
  142. gebpy/data_minerals/rutile.yaml +43 -0
  143. gebpy/data_minerals/saponite.yaml +77 -0
  144. gebpy/data_minerals/scheelite.yaml +45 -0
  145. gebpy/data_minerals/scrutinyite.yaml +46 -0
  146. gebpy/data_minerals/senarmontite.yaml +40 -0
  147. gebpy/data_minerals/siderite.yaml +45 -0
  148. gebpy/data_minerals/siderophyllite.yaml +57 -0
  149. gebpy/data_minerals/smithsonite.yaml +45 -0
  150. gebpy/data_minerals/spinel.yaml +42 -0
  151. gebpy/data_minerals/stishovite.yaml +43 -0
  152. gebpy/data_minerals/stolzite.yaml +45 -0
  153. gebpy/data_minerals/talc.yaml +53 -0
  154. gebpy/data_minerals/tistarite.yaml +43 -0
  155. gebpy/data_minerals/trevorite.yaml +42 -0
  156. gebpy/data_minerals/ulvoespinel.yaml +42 -0
  157. gebpy/data_minerals/uraninite.yaml +40 -0
  158. gebpy/data_minerals/valentinite.yaml +46 -0
  159. gebpy/data_minerals/vermiculite.yaml +69 -0
  160. gebpy/data_minerals/wulfenite.yaml +45 -0
  161. gebpy/data_minerals/wustite.yaml +40 -0
  162. gebpy/data_minerals/zincite.yaml +43 -0
  163. gebpy/data_minerals/zincochromite.yaml +42 -0
  164. gebpy/data_rocks/__init__.py +0 -0
  165. gebpy/data_rocks/dolostone.yaml +40 -0
  166. gebpy/data_rocks/limestone.yaml +40 -0
  167. gebpy/data_rocks/marl.yaml +50 -0
  168. gebpy/data_rocks/sandstone.yaml +39 -0
  169. gebpy/data_rocks/shale.yaml +50 -0
  170. gebpy/gebpy_app.py +8732 -0
  171. gebpy/gui/__init__.py +0 -0
  172. gebpy/lib/images/GebPy_Header.png +0 -0
  173. gebpy/lib/images/GebPy_Icon.png +0 -0
  174. gebpy/lib/images/GebPy_Logo.png +0 -0
  175. gebpy/main.py +29 -0
  176. gebpy/modules/__init__.py +0 -0
  177. gebpy/modules/__pycache__/__init__.cpython-310.pyc +0 -0
  178. gebpy/modules/__pycache__/metamorphics.cpython-310.pyc +0 -0
  179. gebpy/modules/__pycache__/silicates.cpython-310.pyc +0 -0
  180. gebpy/modules/carbonates.py +2658 -0
  181. gebpy/modules/chemistry.py +1369 -0
  182. gebpy/modules/core.py +1805 -0
  183. gebpy/modules/elements.py +317 -0
  184. gebpy/modules/evaporites.py +1299 -0
  185. gebpy/modules/exploration.py +1145 -0
  186. gebpy/modules/fluids.py +339 -0
  187. gebpy/modules/geochemistry.py +1727 -0
  188. gebpy/modules/geophysics.py +351 -0
  189. gebpy/modules/gui.py +9093 -0
  190. gebpy/modules/gui_elements.py +145 -0
  191. gebpy/modules/halides.py +485 -0
  192. gebpy/modules/igneous.py +2241 -0
  193. gebpy/modules/metamorphics.py +3222 -0
  194. gebpy/modules/mineralogy.py +442 -0
  195. gebpy/modules/minerals.py +7954 -0
  196. gebpy/modules/ore.py +1648 -0
  197. gebpy/modules/organics.py +530 -0
  198. gebpy/modules/oxides.py +9057 -0
  199. gebpy/modules/petrophysics.py +98 -0
  200. gebpy/modules/phosphates.py +589 -0
  201. gebpy/modules/phospides.py +194 -0
  202. gebpy/modules/plotting.py +619 -0
  203. gebpy/modules/pyllosilicates.py +380 -0
  204. gebpy/modules/sedimentary_rocks.py +908 -0
  205. gebpy/modules/sequences.py +2166 -0
  206. gebpy/modules/series.py +1625 -0
  207. gebpy/modules/silicates.py +11102 -0
  208. gebpy/modules/siliciclastics.py +1846 -0
  209. gebpy/modules/subsurface_2d.py +179 -0
  210. gebpy/modules/sulfates.py +1629 -0
  211. gebpy/modules/sulfides.py +4786 -0
  212. gebpy/plotting/__init__.py +0 -0
  213. gebpy/ui_nb/__init__.py +0 -0
  214. gebpy/user_data/.gitkeep +0 -0
  215. gebpy-1.1.3.dist-info/LICENSE +165 -0
  216. gebpy-1.1.3.dist-info/METADATA +207 -0
  217. gebpy-1.1.3.dist-info/RECORD +254 -0
  218. gebpy-1.1.3.dist-info/WHEEL +5 -0
  219. gebpy-1.1.3.dist-info/entry_points.txt +2 -0
  220. gebpy-1.1.3.dist-info/top_level.txt +1 -0
  221. modules/__init__.py +0 -0
  222. modules/carbonates.py +2658 -0
  223. modules/chemistry.py +1369 -0
  224. modules/core.py +1805 -0
  225. modules/elements.py +317 -0
  226. modules/evaporites.py +1299 -0
  227. modules/exploration.py +765 -0
  228. modules/fluids.py +339 -0
  229. modules/geochemistry.py +1727 -0
  230. modules/geophysics.py +337 -0
  231. modules/gui.py +9093 -0
  232. modules/gui_elements.py +145 -0
  233. modules/halides.py +485 -0
  234. modules/igneous.py +2196 -0
  235. modules/metamorphics.py +2699 -0
  236. modules/mineralogy.py +442 -0
  237. modules/minerals.py +7954 -0
  238. modules/ore.py +1628 -0
  239. modules/organics.py +530 -0
  240. modules/oxides.py +9057 -0
  241. modules/petrophysics.py +98 -0
  242. modules/phosphates.py +589 -0
  243. modules/phospides.py +194 -0
  244. modules/plotting.py +619 -0
  245. modules/pyllosilicates.py +380 -0
  246. modules/sedimentary_rocks.py +908 -0
  247. modules/sequences.py +2166 -0
  248. modules/series.py +1625 -0
  249. modules/silicates.py +11102 -0
  250. modules/siliciclastics.py +1830 -0
  251. modules/subsurface_2d.py +179 -0
  252. modules/sulfates.py +1629 -0
  253. modules/sulfides.py +4786 -0
  254. notebooks/__init__.py +0 -0
@@ -0,0 +1,1369 @@
1
+ #!/usr/bin/env python
2
+ # -*-coding: utf-8 -*-
3
+
4
+ # -----------------------------------------------
5
+
6
+ # Name: chemistry.py
7
+ # Author: Maximilian A. Beeskow
8
+ # Version: 1.0
9
+ # Date: 15.12.2025
10
+
11
+ # -----------------------------------------------
12
+
13
+ # MODULES
14
+ import numpy as np
15
+ import re
16
+
17
+ # CLASSES
18
+ class PeriodicSystem():
19
+ """ Class that generates the chemical and physical data of the elements"""
20
+ #
21
+ def __init__(self, name=None, atomicnumber=None):
22
+ """
23
+ :param name: name of the chemical element
24
+ :param atomicnumber: atomic number of the chemical element
25
+ """
26
+ self.name = name
27
+ self.atomicnumber = atomicnumber
28
+ #
29
+ def get_data(self):
30
+ data = []
31
+ # [symbol, atomic number, atomic mass, density, bulk modulus, shear modulus, young's modulus, vP,
32
+ # vS, resistivity]
33
+ if self.name in ["H", "Hydrogen", "hydrogen"] or self.atomicnumber == 1:
34
+ mass_molar = 1.008
35
+ density = 0.0899
36
+ bulk_mod = round(1.4*10**(-4), 5)
37
+ shear_mod = 0.0
38
+ young_mod = (9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod)
39
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
40
+ v_s = np.sqrt((shear_mod*10**9)/(density))
41
+ resistivity = 0.0
42
+ thermal_cond = 0.1805
43
+ data = ["H", 1, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
44
+ thermal_cond]
45
+ elif self.name in ["He", "Helium", "helium"] or self.atomicnumber == 2:
46
+ mass_molar = 4.0026
47
+ density = 0.1785
48
+ bulk_mod = round(1.01*10**(-5), 7)
49
+ shear_mod = 0.0
50
+ young_mod = (9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod)
51
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
52
+ v_s = np.sqrt((shear_mod*10**9)/(density))
53
+ resistivity = 0.0
54
+ thermal_cond = 0.1513
55
+ data = ["He", 2, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
56
+ thermal_cond]
57
+ elif self.name in ["Li", "Lithium", "lithium"] or self.atomicnumber == 3:
58
+ mass_molar = 6.938
59
+ density = 530
60
+ bulk_mod = 11
61
+ shear_mod = 4.2
62
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
63
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
64
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
65
+ resistivity = round(9.4*10**(-8), 9)
66
+ thermal_cond = 85
67
+ data = ["Li", 3, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
68
+ thermal_cond]
69
+ elif self.name in ["Be", "Beryllium", "beryllium"] or self.atomicnumber == 4:
70
+ mass_molar = 9.0122
71
+ density = 1850
72
+ bulk_mod = 130
73
+ shear_mod = 132
74
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
75
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
76
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
77
+ resistivity = round(4.0*10**(-8), 9)
78
+ thermal_cond = 190
79
+ data = ["Be", 4, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
80
+ thermal_cond]
81
+ elif self.name in ["B", "Boron", "boron"] or self.atomicnumber == 5:
82
+ mass_molar = 10.806
83
+ density = 2460
84
+ bulk_mod = 320
85
+ v_p = 16200
86
+ shear_mod = round((3*(density*v_p**2 - bulk_mod*10**9))/(4)*10**(-9), 1)
87
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
88
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
89
+ resistivity = 10000
90
+ thermal_cond = 27
91
+ data = ["B", 5, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
92
+ thermal_cond]
93
+ elif self.name in ["C", "Carbon", "carbon"] or self.atomicnumber == 6:
94
+ mass_molar = 12.009
95
+ density = 3510
96
+ bulk_mod = 33
97
+ v_p = 18350
98
+ shear_mod = round((3*(density*v_p**2 - bulk_mod*10**9))/(4)*10**(-9), 1)
99
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
100
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
101
+ resistivity = 1*10**(-5)
102
+ thermal_cond = 140
103
+ data = ["C", 6, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
104
+ thermal_cond]
105
+ elif self.name in ["N", "Nitrogen", "nitrogen"] or self.atomicnumber == 7:
106
+ mass_molar = 14.007
107
+ density = 1.170
108
+ bulk_mod = 2
109
+ v_p = 333.6
110
+ shear_mod = 0.0
111
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
112
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
113
+ resistivity = 0.0
114
+ thermal_cond = 0.02583
115
+ data = ["N", 7, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
116
+ thermal_cond]
117
+ elif self.name in ["O", "Oxygen", "oxygen"] or self.atomicnumber == 8:
118
+ mass_molar = 15.999
119
+ density = 1.33
120
+ v_p = 317.5
121
+ shear_mod = 0.0
122
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
123
+ shear_mod = 0.0
124
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
125
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
126
+ resistivity = 0.0
127
+ thermal_cond = 0.02658
128
+ data = ["O", 8, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
129
+ thermal_cond]
130
+ elif self.name in ["F", "Flourine", "flourine"] or self.atomicnumber == 9:
131
+ mass_molar = 18.998
132
+ density = 1650
133
+ bulk_mod = 5
134
+ shear_mod = 2
135
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
136
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
137
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
138
+ resistivity = 0.0
139
+ thermal_cond = 0.0277
140
+ data = ["F", 9, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
141
+ thermal_cond]
142
+ elif self.name in ["Ne", "Neon", "neon"] or self.atomicnumber == 10:
143
+ mass_molar = 20.180
144
+ density = 0.84
145
+ v_p = 936
146
+ shear_mod = 0.0
147
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
148
+ shear_mod = 0.0
149
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
150
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
151
+ resistivity = 0.0
152
+ thermal_cond = 0.0491
153
+ data = ["Ne", 10, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
154
+ thermal_cond]
155
+ elif self.name in ["Na", "Sodium", "sodium"] or self.atomicnumber == 11:
156
+ mass_molar = 22.990
157
+ density = 970
158
+ bulk_mod = 6.3
159
+ shear_mod = 3.3
160
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
161
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
162
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
163
+ resistivity = round(4.9*10**(-8), 9)
164
+ thermal_cond = 140
165
+ data = ["Na", 11, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
166
+ thermal_cond]
167
+ elif self.name in ["Mg", "Magnesium", "magnesium"] or self.atomicnumber == 12:
168
+ mass_molar = 24.304
169
+ density = 1740
170
+ bulk_mod = 45
171
+ shear_mod = 17
172
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
173
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
174
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
175
+ resistivity = round(4.4*10**(-8), 9)
176
+ thermal_cond = 160
177
+ data = ["Mg", 12, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
178
+ thermal_cond]
179
+ elif self.name in ["Al", "Aluminium", "aluminium"] or self.atomicnumber == 13:
180
+ mass_molar = 26.982
181
+ density = 2700
182
+ bulk_mod = 76
183
+ shear_mod = 26
184
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
185
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
186
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
187
+ resistivity = round(2.7*10**(-8), 9)
188
+ thermal_cond = 235
189
+ data = ["Al", 13, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
190
+ thermal_cond]
191
+ elif self.name in ["Si", "Silicon", "silicon"] or self.atomicnumber == 14:
192
+ mass_molar = 28.085
193
+ density = 2330
194
+ bulk_mod = 100
195
+ young_mod = 47
196
+ shear_mod = round((3*bulk_mod*young_mod)/(9*bulk_mod - young_mod), 1)
197
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
198
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
199
+ resistivity = 0.001
200
+ thermal_cond = 150
201
+ data = ["Si", 14, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
202
+ thermal_cond]
203
+ elif self.name in ["P", "Phosphorus", "phosphorus"] or self.atomicnumber == 15:
204
+ mass_molar = 30.974
205
+ density = 1940
206
+ bulk_mod = 36.09
207
+ shear_mod = 19.86
208
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
209
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
210
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
211
+ resistivity = round(10*10**(-8), 9)
212
+ thermal_cond = 0.236
213
+ data = ["P", 15, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
214
+ thermal_cond]
215
+ elif self.name in ["S", "Sulfur", "sulfur"] or self.atomicnumber == 16:
216
+ mass_molar = 32.06
217
+ density = 2060
218
+ bulk_mod = 6
219
+ shear_mod = 4
220
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
221
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
222
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
223
+ resistivity = 1*10**(15)
224
+ thermal_cond = 0.205
225
+ data = ["S", 16, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
226
+ thermal_cond]
227
+ elif self.name in ["Cl", "Chlorine", "chlorine"] or self.atomicnumber == 17:
228
+ mass_molar = 35.45
229
+ density = 2.95
230
+ v_p = 206
231
+ shear_mod = 0.0
232
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
233
+ shear_mod = 0.0
234
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
235
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
236
+ resistivity = 100
237
+ thermal_cond = 0.0089
238
+ data = ["Cl", 17, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
239
+ thermal_cond]
240
+ elif self.name in ["Ar", "Argon", "argon"] or self.atomicnumber == 18:
241
+ mass_molar = 39.948
242
+ density = 1.66
243
+ v_p = 319
244
+ shear_mod = 0.0
245
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
246
+ shear_mod = 0.0
247
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
248
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
249
+ resistivity = 0.0
250
+ thermal_cond = 0.01772
251
+ data = ["Ar", 18, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
252
+ thermal_cond]
253
+ elif self.name in ["K", "Potassium", "potassium"] or self.atomicnumber == 19:
254
+ mass_molar = 39.098
255
+ density = 860
256
+ bulk_mod = 3.1
257
+ shear_mod = 1.3
258
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
259
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
260
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
261
+ resistivity = round(7.5*10**(-8), 9)
262
+ thermal_cond = 100
263
+ data = ["K", 19, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
264
+ thermal_cond]
265
+ elif self.name in ["Ca", "Calcium", "calcium"] or self.atomicnumber == 20:
266
+ mass_molar = 40.078
267
+ density = 1540
268
+ bulk_mod = 17
269
+ shear_mod = 7.4
270
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
271
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
272
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
273
+ resistivity = round(3.4*10**(-8), 9)
274
+ thermal_cond = 200
275
+ data = ["Ca", 20, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
276
+ thermal_cond]
277
+ elif self.name in ["Sc", "Scandium", "scandium"] or self.atomicnumber == 21:
278
+ mass_molar = 44.956
279
+ density = 2990
280
+ bulk_mod = 57
281
+ shear_mod = 29
282
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
283
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
284
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
285
+ resistivity = round(55*10**(-8), 9)
286
+ thermal_cond = 16
287
+ data = ["Sc", 21, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
288
+ thermal_cond]
289
+ elif self.name in ["Ti", "Titanium", "titanium"] or self.atomicnumber == 22:
290
+ mass_molar = 47.867
291
+ density = 4510
292
+ bulk_mod = 110
293
+ shear_mod = 44
294
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
295
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
296
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
297
+ resistivity = round(40*10**(-8), 9)
298
+ thermal_cond = 21.9
299
+ data = ["Ti", 22, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
300
+ thermal_cond]
301
+ elif self.name in ["V", "Vanadium", "vanadium"] or self.atomicnumber == 23:
302
+ mass_molar = 50.942
303
+ density = 6090
304
+ bulk_mod = 160
305
+ shear_mod = 47
306
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
307
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
308
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
309
+ resistivity = round(20*10**(-8), 9)
310
+ thermal_cond = 30.7
311
+ data = ["V", 23, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
312
+ thermal_cond]
313
+ elif self.name in ["Cr", "Chromium", "chromium"] or self.atomicnumber == 24:
314
+ mass_molar = 51.996
315
+ density = 7140
316
+ bulk_mod = 160
317
+ shear_mod = 115
318
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
319
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
320
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
321
+ resistivity = round(12.7*10**(-8), 9)
322
+ thermal_cond = 94
323
+ data = ["Cr", 24, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
324
+ thermal_cond]
325
+ elif self.name in ["Mn", "Manganese", "manganese"] or self.atomicnumber == 25:
326
+ mass_molar = 54.938
327
+ density = 7440
328
+ bulk_mod = 160
329
+ young_mod = 198
330
+ shear_mod = round((3*bulk_mod*young_mod)/(9*bulk_mod - young_mod), 1)
331
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
332
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
333
+ resistivity = round(144*10**(-8), 9)
334
+ thermal_cond = 7.8
335
+ data = ["Mn", 25, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
336
+ thermal_cond]
337
+ elif self.name in ["Fe", "Iron", "iron"] or self.atomicnumber == 26:
338
+ mass_molar = 55.845
339
+ density = 7870
340
+ bulk_mod = 170
341
+ shear_mod = 82
342
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
343
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
344
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
345
+ resistivity = round(10*10**(-8), 9)
346
+ thermal_cond = 80
347
+ data = ["Fe", 26, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
348
+ thermal_cond]
349
+ elif self.name in ["Co", "Cobalt", "cobalt"] or self.atomicnumber == 27:
350
+ mass_molar = 58.933
351
+ density = 8890
352
+ bulk_mod = 180
353
+ shear_mod = 75
354
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
355
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
356
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
357
+ resistivity = round(6*10**(-8), 9)
358
+ thermal_cond = 100
359
+ data = ["Co", 27, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
360
+ thermal_cond]
361
+ elif self.name in ["Ni", "Nickel", "nickel"] or self.atomicnumber == 28:
362
+ mass_molar = 58.693
363
+ density = 8910
364
+ bulk_mod = 180
365
+ shear_mod = 76
366
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
367
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
368
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
369
+ resistivity = round(7.2*10**(-8), 9)
370
+ thermal_cond = 91
371
+ data = ["Ni", 28, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
372
+ thermal_cond]
373
+ elif self.name in ["Cu", "Copper", "copper"] or self.atomicnumber == 29:
374
+ mass_molar = 63.546
375
+ density = 8920
376
+ bulk_mod = 140
377
+ shear_mod = 48
378
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
379
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
380
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
381
+ resistivity = round(1.72*10**(-8), 10)
382
+ thermal_cond = 400
383
+ data = ["Cu", 29, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
384
+ thermal_cond]
385
+ elif self.name in ["Zn", "Zinc", "zinc"] or self.atomicnumber == 30:
386
+ mass_molar = 65.38
387
+ density = 7140
388
+ bulk_mod = 70
389
+ shear_mod = 43
390
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
391
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
392
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
393
+ resistivity = round(6.0*10**(-8), 10)
394
+ thermal_cond = 116
395
+ data = ["Zn", 30, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
396
+ thermal_cond]
397
+ elif self.name in ["Ga", "Gallium", "gallium"] or self.atomicnumber == 31:
398
+ mass_molar = 69.723
399
+ density = 5910
400
+ bulk_mod = 50
401
+ shear_mod = 35
402
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
403
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
404
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
405
+ resistivity = round(14*10**(-8), 10)
406
+ thermal_cond = 29
407
+ data = ["Ga", 31, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
408
+ thermal_cond]
409
+ elif self.name in ["Ge", "Germanium", "germanium"] or self.atomicnumber == 32:
410
+ mass_molar = 72.630
411
+ density = 5320
412
+ bulk_mod = 59.93
413
+ shear_mod = 30.47
414
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
415
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
416
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
417
+ resistivity = round(50000*10**(-8), 10)
418
+ thermal_cond = 60
419
+ data = ["Ge", 32, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
420
+ thermal_cond]
421
+ elif self.name in ["As", "Arsenic", "arsenic"] or self.atomicnumber == 33:
422
+ mass_molar = 74.922
423
+ density = 5720
424
+ bulk_mod = 22
425
+ young_mod = 8
426
+ shear_mod = round((3*bulk_mod*young_mod)/(9*bulk_mod - young_mod), 1)
427
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
428
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
429
+ resistivity = round(33*10**(-8), 10)
430
+ thermal_cond = 50
431
+ data = ["As", 33, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
432
+ thermal_cond]
433
+ elif self.name in ["Se", "Selenium", "selenium"] or self.atomicnumber == 34:
434
+ mass_molar = 78.971
435
+ density = 4820
436
+ bulk_mod = 8.3
437
+ shear_mod = 3.7
438
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
439
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
440
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
441
+ resistivity = round(10*10**(-8), 10)
442
+ thermal_cond = 0.52
443
+ data = ["Se", 34, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
444
+ thermal_cond]
445
+ elif self.name in ["Br", "Bromine", "bromine"] or self.atomicnumber == 35:
446
+ mass_molar = 79.901
447
+ density = 3140
448
+ bulk_mod = 1.9
449
+ shear_mod = 1.425 # estimated
450
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
451
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
452
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
453
+ resistivity = round(1*10**18*10**(-8), 10)
454
+ thermal_cond = 0.12
455
+ data = ["Br", 35, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
456
+ thermal_cond]
457
+ elif self.name in ["Kr", "Krypton", "krypton"] or self.atomicnumber == 36:
458
+ mass_molar = 83.798
459
+ density = 3.48
460
+ v_p = 1120
461
+ shear_mod = 0.0
462
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
463
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
464
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
465
+ resistivity = 0.0
466
+ thermal_cond = 0.00943
467
+ data = ["Kr", 36, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
468
+ thermal_cond]
469
+ elif self.name in ["Rb", "Rubidium", "rubidium"] or self.atomicnumber == 37:
470
+ mass_molar = 85.468
471
+ density = 1530
472
+ bulk_mod = 2.5
473
+ young_mod = 2.4
474
+ shear_mod = round((3*bulk_mod*young_mod)/(9*bulk_mod - young_mod), 1)
475
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
476
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
477
+ resistivity = round(13.3*10**(-8), 10)
478
+ thermal_cond = 58
479
+ data = ["Rb", 37, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
480
+ thermal_cond]
481
+ elif self.name in ["Sr", "Strontium", "strontium"] or self.atomicnumber == 38:
482
+ mass_molar = 87.62
483
+ density = 2630
484
+ shear_mod = 6.1
485
+ poisson = 0.28
486
+ bulk_mod = round((2*shear_mod*(1+poisson))/(3*(1-2*poisson)), 1)
487
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
488
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
489
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
490
+ resistivity = round(13.5*10**(-8), 10)
491
+ thermal_cond = 35
492
+ data = ["Sr", 38, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
493
+ thermal_cond]
494
+ elif self.name in ["Y", "Yttrium", "yttrium"] or self.atomicnumber == 39:
495
+ mass_molar = 88.906
496
+ density = 4470
497
+ bulk_mod = 41
498
+ shear_mod = 26
499
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
500
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
501
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
502
+ resistivity = round(60*10**(-8), 9)
503
+ thermal_cond = 17.2
504
+ data = ["Y", 39, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
505
+ thermal_cond]
506
+ elif self.name in ["Zr", "Zirconium", "zirconium"] or self.atomicnumber == 40:
507
+ mass_molar = 91.224
508
+ density = 6510
509
+ shear_mod = 33
510
+ young_mod = 68
511
+ bulk_mod = round((young_mod*shear_mod)/(3*(3*shear_mod-young_mod)), 1)
512
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
513
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
514
+ resistivity = round(43.3*10**(-8), 9)
515
+ thermal_cond = 22.7
516
+ data = ["Zr", 40, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
517
+ thermal_cond]
518
+ elif self.name in ["Nb", "Niobium", "niobium"] or self.atomicnumber == 41:
519
+ mass_molar = 92.906
520
+ density = 8580
521
+ bulk_mod = 170
522
+ shear_mod = 38
523
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
524
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
525
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
526
+ resistivity = round(15.2*10**(-8), 9)
527
+ thermal_cond = 54
528
+ data = ["Nb", 41, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
529
+ thermal_cond]
530
+ elif self.name in ["Mo", "Molybdenum", "molybdenum"] or self.atomicnumber == 42:
531
+ mass_molar = 95.95
532
+ density = 10280
533
+ bulk_mod = 230
534
+ shear_mod = 20
535
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
536
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
537
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
538
+ resistivity = round(5.5*10**(-8), 9)
539
+ thermal_cond = 139
540
+ data = ["Mo", 42, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
541
+ thermal_cond]
542
+ elif self.name in ["Tc", "Technetium", "technetium"] or self.atomicnumber == 43:
543
+ mass_molar = 97
544
+ density = 11490
545
+ bulk_mod = 281
546
+ shear_mod = 123
547
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
548
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
549
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
550
+ resistivity = 0.0000185
551
+ thermal_cond = 50.6
552
+ data = ["Tc", 43, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
553
+ thermal_cond]
554
+ elif self.name in ["Ru", "Ruthenium", "ruthenium"] or self.atomicnumber == 44:
555
+ mass_molar = 101.07
556
+ density = 12450
557
+ bulk_mod = 220
558
+ shear_mod = 173
559
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
560
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
561
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
562
+ resistivity = round(7.1*10**(-8), 9)
563
+ thermal_cond = 120
564
+ data = ["Ru", 44, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
565
+ thermal_cond]
566
+ elif self.name in ["Rh", "Rhodium", "rhodium"] or self.atomicnumber == 45:
567
+ mass_molar = 102.91
568
+ density = 12410
569
+ bulk_mod = 380
570
+ shear_mod = 150
571
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
572
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
573
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
574
+ resistivity = round(4.3*10**(-8), 9)
575
+ thermal_cond = 150
576
+ data = ["Rh", 45, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
577
+ thermal_cond]
578
+ elif self.name in ["Pd", "Palladium", "palladium"] or self.atomicnumber == 46:
579
+ mass_molar = 106.42
580
+ density = 12020
581
+ bulk_mod = 180
582
+ shear_mod = 44
583
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
584
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
585
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
586
+ resistivity = round(10.8*10**(-8), 9)
587
+ thermal_cond = 72
588
+ data = ["Pd", 46, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
589
+ thermal_cond]
590
+ elif self.name in ["Ag", "Silver", "silver"] or self.atomicnumber == 47:
591
+ mass_molar = 107.87
592
+ density = 10490
593
+ bulk_mod = 100
594
+ shear_mod = 30
595
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
596
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
597
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
598
+ resistivity = round(1.63*10**(-8), 9)
599
+ thermal_cond = 430
600
+ data = ["Ag", 47, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
601
+ thermal_cond]
602
+ elif self.name in ["Cd", "Cadmium", "cadmium"] or self.atomicnumber == 48:
603
+ mass_molar = 112.41
604
+ density = 8640
605
+ bulk_mod = 42
606
+ shear_mod = 19
607
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
608
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
609
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
610
+ resistivity = round(7*10**(-8), 9)
611
+ thermal_cond = 97
612
+ data = ["Cd", 48, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
613
+ thermal_cond]
614
+ elif self.name in ["In", "Indium", "indium"] or self.atomicnumber == 49:
615
+ mass_molar = 114.82
616
+ density = 7310
617
+ shear_mod = 4.4
618
+ poisson = 0.4498
619
+ bulk_mod = round((2*shear_mod*(1+poisson))/(3*(1-2*poisson)), 1)
620
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
621
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
622
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
623
+ resistivity = round(8*10**(-8), 9)
624
+ thermal_cond = 82
625
+ data = ["In", 49, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
626
+ thermal_cond]
627
+ elif self.name in ["Sn", "Tin", "tin"] or self.atomicnumber == 50:
628
+ mass_molar = 118.71
629
+ density = 7290
630
+ bulk_mod = 58
631
+ shear_mod = 18
632
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
633
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
634
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
635
+ resistivity = round(11.5*10**(-8), 9)
636
+ thermal_cond = 66.6
637
+ data = ["Sn", 50, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
638
+ thermal_cond]
639
+ elif self.name in ["Sb", "Antimony", "antimony"] or self.atomicnumber == 51:
640
+ mass_molar = 121.76
641
+ density = 6690
642
+ bulk_mod = 42
643
+ shear_mod = 20
644
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
645
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
646
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
647
+ resistivity = round(40*10**(-8), 9)
648
+ thermal_cond = 24
649
+ data = ["Sb", 51, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
650
+ thermal_cond]
651
+ elif self.name in ["Te", "Tellurium", "tellurium"] or self.atomicnumber == 52:
652
+ mass_molar = 127.60
653
+ density = 6250
654
+ bulk_mod = 65
655
+ shear_mod = 16
656
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
657
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
658
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
659
+ resistivity = round(10000*10**(-8), 9)
660
+ thermal_cond = 3
661
+ data = ["Te", 52, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
662
+ thermal_cond]
663
+ elif self.name in ["I", "Iodine", "iodine"] or self.atomicnumber == 53:
664
+ mass_molar = 126.90
665
+ density = 4940
666
+ bulk_mod = 7.7
667
+ shear_mod = 6.16 # estimated
668
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
669
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
670
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
671
+ resistivity = round(10**15*10**(-8), 9)
672
+ thermal_cond = 0.449
673
+ data = ["I", 53, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
674
+ thermal_cond]
675
+ elif self.name in ["Xe", "Xenon", "xenon"] or self.atomicnumber == 54:
676
+ mass_molar = 131.29
677
+ density = 4.49
678
+ v_p = 1090
679
+ shear_mod = 0.0
680
+ bulk_mod = round(v_p**2*density*10**3*10**(-9), 3)
681
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
682
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
683
+ resistivity = 0.0
684
+ thermal_cond = 0.00569
685
+ data = ["Xe", 54, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
686
+ thermal_cond]
687
+ elif self.name in ["Cs", "Caesium", "caesium"] or self.atomicnumber == 55:
688
+ mass_molar = 132.91
689
+ density = 1900
690
+ bulk_mod = 1.6
691
+ young_mod = 1.7
692
+ shear_mod = round((3*bulk_mod*young_mod)/(9*bulk_mod - young_mod), 1)
693
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
694
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
695
+ resistivity = round(21*10**(-8), 10)
696
+ thermal_cond = 36
697
+ data = ["Cs", 55, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
698
+ thermal_cond]
699
+ elif self.name in ["Ba", "Barium", "barium"] or self.atomicnumber == 56:
700
+ mass_molar = 137.33
701
+ density = 3650
702
+ bulk_mod = 9.6
703
+ shear_mod = 4.9
704
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
705
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
706
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
707
+ resistivity = round(34*10**(-8), 9)
708
+ thermal_cond = 18
709
+ data = ["Ba", 56, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
710
+ thermal_cond]
711
+ elif self.name in ["La", "Lanthanum", "lanthanum"] or self.atomicnumber == 57:
712
+ mass_molar = 138.91
713
+ density = 6160
714
+ bulk_mod = 28
715
+ shear_mod = 14
716
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
717
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
718
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
719
+ resistivity = round(61.5*10**(-8), 9)
720
+ thermal_cond = 13
721
+ data = ["La", 57, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
722
+ thermal_cond]
723
+ elif self.name in ["Ce", "Cerium", "cerium"] or self.atomicnumber == 58:
724
+ mass_molar = 140.12
725
+ density = 6770
726
+ bulk_mod = 22
727
+ shear_mod = 14
728
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
729
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
730
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
731
+ resistivity = round(74*10**(-8), 9)
732
+ thermal_cond = 11
733
+ data = ["Ce", 58, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
734
+ thermal_cond]
735
+ elif self.name in ["Pr", "Prasaeodymium", "prasaeodymium"] or self.atomicnumber == 59:
736
+ mass_molar = 140.91
737
+ density = 6480
738
+ bulk_mod = 29
739
+ shear_mod = 15
740
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
741
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
742
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
743
+ resistivity = round(70*10**(-8), 9)
744
+ thermal_cond = 13
745
+ data = ["Pr", 59, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
746
+ thermal_cond]
747
+ elif self.name in ["Nd", "Neodymium", "neodymium"] or self.atomicnumber == 60:
748
+ mass_molar = 144.24
749
+ density = 7000
750
+ bulk_mod = 32
751
+ shear_mod = 16
752
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
753
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
754
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
755
+ resistivity = round(64.3*10**(-8), 9)
756
+ thermal_cond = 17
757
+ data = ["Nd", 60, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
758
+ thermal_cond]
759
+ elif self.name in ["Pm", "Promethium", "promethium"] or self.atomicnumber == 61:
760
+ mass_molar = 145
761
+ density = 7220
762
+ bulk_mod = 33
763
+ shear_mod = 18
764
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
765
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
766
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
767
+ resistivity = round(75*10**(-8), 9)
768
+ thermal_cond = 15
769
+ data = ["Pm", 61, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
770
+ thermal_cond]
771
+ elif self.name in ["Sm", "Samarium", "samarium"] or self.atomicnumber == 62:
772
+ mass_molar = 150.36
773
+ density = 7540
774
+ bulk_mod = 38
775
+ shear_mod = 20
776
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
777
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
778
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
779
+ resistivity = round(94*10**(-8), 9)
780
+ thermal_cond = 13
781
+ data = ["Sm", 62, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
782
+ thermal_cond]
783
+ elif self.name in ["Eu", "Europium", "europium"] or self.atomicnumber == 63:
784
+ mass_molar = 151.96
785
+ density = 5250
786
+ bulk_mod = 8.3
787
+ shear_mod = 7.9
788
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
789
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
790
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
791
+ resistivity = round(90*10**(-8), 9)
792
+ thermal_cond = 14
793
+ data = ["Eu", 63, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
794
+ thermal_cond]
795
+ elif self.name in ["Gd", "Gadolinium", "gadolinium"] or self.atomicnumber == 64:
796
+ mass_molar = 157.25
797
+ density = 7890
798
+ bulk_mod = 38
799
+ shear_mod = 22
800
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
801
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
802
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
803
+ resistivity = round(131*10**(-8), 9)
804
+ thermal_cond = 11
805
+ data = ["Gd", 64, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
806
+ thermal_cond]
807
+ elif self.name in ["Tb", "Terbium", "terbium"] or self.atomicnumber == 65:
808
+ mass_molar = 158.93
809
+ density = 8250
810
+ bulk_mod = 38.7
811
+ shear_mod = 22
812
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
813
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
814
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
815
+ resistivity = round(115*10**(-8), 9)
816
+ thermal_cond = 11
817
+ data = ["Tb", 65, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
818
+ thermal_cond]
819
+ elif self.name in ["Dy", "Dysprosium", "dysprosium"] or self.atomicnumber == 66:
820
+ mass_molar = 162.50
821
+ density = 8560
822
+ bulk_mod = 41
823
+ shear_mod = 25
824
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
825
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
826
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
827
+ resistivity = round(92.6*10**(-8), 9)
828
+ thermal_cond = 11
829
+ data = ["Dy", 66, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
830
+ thermal_cond]
831
+ elif self.name in ["Ho", "Holmium", "holmium"] or self.atomicnumber == 67:
832
+ mass_molar = 164.93
833
+ density = 8780
834
+ bulk_mod = 40
835
+ shear_mod = 26
836
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
837
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
838
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
839
+ resistivity = round(81.4*10**(-8), 9)
840
+ thermal_cond = 16
841
+ data = ["Ho", 67, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
842
+ thermal_cond]
843
+ elif self.name in ["Er", "Erbium", "erbium"] or self.atomicnumber == 68:
844
+ mass_molar = 167.26
845
+ density = 9050
846
+ bulk_mod = 44
847
+ shear_mod = 28
848
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
849
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
850
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
851
+ resistivity = round(86*10**(-8), 9)
852
+ thermal_cond = 15
853
+ data = ["Er", 68, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
854
+ thermal_cond]
855
+ elif self.name in ["Tm", "Thulium", "thulium"] or self.atomicnumber == 69:
856
+ mass_molar = 168.93
857
+ density = 9320
858
+ bulk_mod = 45
859
+ shear_mod = 31
860
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
861
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
862
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
863
+ resistivity = round(67.6*10**(-8), 9)
864
+ thermal_cond = 17
865
+ data = ["Tm", 69, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
866
+ thermal_cond]
867
+ elif self.name in ["Yb", "Ytterbium", "ytterbium"] or self.atomicnumber == 70:
868
+ mass_molar = 173.05
869
+ density = 6970
870
+ bulk_mod = 31
871
+ shear_mod = 9.9
872
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
873
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
874
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
875
+ resistivity = round(25*10**(-8), 9)
876
+ thermal_cond = 34.9
877
+ data = ["Yb", 70, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
878
+ thermal_cond]
879
+ elif self.name in ["Lu", "Lutetium", "lutetium"] or self.atomicnumber == 71:
880
+ mass_molar = 174.97
881
+ density = 9840
882
+ bulk_mod = 48
883
+ shear_mod = 27
884
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
885
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
886
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
887
+ resistivity = round(58*10**(-8), 9)
888
+ thermal_cond = 16
889
+ data = ["Lu", 71, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
890
+ thermal_cond]
891
+ elif self.name in ["Hf", "Hafnium", "hafnium"] or self.atomicnumber == 72:
892
+ mass_molar = 178.48
893
+ density = 13310
894
+ bulk_mod = 110
895
+ shear_mod = 30
896
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
897
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
898
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
899
+ resistivity = round(34*10**(-8), 9)
900
+ thermal_cond = 23
901
+ data = ["Hf", 72, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
902
+ thermal_cond]
903
+ elif self.name in ["Ta", "Tantalum", "tantalum"] or self.atomicnumber == 73:
904
+ mass_molar = 180.95
905
+ density = 16680
906
+ bulk_mod = 200
907
+ shear_mod = 69
908
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
909
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
910
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
911
+ resistivity = round(13.5*10**(-8), 9)
912
+ thermal_cond = 57
913
+ data = ["Ta", 73, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
914
+ thermal_cond]
915
+ elif self.name in ["W", "Tungsten", "tungsten"] or self.atomicnumber == 74:
916
+ mass_molar = 183.84
917
+ density = 19260
918
+ bulk_mod = 310
919
+ shear_mod = 161
920
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
921
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
922
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
923
+ resistivity = round(5.4*10**(-8), 9)
924
+ thermal_cond = 174
925
+ data = ["W", 74, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
926
+ thermal_cond]
927
+ elif self.name in ["Re", "Rhenium", "rhenium"] or self.atomicnumber == 75:
928
+ mass_molar = 186.21
929
+ density = 21030
930
+ bulk_mod = 370
931
+ shear_mod = 178
932
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
933
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
934
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
935
+ resistivity = round(18*10**(-8), 9)
936
+ thermal_cond = 48
937
+ data = ["Re", 75, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
938
+ thermal_cond]
939
+ elif self.name in ["Os", "Osmium", "osmium"] or self.atomicnumber == 76:
940
+ mass_molar = 190.23
941
+ density = 22590
942
+ shear_mod = 222
943
+ poisson = 0.25
944
+ bulk_mod = round((2*shear_mod*(1+poisson))/(3*(1-2*poisson)), 1)
945
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
946
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
947
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
948
+ resistivity = round(8.1*10**(-8), 9)
949
+ thermal_cond = 88
950
+ data = ["Os", 76, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
951
+ thermal_cond]
952
+ elif self.name in ["Ir", "Iridium", "iridium"] or self.atomicnumber == 77:
953
+ mass_molar = 192.22
954
+ density = 22560
955
+ bulk_mod = 320
956
+ shear_mod = 210
957
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
958
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
959
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
960
+ resistivity = round(4.7*10**(-8), 9)
961
+ thermal_cond = 150
962
+ data = ["Ir", 77, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
963
+ thermal_cond]
964
+ elif self.name in ["Pt", "Platinum", "platinum"] or self.atomicnumber == 78:
965
+ mass_molar = 195.08
966
+ density = 21450
967
+ bulk_mod = 230
968
+ shear_mod = 61
969
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
970
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
971
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
972
+ resistivity = round(10.6*10**(-8), 9)
973
+ thermal_cond = 72
974
+ data = ["Pt", 78, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
975
+ thermal_cond]
976
+ elif self.name in ["Au", "Gold", "gold"] or self.atomicnumber == 79:
977
+ mass_molar = 196.97
978
+ density = 19320
979
+ bulk_mod = 220
980
+ shear_mod = 27
981
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
982
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
983
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
984
+ resistivity = round(2.2*10**(-8), 9)
985
+ thermal_cond = 320
986
+ data = ["Au", 79, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
987
+ thermal_cond]
988
+ elif self.name in ["Hg", "Mercury", "mercury"] or self.atomicnumber == 80:
989
+ mass_molar = 200.59
990
+ density = 13550
991
+ bulk_mod = 25
992
+ v_p = 1407
993
+ shear_mod = round(0.75*(density*v_p**2 - bulk_mod*10**9)*10**(-9), 1)
994
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
995
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
996
+ resistivity = round(96*10**(-8), 9)
997
+ thermal_cond = 8.3
998
+ data = ["Hg", 80, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
999
+ thermal_cond]
1000
+ elif self.name in ["Tl", "Thallium", "thallium"] or self.atomicnumber == 81:
1001
+ mass_molar = 204.38
1002
+ density = 11850
1003
+ bulk_mod = 43
1004
+ shear_mod = 2.8
1005
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
1006
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1007
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1008
+ resistivity = round(15*10**(-8), 9)
1009
+ thermal_cond = 46
1010
+ data = ["Tl", 81, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1011
+ thermal_cond]
1012
+ elif self.name in ["Pb", "Lead", "lead"] or self.atomicnumber == 82:
1013
+ mass_molar = 207.2
1014
+ density = 11340
1015
+ bulk_mod = 46
1016
+ shear_mod = 5.6
1017
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
1018
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1019
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1020
+ resistivity = round(21*10**(-8), 9)
1021
+ thermal_cond = 35
1022
+ data = ["Pb", 82, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1023
+ thermal_cond]
1024
+ elif self.name in ["Bi", "Bismuth", "bismuth"] or self.atomicnumber == 83:
1025
+ mass_molar = 208.98
1026
+ density = 9800
1027
+ bulk_mod = 31
1028
+ shear_mod = 12
1029
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
1030
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1031
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1032
+ resistivity = round(130*10**(-8), 9)
1033
+ thermal_cond = 8
1034
+ data = ["Bi", 83, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1035
+ thermal_cond]
1036
+ elif self.name in ["Po", "Polonium", "polonium"] or self.atomicnumber == 84:
1037
+ mass_molar = 209
1038
+ density = 9200
1039
+ bulk_mod = None
1040
+ shear_mod = None
1041
+ young_mod = None
1042
+ v_p = None
1043
+ v_s = None
1044
+ resistivity = round(40*10**(-8), 9)
1045
+ thermal_cond = 20
1046
+ data = ["Po", 84, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1047
+ thermal_cond]
1048
+ elif self.name in ["At", "Astatine", "astatine"] or self.atomicnumber == 85:
1049
+ mass_molar = 210
1050
+ density = 6400
1051
+ bulk_mod = None
1052
+ shear_mod = None
1053
+ young_mod = None
1054
+ v_p = None
1055
+ v_s = None
1056
+ resistivity = None
1057
+ thermal_cond = 1.7
1058
+ data = ["At", 85, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1059
+ thermal_cond]
1060
+ elif self.name in ["Rn", "Radon", "radon"] or self.atomicnumber == 86:
1061
+ mass_molar = 222
1062
+ density = 9.23
1063
+ bulk_mod = None
1064
+ shear_mod = None
1065
+ young_mod = None
1066
+ v_p = None
1067
+ v_s = None
1068
+ resistivity = None
1069
+ thermal_cond = 0.00361
1070
+ data = ["Rn", 86, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1071
+ thermal_cond]
1072
+ elif self.name in ["Fr", "Francium", "francium"] or self.atomicnumber == 87:
1073
+ mass_molar = 223
1074
+ density = 348
1075
+ bulk_mod = None
1076
+ shear_mod = None
1077
+ young_mod = None
1078
+ v_p = None
1079
+ v_s = None
1080
+ resistivity = None
1081
+ thermal_cond = 15
1082
+ data = ["Fr", 87, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1083
+ thermal_cond]
1084
+ elif self.name in ["Ra", "Radium", "radium"] or self.atomicnumber == 88:
1085
+ mass_molar = 226
1086
+ density = 5500
1087
+ bulk_mod = None
1088
+ shear_mod = None
1089
+ young_mod = None
1090
+ v_p = None
1091
+ v_s = None
1092
+ resistivity = round(100*10**(-8), 9)
1093
+ thermal_cond = 19
1094
+ data = ["Ra", 88, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1095
+ thermal_cond]
1096
+ elif self.name in ["Ac", "Actinium", "actinium"] or self.atomicnumber == 89:
1097
+ mass_molar = 227
1098
+ density = 10070
1099
+ bulk_mod = None
1100
+ shear_mod = None
1101
+ young_mod = None
1102
+ v_p = None
1103
+ v_s = None
1104
+ resistivity = None
1105
+ thermal_cond = 12
1106
+ data = ["Ac", 89, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1107
+ thermal_cond]
1108
+ elif self.name in ["Th", "Thorium", "thorium"] or self.atomicnumber == 90:
1109
+ mass_molar = 232.04
1110
+ density = 11720
1111
+ bulk_mod = 54
1112
+ shear_mod = 31
1113
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
1114
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1115
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1116
+ resistivity = round(15*10**(-8), 9)
1117
+ thermal_cond = 54
1118
+ data = ["Th", 90, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1119
+ thermal_cond]
1120
+ elif self.name in ["Pa", "Protactinium", "protactinium"] or self.atomicnumber == 91:
1121
+ mass_molar = 231.04
1122
+ density = 15370
1123
+ bulk_mod = None
1124
+ shear_mod = None
1125
+ young_mod = None
1126
+ v_p = None
1127
+ v_s = None
1128
+ resistivity = round(18*10**(-8), 9)
1129
+ thermal_cond = 47
1130
+ data = ["Pa", 91, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1131
+ thermal_cond]
1132
+ elif self.name in ["U", "Uranium", "uranium"] or self.atomicnumber == 92:
1133
+ mass_molar = 238.03
1134
+ density = 18970
1135
+ bulk_mod = 100
1136
+ shear_mod = 111
1137
+ young_mod = round((9*bulk_mod*shear_mod)/(3*bulk_mod + shear_mod), 1)
1138
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1139
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1140
+ resistivity = round(28*10**(-8), 9)
1141
+ thermal_cond = 27.6
1142
+ data = ["U", 92, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1143
+ thermal_cond]
1144
+ elif self.name in ["Np", "Neptunium", "neptunium"] or self.atomicnumber == 93:
1145
+ mass_molar = 237
1146
+ density = 20480
1147
+ bulk_mod = None
1148
+ shear_mod = None
1149
+ young_mod = None
1150
+ v_p = None
1151
+ v_s = None
1152
+ resistivity = round(120*10**(-8), 9)
1153
+ thermal_cond = 6
1154
+ data = ["Np", 93, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1155
+ thermal_cond]
1156
+ elif self.name in ["Pu", "Plutonium", "plutonium"] or self.atomicnumber == 94:
1157
+ mass_molar = 244
1158
+ density = 19740
1159
+ shear_mod = 43
1160
+ young_mod = 96
1161
+ bulk_mod = round((young_mod*shear_mod)/(3*(3*shear_mod-young_mod)), 1)
1162
+ v_p = round(np.sqrt((bulk_mod*10**9 + 4/3*shear_mod*10**9)/(density)), 2)
1163
+ v_s = round(np.sqrt((shear_mod*10**9)/(density)), 2)
1164
+ resistivity = round(150*10**(-8), 9)
1165
+ thermal_cond = 6
1166
+ data = ["Pu", 94, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1167
+ thermal_cond]
1168
+ elif self.name in ["Am", "Americium", "americium"] or self.atomicnumber == 95:
1169
+ mass_molar = 243
1170
+ density = 13670
1171
+ bulk_mod = None
1172
+ shear_mod = None
1173
+ young_mod = None
1174
+ v_p = None
1175
+ v_s = None
1176
+ resistivity = None
1177
+ thermal_cond = 10
1178
+ data = ["Am", 95, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1179
+ thermal_cond]
1180
+ elif self.name in ["Cm", "Curium", "curium"] or self.atomicnumber == 96:
1181
+ mass_molar = 247
1182
+ density = 13510
1183
+ bulk_mod = None
1184
+ shear_mod = None
1185
+ young_mod = None
1186
+ v_p = None
1187
+ v_s = None
1188
+ resistivity = None
1189
+ thermal_cond = 10
1190
+ data = ["Cm", 96, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1191
+ thermal_cond]
1192
+ elif self.name in ["Bk", "Berkelium", "berkelium"] or self.atomicnumber == 97:
1193
+ mass_molar = 247
1194
+ density = 13250
1195
+ bulk_mod = None
1196
+ shear_mod = None
1197
+ young_mod = None
1198
+ v_p = None
1199
+ v_s = None
1200
+ resistivity = None
1201
+ thermal_cond = 10
1202
+ data = ["Bk", 97, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1203
+ thermal_cond]
1204
+ elif self.name in ["Cf", "Californium", "californium"] or self.atomicnumber == 98:
1205
+ mass_molar = 251
1206
+ density = 15100
1207
+ bulk_mod = None
1208
+ shear_mod = None
1209
+ young_mod = None
1210
+ v_p = None
1211
+ v_s = None
1212
+ resistivity = None
1213
+ thermal_cond = 10
1214
+ data = ["Cf", 98, mass_molar, density, bulk_mod, shear_mod, young_mod, v_p, v_s, resistivity,
1215
+ thermal_cond]
1216
+ #
1217
+ return data
1218
+ #
1219
+ class OxideCompounds:
1220
+ #
1221
+ def __init__(self, var_compound=None, var_amounts=None, var_list_elements=None):
1222
+ self.var_compound = var_compound
1223
+ self.var_amounts = var_amounts
1224
+ self.var_list_elements = var_list_elements
1225
+ self.amounts_helper = {}
1226
+ if self.var_amounts != None:
1227
+ for item in self.var_amounts:
1228
+ self.amounts_helper[item[0]] = item[2]
1229
+ self.oxide_masses = {
1230
+ "H2O": round(2*1.008 + 15.999, 3), "Li2O": round(2*6.938 + 15.999, 3),
1231
+ "B2O3": round(2*10.806 + 3*15.999, 3), "CO2": round(12.009 + 2*15.999, 3), "F": round(18.998, 3),
1232
+ "Na2O": round(2*22.990 + 15.999, 3), "MgO": round(24.304 + 15.999, 3),
1233
+ "Al2O3": round(2*26.982 + 3*15.999, 3), "SiO2": round(28.084 + 2*15.999, 3),
1234
+ "P2O5": round(2*30.974 + 5*15.999, 3), "Cl": round(35.45, 3), "K2O": round(2*39.098 + 15.999, 3),
1235
+ "CaO": round(40.078 + 15.999, 3), "FeO": round(55.845 + 15.999, 3),
1236
+ "Fe2O3": round(2*55.845 + 3*15.999, 3), "Rb2O": round(2*85.468 + 15.999, 3),
1237
+ "BaO": round(137.33 + 15.999, 3), "N2O5": round(2*14.007 + 5*15.999, 3),
1238
+ "SO3": round(32.06 + 3*15.999, 3), "Mn2O3": round(2*54.938 + 3*15.999, 3),
1239
+ "NiO": round(58.693 + 15.999, 3), "UO2": round(238.03 + 2*15.999, 3),
1240
+ "Cr2O3": round(2*51.996 + 3*15.999, 3), "V2O5": round(2*50.942 + 5*15.999, 3),
1241
+ "BeO": round(9.0122 + 15.999, 3), "Sc2O3": round(2*44.956 + 3*15.999, 3),
1242
+ "TiO2": round(47.867 + 2*15.999, 3), "CoO": round(58.933 + 15.999, 3), "CuO": round(63.546 + 15.999, 3),
1243
+ "ZnO": round(65.38 + 15.999, 3), "Ga2O3": round(2*69.723 + 3*15.999, 3),
1244
+ "GeO2": round(72.630 + 2*15.999, 3), "As2O3": round(2*74.922 + 3*15.999, 3),
1245
+ "SeO2": round(78.971 + 2*15.999, 3), "Br": round(79.901, 3)}
1246
+
1247
+ def find_oxides(self):
1248
+ list_oxides = []
1249
+ for element in self.var_list_elements:
1250
+ if element == "H":
1251
+ list_oxides.append("H2O")
1252
+ elif element == "Li":
1253
+ list_oxides.append("Li2O")
1254
+ elif element == "Be":
1255
+ list_oxides.append("BeO")
1256
+ elif element == "B":
1257
+ list_oxides.append("B2O3")
1258
+ elif element == "C":
1259
+ list_oxides.append("CO2")
1260
+ elif element == "N":
1261
+ list_oxides.append("N2O5")
1262
+ elif element == "F":
1263
+ list_oxides.append("F")
1264
+ elif element == "Na":
1265
+ list_oxides.append("Na2O")
1266
+ elif element == "Mg":
1267
+ list_oxides.append("MgO")
1268
+ elif element == "Al":
1269
+ list_oxides.append("Al2O3")
1270
+ elif element == "Si":
1271
+ list_oxides.append("SiO2")
1272
+ elif element == "P":
1273
+ list_oxides.append("P2O5")
1274
+ elif element == "S":
1275
+ list_oxides.append("SO3")
1276
+ elif element == "Cl":
1277
+ list_oxides.append("Cl")
1278
+ elif element == "K":
1279
+ list_oxides.append("K2O")
1280
+ elif element == "Ca":
1281
+ list_oxides.append("CaO")
1282
+ elif element == "Sc":
1283
+ list_oxides.append("Sc2O3")
1284
+ elif element == "Ti":
1285
+ list_oxides.append("TiO2")
1286
+ elif element == "V":
1287
+ list_oxides.append("V2O5")
1288
+ elif element == "Cr":
1289
+ list_oxides.append("Cr2O3")
1290
+ elif element == "Mn":
1291
+ list_oxides.append("Mn2O3")
1292
+ elif element == "Fe":
1293
+ list_oxides.append("Fe2O3")
1294
+ elif element == "Co":
1295
+ list_oxides.append("CoO")
1296
+ elif element == "Ni":
1297
+ list_oxides.append("NiO")
1298
+ elif element == "Cu":
1299
+ list_oxides.append("CuO")
1300
+ elif element == "Zn":
1301
+ list_oxides.append("ZnO")
1302
+ elif element == "Ga":
1303
+ list_oxides.append("Ga2O3")
1304
+ elif element == "Ge":
1305
+ list_oxides.append("GeO2")
1306
+ elif element == "As":
1307
+ list_oxides.append("As2O3")
1308
+ elif element == "Se":
1309
+ list_oxides.append("SeO2")
1310
+ elif element == "Br":
1311
+ list_oxides.append("Br")
1312
+
1313
+ return list_oxides
1314
+
1315
+ def get_composition(self): # see element to stoichiometric oxide conversion factors
1316
+ result = {"Oxide": [self.var_compound]}
1317
+ if self.var_compound not in ["F", "Cl", "Br", "I"]:
1318
+ key = re.search("(\D+)(\d*)(\D+)(\d*)", self.var_compound)
1319
+
1320
+ if key:
1321
+ var_element_1 = key.group(1)
1322
+ var_amount_1 = key.group(2)
1323
+ var_element_2 = key.group(3)
1324
+ var_amount_2 = key.group(4)
1325
+
1326
+ if var_amount_1 == "":
1327
+ var_amount_1 = 1
1328
+ if var_amount_2 == "":
1329
+ var_amount_2 = 1
1330
+
1331
+ var_amount_1 = int(var_amount_1)
1332
+ var_amount_2 = int(var_amount_2)
1333
+
1334
+ molar_mass_total = self.oxide_masses[self.var_compound]
1335
+ w_1 = round(var_amount_1*PeriodicSystem(name=var_element_1).get_data()[2]/molar_mass_total, 6)
1336
+ w_2 = round(var_amount_2*PeriodicSystem(name=var_element_2).get_data()[2]/molar_mass_total, 6)
1337
+ w_oxide = round(self.amounts_helper[var_element_1]*1/w_1, 6)
1338
+
1339
+ result["Oxide"] = [molar_mass_total, w_oxide]
1340
+ result[var_element_1] = [int(var_amount_1), w_1]
1341
+ result[var_element_2] = [int(var_amount_2), w_2]
1342
+ result["Conversion"] = round(1/w_1, 6)
1343
+ else:
1344
+ molar_mass_total = self.oxide_masses[self.var_compound]
1345
+ w_1 = round(PeriodicSystem(name=self.var_compound).get_data()[2]/molar_mass_total, 6)
1346
+ w_oxide = round(self.amounts_helper[self.var_compound]*1/w_1, 6)
1347
+
1348
+ result["Oxide"] = [molar_mass_total, w_oxide]
1349
+ result[self.var_compound] = [int(1), w_1]
1350
+ result["Conversion"] = round(1/w_1, 6)
1351
+
1352
+ return result
1353
+ #
1354
+ class DataProcessing():
1355
+ #
1356
+ def __init__(self, majors, minors):
1357
+ self.majors = majors
1358
+ self.minors = minors
1359
+ #
1360
+ def make_dataset(self):
1361
+ dataset = []
1362
+ for i in self.majors:
1363
+ dataset.append(PeriodicSystem(name=i).get_data())
1364
+ for i in self.minors:
1365
+ dataset.append(PeriodicSystem(name=i).get_data())
1366
+ dataset = np.array(dataset, dtype=object)
1367
+ dataset = dataset[dataset[:, 1].argsort()]
1368
+ #
1369
+ return dataset