SimpleFastOpenAtomicVisualiser
Loading...
Searching...
No Matches
element.h
Go to the documentation of this file.
1#ifndef ELEMENT_H
2#define ELEMENT_H
3
4#include <cstdint>
5#include <map>
6#include <iostream>
7
12enum class Element : uint8_t
13{
14 Unknown,
15 H,
16 He,
17 Li,
18 Be,
19 B,
20 C,
21 N,
22 O,
23 F,
24 Ne,
25 Na,
26 Mg,
27 Al,
28 Si,
29 P,
30 S,
31 Cl,
32 Ar,
33 K,
34 Ca,
35 Sc,
36 Ti,
37 V,
38 Cr,
39 Mn,
40 Fe,
41 Co,
42 Ni,
43 Cu,
44 Zn,
45 Ga,
46 Ge,
47 As,
48 Se,
49 Br,
50 Kr,
51 Rb,
52 Sr,
53 Y,
54 Zr,
55 Nb,
56 Mo,
57 Tc,
58 Ru,
59 Rh,
60 Pd,
61 Ag,
62 Cd,
63 In,
64 Sn,
65 Sb,
66 Te,
67 I,
68 Xe,
69 Cs,
70 Ba,
71 La,
72 Ce,
73 Pr,
74 Nd,
75 Pm,
76 Sm,
77 Eu,
78 Gd,
79 Tb,
80 Dy,
81 Ho,
82 Er,
83 Tm,
84 Yb,
85 Lu,
86 Hf,
87 Ta,
88 W,
89 Re,
90 Os,
91 Ir,
92 Pt,
93 Au,
94 Hg,
95 Tl,
96 Pb,
97 Bi,
98 Po,
99 At,
100 Rn,
101 Fr,
102 Ra,
103 Ac,
104 Th,
105 Pa,
106 U,
107 Np,
108 Pu,
109 Am,
110 Cm,
111 Bk,
112 Cf,
113 Es,
114 Fm,
115 Md,
116 No,
117 Lw
118};
119
124const std::map<std::string, Element> ELEMENT_FROM_STRING =
125{
126 {"Unknown", Element::Unknown},
127 {"H", Element::H},
128 {"He", Element::He},
129 {"Li", Element::Li},
130 {"Be", Element::Be},
131 {"B", Element::B},
132 {"C", Element::C},
133 {"N", Element::N},
134 {"O", Element::O},
135 {"F", Element::F},
136 {"Ne", Element::Ne},
137 {"Na", Element::Na},
138 {"Mg", Element::Mg},
139 {"Al", Element::Al},
140 {"Si", Element::Si},
141 {"P", Element::P},
142 {"S", Element::S},
143 {"Cl", Element::Cl},
144 {"Ar", Element::Ar},
145 {"K", Element::K},
146 {"Ca", Element::Ca},
147 {"Sc", Element::Sc},
148 {"Ti", Element::Ti},
149 {"V", Element::V},
150 {"Cr", Element::Cr},
151 {"Mn", Element::Mn},
152 {"Fe", Element::Fe},
153 {"Co", Element::Co},
154 {"Ni", Element::Ni},
155 {"Cu", Element::Cu},
156 {"Zn", Element::Zn},
157 {"Ga", Element::Ga},
158 {"Ge", Element::Ge},
159 {"As", Element::As},
160 {"Se", Element::Se},
161 {"Br", Element::Br},
162 {"Kr", Element::Kr},
163 {"Rb", Element::Rb},
164 {"Sr", Element::Sr},
165 {"Y", Element::Y},
166 {"Zr", Element::Zr},
167 {"Nb", Element::Nb},
168 {"Mo", Element::Mo},
169 {"Tc", Element::Tc},
170 {"Ru", Element::Ru},
171 {"Rh", Element::Rh},
172 {"Pd", Element::Pd},
173 {"Ag", Element::Ag},
174 {"Cd", Element::Cd},
175 {"In", Element::In},
176 {"Sn", Element::Sn},
177 {"Sb", Element::Sb},
178 {"Te", Element::Te},
179 {"I", Element::I},
180 {"Xe", Element::Xe},
181 {"Cs", Element::Cs},
182 {"Ba", Element::Ba},
183 {"La", Element::La},
184 {"Ce", Element::Ce},
185 {"Pr", Element::Pr},
186 {"Nd", Element::Nd},
187 {"Pm", Element::Pm},
188 {"Sm", Element::Sm},
189 {"Eu", Element::Eu},
190 {"Gd", Element::Gd},
191 {"Tb", Element::Tb},
192 {"Dy", Element::Dy},
193 {"Ho", Element::Ho},
194 {"Er", Element::Er},
195 {"Tm", Element::Tm},
196 {"Yb", Element::Yb},
197 {"Lu", Element::Lu},
198 {"Hf", Element::Hf},
199 {"Ta", Element::Ta},
200 {"W", Element::W},
201 {"Re", Element::Re},
202 {"Os", Element::Os},
203 {"Ir", Element::Ir},
204 {"Pt", Element::Pt},
205 {"Au", Element::Au},
206 {"Hg", Element::Hg},
207 {"Tl", Element::Tl},
208 {"Pb", Element::Pb},
209 {"Bi", Element::Bi},
210 {"Po", Element::Po},
211 {"At", Element::At},
212 {"Rn", Element::Rn},
213 {"Fr", Element::Fr},
214 {"Ra", Element::Ra},
215 {"Ac", Element::Ac},
216 {"Th", Element::Th},
217 {"Pa", Element::Pa},
218 {"U", Element::U},
219 {"Np", Element::Np},
220 {"Pu", Element::Pu},
221 {"Am", Element::Am},
222 {"Cm", Element::Cm},
223 {"Bk", Element::Bk},
224 {"Cf", Element::Cf},
225 {"Es", Element::Es},
226 {"Fm", Element::Fm},
227 {"Md", Element::Md},
228 {"No", Element::No},
229 {"Lw", Element::Lw}
230};
231
236const std::map<std::string, std::string> ELEMENT_NAME_TO_STRING_SYMBOL =
237{
238 {"unknown", "Unknown"},
239 {"hydrogen", "H"},
240 {"helium", "He"},
241 {"lithium", "Li"},
242 {"beryllium", "Be"},
243 {"boron", "B"},
244 {"carbon", "C"},
245 {"nitrogen", "N"},
246 {"oxygen", "O"},
247 {"fluorine", "F"},
248 {"neon", "Ne"},
249 {"sodium", "Na"},
250 {"magnesium", "Mg"},
251 {"aluminium", "Al"},
252 {"silicon", "Si"},
253 {"phosphorus", "P"},
254 {"sulfur", "S"},
255 {"chlorine", "Cl"},
256 {"argon", "Ar"},
257 {"potassium", "K"},
258 {"calcium", "Ca"},
259 {"scandium", "Sc"},
260 {"titanium", "Ti"},
261 {"vanadium", "V"},
262 {"chromium", "Cr"},
263 {"manganese", "Mn"},
264 {"iron", "Fe"},
265 {"cobalt", "Co"},
266 {"nickel", "Ni"},
267 {"copper", "Cu"},
268 {"zinc", "Zn"},
269 {"gallium", "Ga"},
270 {"germanium", "Ge"},
271 {"arsenic", "As"},
272 {"selenium", "Se"},
273 {"bromine", "Br"},
274 {"krypton", "Kr"},
275 {"rubidium", "Rb"},
276 {"strontium", "Sr"},
277 {"yttrium", "Y"},
278 {"zirconium", "Zr"},
279 {"niobium", "Nb"},
280 {"molybdenum", "Mo"},
281 {"technetium", "Tc"},
282 {"ruthenium", "Ru"},
283 {"rhodium", "Rh"},
284 {"palladium", "Pd"},
285 {"silver", "Ag"},
286 {"cadmium", "Cd"},
287 {"indium", "In"},
288 {"tin", "Sn"},
289 {"antimony", "Sb"},
290 {"tellurium", "Te"},
291 {"iodine", "I"},
292 {"xenon", "Xe"},
293 {"caesium", "Cs"},
294 {"barium", "Ba"},
295 {"lanthanum", "La"},
296 {"cerium", "Ce"},
297 {"praseodymium", "Pr"},
298 {"neodymium", "Nd"},
299 {"promethium", "Pm"},
300 {"samarium", "Sm"},
301 {"europium", "Eu"},
302 {"gadolinium", "Gd"},
303 {"terbium", "Tb"},
304 {"dysprosium", "Dy"},
305 {"holmium", "Ho"},
306 {"erbium", "Er"},
307 {"thulium", "Tm"},
308 {"ytterbium", "Yb"},
309 {"lutetium", "Lu"},
310 {"hafnium", "Hf"},
311 {"tantalum", "Ta"},
312 {"tungsten", "W"},
313 {"rhenium", "Re"},
314 {"osmium", "Os"},
315 {"iridium", "Ir"},
316 {"platinum", "Pt"},
317 {"gold", "Au"},
318 {"mercury", "Hg"},
319 {"thallium", "Tl"},
320 {"lead", "Pb"},
321 {"bismuth", "Bi"},
322 {"polonium", "Po"},
323 {"astatine", "At"},
324 {"radon", "Rn"},
325 {"francium", "Fr"},
326 {"radium", "Ra"},
327 {"actinium", "Ac"},
328 {"thorium", "Th"},
329 {"protactinium", "Pa"},
330 {"uranium", "U"},
331 {"neptunium", "Np"},
332 {"plutonium", "Pu"},
333 {"americium", "Am"},
334 {"curium", "Cm"},
335 {"berkelium", "Bk"},
336 {"californium", "Cf"},
337 {"einsteinium", "Es"},
338 {"fermium", "Fm"},
339 {"mendelevium", "Md"},
340 {"nobelium", "No"},
341 {"lawrencium", "Lw"}
342};
343
348const std::map<Element, std::string> STRING_FROM_ELEMENT =
349{
350 {Element::Unknown, "Unknown"},
351 {Element::H, "H"},
352 {Element::He, "He"},
353 {Element::Li, "Li"},
354 {Element::Be, "Be"},
355 {Element::B, "B"},
356 {Element::C, "C"},
357 {Element::N, "N"},
358 {Element::O, "O"},
359 {Element::F, "F"},
360 {Element::Ne, "Ne"},
361 {Element::Na, "Na"},
362 {Element::Mg, "Mg"},
363 {Element::Al, "Al"},
364 {Element::Si, "Si"},
365 {Element::P, "P"},
366 {Element::S, "S"},
367 {Element::Cl, "Cl"},
368 {Element::Ar, "Ar"},
369 {Element::K, "K"},
370 {Element::Ca, "Ca"},
371 {Element::Sc, "Sc"},
372 {Element::Ti, "Ti"},
373 {Element::V, "V"},
374 {Element::Cr, "Cr"},
375 {Element::Mn, "Mn"},
376 {Element::Fe, "Fe"},
377 {Element::Co, "Co"},
378 {Element::Ni, "Ni"},
379 {Element::Cu, "Cu"},
380 {Element::Zn, "Zn"},
381 {Element::Ga, "Ga"},
382 {Element::Ge, "Ge"},
383 {Element::As, "As"},
384 {Element::Se, "Se"},
385 {Element::Br, "Br"},
386 {Element::Kr, "Kr"},
387 {Element::Rb, "Rb"},
388 {Element::Sr, "Sr"},
389 {Element::Y, "Y"},
390 {Element::Zr, "Zr"},
391 {Element::Nb, "Nb"},
392 {Element::Mo, "Mo"},
393 {Element::Tc, "Tc"},
394 {Element::Ru, "Ru"},
395 {Element::Rh, "Rh"},
396 {Element::Pd, "Pd"},
397 {Element::Ag, "Ag"},
398 {Element::Cd, "Cd"},
399 {Element::In, "In"},
400 {Element::Sn, "Sn"},
401 {Element::Sb, "Sb"},
402 {Element::Te, "Te"},
403 {Element::I, "I"},
404 {Element::Xe, "Xe"},
405 {Element::Cs, "Cs"},
406 {Element::Ba, "Ba"},
407 {Element::La, "La"},
408 {Element::Ce, "Ce"},
409 {Element::Pr, "Pr"},
410 {Element::Nd, "Nd"},
411 {Element::Pm, "Pm"},
412 {Element::Sm, "Sm"},
413 {Element::Eu, "Eu"},
414 {Element::Gd, "Gd"},
415 {Element::Tb, "Tb"},
416 {Element::Dy, "Dy"},
417 {Element::Ho, "Ho"},
418 {Element::Er, "Er"},
419 {Element::Tm, "Tm"},
420 {Element::Yb, "Yb"},
421 {Element::Lu, "Lu"},
422 {Element::Hf, "Hf"},
423 {Element::Ta, "Ta"},
424 {Element::W, "W"},
425 {Element::Re, "Re"},
426 {Element::Os, "Os"},
427 {Element::Ir, "Ir"},
428 {Element::Pt, "Pt"},
429 {Element::Au, "Au"},
430 {Element::Hg, "Hg"},
431 {Element::Tl, "Tl"},
432 {Element::Pb, "Pb"},
433 {Element::Bi, "Bi"},
434 {Element::Po, "Po"},
435 {Element::At, "At"},
436 {Element::Rn, "Rn"},
437 {Element::Fr, "Fr"},
438 {Element::Ra, "Ra"},
439 {Element::Ac, "Ac"},
440 {Element::Th, "Th"},
441 {Element::Pa, "Pa"},
442 {Element::U, "U"},
443 {Element::Np, "Np"},
444 {Element::Pu, "Pu"},
445 {Element::Am, "Am"},
446 {Element::Cm, "Cm"},
447 {Element::Bk, "Bk"},
448 {Element::Cf, "Cf"},
449 {Element::Es, "Es"},
450 {Element::Fm, "Fm"},
451 {Element::Md, "Md"},
452 {Element::No, "No"},
453 {Element::Lw, "Lw"}
454};
455
461const std::map<Element, float> ELEMENT_RADIUS =
462{
463 {Element::Unknown, 1.0},
464 {Element::H, 1.2},
465 {Element::He, 1.43},
466 {Element::Li, 2.12},
467 {Element::Be, 1.98},
468 {Element::B, 1.91},
469 {Element::C, 1.77},
470 {Element::N, 1.66},
471 {Element::O, 1.5},
472 {Element::F, 1.46},
473 {Element::Ne, 1.58},
474 {Element::Na, 2.5},
475 {Element::Mg, 2.51},
476 {Element::Al, 2.25},
477 {Element::Si, 2.19},
478 {Element::P, 1.9},
479 {Element::S, 1.89},
480 {Element::Cl, 1.82},
481 {Element::Ar, 1.83},
482 {Element::K, 2.73},
483 {Element::Ca, 2.62},
484 {Element::Sc, 2.58},
485 {Element::Ti, 2.46},
486 {Element::V, 2.42},
487 {Element::Cr, 2.45},
488 {Element::Mn, 2.45},
489 {Element::Fe, 2.44},
490 {Element::Co, 2.4},
491 {Element::Ni, 2.4},
492 {Element::Cu, 2.38},
493 {Element::Zn, 2.39},
494 {Element::Ga, 2.32},
495 {Element::Ge, 50.0},
496 {Element::As, 1.88},
497 {Element::Se, 1.82},
498 {Element::Br, 1.86},
499 {Element::Kr, 2.25},
500 {Element::Rb, 3.21},
501 {Element::Sr, 2.84},
502 {Element::Y, 2.75},
503 {Element::Zr, 2.52},
504 {Element::Nb, 2.56},
505 {Element::Mo, 2.45},
506 {Element::Tc, 2.44},
507 {Element::Ru, 2.46},
508 {Element::Rh, 2.44},
509 {Element::Pd, 2.15},
510 {Element::Ag, 2.53},
511 {Element::Cd, 2.49},
512 {Element::In, 2.43},
513 {Element::Sn, 2.42},
514 {Element::Sb, 2.47},
515 {Element::Te, 1.99},
516 {Element::I, 2.04},
517 {Element::Xe, 2.06},
518 {Element::Cs, 3.48},
519 {Element::Ba, 3.03},
520 {Element::La, 2.98},
521 {Element::Ce, 2.88},
522 {Element::Pr, 2.92},
523 {Element::Nd, 2.95},
524 {Element::Sm, 2.9},
525 {Element::Eu, 2.87},
526 {Element::Gd, 2.83},
527 {Element::Tb, 2.79},
528 {Element::Dy, 2.87},
529 {Element::Ho, 2.81},
530 {Element::Er, 2.83},
531 {Element::Tm, 2.79},
532 {Element::Yb, 2.8},
533 {Element::Lu, 2.74},
534 {Element::Hf, 2.63},
535 {Element::Ta, 2.53},
536 {Element::W, 2.57},
537 {Element::Re, 2.49},
538 {Element::Os, 2.48},
539 {Element::Ir, 2.41},
540 {Element::Pt, 2.29},
541 {Element::Au, 2.32},
542 {Element::Hg, 2.45},
543 {Element::Tl, 2.47},
544 {Element::Pb, 2.6},
545 {Element::Bi, 2.54},
546 {Element::Ac, 2.8},
547 {Element::Th, 2.93},
548 {Element::Pa, 2.88},
549 {Element::U, 2.71},
550 {Element::Np, 2.82},
551 {Element::Pu, 2.81},
552 {Element::Am, 2.83},
553 {Element::Cm, 3.05},
554 {Element::Bk, 3.4},
555 {Element::Cf, 3.05},
556 {Element::Es, 2.7},
557};
558
564const std::map<Element, float> ELEMENT_MASS =
565{
566 {Element::Unknown, 1.0},
567 {Element::H, 1.0},
568 {Element::He, 1.599},
569 {Element::Li, 1.842},
570 {Element::Be, 1.951},
571 {Element::B, 2.03},
572 {Element::C, 2.076},
573 {Element::N, 2.143},
574 {Element::O, 2.201},
575 {Element::F, 2.275},
576 {Element::Ne, 2.301},
577 {Element::Na, 2.358},
578 {Element::Mg, 2.382},
579 {Element::Al, 2.428},
580 {Element::Si, 2.445},
581 {Element::P, 2.488},
582 {Element::S, 2.503},
583 {Element::Cl, 2.546},
584 {Element::Ar, 2.598},
585 {Element::K, 2.589},
586 {Element::Ca, 2.599},
587 {Element::Sc, 2.649},
588 {Element::Ti, 2.677},
589 {Element::V, 2.704},
590 {Element::Cr, 2.713},
591 {Element::Mn, 2.736},
592 {Element::Fe, 2.743},
593 {Element::Co, 2.767},
594 {Element::Ni, 2.765},
595 {Element::Cu, 2.8},
596 {Element::Zn, 2.812},
597 {Element::Ga, 2.84},
598 {Element::Ge, 2.858},
599 {Element::As, 2.871},
600 {Element::Se, 2.894},
601 {Element::Br, 2.899},
602 {Element::Kr, 2.92},
603 {Element::Rb, 2.928},
604 {Element::Sr, 2.939},
605 {Element::Y, 2.945},
606 {Element::Zr, 2.957},
607 {Element::Nb, 2.965},
608 {Element::Mo, 2.979},
609 {Element::Tc, 2.983},
610 {Element::Ru, 3.001},
611 {Element::Rh, 3.009},
612 {Element::Pd, 3.024},
613 {Element::Ag, 3.029},
614 {Element::Cd, 3.047},
615 {Element::In, 3.057},
616 {Element::Sn, 3.071},
617 {Element::Sb, 3.082},
618 {Element::Te, 3.102},
619 {Element::I, 3.1},
620 {Element::Xe, 3.115},
621 {Element::Cs, 3.12},
622 {Element::Ba, 3.134},
623 {Element::La, 3.139},
624 {Element::Ce, 3.143},
625 {Element::Pr, 3.145},
626 {Element::Nd, 3.156},
627 {Element::Pm, 3.158},
628 {Element::Sm, 3.174},
629 {Element::Eu, 3.178},
630 {Element::Gd, 3.193},
631 {Element::Tb, 3.198},
632 {Element::Dy, 3.207},
633 {Element::Ho, 3.214},
634 {Element::Er, 3.22},
635 {Element::Tm, 3.224},
636 {Element::Yb, 3.235},
637 {Element::Lu, 3.239},
638 {Element::Hf, 3.248},
639 {Element::Ta, 3.254},
640 {Element::W, 3.261},
641 {Element::Re, 3.267},
642 {Element::Os, 3.276},
643 {Element::Ir, 3.28},
644 {Element::Pt, 3.287},
645 {Element::Au, 3.291},
646 {Element::Hg, 3.299},
647 {Element::Tl, 3.307},
648 {Element::Pb, 3.313},
649 {Element::Bi, 3.317},
650 {Element::Po, 3.317},
651 {Element::At, 3.319},
652 {Element::Rn, 3.343},
653 {Element::Fr, 3.345},
654 {Element::Ra, 3.351},
655 {Element::Ac, 3.353},
656 {Element::Th, 3.362},
657 {Element::Pa, 3.36},
658 {Element::U, 3.373},
659 {Element::Np, 3.371},
660 {Element::Pu, 3.384},
661 {Element::Am, 3.382},
662 {Element::Cm, 3.389},
663 {Element::Bk, 3.389},
664 {Element::Cf, 3.396},
665 {Element::Es, 3.398},
666 {Element::Fm, 3.407},
667 {Element::Md, 3.408},
668 {Element::No, 3.41}
669};
670
681Element stringSymbolToElement(const std::string & s)
682{
683 std::string stripped = s;
684 stripped.erase(std::remove_if(stripped.begin(), stripped.end(), [](const char & c) { return !std::isalpha(c); }), stripped.end());
685 if (stripped.size() < s.size()) { return stringSymbolToElement(stripped); }
686 if (ELEMENT_FROM_STRING.find(s) != ELEMENT_FROM_STRING.cend())
687 {
688 return ELEMENT_FROM_STRING.at(s);
689 }
690 if (s.size() == 1)
691 {
692 std::string s1 = s.substr(0, 1);
693 s1[0] = std::toupper(s1[0]);
694 if (ELEMENT_FROM_STRING.find(s1) != ELEMENT_FROM_STRING.cend())
695 {
696 return ELEMENT_FROM_STRING.at(s1);
697 }
698 }
699 else if (s.size() == 2)
700 {
701 std::string s2 = s.substr(0, 2);
702 s2[0] = std::toupper(s2[0]);
703 s2[1] = std::tolower(s2[1]);
704 if (ELEMENT_FROM_STRING.find(s2) != ELEMENT_FROM_STRING.cend())
705 {
706 return ELEMENT_FROM_STRING.at(s2);
707 }
708 return stringSymbolToElement(s.substr(0, 1));
709 }
710 else if (s.size() > 2)
711 {
712 std::string name = s;
713 std::transform(name.begin(), name.end(), name.begin(), [](unsigned char c){ return std::tolower(c); });
715 {
717 }
718 std::vector<std::string> names;
719 for (const auto & ns : ELEMENT_NAME_TO_STRING_SYMBOL)
720 {
721 names.push_back(ns.first);
722 }
723 uint64_t i = 1;
724 while (names.size() > 1)
725 {
726 std::string check = name.substr(0, i);
727 std::vector<std::string> newNames;
728 for (const auto & n : names)
729 {
730 if (n.rfind(check, 0) == 0)
731 {
732 newNames.push_back(n);
733 }
734 }
735 i++;
736 names = newNames;
737 if (i > name.size()) { break; }
738 }
739 if (names.size() == 1) { return ELEMENT_FROM_STRING.at(ELEMENT_NAME_TO_STRING_SYMBOL.at(names[0])); }
740 return stringSymbolToElement(s.substr(0, 2));
741 }
742 return Element::Unknown;
743}
744
751float stringSymbolToElementRadius(const std::string & s)
752{
754 if (ELEMENT_RADIUS.find(element) == ELEMENT_RADIUS.cend())
755 {
756 return 1.0;
757 }
758 return ELEMENT_RADIUS.at(element);
759}
760
769std::ostream & operator <<(std::ostream & o, const Element & e)
770{
771 return o << STRING_FROM_ELEMENT.at(e);
772}
773
774#endif /* ELEMENT_H */
glm::vec< L, float, glm::qualifier::highp > vec
Definition commandLine.h:214
const std::map< std::string, std::string > ELEMENT_NAME_TO_STRING_SYMBOL
Map Element names to string symbols.
Definition element.h:236
Element
Representable elements.
Definition element.h:13
float stringSymbolToElementRadius(const std::string &s)
Map a string symbol to a VDW radius.
Definition element.h:751
const std::map< Element, float > ELEMENT_MASS
Scaled element masses.
Definition element.h:564
const std::map< Element, std::string > STRING_FROM_ELEMENT
Map Element to string symbols.
Definition element.h:348
Element stringSymbolToElement(const std::string &s)
Map a string symbol to an Element.
Definition element.h:681
std::ostream & operator<<(std::ostream &o, const Element &e)
Print an Element to std::ostream.
Definition element.h:769
const std::map< std::string, Element > ELEMENT_FROM_STRING
Map string symbols to Element.
Definition element.h:124
const std::map< Element, float > ELEMENT_RADIUS
Map Element to a Van der Waals radius in Angstroms.
Definition element.h:461