NuriKit v0.1.0b2
Loading...
Searching...
No Matches
nuri::Element Class Reference

The class for element data. More...

#include <nuri/core/element.h>

Public Types

enum class  Type : std::uint8_t { kUnknown , kMetal , kMetalloid , kNonmetal }
enum class  State : std::uint8_t { kUnknown , kSolid , kLiquid , kGas }

Public Member Functions

 Element ()=delete
 ~Element () noexcept=default
constexpr int atomic_number () const noexcept
 Get the atomic number of the atom.
constexpr std::int16_t valence_electrons () const noexcept
 Get the number of valence electrons of the atom.
constexpr std::int16_t period () const noexcept
 Get the period of the atom.
constexpr std::int16_t group () const noexcept
 Get the group of the element.
constexpr bool radioactive () const noexcept
 Test if the molecule is radioactive. That is, all of its isotopes has natural abundance of 0.
constexpr bool main_group () const noexcept
 Test if the molecule is a main group element.
constexpr bool lanthanide () const noexcept
 Test if the molecule is a lanthanide.
constexpr bool actinide () const noexcept
 Test if the molecule is an actinide.
constexpr Type type () const noexcept
 Get the type of the element.
constexpr State state () const noexcept
 Get the standard state of the element.
constexpr std::string_view symbol () const noexcept
 Get the IUPAC Symbol of the atom.
constexpr std::string_view name () const noexcept
 Get the IUPAC Name of the atom.
constexpr double atomic_weight () const noexcept
 Get the atomic weight of the atom.
constexpr double covalent_radius () const noexcept
 Get the covalent radius of the atom.
constexpr double vdw_radius () const noexcept
 Get the Van der Waals radius of the atom.
constexpr double eneg () const noexcept
 Get electronegativity of the element (Pauling scale).
constexpr const Isotopemajor_isotope () const noexcept
 Get the representative isotope of the element.
const Isotopefind_isotope (int mass_number) const noexcept
 Find an element with the given mass number.
constexpr const std::vector< Isotope > & isotopes () const noexcept
 Get all known isotopes of the element.

Friends

class PeriodicTable

Detailed Description

The class for element data.

References and Notes

About the atomic weights & isotopes data

Notes on atomic weight and isotope data

  • If ranges are specified in the standard atomic weights table for an element, the given value is taken from the abridged table.
  • If no value is specified in the standard atomic weights table for an element, the value given is taken from the radioactive table, where the value represents the longest-lived isotope of the element.
  • If ranges are specified in the isotopic abundances table for an element, the given value is taken from the NUBASE 2020 table.
  • Dummy atom has one isotope, which corresponds to the neutron.

References

Values were taken from the following references, unless otherwise noted:

For the isotopes that are listed as ranges in the isotopic abundances table, the following reference was used:

For the neutron mass, the following reference was used:

Atomic weights & isotopes data copyright notice

Full copyright text, copied verbatim from the CIAAW website:

The contents of the website are jointly copyrighted by CIAAW and IUPAC and can be freely used for educational purposes.
© CIAAW, 2007-2022
Republication or reproduction of this report or its storage and/or dissemination by electronic means is permitted without the need for formal IUPAC or CIAAW permission on condition that an acknowledgement, with full reference to the source, along with use of the copyright symbol ©, the name IUPAC or CIAAW, and the year of publication, are prominently visible. Publication of a translation into another language is subject to the additional condition of prior approval from the relevant IUPAC National Adhering Organization.
For commercial use of this content please contact CIAAW Secretariat.

About the covalent radii data

Covalent radii were obtained from two sources. The latter provides a more comprehensive set of elements, but the former has performed a more rigorous statistical analysis and carries greater reputation in the field. Notably, the values from the former reference are used in the PubChem and the Wikipedia periodic tables. We henceforth opted to use the values from the former whenever possible. While this may result in some inconsistencies within the dataset, we believe this choice is acceptable considering that the majority of interest lies in the first 96 elements.

Cordero et al. proposed two covalent radii for manganese (1.39, 1.61), iron (1.32, 1.52), and cobalt (1.26, 1.50), each corresponding to the low-spin and high-spin states. To ensure maximum transferability, we calculated the weighted average of these values based on the number of analyzed bond distances. Carbon also has three values (0.76, 0.73, 0.69) in their dataset, and we selected the value corresponding to \(\mathrm{sp}^3\) hybridized carbon (0.76).

References

  • Elements 1-96: Cordero, B. et al. Dalton Trans. 2008, 21, 2832-2838. DOI: 10.1039/B801115J
  • Elements 97-118: Pyykko, P.; Atsumi, M. Chem. Eur. J. 2009, 15 (1), 186-197. DOI: 10.1002/chem.200800987

About the Van der Waals radii data

References

About the electronegativity data

This is the Pauling electronegativity.

References

About the type and standard state data

The element type and standard state data were obtained from the PubChem periodic table.

The element type represents classification of the element into one of the following categories. The categories are mutually exclusive, and elements that do not fall into any of the categories are classified as metals.

  • Unknown (only dummy atoms),
  • Nonmetal,
  • Metalloid

The standard state represents the state of the element at 298.15 K and 1 atm, and is one of gas, liquid, or solid. Unknown is only used for dummy atoms.

References

Member Enumeration Documentation

◆ State

enum class nuri::Element::State : std::uint8_t
strong
Enumerator
kUnknown 
kSolid 
kLiquid 
kGas 

◆ Type

enum class nuri::Element::Type : std::uint8_t
strong
Enumerator
kUnknown 
kMetal 
kMetalloid 
kNonmetal 

Constructor & Destructor Documentation

◆ Element()

nuri::Element::Element ( )
delete

◆ ~Element()

nuri::Element::~Element ( )
defaultnoexcept

Member Function Documentation

◆ actinide()

bool nuri::Element::actinide ( ) const
inlineconstexprnoexcept

Test if the molecule is an actinide.

Returns
true if the element is an actinide, false otherwise.

◆ atomic_number()

int nuri::Element::atomic_number ( ) const
inlineconstexprnoexcept

Get the atomic number of the atom.

Returns
The atomic number.

◆ atomic_weight()

double nuri::Element::atomic_weight ( ) const
inlineconstexprnoexcept

Get the atomic weight of the atom.

Returns
The IUPAC standard atomic weight. See references and notes for more information.

◆ covalent_radius()

double nuri::Element::covalent_radius ( ) const
inlineconstexprnoexcept

Get the covalent radius of the atom.

Returns
The covalent radius of the atom (in angstroms). See references and notes for more information.

◆ eneg()

double nuri::Element::eneg ( ) const
inlineconstexprnoexcept

Get electronegativity of the element (Pauling scale).

Returns
Electronegativity of the element (Pauling scale). If the element has no known electronegativity value, returns -1. See references and notes for more information.

◆ find_isotope()

const Isotope * nuri::Element::find_isotope ( int mass_number) const
inlinenoexcept

Find an element with the given mass number.

Returns
A pointer to the isotope, or nullptr if no isotopes with the given mass number is known.

◆ group()

std::int16_t nuri::Element::group ( ) const
inlineconstexprnoexcept

Get the group of the element.

Returns
Group of the element. If the element is a dummy atom, returns 0. Lanthanides and actinides are treated as group 3.

◆ isotopes()

const std::vector< Isotope > & nuri::Element::isotopes ( ) const
inlineconstexprnoexcept

Get all known isotopes of the element.

Returns
Reference to all known isotopes of the element. See references and notes for more information.

◆ lanthanide()

bool nuri::Element::lanthanide ( ) const
inlineconstexprnoexcept

Test if the molecule is a lanthanide.

Returns
true if the element is a lanthanide, false otherwise.

◆ main_group()

bool nuri::Element::main_group ( ) const
inlineconstexprnoexcept

Test if the molecule is a main group element.

Returns
true if the element is a main group element, false otherwise.

◆ major_isotope()

const Isotope & nuri::Element::major_isotope ( ) const
inlineconstexprnoexcept

Get the representative isotope of the element.

Returns
The representative isotope of the element. I.e., the most abundant isotope, or the most stable isotope if the element is radioactive. See references and notes for more information.

◆ name()

std::string_view nuri::Element::name ( ) const
inlineconstexprnoexcept

Get the IUPAC Name of the atom.

Returns
The IUPAC Name, in Titlecase.

◆ period()

std::int16_t nuri::Element::period ( ) const
inlineconstexprnoexcept

Get the period of the atom.

Returns
Period of this atom.

◆ radioactive()

bool nuri::Element::radioactive ( ) const
inlineconstexprnoexcept

Test if the molecule is radioactive. That is, all of its isotopes has natural abundance of 0.

Returns
true if the element is radioactive, false otherwise.

◆ state()

State nuri::Element::state ( ) const
inlineconstexprnoexcept

Get the standard state of the element.

Returns
The standard state of the element.

◆ symbol()

std::string_view nuri::Element::symbol ( ) const
inlineconstexprnoexcept

Get the IUPAC Symbol of the atom.

Returns
The IUPAC Symbol.

◆ type()

Type nuri::Element::type ( ) const
inlineconstexprnoexcept

Get the type of the element.

Returns
The type of the element.

◆ valence_electrons()

std::int16_t nuri::Element::valence_electrons ( ) const
inlineconstexprnoexcept

Get the number of valence electrons of the atom.

Returns
The number of valence electrons.

◆ vdw_radius()

double nuri::Element::vdw_radius ( ) const
inlineconstexprnoexcept

Get the Van der Waals radius of the atom.

Returns
The Van der Waals radius of the atom (in angstroms). See references and notes for more information.

◆ PeriodicTable

friend class PeriodicTable
friend

The documentation for this class was generated from the following file: