The Gnome Chemistry Utils 0.13.3
chemistry.h
Go to the documentation of this file.
00001 // -*- C -*-
00002 
00003 /* 
00004  * Gnome Chemisty Utils
00005  * chemistry.h 
00006  *
00007  * Copyright (C) 2003-2011 Jean Bréfort <jean.brefort@normalesup.org>
00008  *
00009  * This program is free software; you can redistribute it and/or 
00010  * modify it under the terms of the GNU General Public License as 
00011  * published by the Free Software Foundation; either version 2 of the
00012  * License, or (at your option) any later version.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
00022  * USA
00023  */
00024 
00025 
00043 #ifndef GCU_CHEMISTRY_H
00044 #define GCU_CHEMISTRY_H
00045 
00055 #ifdef  __cplusplus
00056 extern "C" {
00057 #endif
00058         
00062 #define MAX_ELT 116
00063 
00073 enum gcu_spin_state
00074 {
00075         GCU_N_A_SPIN,
00076         GCU_LOW_SPIN,
00077         GCU_HIGH_SPIN
00078 };
00079 
00092 enum gcu_radius_type
00093 {
00094         GCU_RADIUS_UNKNOWN,
00095         GCU_ATOMIC,
00096         GCU_IONIC,
00097         GCU_METALLIC,
00098         GCU_COVALENT,
00099         GCU_VAN_DER_WAALS
00100 };
00101 
00105 typedef struct
00106 {
00108         double value;
00110         int prec;
00112         int delta;
00113 } GcuValue;
00114 
00118 typedef struct
00119 {
00121         double value;
00123         int prec;
00125         int delta;
00127         const char *unit;
00128 } GcuDimensionalValue;
00129 
00133 typedef struct
00134 {
00136         unsigned char Z;
00138         enum gcu_radius_type type;
00140         GcuDimensionalValue value;
00142         char charge;
00144         char const* scale;
00146         char cn;        //coordination number: -1: unspecified
00148         enum gcu_spin_state spin;
00149 } GcuAtomicRadius;
00150 
00154 typedef struct
00155 {
00157         unsigned char Z;
00159         GcuValue value;
00161         char const *scale;
00162 } GcuElectronegativity;
00163 
00167 typedef struct
00168 {
00170         unsigned char A;
00172         char *name;
00174         GcuValue abundance;
00176         GcuValue mass;
00178         char spin;
00180         char *decay_modes;
00182         GcuDimensionalValue decay_period;
00183 } GcuIsotope;
00184 
00191 const double* gcu_element_get_default_color (int Z);
00197 const char* gcu_element_get_symbol (int Z);
00202 const char* gcu_element_get_name (int Z);
00208 int gcu_element_get_Z (char* symbol);
00226 int gcu_element_get_radius (GcuAtomicRadius* radius);
00239 int gcu_element_get_electronegativity (GcuElectronegativity* en);
00249 GcuDimensionalValue const *gcu_element_get_ionization_energy (int Z, int N);
00262 GcuDimensionalValue const *gcu_element_get_electron_affinity (int Z, int N);
00269 const GcuAtomicRadius** gcu_element_get_radii (int Z);
00276 const GcuElectronegativity** gcu_element_get_electronegativities (int Z);
00283 void gcu_element_load_databases (char const *name, ...);
00284 
00291 char* gcu_value_get_string (GcuValue const *value);
00292 
00299 char* gcu_dimensional_value_get_string (GcuDimensionalValue const *value);
00300 
00301 #ifdef  __cplusplus
00302 }       // extern "C"
00303 #endif
00304 
00305 #endif //GCU_CHEMISTRY_H