github.com/rmera/gochem@v0.7.1/atomicdata.go (about) 1 /* 2 * atomicdata.go, part of gochem. 3 * 4 * 5 * Copyright 2021 Raul Mera <rmera{at}chemDOThelsinkiDOTfi> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of the 10 * License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General 18 * Public License along with this program. If not, see 19 * <http://www.gnu.org/licenses/>. 20 * 21 * 22 * goChem is currently developed at the Universidad de Santiago de Chile 23 * (USACH) 24 * 25 */ 26 27 package chem 28 29 //A map for assigning mass to elements. 30 //Note that just common "bio-elements" are present 31 var symbolMass = map[string]float64{ 32 "H": 1.0, 33 "C": 12.01, 34 "O": 16.00, 35 "N": 14.01, 36 "P": 30.97, 37 "S": 32.06, 38 "Se": 78.96, 39 "K": 39.1, 40 "Ca": 40.08, 41 "Mg": 24.30, 42 "Cl": 35.45, 43 "Na": 22.99, 44 "Cu": 63.55, 45 "Zn": 65.38, 46 "Co": 58.93, 47 "Fe": 55.84, 48 "Mn": 54.94, 49 "Cr": 51.996, 50 "Si": 28.08, 51 "Be": 9.012, 52 "F": 18.998, 53 "Br": 79.904, 54 "I": 126.90, 55 } 56 57 //A map for assigning covalent radii to elements 58 //Values from Cordero et al., 2008 (DOI:10.1039/B801115J) 59 //Note that just common "bio-elements" are present 60 var symbolCovrad = map[string]float64{ 61 "H": 0.4, // 0.31 I altered this one. Since H always has only one bond, it doesn't matter if I set a longer radius, the extra bonds will get eliminated later. 62 "C": 0.76, //the sp3 radius 63 "O": 0.66, 64 "N": 0.71, 65 "P": 1.07, 66 "S": 1.05, 67 "Se": 1.2, 68 "K": 2.03, 69 "Ca": 1.76, 70 "Mg": 1.41, 71 "Cl": 1.02, 72 "Na": 1.66, 73 "Cu": 1.32, 74 "Zn": 1.22, 75 "Co": 1.5, // hs 76 "Fe": 1.52, //hs 77 "Mn": 1.61, //hs 78 "Cr": 1.39, 79 "Si": 1.11, 80 "Be": 0.96, 81 "F": 0.57, 82 "Br": 1.2, 83 "I": 1.39, 84 } 85 86 //A map for assigning van der Waals radii to elements 87 //Values from 10.1021/j100785a001 and 10.1021/jp8111556 88 //metal radii from 10.1023/A:1011625728803 89 //Note that just common "bio-elements" are present 90 var symbolVdwrad = map[string]float64{ 91 "H": 1.10, // 0.31 I altered this one. Since H always has only one bond, it doesn't matter if I set a longer radius, the extra bonds will get eliminated later. 92 "C": 1.70, //the sp3 radius 93 "O": 1.52, 94 "N": 1.55, 95 "P": 1.80, 96 "S": 1.80, 97 "Se": 1.90, 98 "K": 2.75, 99 "Ca": 2.31, 100 "Mg": 1.73, 101 "Cl": 1.75, 102 "Na": 2.27, 103 "Cu": 2.00, 104 "Zn": 2.02, 105 "Co": 1.95, 106 "Fe": 1.96, 107 "Mn": 1.96, 108 "Cr": 1.97, 109 "Si": 2.10, 110 "Be": 1.53, 111 "F": 1.47, 112 "Br": 1.83, 113 "I": 1.98, 114 } 115 116 //A map for checking that atoms don't 117 //have too many bonds. A value of 0 means 118 //undefined, i.e. that this atom shouldn't 119 //be checked for max bonds. I decided not to define it 120 var symbolMaxBonds = map[string]int{ 121 "H": 1, //this is the only one truly important. 122 "C": 4, 123 "O": 2, 124 "N": 0, //undefined 125 "P": 0, 126 "S": 0, 127 "Se": 0, 128 "Be": 0, 129 "F": 1, 130 "Br": 1, 131 "I": 1, 132 }