2#ifndef STORMM_PERIODIC_TABLE_H
3#define STORMM_PERIODIC_TABLE_H
7#include "DataTypes/stormm_vector_types.h"
12constexpr int element_maximum_count = 96;
17constexpr std::array<double, element_maximum_count + 1> elemental_masses = {
19 1.0080, 4.0026, 6.9410, 9.0122, 10.8100, 12.0110, 14.0067, 15.9994,
20 18.9984, 20.1790, 22.9898, 24.3050, 26.9815, 28.0855, 30.9738, 32.0600,
21 35.4530, 39.9480, 39.0983, 40.0800, 44.9559, 47.9000, 50.9415, 51.9960,
22 54.9380, 55.8470, 58.9332, 58.7000, 63.5460, 65.3800, 69.7200, 72.5900,
23 74.9216, 78.9600, 79.9040, 83.8000, 85.4678, 87.6200, 88.9059, 91.2200,
24 92.9064, 95.9400, 98.0000, 101.0700, 102.9055, 106.4000, 107.8680, 112.4100,
25 114.8200, 118.6900, 121.7500, 127.6000, 126.9045, 131.3000, 132.9054, 137.3300,
26 138.9055, 140.1200, 140.9077, 144.2400, 145.0000, 150.4000, 151.9600, 157.2500,
27 158.9254, 162.5000, 164.9304, 167.2600, 168.9342, 173.0400, 174.9670, 178.4900,
28 180.9479, 183.8500, 186.2070, 190.2000, 192.2200, 195.0900, 196.9665, 200.5900,
29 204.3700, 207.2000, 208.9804, 209.0000, 210.0000, 222.0000, 223.0000, 226.0254,
30 227.0278, 232.0381, 231.0359, 238.0290, 237.0482, 242.0000, 243.0000, 247.0000
37constexpr char2 element_VS = {
'V',
'S'};
38constexpr char2 element_H = {
'H',
' '};
39constexpr char2 element_He = {
'H',
'e'};
40constexpr char2 element_Li = {
'L',
'i'};
41constexpr char2 element_Be = {
'B',
'e'};
42constexpr char2 element_B = {
'B',
' '};
43constexpr char2 element_C = {
'C',
' '};
44constexpr char2 element_N = {
'N',
' '};
45constexpr char2 element_O = {
'O',
' '};
46constexpr char2 element_F = {
'F',
' '};
47constexpr char2 element_Ne = {
'N',
'e'};
48constexpr char2 element_Na = {
'N',
'a'};
49constexpr char2 element_Mg = {
'M',
'g'};
50constexpr char2 element_Al = {
'A',
'l'};
51constexpr char2 element_Si = {
'S',
'i'};
52constexpr char2 element_P = {
'P',
' '};
53constexpr char2 element_S = {
'S',
' '};
54constexpr char2 element_Cl = {
'C',
'l'};
55constexpr char2 element_Ar = {
'A',
'r'};
56constexpr char2 element_K = {
'K',
' '};
57constexpr char2 element_Ca = {
'C',
'a'};
58constexpr char2 element_Sc = {
'S',
'c'};
59constexpr char2 element_Ti = {
'T',
'i'};
60constexpr char2 element_V = {
'V',
' '};
61constexpr char2 element_Cr = {
'C',
'r'};
62constexpr char2 element_Mn = {
'M',
'n'};
63constexpr char2 element_Fe = {
'F',
'e'};
64constexpr char2 element_Co = {
'C',
'o'};
65constexpr char2 element_Ni = {
'N',
'i'};
66constexpr char2 element_Cu = {
'C',
'u'};
67constexpr char2 element_Zn = {
'Z',
'n'};
68constexpr char2 element_Ga = {
'G',
'a'};
69constexpr char2 element_Ge = {
'G',
'e'};
70constexpr char2 element_As = {
'A',
's'};
71constexpr char2 element_Se = {
'S',
'e'};
72constexpr char2 element_Br = {
'B',
'r'};
73constexpr char2 element_Kr = {
'K',
'r'};
74constexpr char2 element_Rb = {
'R',
'b'};
75constexpr char2 element_Sr = {
'S',
'r'};
76constexpr char2 element_Y = {
'Y',
' '};
77constexpr char2 element_Zr = {
'Z',
'r'};
78constexpr char2 element_Nb = {
'N',
'b'};
79constexpr char2 element_Mo = {
'M',
'o'};
80constexpr char2 element_Tc = {
'T',
'c'};
81constexpr char2 element_Ru = {
'R',
'u'};
82constexpr char2 element_Rh = {
'R',
'h'};
83constexpr char2 element_Pd = {
'P',
'd'};
84constexpr char2 element_Ag = {
'A',
'g'};
85constexpr char2 element_Cd = {
'C',
'd'};
86constexpr char2 element_In = {
'I',
'n'};
87constexpr char2 element_Sn = {
'S',
'n'};
88constexpr char2 element_Sb = {
'S',
'b'};
89constexpr char2 element_Te = {
'T',
'e'};
90constexpr char2 element_I = {
'I',
' '};
91constexpr char2 element_Xe = {
'X',
'e'};
92constexpr char2 element_Cs = {
'C',
's'};
93constexpr char2 element_Ba = {
'B',
'a'};
94constexpr char2 element_La = {
'L',
'a'};
95constexpr char2 element_Ce = {
'C',
'e'};
96constexpr char2 element_Pr = {
'P',
'r'};
97constexpr char2 element_Nd = {
'N',
'd'};
98constexpr char2 element_Pm = {
'P',
'm'};
99constexpr char2 element_Sm = {
'S',
'm'};
100constexpr char2 element_Eu = {
'E',
'u'};
101constexpr char2 element_Gd = {
'G',
'd'};
102constexpr char2 element_Tb = {
'T',
'b'};
103constexpr char2 element_Dy = {
'D',
'y'};
104constexpr char2 element_Ho = {
'H',
'o'};
105constexpr char2 element_Er = {
'E',
'r'};
106constexpr char2 element_Tm = {
'T',
'm'};
107constexpr char2 element_Yb = {
'Y',
'b'};
108constexpr char2 element_Lu = {
'L',
'u'};
109constexpr char2 element_Hf = {
'H',
'f'};
110constexpr char2 element_Ta = {
'T',
'a'};
111constexpr char2 element_W = {
'W',
' '};
112constexpr char2 element_Re = {
'R',
'e'};
113constexpr char2 element_Os = {
'O',
's'};
114constexpr char2 element_Ir = {
'I',
'r'};
115constexpr char2 element_Pt = {
'P',
't'};
116constexpr char2 element_Au = {
'A',
'u'};
117constexpr char2 element_Hg = {
'H',
'g'};
118constexpr char2 element_Tl = {
'T',
'l'};
119constexpr char2 element_Pb = {
'P',
'b'};
120constexpr char2 element_Bi = {
'B',
'i'};
121constexpr char2 element_Po = {
'P',
'o'};
122constexpr char2 element_At = {
'A',
't'};
123constexpr char2 element_Rn = {
'R',
'n'};
124constexpr char2 element_Fr = {
'F',
'r'};
125constexpr char2 element_Ra = {
'R',
'a'};
126constexpr char2 element_Ac = {
'A',
'c'};
127constexpr char2 element_Th = {
'T',
'h'};
128constexpr char2 element_Pa = {
'P',
'a'};
129constexpr char2 element_U = {
'U',
' '};
130constexpr char2 element_Np = {
'N',
'p'};
131constexpr char2 element_Pu = {
'P',
'u'};
132constexpr char2 element_Am = {
'A',
'm'};
133constexpr char2 element_Cm = {
'C',
'm'};
134constexpr std::array<char2, element_maximum_count + 1> elemental_symbols = {
136 element_H , element_He, element_Li, element_Be, element_B , element_C , element_N , element_O ,
137 element_F , element_Ne, element_Na, element_Mg, element_Al, element_Si, element_P , element_S ,
138 element_Cl, element_Ar, element_K , element_Ca, element_Sc, element_Ti, element_V , element_Cr,
139 element_Mn, element_Fe, element_Co, element_Ni, element_Cu, element_Zn, element_Ga, element_Ge,
140 element_As, element_Se, element_Br, element_Kr, element_Rb, element_Sr, element_Y , element_Zr,
141 element_Nb, element_Mo, element_Tc, element_Ru, element_Rh, element_Pd, element_Ag, element_Cd,
142 element_In, element_Sn, element_Sb, element_Te, element_I , element_Xe, element_Cs, element_Ba,
143 element_La, element_Ce, element_Pr, element_Nd, element_Pm, element_Sm, element_Eu, element_Gd,
144 element_Tb, element_Dy, element_Ho, element_Er, element_Tm, element_Yb, element_Lu, element_Hf,
145 element_Ta, element_W , element_Re, element_Os, element_Ir, element_Pt, element_Au, element_Hg,
146 element_Tl, element_Pb, element_Bi, element_Po, element_At, element_Rn, element_Fr, element_Ra,
147 element_Ac, element_Th, element_Pa, element_U , element_Np, element_Pu, element_Am, element_Cm
153constexpr std::array<int, element_maximum_count + 1> elemental_periods = {
156 2, 2, 2, 2, 2, 2, 2, 2,
157 3, 3, 3, 3, 3, 3, 3, 3,
158 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
159 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
160 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
161 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
166constexpr std::array<int, element_maximum_count + 1> elemental_groups = {
168 1, 2, 13, 14, 15, 16, 17, 18,
169 1, 2, 13, 14, 15, 16, 17, 18,
170 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
171 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
172 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
173 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
174 1, 2, 3, 3, 3, 3, 3, 3, 3, 3