1# -*- coding: utf-8 -*- 2# Copyright (C) 2011 Atsushi Togo 3# All rights reserved. 4# 5# This file is part of phonopy. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 11# * Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 14# * Redistributions in binary form must reproduce the above copyright 15# notice, this list of conditions and the following disclaimer in 16# the documentation and/or other materials provided with the 17# distribution. 18# 19# * Neither the name of the phonopy project nor the names of its 20# contributors may be used to endorse or promote products derived 21# from this software without specific prior written permission. 22# 23# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34# POSSIBILITY OF SUCH DAMAGE. 35 36import warnings 37import numpy as np 38 39 40def Atoms(*args, **kwargs): 41 warnings.warn("phonopy.atoms.Atoms is deprecated. Please use " 42 "PhonopyAtoms instead of Atoms.", DeprecationWarning) 43 return PhonopyAtoms(*args, **kwargs) 44 45 46class _Atoms(object): 47 """A class compatible with the ASE Atoms class. 48 49 Only the necessary stuffs to phonopy are implemented. The data 50 structure of magnetic moments is incompatible. 51 52 """ 53 54 def __init__(self, 55 symbols=None, 56 positions=None, 57 numbers=None, 58 masses=None, 59 magmoms=None, 60 scaled_positions=None, 61 cell=None, 62 pbc=None): 63 # cell and positions 64 self._cell = None 65 self._scaled_positions = None 66 self._set_cell_and_positions(cell, 67 positions=positions, 68 scaled_positions=scaled_positions) 69 70 # Atom symbols 71 self._symbols = symbols 72 73 # Atomic numbers 74 self._numbers = None 75 if numbers is not None: 76 self._numbers = np.array(numbers, dtype='intc') 77 78 # masses 79 self._masses = None 80 self._set_masses(masses) 81 82 # (initial) magnetic moments 83 self._magmoms = None 84 self._set_magnetic_moments(magmoms) 85 86 # numbers and symbols 87 if self._numbers is not None: # number --> symbol 88 self._numbers_to_symbols() 89 elif self._symbols is not None: # symbol --> number 90 self._symbols_to_numbers() 91 92 # symbol --> mass 93 if self._symbols and (self._masses is None): 94 self._symbols_to_masses() 95 96 self._check() 97 98 def __len__(self): 99 return len(self.numbers) 100 101 def set_cell(self, cell): 102 self._set_cell(cell) 103 self._check() 104 105 def get_cell(self): 106 return self._cell.copy() 107 108 def set_positions(self, cart_positions): 109 self._set_positions(cart_positions) 110 self._check() 111 112 def get_positions(self): 113 return np.dot(self._scaled_positions, self._cell) 114 115 def set_scaled_positions(self, scaled_positions): 116 self._set_scaled_positions(scaled_positions) 117 self._check() 118 119 def get_scaled_positions(self): 120 return self._scaled_positions.copy() 121 122 def set_masses(self, masses): 123 self._set_masses(masses) 124 self._check() 125 126 def get_masses(self): 127 if self._masses is None: 128 return None 129 else: 130 return self._masses.copy() 131 132 def set_magnetic_moments(self, magmoms): 133 self._set_magnetic_moments(magmoms) 134 self._check() 135 136 def get_magnetic_moments(self): 137 if self._magmoms is None: 138 return None 139 else: 140 return self._magmoms.copy() 141 142 def set_chemical_symbols(self, symbols): 143 self._symbols = symbols 144 self._check() 145 self._symbols_to_numbers() 146 self._symbols_to_masses() 147 148 def get_chemical_symbols(self): 149 return self._symbols[:] 150 151 def get_number_of_atoms(self): 152 return len(self) 153 154 def set_atomic_numbers(self, number): 155 self.number = number 156 self._check() 157 self._numbers_to_symbols() 158 self._symbols_to_masses() 159 160 def get_atomic_numbers(self): 161 return self._numbers.copy() 162 163 def get_volume(self): 164 return np.linalg.det(self._cell) 165 166 def _set_cell(self, cell): 167 _cell = np.array(cell, dtype='double', order='C') 168 if _cell.shape == (3, 3): 169 self._cell = _cell 170 else: 171 raise TypeError("Array shape of cell is not 3x3.") 172 173 def _set_positions(self, cart_positions): 174 self._scaled_positions = np.array( 175 np.dot(cart_positions, np.linalg.inv(self._cell)), 176 dtype='double', order='C') 177 178 def _set_scaled_positions(self, scaled_positions): 179 self._scaled_positions = np.array(scaled_positions, 180 dtype='double', order='C') 181 182 def _set_masses(self, masses): 183 if masses is None: 184 self._masses = None 185 else: 186 self._masses = np.array(masses, dtype='double') 187 188 def _set_magnetic_moments(self, magmoms): 189 if magmoms is None: 190 self._magmoms = None 191 else: 192 self._magmoms = np.array(magmoms, dtype='double') 193 194 def _set_cell_and_positions(self, 195 cell, 196 positions=None, 197 scaled_positions=None): 198 self._set_cell(cell) 199 if positions is not None: 200 self._set_positions(positions) 201 elif scaled_positions is not None: 202 self._set_scaled_positions(scaled_positions) 203 204 def _numbers_to_symbols(self): 205 self._symbols = [atom_data[n][1] for n in self._numbers] 206 207 def _symbols_to_numbers(self): 208 self._numbers = np.array( 209 [symbol_map[s] for s in self._symbols], dtype='intc') 210 211 def _symbols_to_masses(self): 212 masses = [atom_data[symbol_map[s]][3] for s in self._symbols] 213 if None in masses: 214 self._masses = None 215 else: 216 self._masses = np.array(masses, dtype='double') 217 218 def _check(self): 219 if self._cell is None: 220 raise RuntimeError('cell is not set.') 221 if self._scaled_positions is None: 222 raise RuntimeError('scaled_positions (positions) is not set.') 223 if self._numbers is None: 224 raise RuntimeError('numbers is not set.') 225 if len(self._numbers) != len(self._scaled_positions): 226 raise RuntimeError('len(numbers) != len(scaled_positions).') 227 if len(self._numbers) != len(self._symbols): 228 raise RuntimeError('len(numbers) != len(symbols).') 229 if self._masses is not None: 230 if len(self._numbers) != len(self._masses): 231 raise RuntimeError('len(numbers) != len(masses).') 232 if self._magmoms is not None: 233 if len(self._numbers) != len(self._magmoms): 234 raise RuntimeError('len(numbers) != len(magmoms).') 235 236 237class PhonopyAtoms(_Atoms): 238 def __init__(self, 239 symbols=None, 240 numbers=None, 241 masses=None, 242 magmoms=None, 243 scaled_positions=None, 244 positions=None, 245 cell=None, 246 atoms=None, 247 pbc=True): # pbc is dummy argument, and never used. 248 if atoms: 249 try: # This is for ASE Atoms class compatibility (not guranteed) 250 magmoms = atoms.get_magnetic_moments() 251 except RuntimeError: 252 magmoms = None 253 _Atoms.__init__(self, 254 numbers=atoms.get_atomic_numbers(), 255 masses=atoms.get_masses(), 256 magmoms=magmoms, 257 scaled_positions=atoms.get_scaled_positions(), 258 cell=atoms.get_cell(), 259 pbc=True) 260 else: 261 _Atoms.__init__(self, 262 symbols=symbols, 263 numbers=numbers, 264 masses=masses, 265 magmoms=magmoms, 266 scaled_positions=scaled_positions, 267 positions=positions, 268 cell=cell, 269 pbc=True) 270 271 @property 272 def cell(self): 273 return self.get_cell() 274 275 @cell.setter 276 def cell(self, cell): 277 self.set_cell(cell) 278 279 @property 280 def positions(self): 281 return self.get_positions() 282 283 @positions.setter 284 def positions(self, positions): 285 self.set_positions(positions) 286 287 @property 288 def scaled_positions(self): 289 return self.get_scaled_positions() 290 291 @scaled_positions.setter 292 def scaled_positions(self, scaled_positions): 293 self.set_scaled_positions(scaled_positions) 294 295 @property 296 def symbols(self): 297 return self.get_chemical_symbols() 298 299 @symbols.setter 300 def symbols(self, symbols): 301 self.set_chemical_symbols(symbols) 302 303 @property 304 def numbers(self): 305 return self.get_atomic_numbers() 306 307 @numbers.setter 308 def numbers(self, numbers): 309 self.set_atomic_numbers(numbers) 310 311 @property 312 def masses(self): 313 return self.get_masses() 314 315 @masses.setter 316 def masses(self, masses): 317 self.set_masses(masses) 318 319 @property 320 def magnetic_moments(self): 321 return self.get_magnetic_moments() 322 323 @magnetic_moments.setter 324 def magnetic_moments(self, magmoms): 325 self.set_magnetic_moments(magmoms) 326 327 @property 328 def volume(self): 329 return self.get_volume() 330 331 def copy(self): 332 return PhonopyAtoms(cell=self._cell, 333 scaled_positions=self._scaled_positions, 334 masses=self._masses, 335 magmoms=self._magmoms, 336 symbols=self._symbols, 337 pbc=True) 338 339 def totuple(self): 340 if self._magmoms is None: 341 return (self._cell, self._scaled_positions, self._numbers) 342 else: 343 return (self._cell, self._scaled_positions, self._numbers, 344 self._magmoms) 345 346 def to_tuple(self): 347 warnings.warn( 348 "PhonopyAtoms.to_tuple is deprecated. Please use " 349 "PhonopyAtoms.totuple instead.", DeprecationWarning) 350 return self.totuple() 351 352 def get_yaml_lines(self): 353 lines = ["lattice:"] 354 for v, a in zip(self._cell, ('a', 'b', 'c')): 355 lines.append("- [ %21.15f, %21.15f, %21.15f ] # %s" % 356 (v[0], v[1], v[2], a)) 357 lines.append("points:") 358 if self._masses is None: 359 masses = [None] * len(self._symbols) 360 else: 361 masses = self._masses 362 for i, (s, v, m) in enumerate( 363 zip(self._symbols, self._scaled_positions, masses)): 364 lines.append("- symbol: %-2s # %d" % (s, i + 1)) 365 lines.append(" coordinates: [ %18.15f, %18.15f, %18.15f ]" % 366 tuple(v)) 367 if m is not None: 368 lines.append(" mass: %f" % m) 369 return lines 370 371 def __str__(self): 372 return "\n".join(self.get_yaml_lines()) 373 374 375# Pure Appl. Chem., Vol. 83, No. 2, pp. 359-396, 2011. is available 376# but the following list is from 2006. 377 378# Pure Appl. Chem., Vol. 78, No. 11, pp. 2051-2066, 2006. 379# The masses of following elements are obtained from wikipedia: 380# Ac: 227 381# Np: 237 382# Pm: 145 383# Tc: 98 384atom_data = [ 385 [0, "X", "X", None], # 0 386 [1, "H", "Hydrogen", 1.00794], # 1 387 [2, "He", "Helium", 4.002602], # 2 388 [3, "Li", "Lithium", 6.941], # 3 389 [4, "Be", "Beryllium", 9.012182], # 4 390 [5, "B", "Boron", 10.811], # 5 391 [6, "C", "Carbon", 12.0107], # 6 392 [7, "N", "Nitrogen", 14.0067], # 7 393 [8, "O", "Oxygen", 15.9994], # 8 394 [9, "F", "Fluorine", 18.9984032], # 9 395 [10, "Ne", "Neon", 20.1797], # 10 396 [11, "Na", "Sodium", 22.98976928], # 11 397 [12, "Mg", "Magnesium", 24.3050], # 12 398 [13, "Al", "Aluminium", 26.9815386], # 13 399 [14, "Si", "Silicon", 28.0855], # 14 400 [15, "P", "Phosphorus", 30.973762], # 15 401 [16, "S", "Sulfur", 32.065], # 16 402 [17, "Cl", "Chlorine", 35.453], # 17 403 [18, "Ar", "Argon", 39.948], # 18 404 [19, "K", "Potassium", 39.0983], # 19 405 [20, "Ca", "Calcium", 40.078], # 20 406 [21, "Sc", "Scandium", 44.955912], # 21 407 [22, "Ti", "Titanium", 47.867], # 22 408 [23, "V", "Vanadium", 50.9415], # 23 409 [24, "Cr", "Chromium", 51.9961], # 24 410 [25, "Mn", "Manganese", 54.938045], # 25 411 [26, "Fe", "Iron", 55.845], # 26 412 [27, "Co", "Cobalt", 58.933195], # 27 413 [28, "Ni", "Nickel", 58.6934], # 28 414 [29, "Cu", "Copper", 63.546], # 29 415 [30, "Zn", "Zinc", 65.38], # 30 416 [31, "Ga", "Gallium", 69.723], # 31 417 [32, "Ge", "Germanium", 72.64], # 32 418 [33, "As", "Arsenic", 74.92160], # 33 419 [34, "Se", "Selenium", 78.96], # 34 420 [35, "Br", "Bromine", 79.904], # 35 421 [36, "Kr", "Krypton", 83.798], # 36 422 [37, "Rb", "Rubidium", 85.4678], # 37 423 [38, "Sr", "Strontium", 87.62], # 38 424 [39, "Y", "Yttrium", 88.90585], # 39 425 [40, "Zr", "Zirconium", 91.224], # 40 426 [41, "Nb", "Niobium", 92.90638], # 41 427 [42, "Mo", "Molybdenum", 95.96], # 42 428 [43, "Tc", "Technetium", 98], # 43 (mass is from wikipedia) 429 [44, "Ru", "Ruthenium", 101.07], # 44 430 [45, "Rh", "Rhodium", 102.90550], # 45 431 [46, "Pd", "Palladium", 106.42], # 46 432 [47, "Ag", "Silver", 107.8682], # 47 433 [48, "Cd", "Cadmium", 112.411], # 48 434 [49, "In", "Indium", 114.818], # 49 435 [50, "Sn", "Tin", 118.710], # 50 436 [51, "Sb", "Antimony", 121.760], # 51 437 [52, "Te", "Tellurium", 127.60], # 52 438 [53, "I", "Iodine", 126.90447], # 53 439 [54, "Xe", "Xenon", 131.293], # 54 440 [55, "Cs", "Caesium", 132.9054519], # 55 441 [56, "Ba", "Barium", 137.327], # 56 442 [57, "La", "Lanthanum", 138.90547], # 57 443 [58, "Ce", "Cerium", 140.116], # 58 444 [59, "Pr", "Praseodymium", 140.90765], # 59 445 [60, "Nd", "Neodymium", 144.242], # 60 446 [61, "Pm", "Promethium", 145], # 61 (mass is from wikipedia) 447 [62, "Sm", "Samarium", 150.36], # 62 448 [63, "Eu", "Europium", 151.964], # 63 449 [64, "Gd", "Gadolinium", 157.25], # 64 450 [65, "Tb", "Terbium", 158.92535], # 65 451 [66, "Dy", "Dysprosium", 162.500], # 66 452 [67, "Ho", "Holmium", 164.93032], # 67 453 [68, "Er", "Erbium", 167.259], # 68 454 [69, "Tm", "Thulium", 168.93421], # 69 455 [70, "Yb", "Ytterbium", 173.054], # 70 456 [71, "Lu", "Lutetium", 174.9668], # 71 457 [72, "Hf", "Hafnium", 178.49], # 72 458 [73, "Ta", "Tantalum", 180.94788], # 73 459 [74, "W", "Tungsten", 183.84], # 74 460 [75, "Re", "Rhenium", 186.207], # 75 461 [76, "Os", "Osmium", 190.23], # 76 462 [77, "Ir", "Iridium", 192.217], # 77 463 [78, "Pt", "Platinum", 195.084], # 78 464 [79, "Au", "Gold", 196.966569], # 79 465 [80, "Hg", "Mercury", 200.59], # 80 466 [81, "Tl", "Thallium", 204.3833], # 81 467 [82, "Pb", "Lead", 207.2], # 82 468 [83, "Bi", "Bismuth", 208.98040], # 83 469 [84, "Po", "Polonium", None], # 84 470 [85, "At", "Astatine", None], # 85 471 [86, "Rn", "Radon", None], # 86 472 [87, "Fr", "Francium", None], # 87 473 [88, "Ra", "Radium", None], # 88 474 [89, "Ac", "Actinium", 227], # 89 (mass is from wikipedia) 475 [90, "Th", "Thorium", 232.03806], # 90 476 [91, "Pa", "Protactinium", 231.03588], # 91 477 [92, "U", "Uranium", 238.02891], # 92 478 [93, "Np", "Neptunium", 237], # 93 (mass is from wikipedia) 479 [94, "Pu", "Plutonium", None], # 94 480 [95, "Am", "Americium", None], # 95 481 [96, "Cm", "Curium", None], # 96 482 [97, "Bk", "Berkelium", None], # 97 483 [98, "Cf", "Californium", None], # 98 484 [99, "Es", "Einsteinium", None], # 99 485 [100, "Fm", "Fermium", None], # 100 486 [101, "Md", "Mendelevium", None], # 101 487 [102, "No", "Nobelium", None], # 102 488 [103, "Lr", "Lawrencium", None], # 103 489 [104, "Rf", "Rutherfordium", None], # 104 490 [105, "Db", "Dubnium", None], # 105 491 [106, "Sg", "Seaborgium", None], # 106 492 [107, "Bh", "Bohrium", None], # 107 493 [108, "Hs", "Hassium", None], # 108 494 [109, "Mt", "Meitnerium", None], # 109 495 [110, "Ds", "Darmstadtium", None], # 110 496 [111, "Rg", "Roentgenium", None], # 111 497 [112, "Cn", "Copernicium", None], # 112 498 [113, "Uut", "Ununtrium", None], # 113 499 [114, "Uuq", "Ununquadium", None], # 114 500 [115, "Uup", "Ununpentium", None], # 115 501 [116, "Uuh", "Ununhexium", None], # 116 502 [117, "Uus", "Ununseptium", None], # 117 503 [118, "Uuo", "Ununoctium", None], # 118 504] 505 506symbol_map = { 507 "H": 1, 508 "He": 2, 509 "Li": 3, 510 "Be": 4, 511 "B": 5, 512 "C": 6, 513 "N": 7, 514 "O": 8, 515 "F": 9, 516 "Ne": 10, 517 "Na": 11, 518 "Mg": 12, 519 "Al": 13, 520 "Si": 14, 521 "P": 15, 522 "S": 16, 523 "Cl": 17, 524 "Ar": 18, 525 "K": 19, 526 "Ca": 20, 527 "Sc": 21, 528 "Ti": 22, 529 "V": 23, 530 "Cr": 24, 531 "Mn": 25, 532 "Fe": 26, 533 "Co": 27, 534 "Ni": 28, 535 "Cu": 29, 536 "Zn": 30, 537 "Ga": 31, 538 "Ge": 32, 539 "As": 33, 540 "Se": 34, 541 "Br": 35, 542 "Kr": 36, 543 "Rb": 37, 544 "Sr": 38, 545 "Y": 39, 546 "Zr": 40, 547 "Nb": 41, 548 "Mo": 42, 549 "Tc": 43, 550 "Ru": 44, 551 "Rh": 45, 552 "Pd": 46, 553 "Ag": 47, 554 "Cd": 48, 555 "In": 49, 556 "Sn": 50, 557 "Sb": 51, 558 "Te": 52, 559 "I": 53, 560 "Xe": 54, 561 "Cs": 55, 562 "Ba": 56, 563 "La": 57, 564 "Ce": 58, 565 "Pr": 59, 566 "Nd": 60, 567 "Pm": 61, 568 "Sm": 62, 569 "Eu": 63, 570 "Gd": 64, 571 "Tb": 65, 572 "Dy": 66, 573 "Ho": 67, 574 "Er": 68, 575 "Tm": 69, 576 "Yb": 70, 577 "Lu": 71, 578 "Hf": 72, 579 "Ta": 73, 580 "W": 74, 581 "Re": 75, 582 "Os": 76, 583 "Ir": 77, 584 "Pt": 78, 585 "Au": 79, 586 "Hg": 80, 587 "Tl": 81, 588 "Pb": 82, 589 "Bi": 83, 590 "Po": 84, 591 "At": 85, 592 "Rn": 86, 593 "Fr": 87, 594 "Ra": 88, 595 "Ac": 89, 596 "Th": 90, 597 "Pa": 91, 598 "U": 92, 599 "Np": 93, 600 "Pu": 94, 601 "Am": 95, 602 "Cm": 96, 603 "Bk": 97, 604 "Cf": 98, 605 "Es": 99, 606 "Fm": 100, 607 "Md": 101, 608 "No": 102, 609 "Lr": 103, 610 "Rf": 104, 611 "Db": 105, 612 "Sg": 106, 613 "Bh": 107, 614 "Hs": 108, 615 "Mt": 109, 616 "Ds": 110, 617 "Rg": 111, 618 "Cn": 112, 619 "Uut": 113, 620 "Uuq": 114, 621 "Uup": 115, 622 "Uuh": 116, 623 "Uus": 117, 624 "Uuo": 118, 625} 626 627# This data are obtained from 628# J. R. de Laeter, J. K. Böhlke, P. De Bièvre, H. Hidaka, H. S. Peiser, 629# K. J. R. Rosman and P. D. P. Taylor (2003). 630# "Atomic weights of the elements. Review 2000 (IUPAC Technical Report)" 631isotope_data = { 632 'H': [[1, 1.0078250319, 0.999885], [2, 2.0141017779, 0.000115]], 633 'He': [[3, 3.0160293094, 0.00000134], [4, 4.0026032497, 0.99999866]], 634 'Li': [[6, 6.0151223, 0.0759], [7, 7.0160041, 0.9241]], 635 'Be': [[9, 9.0121822, 1.0000]], 636 'B': [[10, 10.0129371, 0.199], [11, 11.0093055, 0.801]], 637 'C': [[12, 12, 0.9893], [13, 13.003354838, 0.0107]], 638 'N': [[14, 14.0030740074, 0.99636], [15, 15.000108973, 0.00364]], 639 'O': [[16, 15.9949146223, 0.99757], [17, 16.99913150, 0.00038], 640 [18, 17.9991604, 0.00205]], 641 'F': [[19, 18.99840320, 1.0000]], 642 'Ne': [[20, 19.992440176, 0.9048], [21, 20.99384674, 0.0027], 643 [22, 21.99138550, 0.0925]], 644 'Na': [[23, 22.98976966, 1.0000]], 645 'Mg': [[24, 23.98504187, 0.7899], [25, 24.98583700, 0.1000], 646 [26, 25.98259300, 0.1101]], 647 'Al': [[27, 26.98153841, 1.0000]], 648 'Si': [[28, 27.97692649, 0.92223], [29, 28.97649468, 0.04685], 649 [30, 29.97377018, 0.03092]], 650 'P': [[31, 30.97376149, 1.0000]], 651 'S': [[32, 31.97207073, 0.9499], [33, 32.97145854, 0.0075], 652 [34, 33.96786687, 0.0425], [36, 35.96708088, 0.0001]], 653 'Cl': [[35, 34.96885271, 0.7576], [37, 36.96590260, 0.2424]], 654 'Ar': [[36, 35.96754626, 0.003365], [38, 37.9627322, 0.000632], 655 [40, 39.962383124, 0.996003]], 656 'K': [[39, 38.96370, 0.932581], [40, 39.96399867, 0.000117], 657 [41, 40.96182597, 0.067302]], 658 'Ca': [[40, 39.9625912, 0.96941], [42, 41.9586183, 0.00647], 659 [43, 42.9587668, 0.00135], [44, 43.9554811, 0.02086], 660 [46, 45.9536927, 0.00004], [48, 47.952533, 0.00187]], 661 'Sc': [[45, 44.9559102, 1.0000]], 662 'Ti': [[46, 45.9526295, 0.0825], [47, 46.9517637, 0.0744], 663 [48, 47.9479470, 0.7372], [49, 48.9478707, 0.0541], 664 [50, 49.9447920, 0.0518]], 665 'V': [[50, 49.9471627, 0.00250], [51, 50.9439635, 0.99750]], 666 'Cr': [[50, 49.9460495, 0.04345], [52, 51.9405115, 0.83789], 667 [53, 52.9406534, 0.09501], [54, 53.9388846, 0.02365]], 668 'Mn': [[55, 54.9380493, 1.0000]], 669 'Fe': [[54, 53.9396147, 0.05845], [56, 55.9349418, 0.91754], 670 [57, 56.9353983, 0.02119], [58, 57.9332801, 0.00282]], 671 'Co': [[59, 58.9331999, 1.0000]], 672 'Ni': [[58, 57.9353477, 0.680769], [60, 59.9307903, 0.262231], 673 [61, 60.9310601, 0.011399], [62, 61.9283484, 0.036345], 674 [64, 63.9279692, 0.009256]], 675 'Cu': [[63, 62.9296007, 0.6915], [65, 64.9277938, 0.3085]], 676 'Zn': [[64, 63.9291461, 0.48268], [66, 65.9260364, 0.27975], 677 [67, 66.9271305, 0.04102], [68, 67.9248473, 0.19024], 678 [70, 69.925325, 0.00631]], 679 'Ga': [[69, 68.925581, 0.60108], [71, 70.9247073, 0.39892]], 680 'Ge': [[70, 69.9242500, 0.2038], [72, 71.9220763, 0.2731], 681 [73, 72.9234595, 0.0776], [74, 73.9211784, 0.3672], 682 [76, 75.921402, 0.0783]], 683 'As': [[75, 74.9215966, 1.0000]], 684 'Se': [[74, 73.9224767, 0.0089], [76, 75.9192143, 0.0937], 685 [77, 76.9199148, 0.0763], [78, 77.9173097, 0.2377], 686 [80, 79.9165221, 0.4961], [82, 81.9167003, 0.0873]], 687 'Br': [[79, 78.9183379, 0.5069], [81, 80.916291, 0.4931]], 688 'Kr': [[78, 77.920388, 0.00355], [80, 79.916379, 0.02286], 689 [82, 81.9134850, 0.11593], [83, 82.914137, 0.11500], 690 [84, 83.911508, 0.56987], [86, 85.910615, 0.17279]], 691 'Rb': [[85, 84.9117924, 0.7217], [87, 86.9091858, 0.2783]], 692 'Sr': [[84, 83.913426, 0.0056], [86, 85.9092647, 0.0986], 693 [87, 86.9088816, 0.0700], [88, 87.9056167, 0.8258]], 694 'Y': [[89, 88.9058485, 1.0000]], 695 'Zr': [[90, 89.9047022, 0.5145], [91, 90.9056434, 0.1122], 696 [92, 91.9050386, 0.1715], [94, 93.9063144, 0.1738], 697 [96, 95.908275, 0.0280]], 698 'Nb': [[93, 92.9063762, 1.0000]], 699 'Mo': [[92, 91.906810, 0.1477], [94, 93.9050867, 0.0923], 700 [95, 94.9058406, 0.1590], [96, 95.9046780, 0.1668], 701 [97, 96.9060201, 0.0956], [98, 97.905406, 0.2419], 702 [100, 99.907476, 0.0967]], 703 'Tc': None, 704 'Ru': [[96, 95.907604, 0.0554], [98, 97.905287, 0.0187], 705 [99, 98.9059385, 0.1276], [100, 99.9042189, 0.1260], 706 [101, 100.9055815, 0.1706], [102, 101.9043488, 0.3155], 707 [104, 103.905430, 0.1862]], 708 'Rh': [[103, 102.905504, 1.0000]], 709 'Pd': [[102, 101.905607, 0.0102], [104, 103.904034, 0.1114], 710 [105, 104.905083, 0.2233], [106, 105.903484, 0.2733], 711 [108, 107.903895, 0.2646], [110, 109.905153, 0.1172]], 712 'Ag': [[107, 106.905093, 0.51839], [109, 108.904756, 0.48161]], 713 'Cd': [[106, 105.906458, 0.0125], [108, 107.904183, 0.0089], 714 [110, 109.903006, 0.1249], [111, 110.904182, 0.1280], 715 [112, 111.9027577, 0.2413], [113, 112.9044014, 0.1222], 716 [114, 113.9033586, 0.2873], [116, 115.904756, 0.0749]], 717 'In': [[113, 112.904062, 0.0429], [115, 114.903879, 0.9571]], 718 'Sn': [[112, 111.904822, 0.0097], [114, 113.902783, 0.0066], 719 [115, 114.903347, 0.0034], [116, 115.901745, 0.1454], 720 [117, 116.902955, 0.0768], [118, 117.901608, 0.2422], 721 [119, 118.903311, 0.0859], [120, 119.9021985, 0.3258], 722 [122, 121.9034411, 0.0463], [124, 123.9052745, 0.0579]], 723 'Sb': [[121, 120.9038222, 0.5721], [123, 122.9042160, 0.4279]], 724 'Te': [[120, 119.904026, 0.0009], [122, 121.9030558, 0.0255], 725 [123, 122.9042711, 0.0089], [124, 123.9028188, 0.0474], 726 [125, 124.9044241, 0.0707], [126, 125.9033049, 0.1884], 727 [128, 127.9044615, 0.3174], [130, 129.9062229, 0.3408]], 728 'I': [[127, 126.904468, 1.0000]], 729 'Xe': [[124, 123.9058954, 0.000952], [126, 125.904268, 0.000890], 730 [128, 127.9035305, 0.019102], [129, 128.9047799, 0.264006], 731 [130, 129.9035089, 0.040710], [131, 130.9050828, 0.212324], 732 [132, 131.9041546, 0.269086], [134, 133.9053945, 0.104357], 733 [136, 135.907220, 0.088573]], 734 'Cs': [[133, 132.905447, 1.0000]], 735 'Ba': [[130, 129.906311, 0.00106], [132, 131.905056, 0.00101], 736 [134, 133.904504, 0.02417], [135, 134.905684, 0.06592], 737 [136, 135.904571, 0.07854], [137, 136.905822, 0.11232], 738 [138, 137.905242, 0.71698]], 739 'La': [[138, 137.907108, 0.00090], [139, 138.906349, 0.99910]], 740 'Ce': [[136, 135.907140, 0.00185], [138, 137.905986, 0.00251], 741 [140, 139.905435, 0.88450], [142, 141.909241, 0.11114]], 742 'Pr': [[141, 140.907648, 1.0000]], 743 'Nd': [[142, 141.907719, 0.272], [143, 142.909810, 0.122], 744 [144, 143.910083, 0.238], [145, 144.912569, 0.083], 745 [146, 145.913113, 0.172], [148, 147.916889, 0.057], 746 [150, 149.920887, 0.056]], 747 'Pm': None, 748 'Sm': [[144, 143.911996, 0.0307], [147, 146.914894, 0.1499], 749 [148, 147.914818, 0.1124], [149, 148.917180, 0.1382], 750 [150, 149.917272, 0.0738], [152, 151.919729, 0.2675], 751 [154, 153.922206, 0.2275]], 752 'Eu': [[151, 150.919846, 0.4781], [153, 152.921227, 0.5219]], 753 'Gd': [[152, 151.919789, 0.0020], [154, 153.920862, 0.0218], 754 [155, 154.922619, 0.1480], [156, 155.922120, 0.2047], 755 [157, 156.923957, 0.1565], [158, 157.924101, 0.2484], 756 [160, 159.927051, 0.2186]], 757 'Tb': [[159, 158.925343, 1.0000]], 758 'Dy': [[156, 155.924278, 0.00056], [158, 157.924405, 0.00095], 759 [160, 159.925194, 0.02329], [161, 160.926930, 0.18889], 760 [162, 161.926795, 0.25475], [163, 162.928728, 0.24896], 761 [164, 163.929171, 0.28260]], 762 'Ho': [[165, 164.930319, 1.0000]], 763 'Er': [[162, 161.928775, 0.00139], [164, 163.929197, 0.01601], 764 [166, 165.930290, 0.33503], [167, 166.932046, 0.22869], 765 [168, 167.932368, 0.26978], [170, 169.935461, 0.14910]], 766 'Tm': [[169, 168.934211, 1.0000]], 767 'Yb': [[168, 167.933895, 0.0013], [170, 169.934759, 0.0304], 768 [171, 170.936323, 0.1428], [172, 171.936378, 0.2183], 769 [173, 172.938207, 0.1613], [174, 173.938858, 0.3183], 770 [176, 175.942569, 0.1276]], 771 'Lu': [[175, 174.9407682, 0.9741], [176, 175.9426827, 0.0259]], 772 'Hf': [[174, 173.940042, 0.0016], [176, 175.941403, 0.0526], 773 [177, 176.9432204, 0.1860], [178, 177.9436981, 0.2728], 774 [179, 178.9458154, 0.1362], [180, 179.9465488, 0.3508]], 775 'Ta': [[180, 179.947466, 0.00012], [181, 180.947996, 0.99988]], 776 'W': [[180, 179.946706, 0.0012], [182, 181.948205, 0.2650], 777 [183, 182.9502242, 0.1431], [184, 183.9509323, 0.3064], 778 [186, 185.95436, 0.2843]], 779 'Re': [[185, 184.952955, 0.3740], [187, 186.9557505, 0.6260]], 780 'Os': [[184, 183.952491, 0.0002], [186, 185.953838, 0.0159], 781 [187, 186.9557476, 0.0196], [188, 187.9558357, 0.1324], 782 [189, 188.958145, 0.1615], [190, 189.958445, 0.2626], 783 [192, 191.961479, 0.4078]], 784 'Ir': [[191, 190.960591, 0.373], [193, 192.962923, 0.627]], 785 'Pt': [[190, 189.959930, 0.00014], [192, 191.961035, 0.00782], 786 [194, 193.962663, 0.32967], [195, 194.964774, 0.33832], 787 [196, 195.964934, 0.25242], [198, 197.967875, 0.07163]], 788 'Au': [[197, 196.966551, 1.0000]], 789 'Hg': [[196, 195.965814, 0.0015], [198, 197.966752, 0.0997], 790 [199, 198.968262, 0.1687], [200, 199.968309, 0.2310], 791 [201, 200.970285, 0.1318], [202, 201.970625, 0.2986], 792 [204, 203.973475, 0.0687]], 793 'Tl': [[203, 202.972329, 0.2952], [205, 204.974412, 0.7048]], 794 'Pb': [[204, 203.973028, 0.014], [206, 205.974449, 0.241], 795 [207, 206.975880, 0.221], [208, 207.976636, 0.524]], 796 'Bi': [[209, 208.980384, 1.0000]], 797 'Po': None, 798 'At': None, 799 'Rn': None, 800 'Fr': None, 801 'Ra': None, 802 'Ac': None, 803 'Th': [[232, 232.0380495, 1.0000]], 804 'Pa': [[231, 231.03588, 1.0000]], 805 'U': [[234, 234.0409447, 0.000054], [235, 235.0439222, 0.007204], 806 [238, 238.0507835, 0.992742]] 807} 808