PROGRESS  master
prg_ptable_mod.F90
Go to the documentation of this file.
1 
9 
10  implicit none
11 
12  integer, parameter :: nz = 103
13  integer, private, parameter :: dp = kind(1.0d0)
14 
17  character(2), parameter :: element_symbol(nz) = [character(2) :: &
18  "H" , "He" , "Li" , "Be" , &
19  "B" , "C" , "N" , "O" , &
20  "F" , "Ne" , "Na" , "Mg" , &
21  "Al" , "Si" , "P" , "S" , &
22  "Cl" , "Ar" , "K" , "Ca" , &
23  "Sc" , "Ti" , "V" , "Cr" , &
24  "Mn" , "Fe" , "Co" , "Ni" , &
25  "Cu" , "Zn" , "Ga" , "Ge" , &
26  "As" , "Se" , "Br" , "Kr" , &
27  "Rb" , "Sr" , "Y" , "Zr" , &
28  "Nb" , "Mo" , "Tc" , "Ru" , &
29  "Rh" , "Pd" , "Ag" , "Cd" , &
30  "In" , "Sn" , "Sb" , "Te" , &
31  "I" , "Xe" , "Cs" , "Ba" , &
32  "La" , "Ce" , "Pr" , "Nd" , &
33  "Pm" , "Sm" , "Eu" , "Gd" , &
34  "Tb" , "Dy" , "Ho" , "Er" , &
35  "Tm" , "Yb" , "Lu" , "Hf" , &
36  "Ta" , "W" , "Re" , "Os" , &
37  "Ir" , "Pt" , "Au" , "Hg" , &
38  "Tl" , "Pb" , "Bi" , "Po" , &
39  "At" , "Rn" , "Fr" , "Ra" , &
40  "Ac" , "Th" , "Pa" , "U" , &
41  "Np" , "Pu" , "Am" , "Cm" , &
42  "Bk" , "Cf" , "Es" , "Fm" , &
43  "Md" , "No" , "Lr" &
44  ]
45 
48  character(2), parameter :: element_symbol_upper(nz) = [character(2) :: &
49  "H" , "HE" , "LI" , "BE" , &
50  "B" , "C" , "N" , "O" , &
51  "F" , "NE" , "NA" , "MG" , &
52  "AL" , "SI" , "P" , "S" , &
53  "CL" , "AR" , "K" , "CA" , &
54  "SC" , "TI" , "V" , "CR" , &
55  "MN" , "FE" , "CO" , "NI" , &
56  "CU" , "ZN" , "GA" , "GE" , &
57  "AS" , "SE" , "BR" , "KR" , &
58  "RB" , "SR" , "Y" , "ZR" , &
59  "NB" , "MO" , "TC" , "RU" , &
60  "RH" , "PD" , "AG" , "CD" , &
61  "IN" , "SN" , "SB" , "TE" , &
62  "I" , "XE" , "CS" , "BA" , &
63  "LA" , "CE" , "PR" , "ND" , &
64  "PM" , "SM" , "EU" , "GD" , &
65  "TB" , "DY" , "HO" , "ER" , &
66  "TM" , "YB" , "LU" , "HF" , &
67  "TA" , "W" , "RE" , "OS" , &
68  "IR" , "PT" , "AU" , "HG" , &
69  "TL" , "PB" , "BI" , "PO" , &
70  "AT" , "RN" , "FR" , "RA" , &
71  "AC" , "TH" , "PA" , "U" , &
72  "NP" , "PU" , "AM" , "CM" , &
73  "BK" , "CF" , "ES" , "FM" , &
74  "MD" , "NO" , "LR" &
75  ]
76 
79  character(20), parameter :: element_name(nz) = [character(20) :: &
80  "Hydrogen" , "Helium" , "Lithium" , "Beryllium" , &
81  "Boron" , "Carbon" , "Nitrogen" , "Oxygen" , &
82  "Fluorine" , "Neon" , "Sodium" , "Magnesium" , &
83  "Aluminium" , "Silicon" , "Phosphorus" , "Sulfur" , &
84  "Chlorine" , "Argon" , "Potassium" , "Calcium" , &
85  "Scandium" , "Titanium" , "Vanadium" , "Chromium" , &
86  "Manganese" , "Iron" , "Cobalt" , "Nickel" , &
87  "Copper" , "Zinc" , "Gallium" , "Germanium" , &
88  "Arsenic" , "Selenium" , "Bromine" , "Krypton" , &
89  "Rubidium" , "Strontium" , "Yttrium" , "Zirconium" , &
90  "Niobium" , "Molybdenum" , "Technetium" , "Ruthenium" , &
91  "Rhodium" , "Palladium" , "Silver" , "Cadmium" , &
92  "Indium" , "Tin" , "Antimony" , "Tellurium" , &
93  "Iodine" , "Xenon" , "Caesium" , "Barium" , &
94  "Lanthanum" , "Cerium" , "Praseodymium" , "Neodymium" , &
95  "Promethium" , "Samarium" , "Europium" , "Gadolinium" , &
96  "Terbium" , "Dysprosium" , "Holmium" , "Erbium" , &
97  "Thulium" , "Ytterbium" , "Lutetium" , "Hafnium" , &
98  "Tantalum" , "Tungsten" , "Rhenium" , "Osmium" , &
99  "Iridium" , "Platinum" , "Gold" , "Mercury" , &
100  "Thallium" , "Lead" , "Bismuth" , "Polonium" , &
101  "Astatine" , "Radon" , "Francium" , "Radium" , &
102  "Actinium" , "Thorium" , "Protactinium" , "Uranium" , &
103  "Neptunium" , "Plutonium" , "Americium" , "Curium" , &
104  "Berkelium" , "Californium" , "Einsteinium" , "Fermium" , &
105  "Mendelevium" , "Nobelium" , "Lawrencium" &
106  ]
107 
110  real(dp), parameter :: element_mass(nz) = (/ &
111  1.007825032 , 4.002603254 , 7.01600455 , 9.0121822 , &
112  11.0093054 , 12.0 , 14.003074005 , 15.99491462 , &
113  18.99840322 , 19.992440175 , 22.989769281 , 23.9850417 , &
114  26.98153863 , 27.976926532 , 30.97376163 , 31.972071 , &
115  34.96885268 , 39.962383123 , 38.96370668 , 39.96259098 , &
116  44.9559119 , 47.9479463 , 50.9439595 , 51.9405075 , &
117  54.9380451 , 55.9349375 , 58.933195 , 57.9353429 , &
118  62.9295975 , 63.929142 , 68.925573 , 73.921177 , &
119  74.921596 , 79.916521 , 78.918337 , 83.911507 , &
120  84.911789 , 87.905612 , 88.905848 , 89.904704 , &
121  92.906378 , 97.905408 , 97.907216 , 101.904349 , &
122  102.905504 , 105.903486 , 106.905097 , 113.903358 , &
123  114.903878 , 119.902194 , 120.903815 , 129.906224 , &
124  126.904473 , 131.904153 , 132.905451 , 137.905247 , &
125  138.906353 , 139.905438 , 140.907652 , 141.907723 , &
126  144.912749 , 151.919732 , 152.92123 , 157.924103 , &
127  158.925346 , 163.929174 , 164.930322 , 165.930293 , &
128  168.934213 , 173.938862 , 174.940771 , 179.94655 , &
129  180.947995 , 183.950931 , 186.955753 , 191.96148 , &
130  192.962926 , 194.964791 , 196.966568 , 201.970643 , &
131  204.974427 , 207.976652 , 208.980398 , 208.98243 , &
132  209.987148 , 222.017577 , 223.019735 , 226.025409 , &
133  227.027752 , 232.038055 , 231.035884 , 238.050788 , &
134  237.048173 , 244.064204 , 243.061381 , 247.070354 , &
135  247.070307 , 251.079587 , 252.08298 , 257.095105 , &
136  258.098431 , 259.10103 , 262.10963 &
137  /)
138 
141  real(dp), parameter :: element_vdwr(nz) = (/ &
142  1.1 , 1.4 , 1.81 , 1.53 , &
143  1.92 , 1.7 , 1.55 , 1.52 , &
144  1.47 , 1.54 , 2.27 , 1.73 , &
145  1.84 , 2.1 , 1.8 , 1.8 , &
146  1.75 , 1.88 , 2.75 , 2.31 , &
147  2.3 , 2.15 , 2.05 , 2.05 , &
148  2.05 , 2.05 , 2.0 , 2.0 , &
149  2.0 , 2.1 , 1.87 , 2.11 , &
150  1.85 , 1.9 , 1.83 , 2.02 , &
151  3.03 , 2.49 , 2.4 , 2.3 , &
152  2.15 , 2.1 , 2.05 , 2.05 , &
153  2.0 , 2.05 , 2.1 , 2.2 , &
154  2.2 , 1.93 , 2.17 , 2.06 , &
155  1.98 , 2.16 , 3.43 , 2.68 , &
156  2.5 , 2.48 , 2.47 , 2.45 , &
157  2.43 , 2.42 , 2.4 , 2.38 , &
158  2.37 , 2.35 , 2.33 , 2.32 , &
159  2.3 , 2.28 , 2.27 , 2.25 , &
160  2.2 , 2.1 , 2.05 , 2.0 , &
161  2.0 , 2.05 , 2.1 , 2.05 , &
162  1.96 , 2.02 , 2.07 , 1.97 , &
163  2.02 , 2.2 , 3.48 , 2.83 , &
164  2.0 , 2.4 , 2.0 , 2.3 , &
165  2.0 , 2.0 , 2.0 , 2.0 , &
166  2.0 , 2.0 , 2.0 , 2.0 , &
167  2.0 , 2.0 , 2.0 &
168  /)
169 
170 
173  real(dp), parameter :: element_covr(nz) = (/ &
174  0.31 , 0.28 , 1.28 , 0.96 , &
175  0.84 , 0.76 , 0.71 , 0.66 , &
176  0.57 , 0.58 , 1.66 , 1.41 , &
177  1.21 , 1.11 , 1.07 , 1.05 , &
178  1.02 , 1.06 , 2.03 , 1.76 , &
179  1.7 , 1.6 , 1.53 , 1.39 , &
180  1.39 , 1.32 , 1.26 , 1.24 , &
181  1.32 , 1.22 , 1.22 , 1.2 , &
182  1.19 , 1.2 , 1.2 , 1.16 , &
183  2.2 , 1.95 , 1.9 , 1.75 , &
184  1.64 , 1.54 , 1.47 , 1.46 , &
185  1.42 , 1.39 , 1.45 , 1.44 , &
186  1.42 , 1.39 , 1.39 , 1.38 , &
187  1.39 , 1.4 , 2.44 , 2.15 , &
188  2.07 , 2.04 , 2.03 , 2.01 , &
189  1.99 , 1.98 , 1.98 , 1.96 , &
190  1.94 , 1.92 , 1.92 , 1.89 , &
191  1.9 , 1.87 , 1.87 , 1.75 , &
192  1.7 , 1.62 , 1.51 , 1.44 , &
193  1.41 , 1.36 , 1.36 , 1.32 , &
194  1.45 , 1.46 , 1.48 , 1.4 , &
195  1.5 , 1.5 , 2.6 , 2.21 , &
196  2.15 , 2.06 , 2.0 , 1.96 , &
197  1.9 , 1.87 , 1.8 , 1.69 , &
198  1.6 , 1.6 , 1.6 , 1.6 , &
199  1.6 , 1.6 , 1.6 &
200  /)
201 
204  real(dp), parameter :: element_ip(nz) = (/ &
205  13.5984 , 24.5874 , 5.3917 , 9.3227 , &
206  8.298 , 11.2603 , 14.5341 , 13.6181 , &
207  17.4228 , 21.5645 , 5.1391 , 7.6462 , &
208  5.9858 , 8.1517 , 10.4867 , 10.36 , &
209  12.9676 , 15.7596 , 4.3407 , 6.1132 , &
210  6.5615 , 6.8281 , 6.7462 , 6.7665 , &
211  7.434 , 7.9024 , 7.881 , 7.6398 , &
212  7.7264 , 9.3942 , 5.9993 , 7.8994 , &
213  9.7886 , 9.7524 , 11.8138 , 13.9996 , &
214  4.1771 , 5.6949 , 6.2173 , 6.6339 , &
215  6.7589 , 7.0924 , 7.28 , 7.3605 , &
216  7.4589 , 8.3369 , 7.5762 , 8.9938 , &
217  5.7864 , 7.3439 , 8.6084 , 9.0096 , &
218  10.4513 , 12.1298 , 3.8939 , 5.2117 , &
219  5.5769 , 5.5387 , 5.473 , 5.525 , &
220  5.582 , 5.6437 , 5.6704 , 6.1498 , &
221  5.8638 , 5.9389 , 6.0215 , 6.1077 , &
222  6.1843 , 6.2542 , 5.4259 , 6.8251 , &
223  7.5496 , 7.864 , 7.8335 , 8.4382 , &
224  8.967 , 8.9588 , 9.2255 , 10.4375 , &
225  6.1082 , 7.4167 , 7.2855 , 8.414 , &
226  0.0 , 10.7485 , 4.0727 , 5.2784 , &
227  5.17 , 6.3067 , 5.89 , 6.1941 , &
228  6.2657 , 6.026 , 5.9738 , 5.9914 , &
229  6.1979 , 6.2817 , 6.42 , 6.5 , &
230  6.58 , 6.65 , 4.9 &
231  /)
232 
235  real(dp), parameter :: element_ea(nz) = (/ &
236  0.75420375 , 0.0 , 0.618049 , 0.0 , &
237  0.279723 , 1.262118 , -0.07 , 1.461112 , &
238  3.4011887 , 0.0 , 0.547926 , 0.0 , &
239  0.43283 , 1.389521 , 0.7465 , 2.0771029 , &
240  3.612724 , 0.0 , 0.501459 , 0.02455 , &
241  0.188 , 0.084 , 0.525 , 0.67584 , &
242  0.0 , 0.151 , 0.6633 , 1.15716 , &
243  1.23578 , 0.0 , 0.41 , 1.232712 , &
244  0.814 , 2.02067 , 3.363588 , 0.0 , &
245  0.485916 , 0.05206 , 0.307 , 0.426 , &
246  0.893 , 0.7472 , 0.55 , 1.04638 , &
247  1.14289 , 0.56214 , 1.30447 , 0.0 , &
248  0.404 , 1.112066 , 1.047401 , 1.970875 , &
249  3.059038 , 0.0 , 0.471626 , 0.14462 , &
250  0.47 , 0.5 , 0.5 , 0.5 , &
251  0.5 , 0.5 , 0.5 , 0.5 , &
252  0.5 , 0.5 , 0.5 , 0.5 , &
253  0.5 , 0.5 , 0.5 , 0.0 , &
254  0.322 , 0.815 , 0.15 , 1.0778 , &
255  1.56436 , 2.1251 , 2.30861 , 0.0 , &
256  0.377 , 0.364 , 0.942363 , 1.9 , &
257  2.8 , 0.0 , 0.0 , 0.0 , &
258  0.0 , 0.0 , 0.0 , 0.0 , &
259  0.0 , 0.0 , 0.0 , 0.0 , &
260  0.0 , 0.0 , 0.0 , 0.0 , &
261  0.0 , 0.0 , 0.0 &
262  /)
263 
266  real(dp), parameter :: atom_en(nz) = (/ &
267  2.2 , 0.0 , 0.98 , 1.57 , &
268  2.04 , 2.55 , 3.04 , 3.44 , &
269  3.98 , 0.0 , 0.93 , 1.31 , &
270  1.61 , 1.9 , 2.19 , 2.58 , &
271  3.16 , 0.0 , 0.82 , 1.0 , &
272  1.36 , 1.54 , 1.63 , 1.66 , &
273  1.55 , 1.83 , 1.88 , 1.91 , &
274  1.9 , 1.65 , 1.81 , 2.01 , &
275  2.18 , 2.55 , 2.96 , 3.0 , &
276  0.82 , 0.95 , 1.22 , 1.33 , &
277  1.6 , 2.16 , 1.9 , 2.2 , &
278  2.28 , 2.2 , 1.93 , 1.69 , &
279  1.78 , 1.96 , 2.05 , 2.1 , &
280  2.66 , 2.6 , 0.79 , 0.89 , &
281  1.1 , 1.12 , 1.13 , 1.14 , &
282  0.0 , 1.17 , 0.0 , 1.2 , &
283  0.0 , 1.22 , 1.23 , 1.24 , &
284  1.25 , 0.0 , 1.27 , 1.3 , &
285  1.5 , 2.36 , 1.9 , 2.2 , &
286  2.2 , 2.28 , 2.54 , 2.0 , &
287  1.62 , 2.33 , 2.02 , 2.0 , &
288  2.2 , 0.0 , 0.7 , 0.9 , &
289  1.1 , 1.3 , 1.5 , 1.38 , &
290  1.36 , 1.28 , 1.3 , 1.3 , &
291  1.3 , 1.3 , 1.3 , 1.3 , &
292  1.3 , 1.3 , 0.0 &
293  /)
294 
297  integer, parameter :: element_maxbonds(nz) = (/ &
298  1 , 0 , 1 , 2 , &
299  4 , 4 , 4 , 2 , &
300  1 , 0 , 1 , 2 , &
301  6 , 6 , 6 , 6 , &
302  1 , 0 , 1 , 2 , &
303  6 , 6 , 6 , 6 , &
304  8 , 6 , 6 , 6 , &
305  6 , 6 , 3 , 4 , &
306  3 , 2 , 1 , 0 , &
307  1 , 2 , 6 , 6 , &
308  6 , 6 , 6 , 6 , &
309  6 , 6 , 6 , 6 , &
310  3 , 4 , 3 , 2 , &
311  1 , 0 , 1 , 2 , &
312  12 , 6 , 6 , 6 , &
313  6 , 6 , 6 , 6 , &
314  6 , 6 , 6 , 6 , &
315  6 , 6 , 6 , 6 , &
316  6 , 6 , 6 , 6 , &
317  6 , 6 , 6 , 6 , &
318  3 , 4 , 3 , 2 , &
319  1 , 0 , 1 , 2 , &
320  6 , 6 , 6 , 6 , &
321  6 , 6 , 6 , 6 , &
322  6 , 6 , 6 , 6 , &
323  6 , 6 , 6 &
324  /)
325 
326 
329  integer, parameter :: element_numel(nz) = (/ &
330  1 , 2 , 1 , 2 , &
331  3 , 4 , 5 , 6 , &
332  7 , 8 , 1 , 2 , &
333  3 , 4 , 5 , 6 , &
334  7 , 8 , 1 , 2 , &
335  3 , 4 , 5 , 6 , &
336  7 , 8 , 9 , 10 , &
337  11 , 12 , 13 , 14 , &
338  15 , 16 , 17 , 18 , &
339  1 , 2 , 3 , 4 , &
340  5 , 6 , 7 , 8 , &
341  9 , 10 , 11 , 12 , &
342  13 , 14 , 15 , 16 , &
343  17 , 18 , 1 , 2 , &
344  3 , 4 , 5 , 6 , &
345  7 , 8 , 9 , 10 , &
346  11 , 12 , 13 , 14 , &
347  15 , 16 , 17 , 18 , &
348  19 , 20 , 21 , 22 , &
349  23 , 24 , 25 , 26 , &
350  27 , 28 , 29 , 30 , &
351  31 , 32 , 1 , 2 , &
352  3 , 4 , 5 , 6 , &
353  7 , 8 , 9 , 10 , &
354  11 , 12 , 13 , 14 , &
355  15 , 16 , 17 &
356  /)
357 
360  character(50), parameter :: element_econf(nz) = [character(50) :: &
361  "1s" , "1s2" , "1s22s" , "1s22s2" , &
362  "1s22s22p" , "1s22s22p2" , "1s22s22p3" , "1s22s22p4" , &
363  "1s22s22p5" , "1s22s22p6" , "[Ne]3s" , "[Ne]3s2" , &
364  "[Ne]3s23p" , "[Ne]3s23p2" , "[Ne]3s23p3" , "[Ne]3s23p4" , &
365  "[Ne]3s23p5" , "[Ne]3s23p6" , "[Ar]4s" , "[Ar]4s2" , &
366  "[Ar]3d4s2" , "[Ar]3d24s2" , "[Ar]3d34s2" , "[Ar]3d54s" , &
367  "[Ar]3d54s2" , "[Ar]3d64s2" , "[Ar]3d74s2" , "[Ar]3d84s2" , &
368  "[Ar]3d104s" , "[Ar]3d104s2" , "[Ar]3d104s24p" , "[Ar]3d104s24p2" , &
369  "[Ar]3d104s24p3" , "[Ar]3d104s24p4" , "[Ar]3d104s24p5" , "[Ar]3d104s24p6" , &
370  "[Kr]5s" , "[Kr]5s2" , "[Kr]4d5s2" , "[Kr]4d25s2" , &
371  "[Kr]4d45s" , "[Kr]4d55s" , "[Kr]4d55s2" , "[Kr]4d75s" , &
372  "[Kr]4d85s" , "[Kr]4d10" , "[Kr]4d105s" , "[Kr]4d105s2" , &
373  "[Cd]5p" , "[Cd]5p2" , "[Cd]5p3" , "[Cd]5p4" , &
374  "[Cd]5p5" , "[Cd]5p6" , "[Xe]6s" , "[Xe]6s2" , &
375  "[Xe]5d6s2" , "[Xe]4f5d6s2" , "[Xe]4f36s2" , "[Xe]4f46s2" , &
376  "[Xe]4f56s2" , "[Xe]4f66s2" , "[Xe]4f76s2" , "[Xe]4f75d6s2" , &
377  "[Xe]4f96s2" , "[Xe]4f106s2" , "[Xe]4f116s2" , "[Xe]4f126s2" , &
378  "[Xe]4f136s2" , "[Xe]4f146s2" , "[Xe]4f145d6s2" , "[Xe]4f145d26s2" , &
379  "[Xe]4f145d36s2" , "[Xe]4f145d46s2" , "[Xe]4f145d56s2" , "[Xe]4f145d66s2" , &
380  "[Xe]4f145d76s2" , "[Xe]4f145d96s" , "[Xe]4f145d106s" , "[Xe]4f145d106s2" , &
381  "[Hg]6p" , "[Hg]6p2" , "[Hg]6p3" , "[Hg]6p4" , &
382  "[Hg]6p5" , "[Hg]6p6" , "[Rn]7s" , "[Rn]7s2" , &
383  "[Rn]6d7s2" , "[Rn]6d27s2" , "[Rn]5f26d7s2" , "[Rn]5f36d7s2" , &
384  "[Rn]5f46d7s2" , "[Rn]5f67s2" , "[Rn]5f77s2" , "[Rn]5f76d7s2" , &
385  "[Rn]5f97s2" , "[Rn]5f107s2" , "[Rn]5f117s2" , "[Rn]5f127s2" , &
386  "[Rn]5f137s2" , "[Rn]5f147s2" , "[Rn]5f147s27p" &
387  ]
388 
389  public :: element_atomic_number
390 
391 contains
392 
393  function element_atomic_number(symbol)
394  implicit none
395  integer :: element_atomic_number,i
396  character(len=*) :: symbol
397 
398  do i=1,nz
399  if(adjustl(trim(element_symbol(i))).eq.adjustl(trim(symbol))) then
401  endif
402  enddo
403 
404  end function element_atomic_number
405 
406  !For upper case elements
408  implicit none
409  integer :: element_atomic_number_upper,i
410  character(len=*) :: symbol
411 
412  do i=1,nz
413  if(adjustl(trim(element_symbol_upper(i))).eq.adjustl(trim(symbol))) then
415  endif
416  enddo
417 
418  end function element_atomic_number_upper
419 
420 
421 end module prg_ptable_mod
Periodic table of elements.
real(dp), dimension(nz), parameter element_covr
Covalent radius (in Angstroms)
character(20), dimension(nz), parameter element_name
Element name.
character(2), dimension(nz), parameter element_symbol
Element symbol.
integer function, public element_atomic_number(symbol)
real(dp), dimension(nz), parameter element_vdwr
van der Waals radius (in Angstroms)
real(dp), dimension(nz), parameter atom_en
The Pauling electronegativity for this element.
integer, dimension(nz), parameter element_maxbonds
The maximum expected number of bonds to this element.
real(dp), dimension(nz), parameter element_ip
Ionization energy (in eV)
integer, parameter, private dp
integer function element_atomic_number_upper(symbol)
character(2), dimension(nz), parameter element_symbol_upper
Element symbol upper.
real(dp), dimension(nz), parameter element_ea
Electron affprg_inity (in eV)
integer, parameter nz
character(50), dimension(nz), parameter element_econf
The electronic configuration.
real(dp), dimension(nz), parameter element_mass
Element mass in atomic mass units (1.66 x 10-27 kg)
integer, dimension(nz), parameter element_numel
Last shell number of electrons.