ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
AtomData_PeriodicTable.hpp
1 #pragma once
2 #include <array>
3 #include <string>
4 #include <utility>
5 #include <vector>
6 
7 namespace AtomData {
8 
9 static const std::string spectroscopic_notation = "spdfghiklmnoqrtuvwxyzabc";
10 static const std::string Spectroscopic_Notation = "SPDFGHIKLMNOQRTUVWXYZABC";
11 
12 static 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 //==============================================================================
18 struct 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 
29 static 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
155 static 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