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  }