28#ifndef _chemistry_molecule_atominfo_h
29#define _chemistry_molecule_atominfo_h
35#include <util/class/class.h>
36#include <util/keyval/keyval.h>
45class AtomInfo:
public SavableState {
47 enum { Nelement = 118, DefaultZ = 0 };
56 static struct atom elements_[Nelement];
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_;
74 char *overridden_values_;
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,
83 void load_values(std::map<
int,std::vector<double> >&,
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,
180 double bragg_radius(
int Z)
const;
181 double atomic_radius(
int Z)
const;
182 double maxprob_radius(
int Z)
const;
185 double ip(
int Z)
const;
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;
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