29 #ifndef CDPL_CHEM_ATOMDICTIONARY_HPP
30 #define CDPL_CHEM_ATOMDICTIONARY_HPP
35 #include <unordered_map>
39 #include <boost/iterator/transform_iterator.hpp>
40 #include <boost/functional/hash.hpp>
69 Entry(
unsigned int atom_type, std::size_t iso,
const std::string& sym,
70 const std::string& name, std::size_t most_abdt_iso,
double avg_weight,
71 std::size_t iupac_grp, std::size_t period,
bool metal,
bool non_metal,
const Util::STArray& val_states,
72 double vdw_rad,
const double cov_radii[3],
double ar_eneg,
const IsotopeMassMap& iso_masses);
105 unsigned int atomType;
109 std::size_t mostAbundantIso;
111 std::size_t iupacGroup;
117 double covalentRadii[3];
118 double allredRochowEneg;
123 typedef std::unordered_map<std::pair<unsigned int, std::size_t>,
Entry, boost::hash<std::pair<unsigned int, std::size_t> > > EntryLookupTable;
124 typedef std::unordered_map<std::string, unsigned int> SymbolToTypeLookupTable;
129 typedef boost::transform_iterator<std::function<
const Entry&(
const EntryLookupTable::value_type&)>,
130 EntryLookupTable::const_iterator>
170 static const std::string&
getSymbol(
unsigned int type, std::size_t isotope = 0);
184 static const std::string&
getName(
unsigned int type, std::size_t isotope = 0);
194 static unsigned int getType(
const std::string& symbol,
bool strict =
false);
336 EntryLookupTable entries;
337 SymbolToTypeLookupTable strictSymToTypeTable;
338 SymbolToTypeLookupTable nonstrictSymToTypeTable;
Definition of the class CDPL::Util::Array.
Definition of the preprocessor macro CDPL_CHEM_API.
#define CDPL_CHEM_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of the class CDPL::Util::Map.
Definition: AtomDictionary.hpp:62
const IsotopeMassMap & getIsotopeMasses() const
double getAverageWeight() const
double getCovalentRadius(std::size_t order) const
double getVdWRadius() const
std::size_t getIUPACGroup() const
const Util::STArray & getValenceStates() const
std::size_t getPeriod() const
unsigned int getType() const
const std::string & getName() const
std::size_t getMostAbundantIsotope() const
Util::Map< std::size_t, double > IsotopeMassMap
Definition: AtomDictionary.hpp:65
const std::string & getSymbol() const
Entry(unsigned int atom_type, std::size_t iso, const std::string &sym, const std::string &name, std::size_t most_abdt_iso, double avg_weight, std::size_t iupac_grp, std::size_t period, bool metal, bool non_metal, const Util::STArray &val_states, double vdw_rad, const double cov_radii[3], double ar_eneg, const IsotopeMassMap &iso_masses)
std::size_t getIsotope() const
double getAllredRochowElectronegativity() const
A global dictionary for the lookup of data associated with the atom types defined in namespace Chem::...
Definition: AtomDictionary.hpp:58
static std::size_t getPeriod(unsigned int type)
Returns the period number of the chemical element specified by type.
static const std::string & getSymbol(unsigned int type, std::size_t isotope=0)
Returns the symbol that is associated with the specified atom type and isotope.
static const SharedPointer & get()
static bool isMetal(unsigned int type)
Tells whether the chemical element specified by type is a metal.
ConstEntryIterator begin() const
static bool isNobleGas(unsigned int type)
Tells whether the chemical element specified by type is a noble gas.
const Entry & getEntry(unsigned int type, std::size_t isotope) const
std::size_t getNumEntries() const
std::shared_ptr< AtomDictionary > SharedPointer
Definition: AtomDictionary.hpp:127
static double getAllredRochowElectronegativity(unsigned int type)
Returns the Allred-Rochow electronegativity of the chemical element specified by type.
static std::size_t getMostAbundantIsotope(unsigned int type)
Returns the mass number of the most abundant isotope of the chemical element specified by type.
static bool isHalogen(unsigned int type)
Tells whether the chemical element specified by type is a halogen.
static bool isSemiMetal(unsigned int type)
Tells whether the chemical element specified by type is a semi-metal.
static const Util::STArray & getValenceStates(unsigned int type)
Returns an array with the valence states of the chemical element specified by type.
void addEntry(const Entry &entry)
static double getCovalentRadius(unsigned int type, std::size_t order=1)
Returns the covalent radius of the chemical element specified by type for the given bond order.
static void set(const SharedPointer &dict)
boost::transform_iterator< std::function< const Entry &(const EntryLookupTable::value_type &)>, EntryLookupTable::const_iterator > ConstEntryIterator
Definition: AtomDictionary.hpp:131
ConstEntryIterator end() const
static bool isChemicalElement(unsigned int type)
Tells whether the specified atom type represents a chemical element.
static double getVdWRadius(unsigned int type)
Returns the van der Waals radius of the chemical element specified by type.
ConstEntryIterator getEntriesEnd() const
bool containsEntry(unsigned int type, std::size_t isotope) const
static bool isNonMetal(unsigned int type)
Tells whether the chemical element specified by type is a non-metal.
static unsigned int getType(const std::string &symbol, bool strict=false)
Returns the numeric atom type that is associated with the specified atom type symbol.
static bool isTransitionMetal(unsigned int type)
Tells whether the chemical element specified by type is a transition metal.
ConstEntryIterator getEntriesBegin() const
static const std::string & getName(unsigned int type, std::size_t isotope=0)
Returns the name of the chemical element that is associated with the specified atom type and isotope.
static std::size_t getIUPACGroup(unsigned int type)
Returns the IUPAC group of the chemical element specified by type.
static bool isMainGroupElement(unsigned int type)
Tells whether the chemical element specified by type is a main group element.
static double getAtomicWeight(unsigned int type, std::size_t isotope=0)
Returns the standard atomic weight or the relative isotopic mass of an isotope of the chemical elemen...
void removeEntry(unsigned int type, std::size_t isotope)
static std::size_t getNumValenceElectrons(unsigned int type)
Returns the number of valence electrons of the chemical element specified by type.
Array< std::size_t > STArray
An array of unsigned integers of type std::size_t.
Definition: Array.hpp:567
The namespace of the Chemical Data Processing Library.