Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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.
- data Element
- data Ion = Ion {
- ionElement :: Element
- ionCharge :: Int
- data OrbitalId
- data OrbitalState = State {}
- covalentBounds :: Element -> Int
- electronConfig :: Element -> [Int]
- element :: Int -> Element
- elementBySymbol :: String -> Element
- ionElectronConfig :: Ion -> [Int]
- possibleElectronConfigs :: Element -> [[OrbitalState]]
- possibleIonElectronConfigs :: Ion -> [[OrbitalState]]
- possibleIonValences :: Ion -> [Int]
- possibleValences :: Element -> [Int]
- valenceElectrons :: Element -> Int
Documentation
Element from periodic table configuration
Element | |
| |
Unknown |
Atom with non-ground atom shell
Ion | |
|
Orbitals have names: s, p, d ,f, g, h
data OrbitalState Source #
Orbital configuration
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]
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