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.cr
chem/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

Macro Summary

Instance Method Detail

def [](*args, **options) : Element #

[View source]
def []?(number : Int32) : Element | Nil #

[View source]
def []?(symbol : String | Char) : Element | Nil #

[View source]
def []?(*, name : String) : Element | Nil #

[View source]
def []?(*, atom_name : String) : Element | Nil #

TODO rename to guess_element?

TODO test different atom names


[View source]
def 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 Å.


[View source]
def covalent_cutoff(atom : Atom, other : Atom) : Float64 #

[View source]
def elements : Tuple #

[View source]

Macro Detail

macro element(symbol, name, **options) #

[View source]