File ElementData.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils
namespace Constants

A namespace for all constant (hardcoded) data.

This namespace does not include fitted parameters for specific methods, only general constant parameters, such as natural constants and atomic data.

class ElementDataSingleton
#include <ElementData.h>

Provides a mapping of ElementType to ElementData and accessing Elements by a symbol string.

This class is a singleton to avoid multiple instances of the same hardcoded data in memory.

Features:

  • Fast lookup for subscript operator [ElementType]. Throws std::out_of_range.

  • Slow lookup for subscript operator [std::string]. Throws ElementData::DataNotAvailable.

Public Functions

const ElementData &operator[](const std::string &symbol) const

Access element information based on element symbol.

Return

const ElementData& Returns the data associated with this element.

Parameters
  • symbol: The symbol of the element (1st character upper case, 2nd lower case).

Exceptions

const ElementData &operator[](const ElementType &type) const

Access element information based on type.

Fastest lookup.

Return

const ElementData& Returns the data associated with this element.

Parameters
  • type: The ElementType.

Exceptions
  • std::out_of_range:

Public Static Functions

static const ElementDataSingleton &instance()

Access singleton instance.

Creates one if necessary.

Return

const ElementDataSingleton& A reference to the one instance allowed.

Private Functions

ElementDataSingleton()

Private constructor to prevent instantiation by client.

void init_data()

Creates hard coded element data.

Private Members

std::map<ElementType, ElementData> d_container

Storage: internal map.

Private Static Attributes

std::unique_ptr<ElementDataSingleton> d_instance

The singleton instance.

class ElementData
#include <ElementData.h>

Data type for each element of the periodic table, Data includes: Mass (a.u.), Z,.

Public Functions

ElementData()

Constructor for default (empty) element.

ElementData(std::string symbol, int Z, double mass, double vdWRadiusInPicometers = -1, int valElectrons = -1, int sElectrons = -1, int pElectrons = -1, int dElectrons = -1)

Construct a new ElementData object.

Parameters
  • symbol: The element symbol.

  • Z: The nuclear charge.

  • mass: The mass (isotope average, precision: 3 digits).

  • vdWRadiusInPicometers: The van der Waals radius in pm.

  • valElectrons: The number of electrons in the valence shell.

  • sElectrons: The number of s-electrons in the valence shell.

  • pElectrons: The number of p-electrons in the valence shell.

  • dElectrons: The number of d-electrons in the valence shell.

std::string symbol() const

Getter for the element symbol.

Return

std::string Returns the element symbol as string.

int Z() const

Getter for the atomic number.

Return

int Returns the atomic number.

double mass() const

Getter for the mass in atomic mass units (u).

Return

double Returns the atomic mass (isotope average, precision: 3 digits)

double vdWRadius() const

Getter for the Van-der-Waals Radius.

Return

double Returns the Van-der-Waals Radius in atomic units.

int valElectrons() const

Getter for the number of valence electrons.

Return

int Returns the number of valence electrons.

int sElectrons() const

Getter for the number of valence s-electrons.

Return

int Returns the number of valence s-electrons.

int pElectrons() const

Getter for the number of valence p-electrons.

Return

int Returns the number of valence p-electrons.

int dElectrons() const

Getter for the number of valence d-electrons.

Return

int Returns the number of valence d-electrons.

Private Members

std::string d_symbol = {}
int d_Z = {0}
double d_mass = {-1}
double d_vdWRadius = {-1}
int d_valElectrons = {-1}
int d_sElectrons = {-1}
int d_pElectrons = {-1}
int d_dElectrons = {-1}
class DataNotAvailable
#include <ElementData.h>

An exception if the data does not exist.