1 /* 2 * Copyright (C) 2006-2012 Egon Willighagen <egonw@users.sf.net> 3 * 2014 Mark B Vine (orcid:0000-0002-7794-0426) 4 * 5 * Contact: cdk-devel@lists.sourceforge.net 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public License 9 * as published by the Free Software Foundation; either version 2.1 10 * of the License, or (at your option) any later version. 11 * All we ask is that proper credit is given for our work, which includes 12 * - but is not limited to - adding the above copyright notice to the beginning 13 * of your source code files, and to any copyright notice that you may distribute 14 * with programs based on this work. 15 * 16 * This program is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * along with this program; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 24 */ 25 package org.openscience.cdk.config; 26 27 import org.openscience.cdk.interfaces.IAtom; 28 import org.openscience.cdk.interfaces.IElement; 29 30 import java.util.HashMap; 31 import java.util.Locale; 32 import java.util.Map; 33 34 /** 35 * Enumeration of chemical elements. Data is taken from the Blue Obelisk Data 36 * Repository, version 3. This enumeration is auto-generated with utilities 37 * found in the 'cdk-build-utils' project. 38 * 39 * @author egonw 40 * @author john may 41 * @cdk.module core 42 * @cdk.githash 43 */ 44 public enum Elements { 45 Unknown(0, "", 0, 0, null, 0.00, null), 46 Hydrogen(1, "H", 1, 1, 0.37, 1.20, 2.20), 47 Helium(2, "He", 1, 18, 0.32, 1.40, null), 48 Lithium(3, "Li", 2, 1, 1.34, 2.20, 0.98), 49 Beryllium(4, "Be", 2, 2, 0.90, 1.90, 1.57), 50 Boron(5, "B", 2, 13, 0.82, 1.80, 2.04), 51 Carbon(6, "C", 2, 14, 0.77, 1.70, 2.55), 52 Nitrogen(7, "N", 2, 15, 0.75, 1.60, 3.04), 53 Oxygen(8, "O", 2, 16, 0.73, 1.55, 3.44), 54 Fluorine(9, "F", 2, 17, 0.71, 1.50, 3.98), 55 Neon(10, "Ne", 2, 18, 0.69, 1.54, null), 56 Sodium(11, "Na", 3, 1, 1.54, 2.40, 0.93), 57 Magnesium(12, "Mg", 3, 2, 1.30, 2.20, 1.31), 58 Aluminium(13, "Al", 3, 13, 1.18, 2.10, 1.61), 59 Silicon(14, "Si", 3, 14, 1.11, 2.10, 1.90), 60 Phosphorus(15, "P", 3, 15, 1.06, 1.95, 2.19), 61 Sulfur(16, "S", 3, 16, 1.02, 1.80, 2.58), 62 Chlorine(17, "Cl", 3, 17, 0.99, 1.80, 3.16), 63 Argon(18, "Ar", 3, 18, 0.97, 1.88, null), 64 Potassium(19, "K", 4, 1, 1.96, 2.80, 0.82), 65 Calcium(20, "Ca", 4, 2, 1.74, 2.40, 1.00), 66 Scandium(21, "Sc", 4, 3, 1.44, 2.30, 1.36), 67 Titanium(22, "Ti", 4, 4, 1.36, 2.15, 1.54), 68 Vanadium(23, "V", 4, 5, 1.25, 2.05, 1.63), 69 Chromium(24, "Cr", 4, 6, 1.27, 2.05, 1.66), 70 Manganese(25, "Mn", 4, 7, 1.39, 2.05, 1.55), 71 Iron(26, "Fe", 4, 8, 1.25, 2.05, 1.83), 72 Cobalt(27, "Co", 4, 9, 1.26, null, 1.88), 73 Nickel(28, "Ni", 4, 10, 1.21, null, 1.91), 74 Copper(29, "Cu", 4, 11, 1.38, null, 1.90), 75 Zinc(30, "Zn", 4, 12, 1.31, 2.10, 1.65), 76 Gallium(31, "Ga", 4, 13, 1.26, 2.10, 1.81), 77 Germanium(32, "Ge", 4, 14, 1.22, 2.10, 2.01), 78 Arsenic(33, "As", 4, 15, 1.19, 2.05, 2.18), 79 Selenium(34, "Se", 4, 16, 1.16, 1.90, 2.55), 80 Bromine(35, "Br", 4, 17, 1.14, 1.90, 2.96), 81 Krypton(36, "Kr", 4, 18, 1.10, 2.02, 3.00), 82 Rubidium(37, "Rb", 5, 1, 2.11, 2.90, 0.82), 83 Strontium(38, "Sr", 5, 2, 1.92, 2.55, 0.95), 84 Yttrium(39, "Y", 5, 3, 1.62, 2.40, 1.22), 85 Zirconium(40, "Zr", 5, 4, 1.48, 2.30, 1.33), 86 Niobium(41, "Nb", 5, 5, 1.37, 2.15, 1.60), 87 Molybdenum(42, "Mo", 5, 6, 1.45, 2.10, 2.16), 88 Technetium(43, "Tc", 5, 7, 1.56, 2.05, 1.90), 89 Ruthenium(44, "Ru", 5, 8, 1.26, 2.05, 2.20), 90 Rhodium(45, "Rh", 5, 9, 1.35, null, 2.28), 91 Palladium(46, "Pd", 5, 10, 1.31, 2.05, 2.20), 92 Silver(47, "Ag", 5, 11, 1.53, 2.10, 1.93), 93 Cadmium(48, "Cd", 5, 12, 1.48, 2.20, 1.69), 94 Indium(49, "In", 5, 13, 1.44, 2.20, 1.78), 95 Tin(50, "Sn", 5, 14, 1.41, 2.25, 1.96), 96 Antimony(51, "Sb", 5, 15, 1.38, 2.20, 2.05), 97 Tellurium(52, "Te", 5, 16, 1.35, 2.10, 2.10), 98 Iodine(53, "I", 5, 17, 1.33, 2.10, 2.66), 99 Xenon(54, "Xe", 5, 18, 1.30, 2.16, 2.60), 100 Caesium(55, "Cs", 6, 1, 2.25, 3.00, 0.79), 101 Barium(56, "Ba", 6, 2, 1.98, 2.70, 0.89), 102 Lanthanum(57, "La", 6, 3, 1.69, 2.50, 1.10), 103 Cerium(58, "Ce", 6, 0, null, 2.48, 1.12), 104 Praseodymium(59, "Pr", 6, 0, null, 2.47, 1.13), 105 Neodymium(60, "Nd", 6, 0, null, 2.45, 1.14), 106 Promethium(61, "Pm", 6, 0, null, 2.43, null), 107 Samarium(62, "Sm", 6, 0, null, 2.42, 1.17), 108 Europium(63, "Eu", 6, 0, 2.40, 2.40, null), 109 Gadolinium(64, "Gd", 6, 0, null, 2.38, 1.20), 110 Terbium(65, "Tb", 6, 0, null, 2.37, null), 111 Dysprosium(66, "Dy", 6, 0, null, 2.35, 1.22), 112 Holmium(67, "Ho", 6, 0, null, 2.33, 1.23), 113 Erbium(68, "Er", 6, 0, null, 2.32, 1.24), 114 Thulium(69, "Tm", 6, 0, null, 2.30, 1.25), 115 Ytterbium(70, "Yb", 6, 0, null, 2.28, null), 116 Lutetium(71, "Lu", 6, 0, 1.60, 2.27, 1.27), 117 Hafnium(72, "Hf", 6, 4, 1.50, 2.25, 1.30), 118 Tantalum(73, "Ta", 6, 5, 1.38, 2.20, 1.50), 119 Tungsten(74, "W", 6, 6, 1.46, 2.10, 2.36), 120 Rhenium(75, "Re", 6, 7, 1.59, 2.05, 1.90), 121 Osmium(76, "Os", 6, 8, 1.28, null, 2.20), 122 Iridium(77, "Ir", 6, 9, 1.37, null, 2.20), 123 Platinum(78, "Pt", 6, 10, 1.28, 2.05, 2.28), 124 Gold(79, "Au", 6, 11, 1.44, 2.10, 2.54), 125 Mercury(80, "Hg", 6, 12, 1.49, 2.05, 2.00), 126 Thallium(81, "Tl", 6, 13, 1.48, 2.20, 1.62), 127 Lead(82, "Pb", 6, 14, 1.47, 2.30, 2.33), 128 Bismuth(83, "Bi", 6, 15, 1.46, 2.30, 2.02), 129 Polonium(84, "Po", 6, 16, 1.46, null, 2.00), 130 Astatine(85, "At", 6, 17, null, null, 2.20), 131 Radon(86, "Rn", 6, 18, 1.45, null, null), 132 Francium(87, "Fr", 7, 1, null, null, 0.70), 133 Radium(88, "Ra", 7, 2, null, null, 0.90), 134 Actinium(89, "Ac", 7, 3, null, null, 1.10), 135 Thorium(90, "Th", 7, 0, null, 2.40, 1.30), 136 Protactinium(91, "Pa", 7, 0, null, null, 1.50), 137 Uranium(92, "U", 7, 0, null, 2.30, 1.38), 138 Neptunium(93, "Np", 7, 0, null, null, 1.36), 139 Plutonium(94, "Pu", 7, 0, null, null, 1.28), 140 Americium(95, "Am", 7, 0, null, null, 1.30), 141 Curium(96, "Cm", 7, 0, null, null, 1.30), 142 Berkelium(97, "Bk", 7, 0, null, null, 1.30), 143 Californium(98, "Cf", 7, 0, null, null, 1.30), 144 Einsteinium(99, "Es", 7, 0, null, null, 1.30), 145 Fermium(100, "Fm", 7, 0, null, null, 1.30), 146 Mendelevium(101, "Md", 7, 0, null, null, 1.30), 147 Nobelium(102, "No", 7, 0, null, null, 1.30), 148 Lawrencium(103, "Lr", 7, 0, null, null, null), 149 Rutherfordium(104, "Rf", 7, 4, null, null, null), 150 Dubnium(105, "Db", 7, 5, null, null, null), 151 Seaborgium(106, "Sg", 7, 6, null, null, null), 152 Bohrium(107, "Bh", 7, 7, null, null, null), 153 Hassium(108, "Hs", 7, 8, null, null, null), 154 Meitnerium(109, "Mt", 7, 9, null, null, null), 155 Darmstadtium(110, "Ds", 7, 10, null, null, null), 156 Roentgenium(111, "Rg", 7, 11, null, null, null), 157 Copernicium(112, "Cn", 7, 12, null, null, null), 158 @Deprecated 159 Ununtrium(113, "Uut", 7, 13, null, null, null), 160 Nihonium(113, "Nh", 7, 13, null, null, null), 161 Flerovium(114, "Fl", 7, 14, null, null, null), 162 @Deprecated 163 Ununpentium(115, "Uup", 7, 15, null, null, null), 164 Moscovium(115, "Mc", 7, 15, null, null, null), 165 Livermorium(116, "Lv", 7, 16, null, null, null), 166 @Deprecated 167 Ununseptium(117, "Uus", 7, 17, null, null, null), 168 Tennessine(117, "Ts", 7, 17, null, null, null), 169 @Deprecated 170 Ununoctium(118, "Uuo", 7, 18, null, null, null), 171 Oganesson(118, "Og", 7, 18, null, null, null); 172 173 /** 174 * Atomic number, periodic table period and group. 175 */ 176 private final int number, period, group; 177 178 /** 179 * The symbol of the element. 180 */ 181 private final String symbol; 182 183 /** 184 * Covalent radius (<i>r<sub>cov</sub></i>), van der Waals radius 185 * (<i>r<sub>w</sub></i>) and Pauling electronegativity. 186 */ 187 private final Double rCov, rW, electronegativity; 188 189 /** 190 * An {@link IElement} instance of this element. 191 */ 192 private final IElement instance; 193 194 /** 195 * Lookup elements by atomic number. 196 */ 197 static final Elements[] NUMER_MAP = new Elements[119]; 198 199 /** 200 * Lookup elements by symbol / name. 201 */ 202 static final Map<String, Elements> SYMBOL_MAP = new HashMap<String, Elements>(400); 203 204 static { 205 // index elements 206 for (final Elements e : values()) { 207 NUMER_MAP[e.number] = e; e.symbol.toLowerCase(Locale.ENGLISH)208 SYMBOL_MAP.put(e.symbol.toLowerCase(Locale.ENGLISH), e); 209 SYMBOL_MAP.put(e.name().toLowerCase(Locale.ENGLISH), e); 210 } 211 212 // recently named elements 213 SYMBOL_MAP.put("uub", Copernicium); // 2009 214 SYMBOL_MAP.put("ununbium", Copernicium); 215 216 SYMBOL_MAP.put("uuq", Flerovium); // 2012 217 SYMBOL_MAP.put("ununquadium", Flerovium); 218 219 SYMBOL_MAP.put("uuh", Livermorium); // 2012 220 SYMBOL_MAP.put("ununhexium", Livermorium); 221 222 // 2016 223 SYMBOL_MAP.put("uut", Nihonium); 224 SYMBOL_MAP.put("uup", Moscovium); 225 SYMBOL_MAP.put("uus", Tennessine); 226 SYMBOL_MAP.put("uuo", Oganesson); 227 228 // alternative spellings 229 SYMBOL_MAP.put("sulphur", Sulfur); 230 SYMBOL_MAP.put("cesium", Caesium); 231 SYMBOL_MAP.put("aluminum", Aluminium); 232 233 } 234 235 /** 236 * Internal constructor. 237 * 238 * @param number atomic number 239 * @param symbol symbol 240 * @param period periodic table period 241 * @param group periodic table group 242 * @param rCov covalent radius 243 * @param rW van der Waals radius 244 * @param electronegativity pauling electronegativity 245 */ Elements(int number, String symbol, int period, int group, Double rCov, Double rW, Double electronegativity)246 private Elements(int number, String symbol, int period, int group, Double rCov, Double rW, Double electronegativity) { 247 this.number = number; 248 this.period = period; 249 this.group = group; 250 this.symbol = symbol; 251 this.rCov = rCov; 252 this.rW = rW; 253 this.electronegativity = electronegativity; 254 this.instance = new NaturalElement(symbol, number); 255 } 256 257 /** 258 * The atomic number of the element. An {@link #Unknown} element 259 * has an atomic number of '0'. 260 * 261 * @return 0 - 116 262 */ number()263 public int number() { 264 return number; 265 } 266 267 /** 268 * The element symbol, C for carbon, N for nitrogen, Na for sodium, etc. An 269 * {@link #Unknown} element has no symbol. 270 * 271 * @return the symbol 272 */ symbol()273 public String symbol() { 274 return symbol; 275 } 276 277 /** 278 * Return the period in the periodic table this element belongs to. If 279 * the element is {@link #Unknown} it's period is 0. 280 * 281 * @return a period in the periodic table 282 */ period()283 public int period() { 284 return period; 285 } 286 287 /** 288 * Return the group in the periodic table this element belongs to. If 289 * the element does not belong to a group then it's group is '0'. 290 * 291 * @return a group in the periodic table 292 */ group()293 public int group() { 294 return group; 295 } 296 297 /** 298 * The covalent radius, <i>r<sub>cov</sub></i>, is a measure of the 299 * size of an atom that forms part of one covalent bond. 300 * 301 * @return covalent radius - null if not available 302 * @see <a href="http://en.wikipedia.org/wiki/Covalent_radius">Covalent radius</a> 303 */ covalentRadius()304 public Double covalentRadius() { 305 return rCov; 306 } 307 308 /** 309 * The van der Waals radius, <i>r<sub>w</sub></i>, of an atom is the 310 * radius of an imaginary hard sphere which can be used to model the 311 * atom. 312 * 313 * @return van der Waals radius - null if not available 314 * @see <a href="http://en.wikipedia.org/wiki/Van_der_Waals_radius">Van de Waals radius</a> 315 */ vdwRadius()316 public Double vdwRadius() { 317 return rW; 318 } 319 320 /** 321 * Electronegativity, symbol χ, is a chemical property that describes 322 * the tendency of an atom or a functional group to attract electrons 323 * (or electron density) towards itself. This method provides access to the 324 * Pauling electronegativity value for a chemical element. If no value is 325 * available 'null' is returned. 326 * 327 * @return Pauling electronegativity - null if not available 328 * @see <a href="http://en.wikipedia.org/wiki/Electronegativity#Pauling_electronegativity">Pauling Electronegativity</a> 329 */ electronegativity()330 public Double electronegativity() { 331 return electronegativity; 332 } 333 334 /** 335 * Access an {@link IElement} instance of the chemical element. 336 * 337 * @return an instance 338 */ toIElement()339 public IElement toIElement() { 340 return instance; 341 } 342 343 /** 344 * Obtain the element with the specified atomic number. If no element had 345 * the specified atomic number then {@link #Unknown} is returned. 346 * 347 * <blockquote><pre> 348 * // carbon 349 * Elements e = Elements.ofNumber(6); 350 * 351 * // oxygen 352 * Elements e = Elements.ofNumber(8); 353 * </pre></blockquote> 354 * 355 * @param number atomic number 356 * @return an element, or {@link #Unknown} 357 */ ofNumber(final int number)358 public static Elements ofNumber(final int number) { 359 if (number < 0 || number > 118) return Unknown; 360 return NUMER_MAP[number]; 361 } 362 363 /** 364 * Obtain the element with the specified symbol or name. If no element had 365 * the specified symbol or name then {@link #Unknown} is returned. The 366 * input is case-insensitive. 367 * 368 * <blockquote><pre> 369 * // carbon 370 * Elements e = Elements.ofString("c"); 371 * Elements e = Elements.ofString("C"); 372 * Elements e = Elements.ofString("Carbon"); 373 * Elements e = Elements.ofString("carbon"); 374 * </pre></blockquote> 375 * 376 * @param str input string 377 * @return an element, or {@link #Unknown} 378 */ ofString(final String str)379 public static Elements ofString(final String str) { 380 if (str == null) return Unknown; 381 Elements e = SYMBOL_MAP.get(str.toLowerCase(Locale.ENGLISH)); 382 if (e == null) return Unknown; 383 return e; 384 } 385 386 /** These instances are for backards compatability. */ 387 public final static IElement DUMMY = Unknown.toIElement(); 388 public final static IElement HYDROGEN = Hydrogen.toIElement(); 389 public final static IElement HELIUM = Helium.toIElement(); 390 public final static IElement LITHIUM = Lithium.toIElement(); 391 public final static IElement BERYLLIUM = Beryllium.toIElement(); 392 public final static IElement BORON = Boron.toIElement(); 393 public final static IElement CARBON = Carbon.toIElement(); 394 public final static IElement NITROGEN = Nitrogen.toIElement(); 395 public final static IElement OXYGEN = Oxygen.toIElement(); 396 public final static IElement FLUORINE = Fluorine.toIElement(); 397 public final static IElement NEON = Neon.toIElement(); 398 public final static IElement SODIUM = Sodium.toIElement(); 399 public final static IElement MAGNESIUM = Magnesium.toIElement(); 400 public final static IElement ALUMINIUM = Aluminium.toIElement(); 401 public final static IElement SILICON = Silicon.toIElement(); 402 public final static IElement PHOSPHORUS = Phosphorus.toIElement(); 403 public final static IElement SULFUR = Sulfur.toIElement(); 404 public final static IElement CHLORINE = Chlorine.toIElement(); 405 public final static IElement ARGON = Argon.toIElement(); 406 public final static IElement POTASSIUM = Potassium.toIElement(); 407 public final static IElement CALCIUM = Calcium.toIElement(); 408 public final static IElement SCANDIUM = Scandium.toIElement(); 409 public final static IElement TITANIUM = Titanium.toIElement(); 410 public final static IElement VANADIUM = Vanadium.toIElement(); 411 public final static IElement CHROMIUM = Chromium.toIElement(); 412 public final static IElement MANGANESE = Manganese.toIElement(); 413 public final static IElement IRON = Iron.toIElement(); 414 public final static IElement COBALT = Cobalt.toIElement(); 415 public final static IElement NICKEL = Nickel.toIElement(); 416 public final static IElement COPPER = Copper.toIElement(); 417 public final static IElement ZINC = Zinc.toIElement(); 418 public final static IElement GALLIUM = Gallium.toIElement(); 419 public final static IElement GERMANIUM = Germanium.toIElement(); 420 public final static IElement ARSENIC = Arsenic.toIElement(); 421 public final static IElement SELENIUM = Selenium.toIElement(); 422 public final static IElement BROMINE = Bromine.toIElement(); 423 public final static IElement KRYPTON = Krypton.toIElement(); 424 public final static IElement RUBIDIUM = Rubidium.toIElement(); 425 public final static IElement STRONTIUM = Strontium.toIElement(); 426 public final static IElement YTTRIUM = Yttrium.toIElement(); 427 public final static IElement ZIRCONIUM = Zirconium.toIElement(); 428 public final static IElement NIOBIUM = Niobium.toIElement(); 429 public final static IElement MOLYBDENUM = Molybdenum.toIElement(); 430 public final static IElement TECHNETIUM = Technetium.toIElement(); 431 public final static IElement RUTHENIUM = Ruthenium.toIElement(); 432 public final static IElement RHODIUM = Rhodium.toIElement(); 433 public final static IElement PALLADIUM = Palladium.toIElement(); 434 public final static IElement SILVER = Silver.toIElement(); 435 public final static IElement CADMIUM = Cadmium.toIElement(); 436 public final static IElement INDIUM = Indium.toIElement(); 437 public final static IElement TIN = Tin.toIElement(); 438 public final static IElement ANTIMONY = Antimony.toIElement(); 439 public final static IElement TELLURIUM = Tellurium.toIElement(); 440 public final static IElement IODINE = Iodine.toIElement(); 441 public final static IElement XENON = Xenon.toIElement(); 442 public final static IElement CAESIUM = Caesium.toIElement(); 443 public final static IElement BARIUM = Barium.toIElement(); 444 public final static IElement LANTHANUM = Lanthanum.toIElement(); 445 public final static IElement CERIUM = Cerium.toIElement(); 446 public final static IElement PRASEODYMIUM = Praseodymium.toIElement(); 447 public final static IElement NEODYMIUM = Neodymium.toIElement(); 448 public final static IElement PROMETHIUM = Promethium.toIElement(); 449 public final static IElement SAMARIUM = Samarium.toIElement(); 450 public final static IElement EUROPIUM = Europium.toIElement(); 451 public final static IElement GADOLINIUM = Gadolinium.toIElement(); 452 public final static IElement TERBIUM = Terbium.toIElement(); 453 public final static IElement DYSPROSIUM = Dysprosium.toIElement(); 454 public final static IElement HOLMIUM = Holmium.toIElement(); 455 public final static IElement ERBIUM = Erbium.toIElement(); 456 public final static IElement THULIUM = Thulium.toIElement(); 457 public final static IElement YTTERBIUM = Ytterbium.toIElement(); 458 public final static IElement LUTETIUM = Lutetium.toIElement(); 459 public final static IElement HAFNIUM = Hafnium.toIElement(); 460 public final static IElement TANTALUM = Tantalum.toIElement(); 461 public final static IElement TUNGSTEN = Tungsten.toIElement(); 462 public final static IElement RHENIUM = Rhenium.toIElement(); 463 public final static IElement OSMIUM = Osmium.toIElement(); 464 public final static IElement IRIDIUM = Iridium.toIElement(); 465 public final static IElement PLATINUM = Platinum.toIElement(); 466 public final static IElement GOLD = Gold.toIElement(); 467 public final static IElement MERCURY = Mercury.toIElement(); 468 public final static IElement THALLIUM = Thallium.toIElement(); 469 public final static IElement LEAD = Lead.toIElement(); 470 public final static IElement BISMUTH = Bismuth.toIElement(); 471 public final static IElement POLONIUM = Polonium.toIElement(); 472 public final static IElement ASTATINE = Astatine.toIElement(); 473 public final static IElement RADON = Radon.toIElement(); 474 public final static IElement FRANCIUM = Francium.toIElement(); 475 public final static IElement RADIUM = Radium.toIElement(); 476 public final static IElement ACTINIUM = Actinium.toIElement(); 477 public final static IElement THORIUM = Thorium.toIElement(); 478 public final static IElement PROTACTINIUM = Protactinium.toIElement(); 479 public final static IElement URANIUM = Uranium.toIElement(); 480 public final static IElement NEPTUNIUM = Neptunium.toIElement(); 481 public final static IElement PLUTONIUM = Plutonium.toIElement(); 482 public final static IElement AMERICIUM = Americium.toIElement(); 483 public final static IElement CURIUM = Curium.toIElement(); 484 public final static IElement BERKELIUM = Berkelium.toIElement(); 485 public final static IElement CALIFORNIUM = Californium.toIElement(); 486 public final static IElement EINSTEINIUM = Einsteinium.toIElement(); 487 public final static IElement FERMIUM = Fermium.toIElement(); 488 public final static IElement MENDELEVIUM = Mendelevium.toIElement(); 489 public final static IElement NOBELIUM = Nobelium.toIElement(); 490 public final static IElement LAWRENCIUM = Lawrencium.toIElement(); 491 public final static IElement RUTHERFORDIUM = Rutherfordium.toIElement(); 492 public final static IElement DUBNIUM = Dubnium.toIElement(); 493 public final static IElement SEABORGIUM = Seaborgium.toIElement(); 494 public final static IElement BOHRIUM = Bohrium.toIElement(); 495 public final static IElement HASSIUM = Hassium.toIElement(); 496 public final static IElement MEITNERIUM = Meitnerium.toIElement(); 497 public final static IElement DARMSTADTIUM = Darmstadtium.toIElement(); 498 public final static IElement ROENTGENIUM = Roentgenium.toIElement(); 499 public final static IElement UNUNBIUM = Copernicium.toIElement(); 500 public final static IElement UNUNTRIUM = Ununtrium.toIElement(); 501 public final static IElement UNUNQUADIUM = Flerovium.toIElement(); 502 public final static IElement FLEROVIUM = Flerovium.toIElement(); 503 public final static IElement UNUNPENTIUM = Ununpentium.toIElement(); 504 public final static IElement UNUNHEXIUM = Livermorium.toIElement(); 505 public final static IElement LIVERMORIUM = Livermorium.toIElement(); 506 507 // Incorrect spelling 508 @Deprecated 509 public final static IElement PLUTOMNIUM = PLUTONIUM; 510 511 /** 512 * Utility method to determine if an atomic number is a metal. 513 * @param atno atomic number 514 * @return the atomic number is a metal (or not) 515 */ isMetal(int atno)516 public static boolean isMetal(int atno) { 517 switch (atno) { 518 case 0: // * 519 case 1: // H 520 case 2: // He 521 case 6: // C 522 case 7: // N 523 case 8: // O 524 case 9: // F 525 case 10: // Ne 526 case 15: // P 527 case 16: // S 528 case 17: // Cl 529 case 18: // Ar 530 case 34: // Se 531 case 35: // Br 532 case 36: // Kr 533 case 53: // I 534 case 54: // Xe 535 case 86: // Rn 536 return false; 537 case 5: // B 538 case 14: // Si 539 case 32: // Ge 540 case 33: // As 541 case 51: // Sb 542 case 52: // Te 543 case 85: // At 544 return false; 545 } 546 return true; 547 } 548 549 /** 550 * Utility method to determine if an atom is a metal. 551 * 552 * @param atom atom 553 * @return the atom is a metal (or not) 554 */ isMetal(IAtom atom)555 public static boolean isMetal(IAtom atom) { 556 return atom.getAtomicNumber() != null && 557 isMetal(atom.getAtomicNumber()); 558 } 559 } 560