source: ThirdParty/mpqc_open/src/lib/chemistry/qc/intv3/atominfo.cc@ bbc982

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since bbc982 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 3.3 KB
Line 
1//
2// atominfo.cc
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit 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 Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#include <stdlib.h>
29#include <string.h>
30#include <ctype.h>
31
32#include <chemistry/qc/intv3/atominfo.gbl>
33#include <chemistry/qc/intv3/atominfo.lcl>
34
35using namespace sc;
36
37#define N_ATOMS 110
38
39struct {
40 char *atom;
41 char *symbol;
42 int an;
43 } atominfo[N_ATOMS] = {
44 {"hydrogen", "h", 1},
45 {"helium", "he", 2},
46 {"lithium", "li", 3},
47 {"beryllium", "be", 4},
48 {"boron", "b", 5},
49 {"carbon", "c", 6},
50 {"nitrogen", "n", 7},
51 {"oxygen", "o", 8},
52 {"fluorine", "f", 9},
53 {"neon", "ne", 10},
54 {"sodium", "na", 11},
55 {"magnesium", "mg", 12},
56 {"aluminum", "al", 13},
57 {"silicon", "si", 14},
58 {"phosphorus", "p", 15},
59 {"sulfur", "s", 16},
60 {"chlorine", "cl", 17},
61 {"argon", "ar", 18},
62 {"xenon", "xe", 54},
63 {0, 0, 0}
64 };
65
66/* Convert an atomic number to a symbol. The returned character pointer is
67 * malloced. */
68char *
69IntV3::an_to_sym(int an)
70{
71 int i;
72 char *result;
73
74 for (i=0; atominfo[i].an != 0; i++) {
75 if (atominfo[i].an == an) {
76 result = (char *)malloc(strlen(atominfo[i].symbol)+1);
77 strcpy(result,atominfo[i].symbol);
78 result[0] += 'A' - 'a';
79 return result;
80 }
81 }
82 return 0;
83 }
84
85/* Converts a symbol to an atom name. If the symbol name is unknown
86 * then the symbol name is returned. */
87char *
88IntV3::sym_to_atom(char *sym)
89{
90 int i;
91 char tmpsym[10];
92
93 if (!sym) return 0;
94
95 /* Convert the passed name to lowercase. */
96 strcpy(tmpsym,sym);
97 for (i=0; i<strlen(sym); i++) {
98 if (isupper(tmpsym[i])) tmpsym[i] += 'a' - 'A';
99 }
100
101 for (i=0; atominfo[i].atom != 0; i++) {
102 if (!strcmp(tmpsym,atominfo[i].atom) || !strcmp(tmpsym,atominfo[i].symbol)) {
103 return atominfo[i].atom;
104 }
105 }
106 return 0;
107 }
108
109int
110IntV3::atom_to_an(char *atom)
111{
112 int i;
113 char tmpatom[50];
114
115 if (!atom) return 0;
116
117 /* Convert the passed name to lowercase. */
118 strcpy(tmpatom,atom);
119 for (i=0; i<strlen(atom); i++) {
120 if (isupper(tmpatom[i])) tmpatom[i] += 'a' - 'A';
121 }
122
123 for (i=0; atominfo[i].atom != 0; i++) {
124 if (!strcmp(tmpatom,atominfo[i].atom) || !strcmp(tmpatom,atominfo[i].symbol)) {
125 return atominfo[i].an;
126 }
127 }
128
129 return 0;
130 }
131
132/////////////////////////////////////////////////////////////////////////////
133
134// Local Variables:
135// mode: c++
136// c-file-style: "CLJ-CONDENSED"
137// End:
Note: See TracBrowser for help on using the repository browser.