module Chem::PeriodicTable
Overview
NOTE Standard atom weights (in Da) are taken from Meija, J., et al., Pure Appl. Chem., 2016, 88 (3), pp 265-291, doi:10.1515/pac-2015-0305
NOTE Covalent radii (in Å) are taken from Cordero, B., et al., Dalton Trans., 2008, 21, pp 2832-2838, doi:10.1039/b801115j. Missing values are set to 1.5 Å
NOTE vdW radii (in Å) are taken from Alvarez, S., Dalton Trans., 2013, 42, pp 8617-8636, doi:10.1039/c3dt50599e. Missing values are set to covalent radius + 0.9 Å
Extended Modules
Defined in:
chem/core/periodic_table.crchem/core/periodic_table/elements.cr
chem/core/periodic_table/macros.cr
Constant Summary
-
Ac =
Element.new(covalent_radius: 2.15, mass: 227, vdw_radius: 2.8, atomic_number: 89, name: "Actinium", symbol: "Ac")
-
Ag =
Element.new(covalent_radius: 1.45, mass: 107.8682, vdw_radius: 2.53, atomic_number: 47, name: "Silver", symbol: "Ag")
-
Al =
Element.new(covalent_radius: 1.21, mass: 26.9815, vdw_radius: 2.25, atomic_number: 13, name: "Aluminum", symbol: "Al")
-
Am =
Element.new(covalent_radius: 1.80, mass: 243, vdw_radius: 2.83, atomic_number: 95, name: "Americium", symbol: "Am")
-
Ar =
Element.new(covalent_radius: 1.06, mass: 39.948, vdw_radius: 1.83, atomic_number: 18, name: "Argon", symbol: "Ar")
-
As =
Element.new(covalent_radius: 1.19, mass: 74.9216, vdw_radius: 1.88, atomic_number: 33, name: "Arsenic", symbol: "As")
-
At =
Element.new(covalent_radius: 1.5, mass: 210, atomic_number: 85, name: "Astatine", symbol: "At")
-
Au =
Element.new(covalent_radius: 1.36, mass: 196.9666, vdw_radius: 2.32, atomic_number: 79, name: "Gold", symbol: "Au")
-
B =
Element.new(covalent_radius: 0.84, mass: 10.811, vdw_radius: 1.91, atomic_number: 5, name: "Boron", symbol: "B")
-
Ba =
Element.new(covalent_radius: 2.15, mass: 137.327, vdw_radius: 3.03, atomic_number: 56, name: "Barium", symbol: "Ba")
-
Be =
Element.new(covalent_radius: 0.96, mass: 9.0122, vdw_radius: 1.98, atomic_number: 4, name: "Beryllium", symbol: "Be")
-
Bh =
Element.new(mass: 264, atomic_number: 107, name: "Bohrium", symbol: "Bh")
-
Bi =
Element.new(covalent_radius: 1.48, mass: 208.9804, vdw_radius: 2.54, atomic_number: 83, name: "Bismuth", symbol: "Bi")
-
Bk =
Element.new(mass: 247, vdw_radius: 3.4, atomic_number: 97, name: "Berkelium", symbol: "Bk")
-
Br =
Element.new(covalent_radius: 1.20, mass: 79.904, valencies: [1], vdw_radius: 1.86, atomic_number: 35, name: "Bromine", symbol: "Br")
-
C =
Element.new(covalent_radius: 0.76, mass: 12.0107, valencies: [4], vdw_radius: 1.77, atomic_number: 6, name: "Carbon", symbol: "C")
-
Ca =
Element.new(covalent_radius: 1.76, mass: 40.078, ionic: true, valencies: [2], vdw_radius: 2.62, atomic_number: 20, name: "Calcium", symbol: "Ca")
-
Cd =
Element.new(covalent_radius: 1.44, mass: 112.411, vdw_radius: 2.49, atomic_number: 48, name: "Cadmium", symbol: "Cd")
-
Ce =
Element.new(covalent_radius: 2.04, mass: 140.116, vdw_radius: 2.88, atomic_number: 58, name: "Cerium", symbol: "Ce")
-
Cf =
Element.new(mass: 251, vdw_radius: 3.05, atomic_number: 98, name: "Californium", symbol: "Cf")
-
Cl =
Element.new(covalent_radius: 1.02, mass: 35.453, valencies: [1], vdw_radius: 1.82, atomic_number: 17, name: "Chlorine", symbol: "Cl")
-
Cm =
Element.new(covalent_radius: 1.69, mass: 247, vdw_radius: 3.05, atomic_number: 96, name: "Curium", symbol: "Cm")
-
Cn =
Element.new(mass: 285, atomic_number: 112, name: "Copernicium", symbol: "Cn")
-
Co =
Element.new(covalent_radius: 1.50, mass: 58.9331, vdw_radius: 2.4, atomic_number: 27, name: "Cobalt", symbol: "Co")
-
Cr =
Element.new(covalent_radius: 1.39, mass: 51.9961, vdw_radius: 2.45, atomic_number: 24, name: "Chromium", symbol: "Cr")
-
Cs =
Element.new(covalent_radius: 2.44, mass: 132.9055, vdw_radius: 3.48, atomic_number: 55, name: "Cesium", symbol: "Cs")
-
Cu =
Element.new(covalent_radius: 1.32, mass: 63.546, vdw_radius: 2.38, atomic_number: 29, name: "Copper", symbol: "Cu")
-
D =
Element.new(1, "Deuterium", "D", covalent_radius: 0.31, mass: 2.0141, valencies: [1], vdw_radius: 1.2)
-
Special elements that are used internally
-
Db =
Element.new(mass: 262, atomic_number: 105, name: "Dubnium", symbol: "Db")
-
Ds =
Element.new(mass: 281, atomic_number: 110, name: "Darmstadtium", symbol: "Ds")
-
Dy =
Element.new(covalent_radius: 1.92, mass: 162.5, vdw_radius: 2.87, atomic_number: 66, name: "Dysprosium", symbol: "Dy")
-
Er =
Element.new(covalent_radius: 1.89, mass: 167.259, vdw_radius: 2.83, atomic_number: 68, name: "Erbium", symbol: "Er")
-
Es =
Element.new(mass: 252, vdw_radius: 2.7, atomic_number: 99, name: "Einsteinium", symbol: "Es")
-
Eu =
Element.new(covalent_radius: 1.98, mass: 151.964, vdw_radius: 2.87, atomic_number: 63, name: "Europium", symbol: "Eu")
-
F =
Element.new(covalent_radius: 0.57, mass: 18.9984, valencies: [1], vdw_radius: 1.46, atomic_number: 9, name: "Fluorine", symbol: "F")
-
Fe =
Element.new(covalent_radius: 1.52, mass: 55.845, vdw_radius: 2.44, atomic_number: 26, name: "Iron", symbol: "Fe")
-
Fm =
Element.new(mass: 257, atomic_number: 100, name: "Fermium", symbol: "Fm")
-
Fr =
Element.new(covalent_radius: 2.6, mass: 223, atomic_number: 87, name: "Francium", symbol: "Fr")
-
Ga =
Element.new(covalent_radius: 1.22, mass: 69.723, vdw_radius: 2.32, atomic_number: 31, name: "Gallium", symbol: "Ga")
-
Gd =
Element.new(covalent_radius: 1.96, mass: 157.25, vdw_radius: 2.83, atomic_number: 64, name: "Gadolinium", symbol: "Gd")
-
Ge =
Element.new(covalent_radius: 1.20, mass: 72.64, vdw_radius: 2.29, atomic_number: 32, name: "Germanium", symbol: "Ge")
-
H =
Element.new(covalent_radius: 0.31, mass: 1.0079, valencies: [1], vdw_radius: 1.2, atomic_number: 1, name: "Hydrogen", symbol: "H")
-
He =
Element.new(covalent_radius: 0.2, mass: 4.0026, vdw_radius: 1.43, atomic_number: 2, name: "Helium", symbol: "He")
-
Hf =
Element.new(covalent_radius: 1.75, mass: 178.49, vdw_radius: 2.63, atomic_number: 72, name: "Hafnium", symbol: "Hf")
-
Hg =
Element.new(covalent_radius: 1.32, mass: 200.59, vdw_radius: 2.45, atomic_number: 80, name: "Mercury", symbol: "Hg")
-
Ho =
Element.new(covalent_radius: 1.92, mass: 164.9303, vdw_radius: 2.81, atomic_number: 67, name: "Holmium", symbol: "Ho")
-
Hs =
Element.new(mass: 277, atomic_number: 108, name: "Hassium", symbol: "Hs")
-
I =
Element.new(covalent_radius: 1.39, mass: 126.9045, valencies: [1], vdw_radius: 2.04, atomic_number: 53, name: "Iodine", symbol: "I")
-
In =
Element.new(covalent_radius: 1.42, mass: 114.818, vdw_radius: 2.43, atomic_number: 49, name: "Indium", symbol: "In")
-
Ir =
Element.new(covalent_radius: 1.41, mass: 192.217, vdw_radius: 2.41, atomic_number: 77, name: "Iridium", symbol: "Ir")
-
K =
Element.new(covalent_radius: 2.03, mass: 39.0983, ionic: true, valencies: [1], vdw_radius: 2.73, atomic_number: 19, name: "Potassium", symbol: "K")
-
Kr =
Element.new(covalent_radius: 1.16, mass: 83.798, vdw_radius: 2.25, atomic_number: 36, name: "Krypton", symbol: "Kr")
-
La =
Element.new(covalent_radius: 2.07, mass: 138.9055, vdw_radius: 2.98, atomic_number: 57, name: "Lanthanum", symbol: "La")
-
Li =
Element.new(covalent_radius: 1.28, mass: 6.941, vdw_radius: 2.12, atomic_number: 3, name: "Lithium", symbol: "Li")
-
Lr =
Element.new(mass: 262, atomic_number: 103, name: "Lawrencium", symbol: "Lr")
-
Lu =
Element.new(covalent_radius: 1.87, mass: 174.967, vdw_radius: 2.74, atomic_number: 71, name: "Lutetium", symbol: "Lu")
-
Md =
Element.new(mass: 258, atomic_number: 101, name: "Mendelevium", symbol: "Md")
-
Mg =
Element.new(covalent_radius: 1.41, mass: 24.305, ionic: true, valencies: [2], vdw_radius: 2.51, atomic_number: 12, name: "Magnesium", symbol: "Mg")
-
Mn =
Element.new(covalent_radius: 1.61, mass: 54.938, vdw_radius: 2.45, atomic_number: 25, name: "Manganese", symbol: "Mn")
-
Mo =
Element.new(covalent_radius: 1.54, mass: 95.94, vdw_radius: 2.45, atomic_number: 42, name: "Molybdenum", symbol: "Mo")
-
Mt =
Element.new(mass: 268, atomic_number: 109, name: "Meitnerium", symbol: "Mt")
-
N =
Element.new(covalent_radius: 0.71, mass: 14.0067, valencies: [3], vdw_radius: 1.66, atomic_number: 7, name: "Nitrogen", symbol: "N")
-
Na =
Element.new(covalent_radius: 1.66, mass: 22.9898, ionic: true, valencies: [1], vdw_radius: 2.5, atomic_number: 11, name: "Sodium", symbol: "Na")
-
Nb =
Element.new(covalent_radius: 1.64, mass: 92.9064, vdw_radius: 2.56, atomic_number: 41, name: "Niobium", symbol: "Nb")
-
Nd =
Element.new(covalent_radius: 2.01, mass: 144.242, vdw_radius: 2.95, atomic_number: 60, name: "Neodymium", symbol: "Nd")
-
Ne =
Element.new(covalent_radius: 0.5, mass: 20.1797, vdw_radius: 1.58, atomic_number: 10, name: "Neon", symbol: "Ne")
-
Ni =
Element.new(covalent_radius: 1.24, mass: 58.6934, vdw_radius: 2.4, atomic_number: 28, name: "Nickel", symbol: "Ni")
-
No =
Element.new(mass: 259, atomic_number: 102, name: "Nobelium", symbol: "No")
-
Np =
Element.new(covalent_radius: 1.90, mass: 237, vdw_radius: 2.82, atomic_number: 93, name: "Neptunium", symbol: "Np")
-
O =
Element.new(covalent_radius: 0.66, mass: 15.9994, valencies: [2], vdw_radius: 1.5, atomic_number: 8, name: "Oxygen", symbol: "O")
-
Os =
Element.new(covalent_radius: 1.44, mass: 190.23, vdw_radius: 2.48, atomic_number: 76, name: "Osmium", symbol: "Os")
-
P =
Element.new(covalent_radius: 1.07, mass: 30.9738, valencies: [3, 5], vdw_radius: 1.9, atomic_number: 15, name: "Phosphorus", symbol: "P")
-
Pa =
Element.new(covalent_radius: 2.00, mass: 231.0359, vdw_radius: 2.88, atomic_number: 91, name: "Proactinium", symbol: "Pa")
-
Pb =
Element.new(covalent_radius: 1.46, mass: 207.2, vdw_radius: 2.6, atomic_number: 82, name: "Lead", symbol: "Pb")
-
Pd =
Element.new(covalent_radius: 1.39, mass: 106.42, vdw_radius: 2.15, atomic_number: 46, name: "Palladium", symbol: "Pd")
-
Pm =
Element.new(covalent_radius: 1.9, mass: 145, atomic_number: 61, name: "Promethium", symbol: "Pm")
-
Po =
Element.new(covalent_radius: 1.40, mass: 209, atomic_number: 84, name: "Polonium", symbol: "Po")
-
Pr =
Element.new(covalent_radius: 2.03, mass: 140.9077, vdw_radius: 2.92, atomic_number: 59, name: "Praseodymium", symbol: "Pr")
-
Pt =
Element.new(covalent_radius: 1.36, mass: 195.084, vdw_radius: 2.29, atomic_number: 78, name: "Platinum", symbol: "Pt")
-
Pu =
Element.new(covalent_radius: 1.87, mass: 244, vdw_radius: 2.81, atomic_number: 94, name: "Plutonium", symbol: "Pu")
-
Ra =
Element.new(covalent_radius: 2.21, mass: 226, atomic_number: 88, name: "Radium", symbol: "Ra")
-
Rb =
Element.new(covalent_radius: 2.20, mass: 85.4678, vdw_radius: 3.21, atomic_number: 37, name: "Rubidium", symbol: "Rb")
-
Re =
Element.new(covalent_radius: 1.51, mass: 186.207, vdw_radius: 2.49, atomic_number: 75, name: "Rhenium", symbol: "Re")
-
Rf =
Element.new(mass: 261, atomic_number: 104, name: "Rutherfordium", symbol: "Rf")
-
Rg =
Element.new(mass: 272, atomic_number: 111, name: "Roentgenium", symbol: "Rg")
-
Rh =
Element.new(covalent_radius: 1.42, mass: 102.9055, vdw_radius: 2.44, atomic_number: 45, name: "Rhodium", symbol: "Rh")
-
Rn =
Element.new(covalent_radius: 1.5, mass: 222, atomic_number: 86, name: "Radon", symbol: "Rn")
-
Ru =
Element.new(covalent_radius: 1.46, mass: 101.07, vdw_radius: 2.46, atomic_number: 44, name: "Ruthenium", symbol: "Ru")
-
S =
Element.new(covalent_radius: 1.05, mass: 32.065, valencies: [2, 6], vdw_radius: 1.89, atomic_number: 16, name: "Sulfur", symbol: "S")
-
Sb =
Element.new(covalent_radius: 1.39, mass: 121.76, vdw_radius: 2.47, atomic_number: 51, name: "Antimony", symbol: "Sb")
-
Sc =
Element.new(covalent_radius: 1.70, mass: 44.9559, vdw_radius: 2.58, atomic_number: 21, name: "Scandium", symbol: "Sc")
-
Se =
Element.new(covalent_radius: 1.20, mass: 78.96, vdw_radius: 1.82, atomic_number: 34, name: "Selenium", symbol: "Se")
-
Sg =
Element.new(mass: 266, atomic_number: 106, name: "Seaborgium", symbol: "Sg")
-
Si =
Element.new(covalent_radius: 1.11, mass: 28.0855, vdw_radius: 2.19, atomic_number: 14, name: "Silicon", symbol: "Si")
-
Sm =
Element.new(covalent_radius: 1.98, mass: 150.36, vdw_radius: 2.9, atomic_number: 62, name: "Samarium", symbol: "Sm")
-
Sn =
Element.new(covalent_radius: 1.39, mass: 118.71, vdw_radius: 2.42, atomic_number: 50, name: "Tin", symbol: "Sn")
-
Sr =
Element.new(covalent_radius: 1.95, mass: 87.62, vdw_radius: 2.84, atomic_number: 38, name: "Strontium", symbol: "Sr")
-
Ta =
Element.new(covalent_radius: 1.70, mass: 180.9479, vdw_radius: 2.53, atomic_number: 73, name: "Tantalum", symbol: "Ta")
-
Tb =
Element.new(covalent_radius: 1.94, mass: 158.9254, vdw_radius: 2.79, atomic_number: 65, name: "Terbium", symbol: "Tb")
-
Tc =
Element.new(covalent_radius: 1.47, mass: 98, vdw_radius: 2.44, atomic_number: 43, name: "Technetium", symbol: "Tc")
-
Te =
Element.new(covalent_radius: 1.38, mass: 127.6, vdw_radius: 1.99, atomic_number: 52, name: "Tellurium", symbol: "Te")
-
Th =
Element.new(covalent_radius: 2.06, mass: 232.0381, vdw_radius: 2.93, atomic_number: 90, name: "Thorium", symbol: "Th")
-
Ti =
Element.new(covalent_radius: 1.60, mass: 47.867, vdw_radius: 2.46, atomic_number: 22, name: "Titanium", symbol: "Ti")
-
Tl =
Element.new(covalent_radius: 1.45, mass: 204.3833, vdw_radius: 2.47, atomic_number: 81, name: "Thallium", symbol: "Tl")
-
Tm =
Element.new(covalent_radius: 1.90, mass: 168.9342, vdw_radius: 2.79, atomic_number: 69, name: "Thulium", symbol: "Tm")
-
U =
Element.new(covalent_radius: 1.96, mass: 238.0289, vdw_radius: 2.71, atomic_number: 92, name: "Uranium", symbol: "U")
-
Uuh =
Element.new(mass: 292, atomic_number: 116, name: "Ununhexium", symbol: "Uuh")
-
Uuo =
Element.new(mass: 294, atomic_number: 118, name: "Ununoctium", symbol: "Uuo")
-
Uup =
Element.new(mass: 288, atomic_number: 115, name: "Ununpentium", symbol: "Uup")
-
Uuq =
Element.new(mass: 289, atomic_number: 114, name: "Ununquadium", symbol: "Uuq")
-
Uus =
Element.new(mass: 291, atomic_number: 117, name: "Ununseptium", symbol: "Uus")
-
Uut =
Element.new(mass: 284, atomic_number: 113, name: "Ununtrium", symbol: "Uut")
-
V =
Element.new(covalent_radius: 1.53, mass: 50.9415, vdw_radius: 2.42, atomic_number: 23, name: "Vanadium", symbol: "V")
-
W =
Element.new(covalent_radius: 1.62, mass: 183.84, vdw_radius: 2.57, atomic_number: 74, name: "Tungsten", symbol: "W")
-
X =
Element.new(0, "Unknown", "X", mass: 0)
-
Xe =
Element.new(covalent_radius: 1.40, mass: 131.293, vdw_radius: 2.06, atomic_number: 54, name: "Xenon", symbol: "Xe")
-
Y =
Element.new(covalent_radius: 1.90, mass: 88.9059, vdw_radius: 2.75, atomic_number: 39, name: "Yttrium", symbol: "Y")
-
Yb =
Element.new(covalent_radius: 1.87, mass: 173.04, vdw_radius: 2.8, atomic_number: 70, name: "Ytterbium", symbol: "Yb")
-
Zn =
Element.new(covalent_radius: 1.22, mass: 65.409, vdw_radius: 2.39, atomic_number: 30, name: "Zinc", symbol: "Zn")
-
Zr =
Element.new(covalent_radius: 1.75, mass: 91.224, vdw_radius: 2.52, atomic_number: 40, name: "Zirconium", symbol: "Zr")
Instance Method Summary
- #[](*args, **options) : Element
- #[]?(number : Int32) : Element | Nil
- #[]?(symbol : String | Char) : Element | Nil
- #[]?(*, name : String) : Element | Nil
-
#[]?(*, atom_name : String) : Element | Nil
TODO rename to guess_element? TODO test different atom names
-
#covalent_cutoff(ele : Element, other : Element) : Float64
NOTE The additional term (0.3 Å) is taken from the covalent radii reference, which states that about 96% of the surveyed bonds are within three standard deviations of the sum of the radii, where the found average standard deviation is about 0.1 Å.
- #covalent_cutoff(atom : Atom, other : Atom) : Float64
- #elements : Tuple
Macro Summary
Instance Method Detail
TODO rename to guess_element?
TODO test different atom names
NOTE The additional term (0.3 Å) is taken from the covalent radii reference, which states that about 96% of the surveyed bonds are within three standard deviations of the sum of the radii, where the found average standard deviation is about 0.1 Å.