28 #ifndef _chemistry_molecule_atominfo_h
29 #define _chemistry_molecule_atominfo_h
35 #include <util/class/class.h>
36 #include <util/keyval/keyval.h>
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;
204 double mass(
int Z)
const;
207 std::string
name(
int Z);
209 std::string
symbol(
int Z);
212 int string_to_Z(
const std::string &,
int allow_exceptions = 1);