ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
Loading...
Searching...
No Matches
AtomData_PeriodicTable.hpp
1#pragma once
2#include <array>
3#include <string>
4#include <utility>
5#include <vector>
6
7namespace AtomData {
8
9static const std::string spectroscopic_notation = "spdfghiklmnoqrtuvwxyzabc";
10static const std::string Spectroscopic_Notation = "SPDFGHIKLMNOQRTUVWXYZABC";
11
12static const std::string filling_order =
13 "1s2,2s2,2p6,3s2,3p6,4s2,3d10,4p6,5s2,4d10,5p6,6s2,4f14,5d10,"
14 "6p6,7s2,5f14,6d10,7p6,8s2,6f14,7d10,8p6,9s2";
15
16//==============================================================================
18struct Element {
19 int Z;
20 std::string symbol;
21 int A;
22 std::string name;
23 Element(int inZ, const std::string &insymbol, int inA,
24 const std::string &inname)
25 : Z(inZ), symbol(insymbol), A(inA), name(inname) {}
26};
27
29static const std::vector<Element> periodic_table = {
30 {1, "H", 1, "hydrogen"},
31 {2, "He", 4, "helium"},
32 {3, "Li", 7, "lithium"},
33 {4, "Be", 9, "beryllium"},
34 {5, "B", 11, "boron"},
35 {6, "C", 12, "carbon"},
36 {7, "N", 14, "nitrogen"},
37 {8, "O", 16, "oxygen"},
38 {9, "F", 19, "fluorine"},
39 {10, "Ne", 20, "neon"},
40 {11, "Na", 23, "sodium"},
41 {12, "Mg", 24, "magnesium"},
42 {13, "Al", 27, "aluminium"},
43 {14, "Si", 28, "silicon"},
44 {15, "P", 31, "phosphorus"},
45 {16, "S", 32, "sulphur"},
46 {17, "Cl", 35, "chlorine"},
47 {18, "Ar", 40, "argon"},
48 {19, "K", 39, "potassium"},
49 {20, "Ca", 40, "calcium"},
50 {21, "Sc", 45, "scandium"},
51 {22, "Ti", 48, "titanium"},
52 {23, "V", 51, "vanadium"},
53 {24, "Cr", 52, "chromium"},
54 {25, "Mn", 55, "manganese"},
55 {26, "Fe", 56, "iron"},
56 {27, "Co", 59, "cobalt"},
57 {28, "Ni", 57, "nickel"},
58 {29, "Cu", 63, "copper"},
59 {30, "Zn", 64, "zinc"},
60 {31, "Ga", 71, "gallium"},
61 {32, "Ge", 73, "germanium"},
62 {33, "As", 75, "arsenic"},
63 {34, "Se", 77, "selenium"},
64 {35, "Br", 79, "bromine"},
65 {36, "Kr", 84, "krypton"},
66 {37, "Rb", 85, "rubidium"},
67 {38, "Sr", 88, "strontium"},
68 {39, "Y", 89, "yttrium"},
69 {40, "Zr", 91, "zirconium"},
70 {41, "Nb", 93, "niobium"},
71 {42, "Mo", 96, "molybdenum"},
72 {43, "Tc", 98, "technetium"},
73 {44, "Ru", 101, "ruthenium"},
74 {45, "Rh", 103, "rhodium"},
75 {46, "Pd", 106, "palladium"},
76 {47, "Ag", 107, "silver"},
77 {48, "Cd", 112, "cadmium"},
78 {49, "In", 115, "indium"},
79 {50, "Sn", 119, "tin"},
80 {51, "Sb", 121, "antimony"},
81 {52, "Te", 128, "tellurium"},
82 {53, "I", 127, "iodine"},
83 {54, "Xe", 131, "xenon"},
84 {55, "Cs", 133, "cesium"},
85 {56, "Ba", 137, "barium"},
86 {57, "La", 139, "lanthanum"},
87 {58, "Ce", 140, "cerium"},
88 {59, "Pr", 141, "praseodymium"},
89 {60, "Nd", 144, "neodymium"},
90 {61, "Pm", 145, "promethium"},
91 {62, "Sm", 150, "samarium"},
92 {63, "Eu", 152, "europium"},
93 {64, "Gd", 157, "gadolinium"},
94 {65, "Tb", 159, "terbium"},
95 {66, "Dy", 162, "dysprosium"},
96 {67, "Ho", 165, "holmium"},
97 {68, "Er", 167, "erbium"},
98 {69, "Tm", 169, "thulium"},
99 {70, "Yb", 173, "ytterbium"},
100 {71, "Lu", 175, "lutetium"},
101 {72, "Hf", 178, "hafnium"},
102 {73, "Ta", 181, "tantalum"},
103 {74, "W", 184, "tungsten"},
104 {75, "Re", 185, "rhenium"},
105 {76, "Os", 190, "osmium"},
106 {77, "Ir", 191, "iridium"},
107 {78, "Pt", 195, "platinum"},
108 {79, "Au", 197, "gold"},
109 {80, "Hg", 201, "mercury"},
110 {81, "Tl", 204, "thallium"},
111 {82, "Pb", 207, "lead"},
112 {83, "Bi", 209, "bismuth"},
113 {84, "Po", 209, "polonium"},
114 {85, "At", 210, "astatine"},
115 {86, "Rn", 222, "radon"},
116 {87, "Fr", 223, "francium"},
117 {88, "Ra", 226, "radium"},
118 {89, "Ac", 227, "actinium"},
119 {90, "Th", 232, "thorium"},
120 {91, "Pa", 231, "protactinium"},
121 {92, "U", 238, "uranium"},
122 {93, "Np", 237, "neptunium"},
123 {94, "Pu", 244, "plutonium"},
124 {95, "Am", 243, "americium"},
125 {96, "Cm", 246, "curium"},
126 {97, "Bk", 247, "berkelium"},
127 {98, "Cf", 251, "californium"},
128 {99, "Es", 252, "einsteinium"},
129 {100, "Fm", 257, "fermium"},
130 {101, "Md", 258, "mendelevium"},
131 {102, "No", 259, "nobelium"},
132 {103, "Lr", 262, "lawrencium"},
133 {104, "Rf", 267, "rutherfordium"},
134 {105, "Db", 270, "dubnium"},
135 {106, "Sg", 269, "seaborgium"},
136 {107, "Bh", 270, "bohrium"},
137 {108, "Hs", 270, "hassium"},
138 {109, "Mt", 278, "meitnerium"},
139 {110, "Ds", 281, "darmstadtium"},
140 {111, "Rg", 281, "roentgenium"},
141 {112, "Cn", 285, "copernicium"},
142 {113, "Nh", 286, "nihonium"},
143 {114, "Fl", 289, "flerovium"},
144 {115, "Mc", 289, "moscovium"},
145 {116, "Lv", 293, "livermorium"},
146 {117, "Ts", 293, "tennessine"},
147 {118, "Og", 294, "oganesson"},
148 {119, "E119", 315, "ununennium"},
149 {120, "E120", 320, "unbinilium"}};
150
151// Note: this requires that all Nobel Gasses are listed FIRST, in order
152// (Assumed by "niceCoreOutput" function that this matches nobelGasses)
153// Nothing functional will break if not, just won't necisarily find 'nicest'
154// output format
155static const std::array<std::pair<std::string, std::string>, 13> nobelGasses = {
156 std::make_pair("[]", ""), //
157 std::make_pair("[He]", "1s2"), //
158 std::make_pair("[Ne]", "1s2,2s2,2p6"),
159 std::make_pair("[Ar]", "1s2,2s2,2p6,3s2,3p6"),
160 std::make_pair("[Kr]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6"),
161 std::make_pair("[Xe]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2,5p6"),
162 std::make_pair(
163 "[Rn]",
164 "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2,5p6,4f14,5d10,6s2,6p6"),
165 std::make_pair("[Og]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2,5p6,"
166 "4f14,5d10,6s2,6p6,5f14,6d10,7s2,7p6"),
167 // A few extra:
168 std::make_pair("[Zn]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2"),
169 std::make_pair("[Cd]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2"),
170 std::make_pair(
171 "[Hg]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2,5p6,4f14,5d10,6s2"),
172 std::make_pair("[Cn]", "1s2,2s2,2p6,3s2,3p6,3d10,4s2,4p6,4d10,5s2,5p6,"
173 "4f14,5d10,6s2,6p6,5f14,6d10,7s2"),
174 std::make_pair("[]", "1s0")};
175
176// static const std::array<std::pair<int, std::string>, 13> z_NG = {
177// std::pair{0, ""}, {2, "He"}, {10, "Ne"}, {18, "Ar"},
178// {30, "Zn"}, {36, "Kr"}, {48, "Cd"}, {54, "Xe"},
179// {80, "Hg"}, {86, "Rn"}, {112, "Cn"}, {118, "Og"}};
180
181} // namespace AtomData
Useful atomic data/functions.
Definition AtomData.cpp:14
Atomic element data: Z, symbol, A, name.
Definition AtomData_PeriodicTable.hpp:18