nx_chem_periodic.nx source
↩ module page · 591 lines · 60525 B
1// nx_chem_periodic.nx -- C1 milestone: periodic table 1..118 +
2// auxiliary atomic data (most-abundant isotope, exact isotope mass,
3// natural abundance, common-oxidation-state bitfield, first
4// ionization energy, electron affinity, Pauling electronegativity).
5//
6// Sources (all open, non-proprietary):
7// - IUPAC 2021 abridged standard atomic weights (CIAAW)
8// - AME2020 atomic mass evaluation for exact isotope masses
9// - NIST Atomic Spectra Database for ionization energies
10// - Hotop & Lineberger 1985 + NIST for electron affinities
11// - Pauling 1960 revision for electronegativity
12// - CRC Handbook 102nd ed. for common oxidation states
13//
14// Units / scaling:
15// - mass_q3 : atomic weight * 1000 (milli-AMU)
16// - iso_a_q0 : mass number of most-abundant isotope (or longest-lived for radionuclides)
17// - iso_mass_q4 : exact mass of that isotope * 10000 (Q4 micro-AMU)
18// - iso_abund_ppm : natural abundance in parts per million (max 1_000_000); -1 = radionuclide (no natural abundance)
19// - valence_bits : bit (15 + ox_state) set for each common oxidation state; supports -15..+15
20// - ie1_meV : first ionization energy * 1000 (milli-eV); 0 = unknown
21// - ea_meV : electron affinity * 1000 (milli-eV); 0 = unknown / no stable anion
22// - en_pauling_q2 : Pauling electronegativity * 100; 0 = undefined (noble gas or unknown for super-heavy)
23//
24// Backward-compat: nx_chem.nx Element struct + nx_chem_periodic_table()
25// (1..18) + nx_chem_extended.nx nx_chem_periodic_table_36() (1..36)
26// are UNCHANGED. This file ADDS new builders + a new struct.
27//
28// nx_safety_envelope:
29// intended_use: reference atomic data substrate for supplement-audit + analytical primitives
30// sil_target: SIL1
31// evidence: [C1 KAT in nx_chem_periodic_test.nx]
32// verdict: BENCH-PENDING
33
34import "nx_chem.nx"
35import "nx_chem_extended.nx"
36
37// =================================================================
38// Periodic-table builder: full 1..118 with IUPAC 2021 masses.
39// Returns flat *Element array of length 118.
40// =================================================================
41func nx_chem_periodic_table_118() -> *Element {
42 let n: nx_int = 118
43 let arr: *Element = (sys_mmap((n * NX_ELEM_BYTES) as i64)) as *Element
44
45 // ---- Period 1-4: H..Kr (Z 1..36); same data as nx_chem_extended ----
46 let e1: *Element = ((arr as nx_int) + (0 * NX_ELEM_BYTES)) as *Element
47 e1.symbol = "H " as *u8; e1.z = 1; e1.mass_q3 = 1008
48 let e2: *Element = ((arr as nx_int) + (1 * NX_ELEM_BYTES)) as *Element
49 e2.symbol = "He" as *u8; e2.z = 2; e2.mass_q3 = 4003
50 let e3: *Element = ((arr as nx_int) + (2 * NX_ELEM_BYTES)) as *Element
51 e3.symbol = "Li" as *u8; e3.z = 3; e3.mass_q3 = 6941
52 let e4: *Element = ((arr as nx_int) + (3 * NX_ELEM_BYTES)) as *Element
53 e4.symbol = "Be" as *u8; e4.z = 4; e4.mass_q3 = 9012
54 let e5: *Element = ((arr as nx_int) + (4 * NX_ELEM_BYTES)) as *Element
55 e5.symbol = "B " as *u8; e5.z = 5; e5.mass_q3 = 10811
56 let e6: *Element = ((arr as nx_int) + (5 * NX_ELEM_BYTES)) as *Element
57 e6.symbol = "C " as *u8; e6.z = 6; e6.mass_q3 = 12011
58 let e7: *Element = ((arr as nx_int) + (6 * NX_ELEM_BYTES)) as *Element
59 e7.symbol = "N " as *u8; e7.z = 7; e7.mass_q3 = 14007
60 let e8: *Element = ((arr as nx_int) + (7 * NX_ELEM_BYTES)) as *Element
61 e8.symbol = "O " as *u8; e8.z = 8; e8.mass_q3 = 15999
62 let e9: *Element = ((arr as nx_int) + (8 * NX_ELEM_BYTES)) as *Element
63 e9.symbol = "F " as *u8; e9.z = 9; e9.mass_q3 = 18998
64 let e10: *Element = ((arr as nx_int) + (9 * NX_ELEM_BYTES)) as *Element
65 e10.symbol = "Ne" as *u8; e10.z = 10; e10.mass_q3 = 20180
66 let e11: *Element = ((arr as nx_int) + (10 * NX_ELEM_BYTES)) as *Element
67 e11.symbol = "Na" as *u8; e11.z = 11; e11.mass_q3 = 22990
68 let e12: *Element = ((arr as nx_int) + (11 * NX_ELEM_BYTES)) as *Element
69 e12.symbol = "Mg" as *u8; e12.z = 12; e12.mass_q3 = 24305
70 let e13: *Element = ((arr as nx_int) + (12 * NX_ELEM_BYTES)) as *Element
71 e13.symbol = "Al" as *u8; e13.z = 13; e13.mass_q3 = 26982
72 let e14: *Element = ((arr as nx_int) + (13 * NX_ELEM_BYTES)) as *Element
73 e14.symbol = "Si" as *u8; e14.z = 14; e14.mass_q3 = 28086
74 let e15: *Element = ((arr as nx_int) + (14 * NX_ELEM_BYTES)) as *Element
75 e15.symbol = "P " as *u8; e15.z = 15; e15.mass_q3 = 30974
76 let e16: *Element = ((arr as nx_int) + (15 * NX_ELEM_BYTES)) as *Element
77 e16.symbol = "S " as *u8; e16.z = 16; e16.mass_q3 = 32066
78 let e17: *Element = ((arr as nx_int) + (16 * NX_ELEM_BYTES)) as *Element
79 e17.symbol = "Cl" as *u8; e17.z = 17; e17.mass_q3 = 35453
80 let e18: *Element = ((arr as nx_int) + (17 * NX_ELEM_BYTES)) as *Element
81 e18.symbol = "Ar" as *u8; e18.z = 18; e18.mass_q3 = 39948
82 let e19: *Element = ((arr as nx_int) + (18 * NX_ELEM_BYTES)) as *Element
83 e19.symbol = "K " as *u8; e19.z = 19; e19.mass_q3 = 39098
84 let e20: *Element = ((arr as nx_int) + (19 * NX_ELEM_BYTES)) as *Element
85 e20.symbol = "Ca" as *u8; e20.z = 20; e20.mass_q3 = 40078
86 let e21: *Element = ((arr as nx_int) + (20 * NX_ELEM_BYTES)) as *Element
87 e21.symbol = "Sc" as *u8; e21.z = 21; e21.mass_q3 = 44956
88 let e22: *Element = ((arr as nx_int) + (21 * NX_ELEM_BYTES)) as *Element
89 e22.symbol = "Ti" as *u8; e22.z = 22; e22.mass_q3 = 47867
90 let e23: *Element = ((arr as nx_int) + (22 * NX_ELEM_BYTES)) as *Element
91 e23.symbol = "V " as *u8; e23.z = 23; e23.mass_q3 = 50942
92 let e24: *Element = ((arr as nx_int) + (23 * NX_ELEM_BYTES)) as *Element
93 e24.symbol = "Cr" as *u8; e24.z = 24; e24.mass_q3 = 51996
94 let e25: *Element = ((arr as nx_int) + (24 * NX_ELEM_BYTES)) as *Element
95 e25.symbol = "Mn" as *u8; e25.z = 25; e25.mass_q3 = 54938
96 let e26: *Element = ((arr as nx_int) + (25 * NX_ELEM_BYTES)) as *Element
97 e26.symbol = "Fe" as *u8; e26.z = 26; e26.mass_q3 = 55845
98 let e27: *Element = ((arr as nx_int) + (26 * NX_ELEM_BYTES)) as *Element
99 e27.symbol = "Co" as *u8; e27.z = 27; e27.mass_q3 = 58933
100 let e28: *Element = ((arr as nx_int) + (27 * NX_ELEM_BYTES)) as *Element
101 e28.symbol = "Ni" as *u8; e28.z = 28; e28.mass_q3 = 58693
102 let e29: *Element = ((arr as nx_int) + (28 * NX_ELEM_BYTES)) as *Element
103 e29.symbol = "Cu" as *u8; e29.z = 29; e29.mass_q3 = 63546
104 let e30: *Element = ((arr as nx_int) + (29 * NX_ELEM_BYTES)) as *Element
105 e30.symbol = "Zn" as *u8; e30.z = 30; e30.mass_q3 = 65380
106 let e31: *Element = ((arr as nx_int) + (30 * NX_ELEM_BYTES)) as *Element
107 e31.symbol = "Ga" as *u8; e31.z = 31; e31.mass_q3 = 69723
108 let e32: *Element = ((arr as nx_int) + (31 * NX_ELEM_BYTES)) as *Element
109 e32.symbol = "Ge" as *u8; e32.z = 32; e32.mass_q3 = 72630
110 let e33: *Element = ((arr as nx_int) + (32 * NX_ELEM_BYTES)) as *Element
111 e33.symbol = "As" as *u8; e33.z = 33; e33.mass_q3 = 74922
112 let e34: *Element = ((arr as nx_int) + (33 * NX_ELEM_BYTES)) as *Element
113 e34.symbol = "Se" as *u8; e34.z = 34; e34.mass_q3 = 78971
114 let e35: *Element = ((arr as nx_int) + (34 * NX_ELEM_BYTES)) as *Element
115 e35.symbol = "Br" as *u8; e35.z = 35; e35.mass_q3 = 79904
116 let e36: *Element = ((arr as nx_int) + (35 * NX_ELEM_BYTES)) as *Element
117 e36.symbol = "Kr" as *u8; e36.z = 36; e36.mass_q3 = 83798
118
119 // ---- Period 5: Rb..Xe (Z 37..54) ----
120 let e37: *Element = ((arr as nx_int) + (36 * NX_ELEM_BYTES)) as *Element
121 e37.symbol = "Rb" as *u8; e37.z = 37; e37.mass_q3 = 85468
122 let e38: *Element = ((arr as nx_int) + (37 * NX_ELEM_BYTES)) as *Element
123 e38.symbol = "Sr" as *u8; e38.z = 38; e38.mass_q3 = 87620
124 let e39: *Element = ((arr as nx_int) + (38 * NX_ELEM_BYTES)) as *Element
125 e39.symbol = "Y " as *u8; e39.z = 39; e39.mass_q3 = 88906
126 let e40: *Element = ((arr as nx_int) + (39 * NX_ELEM_BYTES)) as *Element
127 e40.symbol = "Zr" as *u8; e40.z = 40; e40.mass_q3 = 91224
128 let e41: *Element = ((arr as nx_int) + (40 * NX_ELEM_BYTES)) as *Element
129 e41.symbol = "Nb" as *u8; e41.z = 41; e41.mass_q3 = 92906
130 let e42: *Element = ((arr as nx_int) + (41 * NX_ELEM_BYTES)) as *Element
131 e42.symbol = "Mo" as *u8; e42.z = 42; e42.mass_q3 = 95950
132 let e43: *Element = ((arr as nx_int) + (42 * NX_ELEM_BYTES)) as *Element
133 e43.symbol = "Tc" as *u8; e43.z = 43; e43.mass_q3 = 98000
134 let e44: *Element = ((arr as nx_int) + (43 * NX_ELEM_BYTES)) as *Element
135 e44.symbol = "Ru" as *u8; e44.z = 44; e44.mass_q3 = 101070
136 let e45: *Element = ((arr as nx_int) + (44 * NX_ELEM_BYTES)) as *Element
137 e45.symbol = "Rh" as *u8; e45.z = 45; e45.mass_q3 = 102906
138 let e46: *Element = ((arr as nx_int) + (45 * NX_ELEM_BYTES)) as *Element
139 e46.symbol = "Pd" as *u8; e46.z = 46; e46.mass_q3 = 106420
140 let e47: *Element = ((arr as nx_int) + (46 * NX_ELEM_BYTES)) as *Element
141 e47.symbol = "Ag" as *u8; e47.z = 47; e47.mass_q3 = 107868
142 let e48: *Element = ((arr as nx_int) + (47 * NX_ELEM_BYTES)) as *Element
143 e48.symbol = "Cd" as *u8; e48.z = 48; e48.mass_q3 = 112414
144 let e49: *Element = ((arr as nx_int) + (48 * NX_ELEM_BYTES)) as *Element
145 e49.symbol = "In" as *u8; e49.z = 49; e49.mass_q3 = 114818
146 let e50: *Element = ((arr as nx_int) + (49 * NX_ELEM_BYTES)) as *Element
147 e50.symbol = "Sn" as *u8; e50.z = 50; e50.mass_q3 = 118710
148 let e51: *Element = ((arr as nx_int) + (50 * NX_ELEM_BYTES)) as *Element
149 e51.symbol = "Sb" as *u8; e51.z = 51; e51.mass_q3 = 121760
150 let e52: *Element = ((arr as nx_int) + (51 * NX_ELEM_BYTES)) as *Element
151 e52.symbol = "Te" as *u8; e52.z = 52; e52.mass_q3 = 127600
152 let e53: *Element = ((arr as nx_int) + (52 * NX_ELEM_BYTES)) as *Element
153 e53.symbol = "I " as *u8; e53.z = 53; e53.mass_q3 = 126904
154 let e54: *Element = ((arr as nx_int) + (53 * NX_ELEM_BYTES)) as *Element
155 e54.symbol = "Xe" as *u8; e54.z = 54; e54.mass_q3 = 131293
156
157 // ---- Period 6: Cs..Rn (Z 55..86) incl. lanthanides ----
158 let e55: *Element = ((arr as nx_int) + (54 * NX_ELEM_BYTES)) as *Element
159 e55.symbol = "Cs" as *u8; e55.z = 55; e55.mass_q3 = 132905
160 let e56: *Element = ((arr as nx_int) + (55 * NX_ELEM_BYTES)) as *Element
161 e56.symbol = "Ba" as *u8; e56.z = 56; e56.mass_q3 = 137327
162 let e57: *Element = ((arr as nx_int) + (56 * NX_ELEM_BYTES)) as *Element
163 e57.symbol = "La" as *u8; e57.z = 57; e57.mass_q3 = 138905
164 let e58: *Element = ((arr as nx_int) + (57 * NX_ELEM_BYTES)) as *Element
165 e58.symbol = "Ce" as *u8; e58.z = 58; e58.mass_q3 = 140116
166 let e59: *Element = ((arr as nx_int) + (58 * NX_ELEM_BYTES)) as *Element
167 e59.symbol = "Pr" as *u8; e59.z = 59; e59.mass_q3 = 140908
168 let e60: *Element = ((arr as nx_int) + (59 * NX_ELEM_BYTES)) as *Element
169 e60.symbol = "Nd" as *u8; e60.z = 60; e60.mass_q3 = 144242
170 let e61: *Element = ((arr as nx_int) + (60 * NX_ELEM_BYTES)) as *Element
171 e61.symbol = "Pm" as *u8; e61.z = 61; e61.mass_q3 = 145000
172 let e62: *Element = ((arr as nx_int) + (61 * NX_ELEM_BYTES)) as *Element
173 e62.symbol = "Sm" as *u8; e62.z = 62; e62.mass_q3 = 150360
174 let e63: *Element = ((arr as nx_int) + (62 * NX_ELEM_BYTES)) as *Element
175 e63.symbol = "Eu" as *u8; e63.z = 63; e63.mass_q3 = 151964
176 let e64: *Element = ((arr as nx_int) + (63 * NX_ELEM_BYTES)) as *Element
177 e64.symbol = "Gd" as *u8; e64.z = 64; e64.mass_q3 = 157250
178 let e65: *Element = ((arr as nx_int) + (64 * NX_ELEM_BYTES)) as *Element
179 e65.symbol = "Tb" as *u8; e65.z = 65; e65.mass_q3 = 158925
180 let e66: *Element = ((arr as nx_int) + (65 * NX_ELEM_BYTES)) as *Element
181 e66.symbol = "Dy" as *u8; e66.z = 66; e66.mass_q3 = 162500
182 let e67: *Element = ((arr as nx_int) + (66 * NX_ELEM_BYTES)) as *Element
183 e67.symbol = "Ho" as *u8; e67.z = 67; e67.mass_q3 = 164930
184 let e68: *Element = ((arr as nx_int) + (67 * NX_ELEM_BYTES)) as *Element
185 e68.symbol = "Er" as *u8; e68.z = 68; e68.mass_q3 = 167259
186 let e69: *Element = ((arr as nx_int) + (68 * NX_ELEM_BYTES)) as *Element
187 e69.symbol = "Tm" as *u8; e69.z = 69; e69.mass_q3 = 168934
188 let e70: *Element = ((arr as nx_int) + (69 * NX_ELEM_BYTES)) as *Element
189 e70.symbol = "Yb" as *u8; e70.z = 70; e70.mass_q3 = 173045
190 let e71: *Element = ((arr as nx_int) + (70 * NX_ELEM_BYTES)) as *Element
191 e71.symbol = "Lu" as *u8; e71.z = 71; e71.mass_q3 = 174967
192 let e72: *Element = ((arr as nx_int) + (71 * NX_ELEM_BYTES)) as *Element
193 e72.symbol = "Hf" as *u8; e72.z = 72; e72.mass_q3 = 178486
194 let e73: *Element = ((arr as nx_int) + (72 * NX_ELEM_BYTES)) as *Element
195 e73.symbol = "Ta" as *u8; e73.z = 73; e73.mass_q3 = 180948
196 let e74: *Element = ((arr as nx_int) + (73 * NX_ELEM_BYTES)) as *Element
197 e74.symbol = "W " as *u8; e74.z = 74; e74.mass_q3 = 183840
198 let e75: *Element = ((arr as nx_int) + (74 * NX_ELEM_BYTES)) as *Element
199 e75.symbol = "Re" as *u8; e75.z = 75; e75.mass_q3 = 186207
200 let e76: *Element = ((arr as nx_int) + (75 * NX_ELEM_BYTES)) as *Element
201 e76.symbol = "Os" as *u8; e76.z = 76; e76.mass_q3 = 190230
202 let e77: *Element = ((arr as nx_int) + (76 * NX_ELEM_BYTES)) as *Element
203 e77.symbol = "Ir" as *u8; e77.z = 77; e77.mass_q3 = 192217
204 let e78: *Element = ((arr as nx_int) + (77 * NX_ELEM_BYTES)) as *Element
205 e78.symbol = "Pt" as *u8; e78.z = 78; e78.mass_q3 = 195084
206 let e79: *Element = ((arr as nx_int) + (78 * NX_ELEM_BYTES)) as *Element
207 e79.symbol = "Au" as *u8; e79.z = 79; e79.mass_q3 = 196967
208 let e80: *Element = ((arr as nx_int) + (79 * NX_ELEM_BYTES)) as *Element
209 e80.symbol = "Hg" as *u8; e80.z = 80; e80.mass_q3 = 200592
210 let e81: *Element = ((arr as nx_int) + (80 * NX_ELEM_BYTES)) as *Element
211 e81.symbol = "Tl" as *u8; e81.z = 81; e81.mass_q3 = 204380
212 let e82: *Element = ((arr as nx_int) + (81 * NX_ELEM_BYTES)) as *Element
213 e82.symbol = "Pb" as *u8; e82.z = 82; e82.mass_q3 = 207200
214 let e83: *Element = ((arr as nx_int) + (82 * NX_ELEM_BYTES)) as *Element
215 e83.symbol = "Bi" as *u8; e83.z = 83; e83.mass_q3 = 208980
216 let e84: *Element = ((arr as nx_int) + (83 * NX_ELEM_BYTES)) as *Element
217 e84.symbol = "Po" as *u8; e84.z = 84; e84.mass_q3 = 209000
218 let e85: *Element = ((arr as nx_int) + (84 * NX_ELEM_BYTES)) as *Element
219 e85.symbol = "At" as *u8; e85.z = 85; e85.mass_q3 = 210000
220 let e86: *Element = ((arr as nx_int) + (85 * NX_ELEM_BYTES)) as *Element
221 e86.symbol = "Rn" as *u8; e86.z = 86; e86.mass_q3 = 222000
222
223 // ---- Period 7: Fr..Og (Z 87..118) incl. actinides ----
224 let e87: *Element = ((arr as nx_int) + (86 * NX_ELEM_BYTES)) as *Element
225 e87.symbol = "Fr" as *u8; e87.z = 87; e87.mass_q3 = 223000
226 let e88: *Element = ((arr as nx_int) + (87 * NX_ELEM_BYTES)) as *Element
227 e88.symbol = "Ra" as *u8; e88.z = 88; e88.mass_q3 = 226000
228 let e89: *Element = ((arr as nx_int) + (88 * NX_ELEM_BYTES)) as *Element
229 e89.symbol = "Ac" as *u8; e89.z = 89; e89.mass_q3 = 227000
230 let e90: *Element = ((arr as nx_int) + (89 * NX_ELEM_BYTES)) as *Element
231 e90.symbol = "Th" as *u8; e90.z = 90; e90.mass_q3 = 232038
232 let e91: *Element = ((arr as nx_int) + (90 * NX_ELEM_BYTES)) as *Element
233 e91.symbol = "Pa" as *u8; e91.z = 91; e91.mass_q3 = 231036
234 let e92: *Element = ((arr as nx_int) + (91 * NX_ELEM_BYTES)) as *Element
235 e92.symbol = "U " as *u8; e92.z = 92; e92.mass_q3 = 238029
236 let e93: *Element = ((arr as nx_int) + (92 * NX_ELEM_BYTES)) as *Element
237 e93.symbol = "Np" as *u8; e93.z = 93; e93.mass_q3 = 237000
238 let e94: *Element = ((arr as nx_int) + (93 * NX_ELEM_BYTES)) as *Element
239 e94.symbol = "Pu" as *u8; e94.z = 94; e94.mass_q3 = 244000
240 let e95: *Element = ((arr as nx_int) + (94 * NX_ELEM_BYTES)) as *Element
241 e95.symbol = "Am" as *u8; e95.z = 95; e95.mass_q3 = 243000
242 let e96: *Element = ((arr as nx_int) + (95 * NX_ELEM_BYTES)) as *Element
243 e96.symbol = "Cm" as *u8; e96.z = 96; e96.mass_q3 = 247000
244 let e97: *Element = ((arr as nx_int) + (96 * NX_ELEM_BYTES)) as *Element
245 e97.symbol = "Bk" as *u8; e97.z = 97; e97.mass_q3 = 247000
246 let e98: *Element = ((arr as nx_int) + (97 * NX_ELEM_BYTES)) as *Element
247 e98.symbol = "Cf" as *u8; e98.z = 98; e98.mass_q3 = 251000
248 let e99: *Element = ((arr as nx_int) + (98 * NX_ELEM_BYTES)) as *Element
249 e99.symbol = "Es" as *u8; e99.z = 99; e99.mass_q3 = 252000
250 let e100: *Element = ((arr as nx_int) + (99 * NX_ELEM_BYTES)) as *Element
251 e100.symbol = "Fm" as *u8; e100.z = 100; e100.mass_q3 = 257000
252 let e101: *Element = ((arr as nx_int) + (100 * NX_ELEM_BYTES)) as *Element
253 e101.symbol = "Md" as *u8; e101.z = 101; e101.mass_q3 = 258000
254 let e102: *Element = ((arr as nx_int) + (101 * NX_ELEM_BYTES)) as *Element
255 e102.symbol = "No" as *u8; e102.z = 102; e102.mass_q3 = 259000
256 let e103: *Element = ((arr as nx_int) + (102 * NX_ELEM_BYTES)) as *Element
257 e103.symbol = "Lr" as *u8; e103.z = 103; e103.mass_q3 = 262000
258 let e104: *Element = ((arr as nx_int) + (103 * NX_ELEM_BYTES)) as *Element
259 e104.symbol = "Rf" as *u8; e104.z = 104; e104.mass_q3 = 267000
260 let e105: *Element = ((arr as nx_int) + (104 * NX_ELEM_BYTES)) as *Element
261 e105.symbol = "Db" as *u8; e105.z = 105; e105.mass_q3 = 268000
262 let e106: *Element = ((arr as nx_int) + (105 * NX_ELEM_BYTES)) as *Element
263 e106.symbol = "Sg" as *u8; e106.z = 106; e106.mass_q3 = 271000
264 let e107: *Element = ((arr as nx_int) + (106 * NX_ELEM_BYTES)) as *Element
265 e107.symbol = "Bh" as *u8; e107.z = 107; e107.mass_q3 = 272000
266 let e108: *Element = ((arr as nx_int) + (107 * NX_ELEM_BYTES)) as *Element
267 e108.symbol = "Hs" as *u8; e108.z = 108; e108.mass_q3 = 270000
268 let e109: *Element = ((arr as nx_int) + (108 * NX_ELEM_BYTES)) as *Element
269 e109.symbol = "Mt" as *u8; e109.z = 109; e109.mass_q3 = 276000
270 let e110: *Element = ((arr as nx_int) + (109 * NX_ELEM_BYTES)) as *Element
271 e110.symbol = "Ds" as *u8; e110.z = 110; e110.mass_q3 = 281000
272 let e111: *Element = ((arr as nx_int) + (110 * NX_ELEM_BYTES)) as *Element
273 e111.symbol = "Rg" as *u8; e111.z = 111; e111.mass_q3 = 280000
274 let e112: *Element = ((arr as nx_int) + (111 * NX_ELEM_BYTES)) as *Element
275 e112.symbol = "Cn" as *u8; e112.z = 112; e112.mass_q3 = 285000
276 let e113: *Element = ((arr as nx_int) + (112 * NX_ELEM_BYTES)) as *Element
277 e113.symbol = "Nh" as *u8; e113.z = 113; e113.mass_q3 = 284000
278 let e114: *Element = ((arr as nx_int) + (113 * NX_ELEM_BYTES)) as *Element
279 e114.symbol = "Fl" as *u8; e114.z = 114; e114.mass_q3 = 289000
280 let e115: *Element = ((arr as nx_int) + (114 * NX_ELEM_BYTES)) as *Element
281 e115.symbol = "Mc" as *u8; e115.z = 115; e115.mass_q3 = 288000
282 let e116: *Element = ((arr as nx_int) + (115 * NX_ELEM_BYTES)) as *Element
283 e116.symbol = "Lv" as *u8; e116.z = 116; e116.mass_q3 = 293000
284 let e117: *Element = ((arr as nx_int) + (116 * NX_ELEM_BYTES)) as *Element
285 e117.symbol = "Ts" as *u8; e117.z = 117; e117.mass_q3 = 294000
286 let e118: *Element = ((arr as nx_int) + (117 * NX_ELEM_BYTES)) as *Element
287 e118.symbol = "Og" as *u8; e118.z = 118; e118.mass_q3 = 294000
288
289 return arr
290}
291
292// =================================================================
293// Bounded lookup on the 1..118 Element table.
294// Returns null for z<1 or z>118.
295// =================================================================
296func nx_chem_element_by_z_118(table: *Element, z: nx_int) -> *Element {
297 if z < 1 { return 0 as *Element }
298 if z > 118 { return 0 as *Element }
299 return ((table as nx_int) + ((z - 1) * NX_ELEM_BYTES)) as *Element
300}
301
302// =================================================================
303// AtomicData -- auxiliary per-Z atomic properties used by the
304// supplement-audit phylum (MS m/z + adulterant ID + label-claim).
305// =================================================================
306struct AtomicData {
307 z: nx_int, // atomic number (redundant index, useful for safety check)
308 iso_a_q0: nx_int, // mass number A of most-abundant isotope
309 iso_mass_q4: nx_int, // exact mass of that isotope * 10000 (Q4 micro-AMU)
310 iso_abund_ppm: nx_int, // natural abundance in parts per million (max 1_000_000); -1 = radionuclide
311 valence_bits: nx_int, // bit (15 + ox_state) set per common oxidation state
312 ie1_meV: nx_int, // first ionization energy * 1000 in eV (milli-eV); 0 = unknown
313 ea_meV: nx_int, // electron affinity * 1000 in eV; 0 = unknown / no stable anion
314 en_pauling_q2: nx_int, // Pauling electronegativity * 100; 0 = undefined (noble gas / super-heavy)
315}
316const NX_ATOMIC_DATA_BYTES: nx_int = 64
317
318// =================================================================
319// AtomicData table builder. All 118 elements populated.
320// =================================================================
321func nx_chem_atomic_data_table_118() -> *AtomicData {
322 let n: nx_int = 118
323 let arr: *AtomicData = (sys_mmap((n * NX_ATOMIC_DATA_BYTES) as i64)) as *AtomicData
324
325 // Helper macros for valence bits expressed as (1 << (15 + ox)).
326 // bit 0=ox-15 .. bit 13=ox-2 .. bit 14=ox-1 .. bit 15=ox 0 ..
327 // bit 16=ox+1 .. bit 17=ox+2 .. bit 18=ox+3 .. bit 19=ox+4 ..
328 // bit 20=ox+5 .. bit 21=ox+6 .. bit 22=ox+7
329
330 // ---- Period 1 ----
331 let d1: *AtomicData = ((arr as nx_int) + (0 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
332 d1.z = 1; d1.iso_a_q0 = 1; d1.iso_mass_q4 = 10078; d1.iso_abund_ppm = 999885; d1.valence_bits = (1 << 14) | (1 << 16); d1.ie1_meV = 13598; d1.ea_meV = 754; d1.en_pauling_q2 = 220
333 let d2: *AtomicData = ((arr as nx_int) + (1 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
334 d2.z = 2; d2.iso_a_q0 = 4; d2.iso_mass_q4 = 40026; d2.iso_abund_ppm = 999999; d2.valence_bits = 0; d2.ie1_meV = 24587; d2.ea_meV = 0; d2.en_pauling_q2 = 0
335
336 // ---- Period 2 ----
337 let d3: *AtomicData = ((arr as nx_int) + (2 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
338 d3.z = 3; d3.iso_a_q0 = 7; d3.iso_mass_q4 = 70160; d3.iso_abund_ppm = 924100; d3.valence_bits = (1 << 16); d3.ie1_meV = 5392; d3.ea_meV = 618; d3.en_pauling_q2 = 98
339 let d4: *AtomicData = ((arr as nx_int) + (3 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
340 d4.z = 4; d4.iso_a_q0 = 9; d4.iso_mass_q4 = 90122; d4.iso_abund_ppm = 1000000; d4.valence_bits = (1 << 17); d4.ie1_meV = 9323; d4.ea_meV = 0; d4.en_pauling_q2 = 157
341 let d5: *AtomicData = ((arr as nx_int) + (4 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
342 d5.z = 5; d5.iso_a_q0 = 11; d5.iso_mass_q4 = 110093; d5.iso_abund_ppm = 801000; d5.valence_bits = (1 << 18); d5.ie1_meV = 8298; d5.ea_meV = 280; d5.en_pauling_q2 = 204
343 let d6: *AtomicData = ((arr as nx_int) + (5 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
344 d6.z = 6; d6.iso_a_q0 = 12; d6.iso_mass_q4 = 120000; d6.iso_abund_ppm = 989300; d6.valence_bits = (1 << 11) | (1 << 17) | (1 << 19); d6.ie1_meV = 11260; d6.ea_meV = 1262; d6.en_pauling_q2 = 255
345 let d7: *AtomicData = ((arr as nx_int) + (6 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
346 d7.z = 7; d7.iso_a_q0 = 14; d7.iso_mass_q4 = 140031; d7.iso_abund_ppm = 996360; d7.valence_bits = (1 << 12) | (1 << 18) | (1 << 20); d7.ie1_meV = 14534; d7.ea_meV = 0; d7.en_pauling_q2 = 304
347 let d8: *AtomicData = ((arr as nx_int) + (7 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
348 d8.z = 8; d8.iso_a_q0 = 16; d8.iso_mass_q4 = 159949; d8.iso_abund_ppm = 997570; d8.valence_bits = (1 << 13); d8.ie1_meV = 13618; d8.ea_meV = 1461; d8.en_pauling_q2 = 344
349 let d9: *AtomicData = ((arr as nx_int) + (8 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
350 d9.z = 9; d9.iso_a_q0 = 19; d9.iso_mass_q4 = 189984; d9.iso_abund_ppm = 1000000; d9.valence_bits = (1 << 14); d9.ie1_meV = 17423; d9.ea_meV = 3401; d9.en_pauling_q2 = 398
351 let d10: *AtomicData = ((arr as nx_int) + (9 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
352 d10.z = 10; d10.iso_a_q0 = 20; d10.iso_mass_q4 = 199924; d10.iso_abund_ppm = 904800; d10.valence_bits = 0; d10.ie1_meV = 21565; d10.ea_meV = 0; d10.en_pauling_q2 = 0
353
354 // ---- Period 3 ----
355 let d11: *AtomicData = ((arr as nx_int) + (10 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
356 d11.z = 11; d11.iso_a_q0 = 23; d11.iso_mass_q4 = 229898; d11.iso_abund_ppm = 1000000; d11.valence_bits = (1 << 16); d11.ie1_meV = 5139; d11.ea_meV = 548; d11.en_pauling_q2 = 93
357 let d12: *AtomicData = ((arr as nx_int) + (11 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
358 d12.z = 12; d12.iso_a_q0 = 24; d12.iso_mass_q4 = 239850; d12.iso_abund_ppm = 789900; d12.valence_bits = (1 << 17); d12.ie1_meV = 7646; d12.ea_meV = 0; d12.en_pauling_q2 = 131
359 let d13: *AtomicData = ((arr as nx_int) + (12 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
360 d13.z = 13; d13.iso_a_q0 = 27; d13.iso_mass_q4 = 269815; d13.iso_abund_ppm = 1000000; d13.valence_bits = (1 << 18); d13.ie1_meV = 5986; d13.ea_meV = 433; d13.en_pauling_q2 = 161
361 let d14: *AtomicData = ((arr as nx_int) + (13 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
362 d14.z = 14; d14.iso_a_q0 = 28; d14.iso_mass_q4 = 279769; d14.iso_abund_ppm = 922230; d14.valence_bits = (1 << 11) | (1 << 19); d14.ie1_meV = 8152; d14.ea_meV = 1390; d14.en_pauling_q2 = 190
363 let d15: *AtomicData = ((arr as nx_int) + (14 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
364 d15.z = 15; d15.iso_a_q0 = 31; d15.iso_mass_q4 = 309738; d15.iso_abund_ppm = 1000000; d15.valence_bits = (1 << 12) | (1 << 18) | (1 << 20); d15.ie1_meV = 10487; d15.ea_meV = 747; d15.en_pauling_q2 = 219
365 let d16: *AtomicData = ((arr as nx_int) + (15 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
366 d16.z = 16; d16.iso_a_q0 = 32; d16.iso_mass_q4 = 319721; d16.iso_abund_ppm = 949900; d16.valence_bits = (1 << 13) | (1 << 19) | (1 << 21); d16.ie1_meV = 10360; d16.ea_meV = 2077; d16.en_pauling_q2 = 258
367 let d17: *AtomicData = ((arr as nx_int) + (16 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
368 d17.z = 17; d17.iso_a_q0 = 35; d17.iso_mass_q4 = 349689; d17.iso_abund_ppm = 757800; d17.valence_bits = (1 << 14) | (1 << 16) | (1 << 18) | (1 << 20) | (1 << 22); d17.ie1_meV = 12968; d17.ea_meV = 3613; d17.en_pauling_q2 = 316
369 let d18: *AtomicData = ((arr as nx_int) + (17 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
370 d18.z = 18; d18.iso_a_q0 = 40; d18.iso_mass_q4 = 399624; d18.iso_abund_ppm = 996035; d18.valence_bits = 0; d18.ie1_meV = 15760; d18.ea_meV = 0; d18.en_pauling_q2 = 0
371
372 // ---- Period 4 ----
373 let d19: *AtomicData = ((arr as nx_int) + (18 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
374 d19.z = 19; d19.iso_a_q0 = 39; d19.iso_mass_q4 = 389637; d19.iso_abund_ppm = 932581; d19.valence_bits = (1 << 16); d19.ie1_meV = 4341; d19.ea_meV = 501; d19.en_pauling_q2 = 82
375 let d20: *AtomicData = ((arr as nx_int) + (19 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
376 d20.z = 20; d20.iso_a_q0 = 40; d20.iso_mass_q4 = 399626; d20.iso_abund_ppm = 969410; d20.valence_bits = (1 << 17); d20.ie1_meV = 6113; d20.ea_meV = 25; d20.en_pauling_q2 = 100
377 let d21: *AtomicData = ((arr as nx_int) + (20 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
378 d21.z = 21; d21.iso_a_q0 = 45; d21.iso_mass_q4 = 449559; d21.iso_abund_ppm = 1000000; d21.valence_bits = (1 << 18); d21.ie1_meV = 6561; d21.ea_meV = 188; d21.en_pauling_q2 = 136
379 let d22: *AtomicData = ((arr as nx_int) + (21 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
380 d22.z = 22; d22.iso_a_q0 = 48; d22.iso_mass_q4 = 479479; d22.iso_abund_ppm = 737200; d22.valence_bits = (1 << 17) | (1 << 18) | (1 << 19); d22.ie1_meV = 6828; d22.ea_meV = 84; d22.en_pauling_q2 = 154
381 let d23: *AtomicData = ((arr as nx_int) + (22 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
382 d23.z = 23; d23.iso_a_q0 = 51; d23.iso_mass_q4 = 509440; d23.iso_abund_ppm = 997500; d23.valence_bits = (1 << 17) | (1 << 18) | (1 << 19) | (1 << 20); d23.ie1_meV = 6746; d23.ea_meV = 527; d23.en_pauling_q2 = 163
383 let d24: *AtomicData = ((arr as nx_int) + (23 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
384 d24.z = 24; d24.iso_a_q0 = 52; d24.iso_mass_q4 = 519405; d24.iso_abund_ppm = 837890; d24.valence_bits = (1 << 17) | (1 << 18) | (1 << 21); d24.ie1_meV = 6767; d24.ea_meV = 676; d24.en_pauling_q2 = 166
385 let d25: *AtomicData = ((arr as nx_int) + (24 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
386 d25.z = 25; d25.iso_a_q0 = 55; d25.iso_mass_q4 = 549380; d25.iso_abund_ppm = 1000000; d25.valence_bits = (1 << 17) | (1 << 19) | (1 << 22); d25.ie1_meV = 7434; d25.ea_meV = 0; d25.en_pauling_q2 = 155
387 let d26: *AtomicData = ((arr as nx_int) + (25 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
388 d26.z = 26; d26.iso_a_q0 = 56; d26.iso_mass_q4 = 559349; d26.iso_abund_ppm = 917540; d26.valence_bits = (1 << 17) | (1 << 18); d26.ie1_meV = 7902; d26.ea_meV = 151; d26.en_pauling_q2 = 183
389 let d27: *AtomicData = ((arr as nx_int) + (26 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
390 d27.z = 27; d27.iso_a_q0 = 59; d27.iso_mass_q4 = 589332; d27.iso_abund_ppm = 1000000; d27.valence_bits = (1 << 17) | (1 << 18); d27.ie1_meV = 7881; d27.ea_meV = 662; d27.en_pauling_q2 = 188
391 let d28: *AtomicData = ((arr as nx_int) + (27 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
392 d28.z = 28; d28.iso_a_q0 = 58; d28.iso_mass_q4 = 579353; d28.iso_abund_ppm = 680770; d28.valence_bits = (1 << 17); d28.ie1_meV = 7640; d28.ea_meV = 1156; d28.en_pauling_q2 = 191
393 let d29: *AtomicData = ((arr as nx_int) + (28 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
394 d29.z = 29; d29.iso_a_q0 = 63; d29.iso_mass_q4 = 629296; d29.iso_abund_ppm = 691700; d29.valence_bits = (1 << 16) | (1 << 17); d29.ie1_meV = 7726; d29.ea_meV = 1235; d29.en_pauling_q2 = 190
395 let d30: *AtomicData = ((arr as nx_int) + (29 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
396 d30.z = 30; d30.iso_a_q0 = 64; d30.iso_mass_q4 = 639291; d30.iso_abund_ppm = 486300; d30.valence_bits = (1 << 17); d30.ie1_meV = 9394; d30.ea_meV = 0; d30.en_pauling_q2 = 165
397 let d31: *AtomicData = ((arr as nx_int) + (30 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
398 d31.z = 31; d31.iso_a_q0 = 69; d31.iso_mass_q4 = 689256; d31.iso_abund_ppm = 601080; d31.valence_bits = (1 << 18); d31.ie1_meV = 5999; d31.ea_meV = 300; d31.en_pauling_q2 = 181
399 let d32: *AtomicData = ((arr as nx_int) + (31 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
400 d32.z = 32; d32.iso_a_q0 = 74; d32.iso_mass_q4 = 739212; d32.iso_abund_ppm = 365000; d32.valence_bits = (1 << 17) | (1 << 19); d32.ie1_meV = 7899; d32.ea_meV = 1232; d32.en_pauling_q2 = 201
401 let d33: *AtomicData = ((arr as nx_int) + (32 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
402 d33.z = 33; d33.iso_a_q0 = 75; d33.iso_mass_q4 = 749216; d33.iso_abund_ppm = 1000000; d33.valence_bits = (1 << 12) | (1 << 18) | (1 << 20); d33.ie1_meV = 9789; d33.ea_meV = 804; d33.en_pauling_q2 = 218
403 let d34: *AtomicData = ((arr as nx_int) + (33 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
404 d34.z = 34; d34.iso_a_q0 = 80; d34.iso_mass_q4 = 799165; d34.iso_abund_ppm = 496100; d34.valence_bits = (1 << 13) | (1 << 19) | (1 << 21); d34.ie1_meV = 9752; d34.ea_meV = 2021; d34.en_pauling_q2 = 255
405 let d35: *AtomicData = ((arr as nx_int) + (34 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
406 d35.z = 35; d35.iso_a_q0 = 79; d35.iso_mass_q4 = 789183; d35.iso_abund_ppm = 506900; d35.valence_bits = (1 << 14) | (1 << 16) | (1 << 18) | (1 << 20) | (1 << 22); d35.ie1_meV = 11814; d35.ea_meV = 3364; d35.en_pauling_q2 = 296
407 let d36: *AtomicData = ((arr as nx_int) + (35 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
408 d36.z = 36; d36.iso_a_q0 = 84; d36.iso_mass_q4 = 839115; d36.iso_abund_ppm = 569870; d36.valence_bits = 0; d36.ie1_meV = 14000; d36.ea_meV = 0; d36.en_pauling_q2 = 300
409
410 // ---- Period 5 ----
411 let d37: *AtomicData = ((arr as nx_int) + (36 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
412 d37.z = 37; d37.iso_a_q0 = 85; d37.iso_mass_q4 = 849118; d37.iso_abund_ppm = 721700; d37.valence_bits = (1 << 16); d37.ie1_meV = 4177; d37.ea_meV = 486; d37.en_pauling_q2 = 82
413 let d38: *AtomicData = ((arr as nx_int) + (37 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
414 d38.z = 38; d38.iso_a_q0 = 88; d38.iso_mass_q4 = 879056; d38.iso_abund_ppm = 825800; d38.valence_bits = (1 << 17); d38.ie1_meV = 5695; d38.ea_meV = 52; d38.en_pauling_q2 = 95
415 let d39: *AtomicData = ((arr as nx_int) + (38 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
416 d39.z = 39; d39.iso_a_q0 = 89; d39.iso_mass_q4 = 889058; d39.iso_abund_ppm = 1000000; d39.valence_bits = (1 << 18); d39.ie1_meV = 6217; d39.ea_meV = 307; d39.en_pauling_q2 = 122
417 let d40: *AtomicData = ((arr as nx_int) + (39 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
418 d40.z = 40; d40.iso_a_q0 = 90; d40.iso_mass_q4 = 899047; d40.iso_abund_ppm = 514500; d40.valence_bits = (1 << 19); d40.ie1_meV = 6634; d40.ea_meV = 426; d40.en_pauling_q2 = 133
419 let d41: *AtomicData = ((arr as nx_int) + (40 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
420 d41.z = 41; d41.iso_a_q0 = 93; d41.iso_mass_q4 = 929064; d41.iso_abund_ppm = 1000000; d41.valence_bits = (1 << 18) | (1 << 19) | (1 << 20); d41.ie1_meV = 6759; d41.ea_meV = 916; d41.en_pauling_q2 = 160
421 let d42: *AtomicData = ((arr as nx_int) + (41 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
422 d42.z = 42; d42.iso_a_q0 = 98; d42.iso_mass_q4 = 979054; d42.iso_abund_ppm = 243900; d42.valence_bits = (1 << 17) | (1 << 18) | (1 << 19) | (1 << 20) | (1 << 21); d42.ie1_meV = 7092; d42.ea_meV = 747; d42.en_pauling_q2 = 216
423 let d43: *AtomicData = ((arr as nx_int) + (42 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
424 d43.z = 43; d43.iso_a_q0 = 98; d43.iso_mass_q4 = 979072; d43.iso_abund_ppm = -1; d43.valence_bits = (1 << 19) | (1 << 22); d43.ie1_meV = 7280; d43.ea_meV = 550; d43.en_pauling_q2 = 190
425 let d44: *AtomicData = ((arr as nx_int) + (43 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
426 d44.z = 44; d44.iso_a_q0 = 102; d44.iso_mass_q4 = 1019043; d44.iso_abund_ppm = 315500; d44.valence_bits = (1 << 18) | (1 << 19); d44.ie1_meV = 7361; d44.ea_meV = 1046; d44.en_pauling_q2 = 220
427 let d45: *AtomicData = ((arr as nx_int) + (44 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
428 d45.z = 45; d45.iso_a_q0 = 103; d45.iso_mass_q4 = 1029055; d45.iso_abund_ppm = 1000000; d45.valence_bits = (1 << 18); d45.ie1_meV = 7459; d45.ea_meV = 1143; d45.en_pauling_q2 = 228
429 let d46: *AtomicData = ((arr as nx_int) + (45 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
430 d46.z = 46; d46.iso_a_q0 = 106; d46.iso_mass_q4 = 1059035; d46.iso_abund_ppm = 273300; d46.valence_bits = (1 << 17) | (1 << 19); d46.ie1_meV = 8337; d46.ea_meV = 562; d46.en_pauling_q2 = 220
431 let d47: *AtomicData = ((arr as nx_int) + (46 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
432 d47.z = 47; d47.iso_a_q0 = 107; d47.iso_mass_q4 = 1069051; d47.iso_abund_ppm = 518390; d47.valence_bits = (1 << 16); d47.ie1_meV = 7576; d47.ea_meV = 1304; d47.en_pauling_q2 = 193
433 let d48: *AtomicData = ((arr as nx_int) + (47 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
434 d48.z = 48; d48.iso_a_q0 = 114; d48.iso_mass_q4 = 1139034; d48.iso_abund_ppm = 287300; d48.valence_bits = (1 << 17); d48.ie1_meV = 8994; d48.ea_meV = 0; d48.en_pauling_q2 = 169
435 let d49: *AtomicData = ((arr as nx_int) + (48 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
436 d49.z = 49; d49.iso_a_q0 = 115; d49.iso_mass_q4 = 1149039; d49.iso_abund_ppm = 957100; d49.valence_bits = (1 << 16) | (1 << 18); d49.ie1_meV = 5786; d49.ea_meV = 404; d49.en_pauling_q2 = 178
437 let d50: *AtomicData = ((arr as nx_int) + (49 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
438 d50.z = 50; d50.iso_a_q0 = 120; d50.iso_mass_q4 = 1199022; d50.iso_abund_ppm = 325800; d50.valence_bits = (1 << 17) | (1 << 19); d50.ie1_meV = 7344; d50.ea_meV = 1112; d50.en_pauling_q2 = 196
439 let d51: *AtomicData = ((arr as nx_int) + (50 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
440 d51.z = 51; d51.iso_a_q0 = 121; d51.iso_mass_q4 = 1209038; d51.iso_abund_ppm = 572100; d51.valence_bits = (1 << 12) | (1 << 18) | (1 << 20); d51.ie1_meV = 8608; d51.ea_meV = 1046; d51.en_pauling_q2 = 205
441 let d52: *AtomicData = ((arr as nx_int) + (51 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
442 d52.z = 52; d52.iso_a_q0 = 130; d52.iso_mass_q4 = 1299062; d52.iso_abund_ppm = 340800; d52.valence_bits = (1 << 13) | (1 << 19) | (1 << 21); d52.ie1_meV = 9010; d52.ea_meV = 1971; d52.en_pauling_q2 = 210
443 let d53: *AtomicData = ((arr as nx_int) + (52 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
444 d53.z = 53; d53.iso_a_q0 = 127; d53.iso_mass_q4 = 1269045; d53.iso_abund_ppm = 1000000; d53.valence_bits = (1 << 14) | (1 << 16) | (1 << 20) | (1 << 22); d53.ie1_meV = 10451; d53.ea_meV = 3059; d53.en_pauling_q2 = 266
445 let d54: *AtomicData = ((arr as nx_int) + (53 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
446 d54.z = 54; d54.iso_a_q0 = 132; d54.iso_mass_q4 = 1319042; d54.iso_abund_ppm = 269000; d54.valence_bits = 0; d54.ie1_meV = 12130; d54.ea_meV = 0; d54.en_pauling_q2 = 260
447
448 // ---- Period 6 (incl. lanthanides) ----
449 let d55: *AtomicData = ((arr as nx_int) + (54 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
450 d55.z = 55; d55.iso_a_q0 = 133; d55.iso_mass_q4 = 1329055; d55.iso_abund_ppm = 1000000; d55.valence_bits = (1 << 16); d55.ie1_meV = 3894; d55.ea_meV = 472; d55.en_pauling_q2 = 79
451 let d56: *AtomicData = ((arr as nx_int) + (55 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
452 d56.z = 56; d56.iso_a_q0 = 138; d56.iso_mass_q4 = 1379052; d56.iso_abund_ppm = 716980; d56.valence_bits = (1 << 17); d56.ie1_meV = 5212; d56.ea_meV = 145; d56.en_pauling_q2 = 89
453 let d57: *AtomicData = ((arr as nx_int) + (56 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
454 d57.z = 57; d57.iso_a_q0 = 139; d57.iso_mass_q4 = 1389064; d57.iso_abund_ppm = 999100; d57.valence_bits = (1 << 18); d57.ie1_meV = 5577; d57.ea_meV = 500; d57.en_pauling_q2 = 110
455 let d58: *AtomicData = ((arr as nx_int) + (57 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
456 d58.z = 58; d58.iso_a_q0 = 140; d58.iso_mass_q4 = 1399054; d58.iso_abund_ppm = 884500; d58.valence_bits = (1 << 18) | (1 << 19); d58.ie1_meV = 5539; d58.ea_meV = 500; d58.en_pauling_q2 = 112
457 let d59: *AtomicData = ((arr as nx_int) + (58 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
458 d59.z = 59; d59.iso_a_q0 = 141; d59.iso_mass_q4 = 1409077; d59.iso_abund_ppm = 1000000; d59.valence_bits = (1 << 18); d59.ie1_meV = 5473; d59.ea_meV = 962; d59.en_pauling_q2 = 113
459 let d60: *AtomicData = ((arr as nx_int) + (59 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
460 d60.z = 60; d60.iso_a_q0 = 142; d60.iso_mass_q4 = 1419077; d60.iso_abund_ppm = 272000; d60.valence_bits = (1 << 18); d60.ie1_meV = 5525; d60.ea_meV = 970; d60.en_pauling_q2 = 114
461 let d61: *AtomicData = ((arr as nx_int) + (60 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
462 d61.z = 61; d61.iso_a_q0 = 145; d61.iso_mass_q4 = 1449128; d61.iso_abund_ppm = -1; d61.valence_bits = (1 << 18); d61.ie1_meV = 5582; d61.ea_meV = 129; d61.en_pauling_q2 = 113
463 let d62: *AtomicData = ((arr as nx_int) + (61 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
464 d62.z = 62; d62.iso_a_q0 = 152; d62.iso_mass_q4 = 1519197; d62.iso_abund_ppm = 267500; d62.valence_bits = (1 << 18); d62.ie1_meV = 5644; d62.ea_meV = 162; d62.en_pauling_q2 = 117
465 let d63: *AtomicData = ((arr as nx_int) + (62 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
466 d63.z = 63; d63.iso_a_q0 = 153; d63.iso_mass_q4 = 1529212; d63.iso_abund_ppm = 521900; d63.valence_bits = (1 << 18); d63.ie1_meV = 5670; d63.ea_meV = 864; d63.en_pauling_q2 = 120
467 let d64: *AtomicData = ((arr as nx_int) + (63 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
468 d64.z = 64; d64.iso_a_q0 = 158; d64.iso_mass_q4 = 1579241; d64.iso_abund_ppm = 248400; d64.valence_bits = (1 << 18); d64.ie1_meV = 6150; d64.ea_meV = 137; d64.en_pauling_q2 = 120
469 let d65: *AtomicData = ((arr as nx_int) + (64 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
470 d65.z = 65; d65.iso_a_q0 = 159; d65.iso_mass_q4 = 1589254; d65.iso_abund_ppm = 1000000; d65.valence_bits = (1 << 18); d65.ie1_meV = 5864; d65.ea_meV = 1165; d65.en_pauling_q2 = 110
471 let d66: *AtomicData = ((arr as nx_int) + (65 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
472 d66.z = 66; d66.iso_a_q0 = 164; d66.iso_mass_q4 = 1639292; d66.iso_abund_ppm = 282600; d66.valence_bits = (1 << 18); d66.ie1_meV = 5939; d66.ea_meV = 352; d66.en_pauling_q2 = 122
473 let d67: *AtomicData = ((arr as nx_int) + (66 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
474 d67.z = 67; d67.iso_a_q0 = 165; d67.iso_mass_q4 = 1649303; d67.iso_abund_ppm = 1000000; d67.valence_bits = (1 << 18); d67.ie1_meV = 6022; d67.ea_meV = 338; d67.en_pauling_q2 = 123
475 let d68: *AtomicData = ((arr as nx_int) + (67 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
476 d68.z = 68; d68.iso_a_q0 = 166; d68.iso_mass_q4 = 1659303; d68.iso_abund_ppm = 335030; d68.valence_bits = (1 << 18); d68.ie1_meV = 6108; d68.ea_meV = 312; d68.en_pauling_q2 = 124
477 let d69: *AtomicData = ((arr as nx_int) + (68 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
478 d69.z = 69; d69.iso_a_q0 = 169; d69.iso_mass_q4 = 1689342; d69.iso_abund_ppm = 1000000; d69.valence_bits = (1 << 18); d69.ie1_meV = 6184; d69.ea_meV = 1029; d69.en_pauling_q2 = 125
479 let d70: *AtomicData = ((arr as nx_int) + (69 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
480 d70.z = 70; d70.iso_a_q0 = 174; d70.iso_mass_q4 = 1739389; d70.iso_abund_ppm = 318300; d70.valence_bits = (1 << 18); d70.ie1_meV = 6254; d70.ea_meV = 20; d70.en_pauling_q2 = 110
481 let d71: *AtomicData = ((arr as nx_int) + (70 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
482 d71.z = 71; d71.iso_a_q0 = 175; d71.iso_mass_q4 = 1749408; d71.iso_abund_ppm = 974100; d71.valence_bits = (1 << 18); d71.ie1_meV = 5426; d71.ea_meV = 340; d71.en_pauling_q2 = 127
483 let d72: *AtomicData = ((arr as nx_int) + (71 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
484 d72.z = 72; d72.iso_a_q0 = 180; d72.iso_mass_q4 = 1799466; d72.iso_abund_ppm = 350800; d72.valence_bits = (1 << 19); d72.ie1_meV = 6825; d72.ea_meV = 178; d72.en_pauling_q2 = 130
485 let d73: *AtomicData = ((arr as nx_int) + (72 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
486 d73.z = 73; d73.iso_a_q0 = 181; d73.iso_mass_q4 = 1809480; d73.iso_abund_ppm = 999880; d73.valence_bits = (1 << 20); d73.ie1_meV = 7550; d73.ea_meV = 323; d73.en_pauling_q2 = 150
487 let d74: *AtomicData = ((arr as nx_int) + (73 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
488 d74.z = 74; d74.iso_a_q0 = 184; d74.iso_mass_q4 = 1839509; d74.iso_abund_ppm = 306400; d74.valence_bits = (1 << 19) | (1 << 20) | (1 << 21); d74.ie1_meV = 7864; d74.ea_meV = 816; d74.en_pauling_q2 = 236
489 let d75: *AtomicData = ((arr as nx_int) + (74 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
490 d75.z = 75; d75.iso_a_q0 = 187; d75.iso_mass_q4 = 1869558; d75.iso_abund_ppm = 626000; d75.valence_bits = (1 << 19) | (1 << 21) | (1 << 22); d75.ie1_meV = 7834; d75.ea_meV = 50; d75.en_pauling_q2 = 190
491 let d76: *AtomicData = ((arr as nx_int) + (75 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
492 d76.z = 76; d76.iso_a_q0 = 192; d76.iso_mass_q4 = 1919615; d76.iso_abund_ppm = 407800; d76.valence_bits = (1 << 19) | (1 << 21); d76.ie1_meV = 8438; d76.ea_meV = 1078; d76.en_pauling_q2 = 220
493 let d77: *AtomicData = ((arr as nx_int) + (76 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
494 d77.z = 77; d77.iso_a_q0 = 193; d77.iso_mass_q4 = 1929629; d77.iso_abund_ppm = 627000; d77.valence_bits = (1 << 18) | (1 << 19); d77.ie1_meV = 8967; d77.ea_meV = 1564; d77.en_pauling_q2 = 220
495 let d78: *AtomicData = ((arr as nx_int) + (77 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
496 d78.z = 78; d78.iso_a_q0 = 195; d78.iso_mass_q4 = 1949648; d78.iso_abund_ppm = 337800; d78.valence_bits = (1 << 17) | (1 << 19); d78.ie1_meV = 8959; d78.ea_meV = 2125; d78.en_pauling_q2 = 228
497 let d79: *AtomicData = ((arr as nx_int) + (78 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
498 d79.z = 79; d79.iso_a_q0 = 197; d79.iso_mass_q4 = 1969666; d79.iso_abund_ppm = 1000000; d79.valence_bits = (1 << 16) | (1 << 18); d79.ie1_meV = 9226; d79.ea_meV = 2309; d79.en_pauling_q2 = 254
499 let d80: *AtomicData = ((arr as nx_int) + (79 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
500 d80.z = 80; d80.iso_a_q0 = 202; d80.iso_mass_q4 = 2019706; d80.iso_abund_ppm = 298600; d80.valence_bits = (1 << 16) | (1 << 17); d80.ie1_meV = 10437; d80.ea_meV = 0; d80.en_pauling_q2 = 200
501 let d81: *AtomicData = ((arr as nx_int) + (80 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
502 d81.z = 81; d81.iso_a_q0 = 205; d81.iso_mass_q4 = 2049744; d81.iso_abund_ppm = 704760; d81.valence_bits = (1 << 16) | (1 << 18); d81.ie1_meV = 6108; d81.ea_meV = 377; d81.en_pauling_q2 = 162
503 let d82: *AtomicData = ((arr as nx_int) + (81 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
504 d82.z = 82; d82.iso_a_q0 = 208; d82.iso_mass_q4 = 2079767; d82.iso_abund_ppm = 524000; d82.valence_bits = (1 << 17) | (1 << 19); d82.ie1_meV = 7417; d82.ea_meV = 357; d82.en_pauling_q2 = 233
505 let d83: *AtomicData = ((arr as nx_int) + (82 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
506 d83.z = 83; d83.iso_a_q0 = 209; d83.iso_mass_q4 = 2089804; d83.iso_abund_ppm = 1000000; d83.valence_bits = (1 << 18) | (1 << 20); d83.ie1_meV = 7286; d83.ea_meV = 942; d83.en_pauling_q2 = 202
507 let d84: *AtomicData = ((arr as nx_int) + (83 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
508 d84.z = 84; d84.iso_a_q0 = 209; d84.iso_mass_q4 = 2089824; d84.iso_abund_ppm = -1; d84.valence_bits = (1 << 13) | (1 << 17) | (1 << 19) | (1 << 21); d84.ie1_meV = 8414; d84.ea_meV = 1400; d84.en_pauling_q2 = 200
509 let d85: *AtomicData = ((arr as nx_int) + (84 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
510 d85.z = 85; d85.iso_a_q0 = 210; d85.iso_mass_q4 = 2099871; d85.iso_abund_ppm = -1; d85.valence_bits = (1 << 14) | (1 << 20); d85.ie1_meV = 9318; d85.ea_meV = 2416; d85.en_pauling_q2 = 220
511 let d86: *AtomicData = ((arr as nx_int) + (85 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
512 d86.z = 86; d86.iso_a_q0 = 222; d86.iso_mass_q4 = 2220176; d86.iso_abund_ppm = -1; d86.valence_bits = 0; d86.ie1_meV = 10748; d86.ea_meV = 0; d86.en_pauling_q2 = 0
513
514 // ---- Period 7 (incl. actinides; super-heavy mostly theoretical) ----
515 let d87: *AtomicData = ((arr as nx_int) + (86 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
516 d87.z = 87; d87.iso_a_q0 = 223; d87.iso_mass_q4 = 2230197; d87.iso_abund_ppm = -1; d87.valence_bits = (1 << 16); d87.ie1_meV = 4073; d87.ea_meV = 486; d87.en_pauling_q2 = 70
517 let d88: *AtomicData = ((arr as nx_int) + (87 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
518 d88.z = 88; d88.iso_a_q0 = 226; d88.iso_mass_q4 = 2260254; d88.iso_abund_ppm = -1; d88.valence_bits = (1 << 17); d88.ie1_meV = 5279; d88.ea_meV = 0; d88.en_pauling_q2 = 90
519 let d89: *AtomicData = ((arr as nx_int) + (88 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
520 d89.z = 89; d89.iso_a_q0 = 227; d89.iso_mass_q4 = 2270278; d89.iso_abund_ppm = -1; d89.valence_bits = (1 << 18); d89.ie1_meV = 5170; d89.ea_meV = 350; d89.en_pauling_q2 = 110
521 let d90: *AtomicData = ((arr as nx_int) + (89 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
522 d90.z = 90; d90.iso_a_q0 = 232; d90.iso_mass_q4 = 2320381; d90.iso_abund_ppm = 1000000; d90.valence_bits = (1 << 19); d90.ie1_meV = 6307; d90.ea_meV = 1170; d90.en_pauling_q2 = 130
523 let d91: *AtomicData = ((arr as nx_int) + (90 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
524 d91.z = 91; d91.iso_a_q0 = 231; d91.iso_mass_q4 = 2310359; d91.iso_abund_ppm = -1; d91.valence_bits = (1 << 20); d91.ie1_meV = 5890; d91.ea_meV = 0; d91.en_pauling_q2 = 150
525 let d92: *AtomicData = ((arr as nx_int) + (91 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
526 d92.z = 92; d92.iso_a_q0 = 238; d92.iso_mass_q4 = 2380508; d92.iso_abund_ppm = 992742; d92.valence_bits = (1 << 18) | (1 << 19) | (1 << 20) | (1 << 21); d92.ie1_meV = 6194; d92.ea_meV = 315; d92.en_pauling_q2 = 138
527 let d93: *AtomicData = ((arr as nx_int) + (92 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
528 d93.z = 93; d93.iso_a_q0 = 237; d93.iso_mass_q4 = 2370482; d93.iso_abund_ppm = -1; d93.valence_bits = (1 << 20); d93.ie1_meV = 6266; d93.ea_meV = 450; d93.en_pauling_q2 = 136
529 let d94: *AtomicData = ((arr as nx_int) + (93 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
530 d94.z = 94; d94.iso_a_q0 = 244; d94.iso_mass_q4 = 2440642; d94.iso_abund_ppm = -1; d94.valence_bits = (1 << 19); d94.ie1_meV = 6026; d94.ea_meV = 0; d94.en_pauling_q2 = 128
531 let d95: *AtomicData = ((arr as nx_int) + (94 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
532 d95.z = 95; d95.iso_a_q0 = 243; d95.iso_mass_q4 = 2430614; d95.iso_abund_ppm = -1; d95.valence_bits = (1 << 18); d95.ie1_meV = 5974; d95.ea_meV = 0; d95.en_pauling_q2 = 130
533 let d96: *AtomicData = ((arr as nx_int) + (95 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
534 d96.z = 96; d96.iso_a_q0 = 247; d96.iso_mass_q4 = 2470704; d96.iso_abund_ppm = -1; d96.valence_bits = (1 << 18); d96.ie1_meV = 5991; d96.ea_meV = 0; d96.en_pauling_q2 = 130
535 let d97: *AtomicData = ((arr as nx_int) + (96 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
536 d97.z = 97; d97.iso_a_q0 = 247; d97.iso_mass_q4 = 2470703; d97.iso_abund_ppm = -1; d97.valence_bits = (1 << 18); d97.ie1_meV = 6198; d97.ea_meV = 0; d97.en_pauling_q2 = 130
537 let d98: *AtomicData = ((arr as nx_int) + (97 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
538 d98.z = 98; d98.iso_a_q0 = 251; d98.iso_mass_q4 = 2510796; d98.iso_abund_ppm = -1; d98.valence_bits = (1 << 18); d98.ie1_meV = 6282; d98.ea_meV = 0; d98.en_pauling_q2 = 130
539 let d99: *AtomicData = ((arr as nx_int) + (98 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
540 d99.z = 99; d99.iso_a_q0 = 252; d99.iso_mass_q4 = 2520830; d99.iso_abund_ppm = -1; d99.valence_bits = (1 << 18); d99.ie1_meV = 6368; d99.ea_meV = 0; d99.en_pauling_q2 = 130
541 let d100: *AtomicData = ((arr as nx_int) + (99 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
542 d100.z = 100; d100.iso_a_q0 = 257; d100.iso_mass_q4 = 2570951; d100.iso_abund_ppm = -1; d100.valence_bits = (1 << 18); d100.ie1_meV = 6500; d100.ea_meV = 0; d100.en_pauling_q2 = 130
543 let d101: *AtomicData = ((arr as nx_int) + (100 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
544 d101.z = 101; d101.iso_a_q0 = 258; d101.iso_mass_q4 = 2580984; d101.iso_abund_ppm = -1; d101.valence_bits = (1 << 18); d101.ie1_meV = 6580; d101.ea_meV = 0; d101.en_pauling_q2 = 130
545 let d102: *AtomicData = ((arr as nx_int) + (101 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
546 d102.z = 102; d102.iso_a_q0 = 259; d102.iso_mass_q4 = 2591010; d102.iso_abund_ppm = -1; d102.valence_bits = (1 << 17); d102.ie1_meV = 6626; d102.ea_meV = 0; d102.en_pauling_q2 = 130
547 let d103: *AtomicData = ((arr as nx_int) + (102 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
548 d103.z = 103; d103.iso_a_q0 = 262; d103.iso_mass_q4 = 2621096; d103.iso_abund_ppm = -1; d103.valence_bits = (1 << 18); d103.ie1_meV = 4960; d103.ea_meV = 0; d103.en_pauling_q2 = 130
549 let d104: *AtomicData = ((arr as nx_int) + (103 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
550 d104.z = 104; d104.iso_a_q0 = 267; d104.iso_mass_q4 = 2671218; d104.iso_abund_ppm = -1; d104.valence_bits = (1 << 19); d104.ie1_meV = 0; d104.ea_meV = 0; d104.en_pauling_q2 = 0
551 let d105: *AtomicData = ((arr as nx_int) + (104 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
552 d105.z = 105; d105.iso_a_q0 = 268; d105.iso_mass_q4 = 2681257; d105.iso_abund_ppm = -1; d105.valence_bits = (1 << 20); d105.ie1_meV = 0; d105.ea_meV = 0; d105.en_pauling_q2 = 0
553 let d106: *AtomicData = ((arr as nx_int) + (105 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
554 d106.z = 106; d106.iso_a_q0 = 271; d106.iso_mass_q4 = 2711339; d106.iso_abund_ppm = -1; d106.valence_bits = (1 << 21); d106.ie1_meV = 0; d106.ea_meV = 0; d106.en_pauling_q2 = 0
555 let d107: *AtomicData = ((arr as nx_int) + (106 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
556 d107.z = 107; d107.iso_a_q0 = 272; d107.iso_mass_q4 = 2721383; d107.iso_abund_ppm = -1; d107.valence_bits = (1 << 22); d107.ie1_meV = 0; d107.ea_meV = 0; d107.en_pauling_q2 = 0
557 let d108: *AtomicData = ((arr as nx_int) + (107 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
558 d108.z = 108; d108.iso_a_q0 = 270; d108.iso_mass_q4 = 2701343; d108.iso_abund_ppm = -1; d108.valence_bits = 0; d108.ie1_meV = 0; d108.ea_meV = 0; d108.en_pauling_q2 = 0
559 let d109: *AtomicData = ((arr as nx_int) + (108 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
560 d109.z = 109; d109.iso_a_q0 = 276; d109.iso_mass_q4 = 2761516; d109.iso_abund_ppm = -1; d109.valence_bits = 0; d109.ie1_meV = 0; d109.ea_meV = 0; d109.en_pauling_q2 = 0
561 let d110: *AtomicData = ((arr as nx_int) + (109 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
562 d110.z = 110; d110.iso_a_q0 = 281; d110.iso_mass_q4 = 2811645; d110.iso_abund_ppm = -1; d110.valence_bits = 0; d110.ie1_meV = 0; d110.ea_meV = 0; d110.en_pauling_q2 = 0
563 let d111: *AtomicData = ((arr as nx_int) + (110 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
564 d111.z = 111; d111.iso_a_q0 = 280; d111.iso_mass_q4 = 2801651; d111.iso_abund_ppm = -1; d111.valence_bits = 0; d111.ie1_meV = 0; d111.ea_meV = 0; d111.en_pauling_q2 = 0
565 let d112: *AtomicData = ((arr as nx_int) + (111 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
566 d112.z = 112; d112.iso_a_q0 = 285; d112.iso_mass_q4 = 2851771; d112.iso_abund_ppm = -1; d112.valence_bits = 0; d112.ie1_meV = 0; d112.ea_meV = 0; d112.en_pauling_q2 = 0
567 let d113: *AtomicData = ((arr as nx_int) + (112 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
568 d113.z = 113; d113.iso_a_q0 = 284; d113.iso_mass_q4 = 2841787; d113.iso_abund_ppm = -1; d113.valence_bits = 0; d113.ie1_meV = 0; d113.ea_meV = 0; d113.en_pauling_q2 = 0
569 let d114: *AtomicData = ((arr as nx_int) + (113 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
570 d114.z = 114; d114.iso_a_q0 = 289; d114.iso_mass_q4 = 2891904; d114.iso_abund_ppm = -1; d114.valence_bits = 0; d114.ie1_meV = 0; d114.ea_meV = 0; d114.en_pauling_q2 = 0
571 let d115: *AtomicData = ((arr as nx_int) + (114 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
572 d115.z = 115; d115.iso_a_q0 = 288; d115.iso_mass_q4 = 2881927; d115.iso_abund_ppm = -1; d115.valence_bits = 0; d115.ie1_meV = 0; d115.ea_meV = 0; d115.en_pauling_q2 = 0
573 let d116: *AtomicData = ((arr as nx_int) + (115 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
574 d116.z = 116; d116.iso_a_q0 = 293; d116.iso_mass_q4 = 2932045; d116.iso_abund_ppm = -1; d116.valence_bits = 0; d116.ie1_meV = 0; d116.ea_meV = 0; d116.en_pauling_q2 = 0
575 let d117: *AtomicData = ((arr as nx_int) + (116 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
576 d117.z = 117; d117.iso_a_q0 = 294; d117.iso_mass_q4 = 2942108; d117.iso_abund_ppm = -1; d117.valence_bits = 0; d117.ie1_meV = 0; d117.ea_meV = 0; d117.en_pauling_q2 = 0
577 let d118: *AtomicData = ((arr as nx_int) + (117 * NX_ATOMIC_DATA_BYTES)) as *AtomicData
578 d118.z = 118; d118.iso_a_q0 = 294; d118.iso_mass_q4 = 2942139; d118.iso_abund_ppm = -1; d118.valence_bits = 0; d118.ie1_meV = 0; d118.ea_meV = 0; d118.en_pauling_q2 = 0
579
580 return arr
581}
582
583// =================================================================
584// Bounded lookup on the 1..118 AtomicData table.
585// Returns null for z<1 or z>118.
586// =================================================================
587func nx_chem_atomic_data_by_z(table: *AtomicData, z: nx_int) -> *AtomicData {
588 if z < 1 { return 0 as *AtomicData }
589 if z > 118 { return 0 as *AtomicData }
590 return ((table as nx_int) + ((z - 1) * NX_ATOMIC_DATA_BYTES)) as *AtomicData
591}