MPQC 2.3.1
atominfo.h
1//
2// atominfo.h
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#ifndef _chemistry_molecule_atominfo_h
29#define _chemistry_molecule_atominfo_h
30
31#include <string>
32#include <map>
33#include <vector>
34
35#include <util/class/class.h>
36#include <util/keyval/keyval.h>
37
38namespace sc {
39
40class Units;
41
45class AtomInfo: public SavableState {
46 private:
47 enum { Nelement = 118, DefaultZ = 0 };
48
49 struct atom
50 {
51 int Z;
52 char *name;
53 char *symbol;
54 };
55
56 static struct atom elements_[Nelement];
57
58 std::map<std::string,int> name_to_Z_;
59 std::map<std::string,int> symbol_to_Z_;
60 std::map<int,std::string> Z_to_names_;
61 std::map<int,std::string> Z_to_symbols_;
62 std::map<int,double> Z_to_mass_;
63 std::map<int,double> Z_to_atomic_radius_;
64 std::map<int,double> Z_to_vdw_radius_;
65 std::map<int,double> Z_to_bragg_radius_;
66 std::map<int,double> Z_to_maxprob_radius_;
67 std::map<int,std::vector<double> > Z_to_rgb_;
68 std::map<int,double> Z_to_ip_;
69 double atomic_radius_scale_;
70 double vdw_radius_scale_;
71 double bragg_radius_scale_;
72 double maxprob_radius_scale_;
73
74 char *overridden_values_;
75
76 void load_library_values();
77 void override_library_values(const Ref<KeyVal> &keyval);
78 void load_values(const Ref<KeyVal>& keyval, int override);
79 void load_values(std::map<int,double>&,
80 double *scale, const char *keyword,
81 const Ref<KeyVal> &keyval, int override,
82 const Ref<Units> &);
83 void load_values(std::map<int,std::vector<double> >&,
84 const char *keyword,
85 const Ref<KeyVal> &keyval, int override);
86 void add_overridden_value(const char *assignment);
87 void initialize_names();
88 double lookup_value(const std::map<int,double>& values, int Z) const;
89 double lookup_array_value(const std::map<int,std::vector<double> >& values,
90 int Z, int i) const;
91 public:
92 AtomInfo();
93
172
174 AtomInfo(StateIn&);
175 ~AtomInfo();
177
179 double vdw_radius(int Z) const;
180 double bragg_radius(int Z) const;
181 double atomic_radius(int Z) const;
182 double maxprob_radius(int Z) const;
183
185 double ip(int Z) const;
186
188 double vdw_radius_scale() const { return vdw_radius_scale_; }
190 double bragg_radius_scale() const { return bragg_radius_scale_; }
192 double atomic_radius_scale() const { return atomic_radius_scale_; }
194 double maxprob_radius_scale() const { return maxprob_radius_scale_; }
195
198 double rgb(int Z, int color) const;
199 double red(int Z) const;
200 double green(int Z) const;
201 double blue(int Z) const;
202
204 double mass(int Z) const;
205
207 std::string name(int Z);
209 std::string symbol(int Z);
210
212 int string_to_Z(const std::string &, int allow_exceptions = 1);
213};
214
215}
216
217#endif
218
219// Local Variables:
220// mode: c++
221// c-file-style: "CLJ"
222// End:
int string_to_Z(const std::string &, int allow_exceptions=1)
This converts a name or symbol to the atomic number.
double vdw_radius(int Z) const
These return various measures of the atom's radius.
void save_data_state(StateOut &s)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
double atomic_radius_scale() const
Return the scale factor for the atomic radii.
Definition atominfo.h:192
double mass(int Z) const
This returns the mass of the most abundant isotope.
double ip(int Z) const
Returns the atomization potential for atomic number Z.
double rgb(int Z, int color) const
These return information about the color of the atom for visualization programs.
double vdw_radius_scale() const
Return the scale factor for the VdW radii.
Definition atominfo.h:188
std::string name(int Z)
This returns the full name of the element.
std::string symbol(int Z)
This returns the symbol for the element.
double bragg_radius_scale() const
Return the scale factor for the Bragg radii.
Definition atominfo.h:190
AtomInfo(const Ref< KeyVal > &)
The AtomInfo KeyVal constructor is used to generate a AtomInfo object from the input.
double maxprob_radius_scale() const
Return the scale factor for the maximum probability radii.
Definition atominfo.h:194
A template class that maintains references counts.
Definition ref.h:332
Restores objects that derive from SavableState.
Definition statein.h:70
Serializes objects that derive from SavableState.
Definition stateout.h:61
The Units class is used to perform unit converions.
Definition units.h:42

Generated at Mon Apr 28 2025 00:00:00 for MPQC 2.3.1 using the documentation package Doxygen 1.13.2.