radium-0.9.0: Chemistry

Safe HaskellSafe
LanguageHaskell2010

Radium.Element

Description

Module Radium.Element Copyright : Copyright (C) 2014 Krzysztof Langner License : BSD3

Maintainer : Krzysztof Langner klangner@gmail.com Stability : alpha Portability : portable

This module contains Periodic Table with information about all known elements.

Synopsis

Documentation

data Element Source #

Element from periodic table configuration

data Ion Source #

Atom with non-ground atom shell

Constructors

Ion 

Instances

Show Ion Source # 

Methods

showsPrec :: Int -> Ion -> ShowS #

show :: Ion -> String #

showList :: [Ion] -> ShowS #

covalentBounds :: Element -> Int Source #

Number of covalent bounds in element

let e = element 8
covalentBounds e == 2

electronConfig :: Element -> [Int] Source #

Show number of electrons in each shell For elements which are exception to Aufbau principle configuration is given manually Is it possible to calculate it for all elements based only on atom properties?

let e = element 8
electronConfig e == [2, 6]

element :: Int -> Element Source #

Find element by its atomic number

atomicNumber (element 8) == 8

elementBySymbol :: String -> Element Source #

Find element by its symbol

atomicNumber (elementBySymbol "O") == 8

ionElectronConfig :: Ion -> [Int] Source #

Show number of electrons in each shell for an ionized state of an atom

let i = Ion (element 20) 2
ionElectronConfig i == [2, 8, 8]
let i = Ion (element 17) (-1)
ionElectronConfig i == [2, 8, 8]

possibleElectronConfigs :: Element -> [[OrbitalState]] Source #

Generate all possible electron configs (unexcited and excited) for a given element

possibleIonElectronConfigs :: Ion -> [[OrbitalState]] Source #

Generate all possible electron configs (unexcited and excited) for a given ion | By now it assumes that removing electrons starts from the highest layer, | whereas adding electrons follows the same way as while moving along periodic table

possibleIonValences :: Ion -> [Int] Source #

Get list of all possible valences for an ion

possibleValences :: Element -> [Int] Source #

Get list of all possible coordination numbers (valences)

valenceElectrons :: Element -> Int Source #

Number of valance electrons

let e = element 8
valenceElectrons e == 6