votca 2024-dev
Loading...
Searching...
No Matches
elements.cc
Go to the documentation of this file.
1/*
2 * Copyright 2009-2020 The VOTCA Development Team
3 * (http://www.votca.org)
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License")
6 *
7 * You may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 */
19
20// Third party includes
21#include <boost/algorithm/string.hpp>
22
23// Local VOTCA includes
25
26namespace votca {
27namespace tools {
28
29/*************************
30 * Public Facing Methods *
31 *************************/
32bool Elements::isElement(std::string name) {
33 return isEleShort(name) || isEleFull(name);
34}
35
36Index Elements::getNucCrg(std::string name) {
37 if (!this->filled_NucCrg_) {
38 this->FillNucCrg();
39 filled_NucCrg_ = true;
40 }
41 try {
42 return NucCrg_.at(name);
43 } catch (const std::out_of_range& oor) {
44 throw std::runtime_error("Nuclearcharge of element " + name +
45 " not found.");
46 }
47}
48
49Index Elements::getEleNum(std::string name) {
50 if (!this->filled_EleNum_) {
51 this->FillEleNum();
52 filled_EleNum_ = true;
53 }
54 try {
55 return EleNum_.at(name);
56 } catch (const std::out_of_range& oor) {
57 throw std::runtime_error("Elementnumber of element " + name +
58 " not found.");
59 }
60}
61
62double Elements::getMass(std::string name) {
63 if (!this->filled_Mass_) {
64 this->FillMass();
65 filled_Mass_ = true;
66 }
67
68 try {
69 return Mass_.at(name);
70 } catch (const std::out_of_range& oor) {
71 throw std::runtime_error("Mass of element " + name + " not found.");
72 }
73}
74
75double Elements::getVdWChelpG(std::string name) {
76 if (!this->filled_VdWChelpG_) {
77 this->FillVdWChelpG();
78 filled_VdWChelpG_ = true;
79 }
80 if (VdWChelpG_.count(name) == 0) {
81 throw std::runtime_error("Element not found in VdWChelpG map " + name);
82 }
83 return VdWChelpG_.at(name);
84}
85
86double Elements::getVdWMK(std::string name) {
87 if (!this->filled_VdWMK_) {
88 this->FillVdWMK();
89 filled_VdWMK_ = true;
90 }
91 if (VdWMK_.count(name) == 0) {
92 throw std::runtime_error("Element not found in VdWMP map " + name);
93 }
94 return VdWMK_.at(name);
95}
96
97double Elements::getPolarizability(std::string name) {
98 if (!this->filled_ElPolarizability_) {
99 this->FillPolarizability();
101 }
102 if (ElPolarizability_.count(name) == 0) {
103 throw std::runtime_error("Element not found in ElPolarizability map " +
104 name);
105 }
106 return ElPolarizability_.at(name);
107}
108
109double Elements::getCovRad(std::string name, std::string unit) {
110 // TODO - This should be replaced with an object, an object that should
111 // auto recognise the units and return it in a standard type
112 if (!this->filled_CovRad_) {
113 this->FillCovRad();
114 filled_CovRad_ = true;
115 }
116 if (!unit.compare("bohr")) {
117 return conv::ang2bohr * CovRad_.find(name)->second;
118 }
119 if (!unit.compare("nm")) {
120 return conv::ang2nm * CovRad_.find(name)->second;
121 }
122 if (!unit.compare("ang")) {
123 return CovRad_.find(name)->second;
124 }
125 throw std::runtime_error("Must specify appropriate units " + unit +
126 " is not known");
127}
128
129std::string Elements::getEleName(Index elenum) {
130 if (!this->filled_EleName_) {
131 this->FillEleName();
132 filled_EleName_ = true;
133 }
134 return EleName_.at(elenum);
135}
136
137std::string Elements::getEleFull(std::string eleshort) {
138 if (!this->filled_EleFull_) {
139 this->FillEleFull();
140 filled_EleFull_ = true;
141 }
142 return EleFull_.at(eleshort);
143}
144
145std::string Elements::getEleShort(std::string elefull) {
146 if (!this->filled_EleShort_) {
147 this->FillEleShort();
148 filled_EleShort_ = true;
149 }
150 return EleShort_.at(elefull);
151}
152
153bool Elements::isEleFull(std::string fullname) {
154 if (!this->filled_EleShort_) {
155 this->FillEleShort();
156 filled_EleShort_ = true;
157 }
158 std::string name_upper = boost::to_upper_copy<std::string>(fullname);
159 return EleShort_.count(name_upper);
160}
161
162bool Elements::isEleShort(std::string shortname) {
163 if (!this->filled_EleFull_) {
164 this->FillEleFull();
165 filled_EleFull_ = true;
166 }
167 return EleFull_.count(shortname);
168}
169
170bool Elements::isMassAssociatedWithElement(double mass, double tolerance) {
171 auto closestMatch = findShortNameOfElementClosestInMass(mass);
172 if (closestMatch.second > tolerance) {
173 return false;
174 }
175 return true;
176}
177
178std::string Elements::getEleShortClosestInMass(double mass, double tolerance) {
179 auto closestMatch = findShortNameOfElementClosestInMass(mass);
180 if (closestMatch.second > tolerance) {
181 throw std::runtime_error(
182 "In attempt to determine if mass is associated "
183 " with an element the mass exceeds tolerance of a possible match");
184 }
185 return closestMatch.first;
186}
187
188/*******************
189 * Private Methods *
190 *******************/
191
193 double mass) {
194 if (!this->filled_Mass_) {
195 this->FillMass();
196 filled_Mass_ = true;
197 }
198 std::string eleShort = "H";
199 double diff = std::fabs(mass - Mass_[eleShort]);
200 for (const auto& ele_pr : Mass_) {
201 if (std::fabs(ele_pr.second - mass) < diff) {
202 eleShort = ele_pr.first;
203 diff = std::fabs(ele_pr.second - mass);
204 }
205 }
206 return std::pair<std::string, double>(eleShort, diff);
207}
208
210 // masses of atoms
211 Mass_["H"] = 1.00794;
212 Mass_["He"] = 4.002602;
213 Mass_["Li"] = 6.941;
214 Mass_["Be"] = 9.012182;
215 Mass_["B"] = 10.811;
216 Mass_["C"] = 12.0107;
217 Mass_["N"] = 14.00674;
218 Mass_["O"] = 15.9994;
219 Mass_["F"] = 18.9984032;
220 Mass_["Ne"] = 20.1797;
221 Mass_["Na"] = 22.989770;
222 Mass_["Mg"] = 24.3050;
223 Mass_["Al"] = 26.981538;
224 Mass_["Si"] = 28.0855;
225 Mass_["P"] = 30.973761;
226 Mass_["S"] = 32.066;
227 Mass_["Cl"] = 35.4527;
228 Mass_["Ar"] = 39.948;
229 Mass_["K"] = 39.098;
230 Mass_["Ca"] = 40.078;
231 Mass_["Sc"] = 44.956;
232 Mass_["Ti"] = 47.867;
233 Mass_["V"] = 50.942;
234 Mass_["Cr"] = 51.996;
235 Mass_["Mn"] = 54.938;
236 Mass_["Fe"] = 55.845;
237 Mass_["Co"] = 58.933;
238 Mass_["Ni"] = 58.693;
239 Mass_["Cu"] = 63.546;
240 Mass_["Zn"] = 65.38;
241 Mass_["Ga"] = 69.723;
242 Mass_["Ge"] = 72.630;
243 Mass_["As"] = 74.922;
244 Mass_["Se"] = 78.971;
245 Mass_["Br"] = 79.90;
246 Mass_["Kr"] = 83.798;
247 Mass_["Rb"] = 85.468;
248 Mass_["Sr"] = 87.62;
249 Mass_["Y"] = 88.906;
250 Mass_["Zr"] = 91.224;
251 Mass_["Nb"] = 92.906;
252 Mass_["Mo"] = 95.95;
253 Mass_["Tc"] = 98.0;
254 Mass_["Ru"] = 101.07;
255 Mass_["Rh"] = 102.91;
256 Mass_["Pd"] = 106.42;
257 Mass_["Ag"] = 107.8682;
258 Mass_["Cd"] = 112.41;
259 Mass_["In"] = 114.82;
260 Mass_["Sn"] = 118.71;
261 Mass_["Sb"] = 121.76;
262 Mass_["Te"] = 127.60;
263 Mass_["I"] = 126.90;
264 Mass_["Xe"] = 131.29;
265 Mass_["Cs"] = 132.91;
266 Mass_["Ba"] = 137.33;
267 Mass_["Hf"] = 178.49;
268 Mass_["Ta"] = 180.49;
269 Mass_["W"] = 183.84;
270 Mass_["Re"] = 186.21;
271 Mass_["Os"] = 190.23;
272 Mass_["Ir"] = 192.22;
273 Mass_["Pt"] = 195.08;
274 Mass_["Au"] = 196.97;
275 Mass_["Hg"] = 200.59;
276 Mass_["Tl"] = 204.38;
277 Mass_["Pb"] = 207.2;
278 Mass_["Bi"] = 208.98;
279 Mass_["Po"] = 209;
280 Mass_["At"] = 210;
281 Mass_["Rn"] = 222;
282}
283
285 // VdW radii in Angstrom as used in CHELPG paper [Journal of Computational
286 // Chemistry 11, 361, 1990]and Gaussian
287 VdWChelpG_["H"] = 1.45;
288 VdWChelpG_["He"] = 1.45;
289 VdWChelpG_["Li"] = 1.5;
290 VdWChelpG_["Be"] = 1.5;
291 VdWChelpG_["B"] = 1.5;
292 VdWChelpG_["C"] = 1.5;
293 VdWChelpG_["N"] = 1.7;
294 VdWChelpG_["O"] = 1.7;
295 VdWChelpG_["F"] = 1.7;
296 VdWChelpG_["Ne"] = 1.7;
297 VdWChelpG_["Na"] = 2.0;
298 VdWChelpG_["Mg"] = 2.0;
299 VdWChelpG_["Al"] = 2.0;
300 VdWChelpG_["Si"] = 2.0;
301 VdWChelpG_["P"] = 2.0;
302 VdWChelpG_["S"] = 2.0;
303 VdWChelpG_["Cl"] = 2.0;
304 VdWChelpG_["Ar"] = 2.0;
305 VdWChelpG_["Ag"] = 1.7;
306}
307
309 // Nuclear Charges
310 NucCrg_["H"] = 1.00;
311 NucCrg_["He"] = 2.00;
312 NucCrg_["Li"] = 3.00;
313 NucCrg_["Be"] = 4.00;
314 NucCrg_["B"] = 5.00;
315 NucCrg_["C"] = 6.00;
316 NucCrg_["N"] = 7.00;
317 NucCrg_["O"] = 8.00;
318 NucCrg_["F"] = 9.00;
319 NucCrg_["Ne"] = 10.00;
320 NucCrg_["Na"] = 11.00;
321 NucCrg_["Mg"] = 12.00;
322 NucCrg_["Al"] = 13.00;
323 NucCrg_["Si"] = 14.00;
324 NucCrg_["P"] = 15.00;
325 NucCrg_["S"] = 16.00;
326 NucCrg_["Cl"] = 17.00;
327 NucCrg_["Ar"] = 18.00;
328 NucCrg_["K"] = 19.00;
329 NucCrg_["Ca"] = 20.00;
330 NucCrg_["Sc"] = 21.00;
331 NucCrg_["Ti"] = 22.00;
332 NucCrg_["V"] = 23.00;
333 NucCrg_["Cr"] = 24.00;
334 NucCrg_["Mn"] = 25.00;
335 NucCrg_["Fe"] = 26.00;
336 NucCrg_["Co"] = 27.00;
337 NucCrg_["Ni"] = 28.00;
338 NucCrg_["Cu"] = 29.00;
339 NucCrg_["Zn"] = 30.00;
340 NucCrg_["Ga"] = 31.00;
341 NucCrg_["Ge"] = 32.00;
342 NucCrg_["As"] = 33.00;
343 NucCrg_["Se"] = 34.00;
344 NucCrg_["Br"] = 35.00;
345 NucCrg_["Kr"] = 36.00;
346 NucCrg_["Rb"] = 37.00;
347 NucCrg_["Sr"] = 38.00;
348 NucCrg_["Y"] = 39.00;
349 NucCrg_["Zr"] = 40.00;
350 NucCrg_["Nb"] = 41.00;
351 NucCrg_["Mo"] = 42.00;
352 NucCrg_["Tc"] = 43.00;
353 NucCrg_["Ru"] = 44.00;
354 NucCrg_["Rh"] = 45.00;
355 NucCrg_["Pd"] = 46.00;
356 NucCrg_["Ag"] = 47.00;
357 NucCrg_["Cd"] = 48.00;
358 NucCrg_["In"] = 49.00;
359 NucCrg_["Sn"] = 50.00;
360 NucCrg_["Sb"] = 51.00;
361 NucCrg_["Te"] = 52.00;
362 NucCrg_["I"] = 53.00;
363 NucCrg_["Xe"] = 54.00;
364 NucCrg_["Cs"] = 55.00;
365 NucCrg_["Ba"] = 56.00;
366
367 NucCrg_["Hf"] = 72.00;
368 NucCrg_["Ta"] = 73.00;
369 NucCrg_["W"] = 74.00;
370 NucCrg_["Re"] = 75.00;
371 NucCrg_["Os"] = 76.00;
372 NucCrg_["Ir"] = 77.00;
373 NucCrg_["Pt"] = 78.00;
374 NucCrg_["Au"] = 79.00;
375 NucCrg_["Hg"] = 80.00;
376 NucCrg_["Tl"] = 81.00;
377 NucCrg_["Pb"] = 82.00;
378 NucCrg_["Bi"] = 83.00;
379 NucCrg_["Po"] = 84.00;
380 NucCrg_["At"] = 85.00;
381 NucCrg_["Rn"] = 86.00;
382}
383
385 // Covalent Radii, used by BulkESP to break system into molecules
386 // data from http://pubs.rsc.org/en/content/articlehtml/2008/dt/b801115j
387 // values in [Angstroms]
388 CovRad_["H"] = 0.31;
389 CovRad_["He"] = 0.28;
390 CovRad_["Li"] = 1.28;
391 CovRad_["Be"] = 0.96;
392 CovRad_["B"] = 0.84;
393 // This is for sp3
394 CovRad_["C"] = 0.76;
395 CovRad_["N"] = 0.71;
396 CovRad_["O"] = 0.66;
397 CovRad_["F"] = 0.57;
398 CovRad_["Ne"] = 0.58;
399 CovRad_["Na"] = 1.66;
400 CovRad_["Mg"] = 1.41;
401 CovRad_["Al"] = 1.21;
402 CovRad_["Si"] = 1.11;
403 CovRad_["P"] = 1.07;
404 CovRad_["S"] = 1.05;
405 CovRad_["Cl"] = 1.02;
406 CovRad_["Ar"] = 1.06;
407 CovRad_["K"] = 2.03;
408 CovRad_["Ca"] = 1.76;
409 CovRad_["Sc"] = 1.70;
410 CovRad_["Ti"] = 1.60;
411 CovRad_["V"] = 1.53;
412 CovRad_["Cr"] = 1.39;
413 CovRad_["Mn"] = 1.61;
414 CovRad_["Fe"] = 1.52;
415 CovRad_["Co"] = 1.50;
416 CovRad_["Ni"] = 1.24;
417 CovRad_["Cu"] = 1.32;
418 CovRad_["Zn"] = 1.22;
419 CovRad_["Ga"] = 1.22;
420 CovRad_["Ge"] = 1.20;
421 CovRad_["As"] = 1.19;
422 CovRad_["Se"] = 1.20;
423 CovRad_["Br"] = 1.20;
424 CovRad_["Kr"] = 1.16;
425 CovRad_["Rb"] = 2.20;
426 CovRad_["Sr"] = 1.95;
427 CovRad_["Y"] = 1.90;
428 CovRad_["Zr"] = 1.75;
429 CovRad_["Nb"] = 1.64;
430 CovRad_["Mo"] = 1.54;
431 CovRad_["Tc"] = 1.47;
432 CovRad_["Ru"] = 1.46;
433 CovRad_["Rh"] = 1.42;
434 CovRad_["Pd"] = 1.39;
435 CovRad_["Ag"] = 1.45;
436 CovRad_["Cd"] = 1.44;
437 CovRad_["In"] = 1.42;
438 CovRad_["Sn"] = 1.39;
439 CovRad_["Sb"] = 1.39;
440 CovRad_["Te"] = 1.38;
441 CovRad_["I"] = 1.39;
442 CovRad_["Xe"] = 1.40;
443 CovRad_["Cs"] = 2.44;
444 CovRad_["Ba"] = 2.15;
445 CovRad_["Hf"] = 1.75;
446 CovRad_["Ta"] = 1.70;
447 CovRad_["W"] = 1.62;
448 CovRad_["Re"] = 1.51;
449 CovRad_["Os"] = 1.44;
450 CovRad_["Ir"] = 1.41;
451 CovRad_["Pt"] = 1.36;
452 CovRad_["Au"] = 1.36;
453 CovRad_["Hg"] = 1.32;
454 CovRad_["Tl"] = 1.45;
455 CovRad_["Pb"] = 1.46;
456 CovRad_["Bi"] = 1.48;
457 CovRad_["Po"] = 1.40;
458 CovRad_["At"] = 1.50;
459 CovRad_["Rn"] = 1.50;
460}
461
463 // Nuclear Charges
464 EleNum_["H"] = 1;
465 EleNum_["He"] = 2;
466 EleNum_["Li"] = 3;
467 EleNum_["Be"] = 4;
468 EleNum_["B"] = 5;
469 EleNum_["C"] = 6;
470 EleNum_["N"] = 7;
471 EleNum_["O"] = 8;
472 EleNum_["F"] = 9;
473 EleNum_["Ne"] = 10;
474 EleNum_["Na"] = 11;
475 EleNum_["Mg"] = 12;
476 EleNum_["Al"] = 13;
477 EleNum_["Si"] = 14;
478 EleNum_["P"] = 15;
479 EleNum_["S"] = 16;
480 EleNum_["Cl"] = 17;
481 EleNum_["Ar"] = 18;
482 EleNum_["K"] = 19;
483 EleNum_["Ca"] = 20;
484 EleNum_["Sc"] = 21;
485 EleNum_["Ti"] = 22;
486 EleNum_["V"] = 23;
487 EleNum_["Cr"] = 24;
488 EleNum_["Mn"] = 25;
489 EleNum_["Fe"] = 26;
490 EleNum_["Co"] = 27;
491 EleNum_["Ni"] = 28;
492 EleNum_["Cu"] = 29;
493 EleNum_["Zn"] = 30;
494 EleNum_["Ga"] = 31;
495 EleNum_["Ge"] = 32;
496 EleNum_["As"] = 33;
497 EleNum_["Se"] = 34;
498 EleNum_["Br"] = 35;
499 EleNum_["Kr"] = 36;
500 EleNum_["Rb"] = 37;
501 EleNum_["Sr"] = 38;
502 EleNum_["Y"] = 39;
503 EleNum_["Zr"] = 40;
504 EleNum_["Nb"] = 41;
505 EleNum_["Mo"] = 42;
506 EleNum_["Tc"] = 43;
507 EleNum_["Ru"] = 44;
508 EleNum_["Rh"] = 45;
509 EleNum_["Pd"] = 46;
510 EleNum_["Ag"] = 47;
511 EleNum_["Cd"] = 48;
512 EleNum_["In"] = 49;
513 EleNum_["Sn"] = 50;
514 EleNum_["Sb"] = 51;
515 EleNum_["Te"] = 52;
516 EleNum_["I"] = 53;
517 EleNum_["Xe"] = 54;
518 EleNum_["Cs"] = 55;
519 EleNum_["Ba"] = 56;
520 EleNum_["Hf"] = 72;
521 EleNum_["Ta"] = 73;
522 EleNum_["W"] = 74;
523 EleNum_["Re"] = 75;
524 EleNum_["Os"] = 76;
525 EleNum_["Ir"] = 77;
526 EleNum_["Pt"] = 78;
527 EleNum_["Au"] = 79;
528 EleNum_["Hg"] = 80;
529 EleNum_["Tl"] = 81;
530 EleNum_["Pb"] = 82;
531 EleNum_["Bi"] = 83;
532 EleNum_["Po"] = 84;
533 EleNum_["At"] = 85;
534 EleNum_["Rn"] = 86;
535}
536
538 // Nuclear Charges
539 EleName_[1] = "H";
540 EleName_[2] = "He";
541 EleName_[3] = "Li";
542 EleName_[4] = "Be";
543 EleName_[5] = "B";
544 EleName_[6] = "C";
545 EleName_[7] = "N";
546 EleName_[8] = "O";
547 EleName_[9] = "F";
548 EleName_[10] = "Ne";
549 EleName_[11] = "Na";
550 EleName_[12] = "Mg";
551 EleName_[13] = "Al";
552 EleName_[14] = "Si";
553 EleName_[15] = "P";
554 EleName_[16] = "S";
555 EleName_[17] = "Cl";
556 EleName_[18] = "Ar";
557 EleName_[19] = "K";
558 EleName_[20] = "Ca";
559 EleName_[21] = "Sc";
560 EleName_[22] = "Ti";
561 EleName_[23] = "V";
562 EleName_[24] = "Cr";
563 EleName_[25] = "Mn";
564 EleName_[26] = "Fe";
565 EleName_[27] = "Co";
566 EleName_[28] = "Ni";
567 EleName_[29] = "Cu";
568 EleName_[30] = "Zn";
569 EleName_[31] = "Ga";
570 EleName_[32] = "Ge";
571 EleName_[33] = "As";
572 EleName_[34] = "Se";
573 EleName_[35] = "Br";
574 EleName_[36] = "Kr";
575 EleName_[37] = "Rb";
576 EleName_[38] = "Sr";
577 EleName_[39] = "Y";
578 EleName_[40] = "Zr";
579 EleName_[41] = "Nb";
580 EleName_[42] = "Mo";
581 EleName_[43] = "Tc";
582 EleName_[44] = "Ru";
583 EleName_[45] = "Rh";
584 EleName_[46] = "Pd";
585 EleName_[47] = "Ag";
586 EleName_[48] = "Cd";
587 EleName_[49] = "In";
588 EleName_[50] = "Sn";
589 EleName_[51] = "Sb";
590 EleName_[52] = "Te";
591 EleName_[53] = "I";
592 EleName_[54] = "Xe";
593 EleName_[55] = "Cs";
594 EleName_[56] = "Ba";
595
596 EleName_[72] = "Hf";
597 EleName_[73] = "Ta";
598 EleName_[74] = "W";
599 EleName_[75] = "Re";
600 EleName_[76] = "Os";
601 EleName_[77] = "Ir";
602 EleName_[78] = "Pt";
603 EleName_[79] = "Au";
604 EleName_[80] = "Hg";
605 EleName_[81] = "Tl";
606 EleName_[82] = "Pb";
607 EleName_[83] = "Bi";
608 EleName_[84] = "Po";
609 EleName_[85] = "At";
610 EleName_[86] = "Rn";
611}
612
614 // VdW radii in Angstrom as used in MK Gaussian
615 EleShort_["HYDROGEN"] = "H";
616 EleShort_["HELIUM"] = "He";
617 EleShort_["LITHIUM"] = "Li";
618 EleShort_["BERYLLIUM"] = "Be";
619 EleShort_["BORON"] = "B";
620 EleShort_["CARBON"] = "C";
621 EleShort_["NITROGEN"] = "Ni";
622 EleShort_["OXYGEN"] = "O";
623 EleShort_["FLUORINE"] = "Fl";
624 EleShort_["NEON"] = "Ne";
625 EleShort_["SODIUM"] = "Na";
626 EleShort_["MAGNESIUM"] = "Mg";
627 EleShort_["ALUMINUM"] = "Al";
628 EleShort_["SILICON"] = "Si";
629 EleShort_["PHOSPHORUS"] = "Ph";
630 EleShort_["SULFUR"] = "S";
631 EleShort_["CLORINE"] = "Cl";
632 EleShort_["ARGON"] = "Ar";
633 EleShort_["POTASSIUM"] = "K";
634 EleShort_["CALCIUM"] = "Ca";
635 EleShort_["SCANDDIUM"] = "Sc";
636 EleShort_["TITANIUM"] = "Ti";
637 EleShort_["VANADIUM"] = "V";
638 EleShort_["CHROMIUM"] = "Cr";
639 EleShort_["MANGANESE"] = "Mn";
640 EleShort_["IRON"] = "Fe";
641 EleShort_["COBALT"] = "Co";
642 EleShort_["NICKEL"] = "Ni";
643 EleShort_["COPPER"] = "Cu";
644 EleShort_["ZINC"] = "Zn";
645 EleShort_["GALLIUM"] = "Ga";
646 EleShort_["GERMANIUM"] = "Ge";
647 EleShort_["ARSENIC"] = "As";
648 EleShort_["SELENIUM"] = "Se";
649 EleShort_["BROMINE"] = "Br";
650 EleShort_["KRPTON"] = "Kr";
651 EleShort_["RUBIDIUM"] = "Rb";
652 EleShort_["STRONTIUM"] = "Sr";
653 EleShort_["YTTRIUM"] = "Y";
654 EleShort_["ZIRCONIUM"] = "Zr";
655 EleShort_["NIOBIUM"] = "Nb";
656 EleShort_["MOLYBDENUM"] = "Mo";
657 EleShort_["TECHNETIUM"] = "Tc";
658 EleShort_["RUTHENIUM"] = "Ru";
659 EleShort_["RHODIUM"] = "Rh";
660 EleShort_["PALLADIUM"] = "Pd";
661 EleShort_["SILVER"] = "Ag";
662 EleShort_["CADMIUM"] = "Cd";
663 EleShort_["INDIUM"] = "In";
664 EleShort_["TIN"] = "Sn";
665 EleShort_["ANTIMONY"] = "Sb";
666 EleShort_["TELLURIUM"] = "Te";
667 EleShort_["IODINE"] = "I";
668 EleShort_["XENON"] = "Xe";
669 EleShort_["CAESIUM"] = "Cs";
670 EleShort_["BARIUM"] = "Ba";
671 EleShort_["HAFNIUM"] = "Hf";
672 EleShort_["TANTALUM"] = "Ta";
673 EleShort_["TUNGSTEN"] = "W";
674 EleShort_["RHENIUM"] = "Re";
675 EleShort_["OSMIUM"] = "Os";
676 EleShort_["IRIDIUM"] = "Ir";
677 EleShort_["PLATINUM"] = "Pt";
678 EleShort_["GOLD"] = "Au";
679 EleShort_["MERCURY"] = "Hg";
680 EleShort_["THALLIUM"] = "Tl";
681 EleShort_["LEAD"] = "Pd";
682 EleShort_["BISMUTH"] = "Bi";
683 EleShort_["PLONIUM"] = "Po";
684 EleShort_["ASTATINE"] = "At";
685 EleShort_["RADON"] = "Rn";
686}
687
689 // VdW radii in Angstrom as used in MK Gaussian
690 EleFull_["H"] = "HYDROGEN";
691 EleFull_["He"] = "HELIUM";
692 EleFull_["Li"] = "LITHIUM";
693 EleFull_["Be"] = "BERYLLIUM";
694 EleFull_["B"] = "BORON";
695 EleFull_["C"] = "CARBON";
696 EleFull_["N"] = "NITROGEN";
697 EleFull_["O"] = "OXYGEN";
698 EleFull_["F"] = "FLUORINE";
699 EleFull_["Ne"] = "NEON";
700 EleFull_["Na"] = "SODIUM";
701 EleFull_["Mg"] = "MAGNESIUM";
702 EleFull_["Al"] = "ALUMINUM";
703 EleFull_["Si"] = "SILICON";
704 EleFull_["P"] = "PHOSPHORUS";
705 EleFull_["S"] = "SULFUR";
706 EleFull_["Cl"] = "CHLORINE";
707 EleFull_["Ar"] = "ARGON";
708 EleFull_["K"] = "POTASSIUM";
709 EleFull_["Ca"] = "CALCIUM";
710 EleFull_["Sc"] = "SCANDIUM";
711 EleFull_["Ti"] = "TITANIUM";
712 EleFull_["V"] = "VANADIUM";
713 EleFull_["Cr"] = "CHROMIUM";
714 EleFull_["Mn"] = "MANGANESE";
715 EleFull_["Fe"] = "IRON";
716 EleFull_["Co"] = "COBALT";
717 EleFull_["Ni"] = "NICKEL";
718 EleFull_["Cu"] = "COPPER";
719 EleFull_["Zn"] = "ZINC";
720 EleFull_["Ga"] = "GALLIUM";
721 EleFull_["Ge"] = "GERMANIUM";
722 EleFull_["As"] = "ARSENIC";
723 EleFull_["Se"] = "SELENIUM";
724 EleFull_["Br"] = "BROMINE";
725 EleFull_["Kr"] = "KRYPTON";
726 EleFull_["Rb"] = "RUBIDIUM";
727 EleFull_["Sr"] = "STRONTIUM";
728 EleFull_["Y"] = "YTTRIUM";
729 EleFull_["Zr"] = "ZIRCONIUM";
730 EleFull_["Nb"] = "NIOBIUM";
731 EleFull_["Mo"] = "MOLYBDENUM";
732 EleFull_["Tc"] = "TECHNETIUM";
733 EleFull_["Ru"] = "TUTHENIUM";
734 EleFull_["Rh"] = "RHODIUM";
735 EleFull_["Pd"] = "PALLADIUM";
736 EleFull_["Ag"] = "SILVER";
737 EleFull_["Cd"] = "CADMIUM";
738 EleFull_["In"] = "INDIUM";
739 EleFull_["Sn"] = "TIN";
740 EleFull_["Sb"] = "ANTIMONY";
741 EleFull_["Te"] = "TELLURIUM";
742 EleFull_["I"] = "IODINE";
743 EleFull_["Xe"] = "XENON";
744 EleFull_["Cs"] = "CEASIUM";
745 EleFull_["Ba"] = "BARIUM";
746 EleFull_["Hf"] = "HAFNIUM";
747 EleFull_["Ta"] = "TANTALUM";
748 EleFull_["W"] = "TUNGSTEN";
749 EleFull_["Re"] = "RHENIUM";
750 EleFull_["Os"] = "OSMIUM";
751 EleFull_["Ir"] = "IRIDIUM";
752 EleFull_["Pt"] = "PLATINUM";
753 EleFull_["Au"] = "GOLD";
754 EleFull_["Hg"] = "MERCURY";
755 EleFull_["Tl"] = "THALLIUM";
756 EleFull_["Pb"] = "LEAD";
757 EleFull_["Bi"] = "BISMUTH";
758 EleFull_["Po"] = "POLONIUM";
759 EleFull_["At"] = "ASTATINE";
760 EleFull_["Rn"] = "RADON";
761}
762
764 // VdW radii in Angstrom as used in MK Gaussian
765 VdWMK_["H"] = 1.2;
766 VdWMK_["He"] = 1.2;
767 VdWMK_["Li"] = 1.37;
768 VdWMK_["Be"] = 1.45;
769 VdWMK_["B"] = 1.45;
770 VdWMK_["C"] = 1.5;
771 VdWMK_["N"] = 1.5;
772 VdWMK_["O"] = 1.4;
773 VdWMK_["F"] = 1.35;
774 VdWMK_["Ne"] = 1.3;
775 VdWMK_["Na"] = 1.57;
776 VdWMK_["Mg"] = 1.36;
777 VdWMK_["Al"] = 1.24;
778 VdWMK_["Si"] = 1.17;
779 VdWMK_["P"] = 1.8;
780 VdWMK_["S"] = 1.75;
781 VdWMK_["Cl"] = 1.7;
782 VdWMK_["Ag"] = 2.0;
783}
784
786 ElPolarizability_["H"] = 0.496e-3;
787 ElPolarizability_["C"] = 1.334e-3;
788 ElPolarizability_["N"] = 1.073e-3;
789 ElPolarizability_["O"] = 0.837e-3;
790 ElPolarizability_["S"] = 2.926e-3;
791 ElPolarizability_["F"] = 0.440e-3;
792 ElPolarizability_["Si"] = 3.962e-3; // B3LYP/6-311+g(2d,2p)
793 ElPolarizability_["Zn"] = 5.962e-3; // B3LYP/6-311+g(2d,2p)
794 ElPolarizability_["Al"] =
795 5.80e-3; //[1]P. Fuentealba, “The static dipole polarizability of
796 // aluminium atom: discrepancy between theory and experiment,”
797 // Chemical physics letters, vol. 397, no. 4, pp. 459–461, 2004.
798}
799
800} // namespace tools
801} // namespace votca
bool isEleFull(std::string fullname)
Is elefull recognized as an element name i.e. Carbon, HYDROGEN, suphur.
Definition elements.cc:153
bool isMassAssociatedWithElement(double mass, double tolerance)
Definition elements.cc:170
std::pair< std::string, double > findShortNameOfElementClosestInMass(double mass)
Definition elements.cc:192
std::map< std::string, Index > EleNum_
Definition elements.h:125
double getPolarizability(std::string name)
Returns the atomic polarisability of atom.
Definition elements.cc:97
std::string getEleShortClosestInMass(double mass, double tolerance)
Definition elements.cc:178
std::string getEleName(Index elenum)
Definition elements.cc:129
Index getNucCrg(std::string name)
Return the Nuclear charges of each atom. H - 1, He - 2, Na - 3 etc...
Definition elements.cc:36
double getVdWChelpG(std::string name)
Definition elements.cc:75
std::map< std::string, std::string > EleShort_
Definition elements.h:130
std::map< Index, std::string > EleName_
Definition elements.h:126
std::map< std::string, double > ElPolarizability_
Definition elements.h:128
std::string getEleShort(std::string elefull)
Definition elements.cc:145
std::map< std::string, double > VdWMK_
Definition elements.h:121
double getVdWMK(std::string name)
Definition elements.cc:86
std::string getEleFull(std::string eleshort)
Definition elements.cc:137
std::map< std::string, double > Mass_
Definition elements.h:124
std::map< std::string, double > VdWChelpG_
Definition elements.h:120
bool isEleShort(std::string shortname)
Is eleshort recognized an element symbol i.e. H, C, He, Ne etc.
Definition elements.cc:162
double getCovRad(std::string name, std::string unit)
Returns the covalent Radii of the atom.
Definition elements.cc:109
std::map< std::string, double > CovRad_
Definition elements.h:123
Index getEleNum(std::string name)
Definition elements.cc:49
double getMass(std::string name)
Returns the mass of each atom in a.u.
Definition elements.cc:62
bool isElement(std::string name)
Determine if the name is a recognized element symbol or name.
Definition elements.cc:32
std::map< std::string, std::string > EleFull_
Definition elements.h:131
std::map< std::string, Index > NucCrg_
Definition elements.h:122
const double ang2bohr
Definition constants.h:48
const double ang2nm
Definition constants.h:51
base class for all analysis tools
Definition basebead.h:33
Eigen::Index Index
Definition types.h:26