Principal properties
Element
CamiXon.Element — TypeElement(name, symbol, weight)Type with fields:
.name: name of element (::String).symbol: symbol of element (::String).weight: relative atomic mass - atomic weight (::Float64)
The type Element is best created with the function castElement.
CamiXon.castElement — MethodcastElement(;Z=1, msg=true)
castElement(elt::String; msg=true)Create Atom with fields
.name: name of element.symbol: symbol of element.weight: relative atomic mass (atomic weight)Z: atomic number (nuclear charge number)
elt: symbolic element name
Example:
julia> castElement("Rb"; msg=false) == castElement(Z=37, msg=false)
true
julia> element = castElement(;Z=1, msg=true);
Element created: H, hydrogen, Z=1, weight=1.008
julia> element = castElement(;Z=1, msg=false)
Element("hydrogen", "H", 1.008)CamiXon.listElement — MethodlistElement(Z::Int[; fmt=Object])
listElement(elt::String[; fmt=Object])Properties of element with atomic number Z and symbolic name elt
Output options: fmt = Object (default), String, Info.
Example:
julia> listElement("H") == listElement(1)
true
julia> listElement(1; fmt=Info)
Element: hydrogen
symbol: H
atomic number: Z = 1
atomic weight (relative atomic mass): 1.008CamiXon.listElements — MethodlistElements(Z1::Int, Z2::Int[; fmt=Object])
listElements(itr::UnitRange{Int}; fmt=Object)Properties of elements with atomic number in the range itr = Z1:Z2.
Output options: fmt = Object (default), String, Info.
Example
julia> listElements(1,3) == listElements(1:3)
true
julia> listElements(1:3; fmt=Info);
Element: hydrogen
symbol: H
atomic number: Z = 1
atomic weight (relative atomic mass): 1.008
Element: helium
symbol: He
atomic number: Z = 2
atomic weight (relative atomic mass): 4.0026
Element: lithium
symbol: Li
atomic number: Z = 3
atomic weight (relative atomic mass): 6.94
julia> listElements(1:3; fmt=String)
3-element Vector{Any}:
"H, hydrogen, Z=1, weight=1.008"
"He, helium, Z=2, weight=4.0026"
"Li, lithium, Z=3, weight=6.94" Dictionary
CamiXon.dictElement — ConstantdictElementStandard atomic weights of the elements 2021 - see IUPAC Technical Report
julia> dictElement
Dict{Int64, Tuple{String, String, Any}} with 102 entries:
5 => ("boron", "B", 10.81)
56 => ("barium", "Ba", 137.33)
35 => ("bromine", "Br", 79.904)
55 => ("caesium", "Cs", 132.91)
60 => ("neodymium", "Nd", 144.24)
30 => ("zinc", "Zn", 65.38)
⋮ => ⋮Examples:
julia> get(dictElement, 37, nothing)
("rubidium", "Rb", 85.468)
julia> listElement("Rb", fmt=Info)
Element: rubidium
symbol: Rb
atomic number: Z = 37
atomic weight (relative atomic mass): 85.468Isotope
CamiXon.Isotope — TypeIsotope(symbol, name, Z, A, N, R, M, I, π, T½, mdm, eqm, ra)Type with fields:
.symbol: symbol (::String).name: name (::String).Z: atomic number (::Int).A: atomic mass number in amu (::Int).N: neutron number (::Int).R: rms charge radius in Fermi (::Float64).M: atomic mass in amu (::Float64).I: nuclear spin in units of ħ (::Rational{Int}).π: parity of nuclear state (::Int).T½: lifetime in years (::Float64).mdm: nuclear magnetic dipole moment (::Float64).eqm: nuclear electric quadrupole moment (::Float64).ra: relative abundance in % (::Float64)
The type Isotope is best created with the function castIsotope.
CamiXon.castIsotope — MethodcastIsotope(;Z=1, A=1, msg=false)
castIsotope(elt::String; A=1, msg=false)Create Isotope with fields
.symbol: symbol (::String).name: symbol (::String).Z: atomic number (::Int).A: atomic mass number in amu (::Int).N: neutron number (::Int).R: rms charge radius in Fermi (::Float64).M: atomic mass in amu (::Float64).I: nuclear spin in units of ħ (::Rational{Int}).π: parity of nuclear state (::Int).ra: relative abundance in % (::Float64).mdm: nuclear magnetic dipole moment (::Float64).eqm: nuclear electric quadrupole moment (::Float64).T½: lifetime in years (::Float64)
Z: atomic number (nuclear charge number) elt: symbolic element name
Examples:
julia> castIsotope("Rb"; A=87) == castIsotope(Z=37, A=87)
true
julia> isotope = castIsotope(Z=1, A=3)
Isotope("³T", "tritium", 1, 3, 2, 1.7591, 3.016049281, 1//2, 1, 12.33, 2.97896246, 0.0, nothing)
julia> string(isotope.T½) * " seconds"
"12.33 seconds"
julia> castIsotope(Z=1, A=3, msg=true);
Isotope created: ³T, tritium, Z=1, A=3, N=2, R=1.7591, M=3.016049281, I=1/2⁺, μI=2.97896246, Q=0.0, RA=trace, (radioactive)CamiXon.listIsotope — MethodlistIsotope(Z::Int, A::Int; fmt=Object)Properties of isotopes with atomic number Z and atomic mass number A.
Output options: fmt = Object (default), String, Latex, Info.
Example:
julia> listIsotope(1,3; fmt=Info);
Isotope: tritium-3
symbol: ³T
element: tritium
atomic number: Z = 1
atomic mass number: A = 3
neutron number: N = 2
rms nuclear charge radius: R = 1.7591 fm
atomic mass: M = 3.016049281 amu
nuclear spin: I = 1/2 ħ
parity of nuclear state: π = even
nuclear magnetic dipole moment: μI = 2.97896246 μN
nuclear electric quadrupole moment: Q = 0.0 barn
relative abundance: RA = trace
lifetime: 12.33 yrCamiXon.listIsotopes — MethodlistIsotopes(Z1::Int, Z2::Int; fmt=Object)
listIsotopes(itr; fmt=Object)All isotopes with atomic number in the range itr = Z1:Z2.
Output options: Object (default), String, Latex, Info.
Example:
julia> listIsotopes(1,3) == listIsotopes(1:3)
true
julia> listIsotopes(1:1; fmt=Object)
3-element Vector{Any}:
Isotope("¹H", "hydrogen", 1, 1, 0, 0.8783, 1.007825032, 1//2, 1, 1.0e100, 2.792847351, 0.0, 99.9855)
Isotope("²D", "deuterium", 1, 2, 1, 2.1421, 2.014101778, 1, 1, 1.0e100, 0.857438231, 0.0028578, 0.0145)
Isotope("³T", "tritium", 1, 3, 2, 1.7591, 3.016049281, 1//2, 1, 12.33, 2.97896246, 0.0, nothing)CamiXon.latexIsotopeTable — MethodlatexIsotopeTable(Z1::Int, Z2::Int; continuation=false)
latexIsotopeTable(itrZ::UnitRange; continuation=false)Isotope table for all isotopes with atomic number from Z1 to Z2.
Example:
o = latexIsotopeTable(1:3);
println(o)
\setlength{\tabcolsep}{3pt}
\renewcommand{\arraystretch}{1.2}
\begin{table}[H]
\centering
\caption{\label{table:Isotopes-a-1}Properties of selected atomic isotopes. The Table is based on three databases: (a) AME2020 (atomic mass evaluation); (b) IAEA-INDC(NDS)-794 (magnetic dipole moments); (c) IAEA-INDC(NDS)-833 (electric quadrupole moments).}
\begin{tabular}{r|lr|rrrr|r|r|r|r}
\multicolumn{12}{r}\vspace{-18pt}\\
\hline
\hline
$Z$ & element & symbol & $A$ & $N$ & radius & atomic mass & $I\,^\pi$ & $\mu_I $ & $Q$ & $RA$\\& & & & & (fm) & $(m_u)$ & $(\hbar)\ \ $ & $(\mu_N)$ & (barn) & (\%)\\\hline
1 & hydrogen & $^{1}$H & 1\, & 0 & 0.8783 & 1.007825032 & 1/2$^+$ & 2.792847351 & 0.0 & 99.9855 \\
& & $^{2}$H & 2\, & 1 & 2.1421 & 2.014101778 & 1//1$^+$ & 0.857438231 & 0.0028578 & 0.0145 \\
& & $^{3}$H & 3$*\!\!$ & 2 & 1.7591 & 3.016049281 & 1/2$^+$ & 2.97896246 & 0.0 & trace \\
\hline
2 & helium & $^{3}$He & 3\, & 1 & 1.9661 & 3.016029322 & 1/2$^+$ & -2.12762531 & 0.0 & 0.0002 \\
& & $^{4}$He & 4\, & 2 & 1.6755 & 4.002603254 & 0//1$^+$ & 0.0 & 0.0 & 99.9998\% \\
\hline
3 & lithium & $^{6}$Li & 6\, & 3 & 2.589 & 6.015122887 & 1//1$^+$ & 0.822043 & -0.000806 & 4.85 \\
& & $^{7}$Li & 7\, & 4 & 2.444 & 7.016003434 & 3/2$^-$ & 3.256407 & -0.04 & 95.15 \\
\hline
\multicolumn{12}{l}{*radioactive }\\
\end{tabular}
\end{table}The typeset result is shown in the figure below.

Dictionary
CamiXon.dictIsotope — ConstantdictIsotopeSources: AME2020, LINDC(NDS)-0794 and INDC(NDS)-0833 Meng Wang et al 2021 Chinese Phys. C 45 030003
julia> dictIsotope
Dict{Tuple{Int64, Int64}, Tuple{String, String, Int64, Int64, Int64, Float64, Float64, Real, Int64, Float64, Float64, Any, Any}} with 341 entries:
(71, 175) => ("¹⁷⁵Lu", "lutetium", 71, 175, 104, 5.37, 174.941, 7//2, 1, 1.0e…
(40, 92) => ("⁹²Zr", "zirconium", 40, 92, 52, 4.3057, 91.905, 0, 1, 1.0e100,…
(48, 111) => ("¹¹¹Cd", "cadmium", 48, 111, 63, 4.5845, 110.904, 1//2, 1, 1.0e…
(72, 176) => ("¹⁷⁶Hf", "hafnium", 72, 176, 104, 5.3286, 175.941, 0, 1, 1.0e10…
(30, 68) => ("⁶⁸Zn", "zinc", 30, 68, 38, 3.9658, 67.9248, 0, 1, 1.0e100, 0.0…
(76, 184) => ("¹⁸⁴Os", "osmium", 76, 184, 108, 5.3823, 183.952, 0, 1, 5.6e13,…
(54, 129) => ("¹²⁹Xe", "xenon", 54, 129, 75, 4.7775, 128.905, 1//2, 1, 1.0e10…
⋮ => ⋮Example:
julia> get(dictIsotope, (37,87), nothing)
("⁸⁷Rb", "rubidium", 37, 87, 50, 4.1989, 86.90918053, 3//2, -1, 4.97e10, 2.75129, 0.1335, 27.83)
julia> listIsotope(37, 87, fmt=Info)
Isotope: rubidium-87
symbol: ⁸⁷Rb
element: rubidium
atomic number: Z = 37
atomic mass number: A = 87
neutron number: N = 50
rms nuclear charge radius: R = 4.1989 fm
atomic mass: M = 86.90918053 amu
nuclear spin: I = 3/2 ħ
parity of nuclear state: π = odd
nuclear magnetic dipole moment: μI = 2.75129 μN
nuclear electric quadrupole moment: Q = 0.1335 barn
relative abundance: RA = 27.83%
lifetime: 4.97e10 yearsAtom
CamiXon.Atom — TypeAtom(Z, A, Q, Zc, element, isotope, config)Type with fields:
.Z: atomic number (::Int).A: atomic mass number in amu (::Int).Q: ionic charge in a.u. (::Int).Zc: Rydberg charge in a.u. (::Int).element: (::Element).isotope: (::Isotope).config: electron configuration (::String)
The type Atom is best created with the function castAtom.
CamiXon.castAtom — MethodcastAtom(;Z=1, A=1, Q=0, msg=false)
castAtom(elt::String; A=1, Q=0, msg=false)Create Atom with fields:
.Z: atomic number (::Int).A: atomic mass number in amu (::Int).Q: ionic charge in a.u. (::Int).Zc: Rydberg charge in a.u. (::Int).element: (::Element).isotope: (::Isotope).config: electron configuration (::String)
elt: symbolic element name
Examples:
julia> castAtom("Rb"; A=87, Q=0) == castAtom(Z=37, A=87, Q=0)
true
julia> castAtom(Z=1, A=3, Q=0)
Atom(1, 3, 0, 1, Element("hydrogen", "H", 1.008), Isotope("³T", "tritium", 1, 3, 2, 1.7591, 3.016049281, 1//2, 1, 12.33, 2.97896246, 0.0, nothing), "1s¹")
julia> atom = castAtom(Z=1, A=3, Q=0, msg=true);
Element created: H, hydrogen, Z=1, weight=1.008
Isotope created: ³T, tritium, Z=1, A=3, N=2, R=1.7591, M=3.016049281, I=1/2⁺, μI=2.97896246, Q=0.0, RA=trace, (radioactive)
Atom: tritium, neutral atom
symbol: ³T
atomic charge: Z = 1
Rydberg charge: Zc = 1
electron configuration: 1s¹
Atom created: Atom: tritium, neutral atom
symbol: ³T
atomic charge: Z = 1
Rydberg charge: Zc = 1
electron configuration: 1s¹
julia> atom
Atom(1, 3, 0, 1, Element("hydrogen", "H", 1.008), Isotope("³T", "tritium", 1, 3, 2, 1.7591, 3.016049281, 1//2, 1, 12.33, 2.97896246, 0.0, nothing), "1s¹")
julia> string(atom.isotope.T½) * " seconds"
"12.33 seconds"CamiXon.listAtom — MethodlistAtom(Z::Int, A::Int, Q::Int[; fmt=Object])Properties of atom with atomic number Z, atomic mass number A, ionic charge Q.
Output options: fmt = Object (default), String, Info.
Example:
julia> listAtom("H", 3, 0) == listAtom(1, 3, 0)
true
julia> listAtom(1, 3, 0; fmt=Info)
Atom: tritium, neutral atom
symbol: ³T
atomic charge: Z = 1
Rydberg charge: Zc = 1CamiXon.listAtoms — MethodlistAtoms(Z1::Int, Z2::Int, Q::Int[; fmt=Object])Properties of atoms with atomic number in the range Z1:Z3 and ionic charge Q.
Output options: fmt = Object (default), String, Info.
Example
julia> listAtoms(1,3,0) == listAtoms(1:3,0)
true
julia> listAtoms(1:1, 0; fmt=Info);
Atom: hydrogen, neutral atom
symbol: ¹H
atomic charge: Z = 1
Rydberg charge: Zc = 1
Atom: deuterium, neutral atom
symbol: ²D
atomic charge: Z = 1
Rydberg charge: Zc = 1
Atom: tritium, neutral atom
symbol: ³T
atomic charge: Z = 1
Rydberg charge: Zc = 1Dictionaries
CamiXon.dictAtomicNumber — ConstantdictAtomicNumberjulia> dictAtomicNumber
Dict{String, Int64} with 102 entries:
"Pd" => 46
"Si" => 14
"C" => 6
"P" => 15
"Nb" => 41
⋮ => ⋮Examples:
julia> Z = get(dictAtomicNumber, "Rb", nothing)
37
julia> listElement(Z; fmt=Info)
Element: rubidium
symbol: Rb
atomic number: Z = 37
atomic weight (relative atomic mass): 85.468CamiXon.dictCoreConfiguration — ConstantdictCoreConfigurationClosed-shell configuration for the elements in the periodic table.
julia> dictCoreConfiguration
Dict{String, String} with 15 entries:
"[Ne]" => "1s²2s²2p⁶"
"[Cd]" => "1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²4d¹⁰"
"[Sr]" => "1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²"
"[Yb]" => "1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²4d¹⁰5p⁶6s²4f¹⁴"
"[Mg]" => "1s²2s²2p⁶3s²"
"[Ba]" => "1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²4d¹⁰5p⁶6s²"
"[Xe]" => "1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²4d¹⁰5p⁶"
⋮ => ⋮Examples:
julia> dict = dictCoreConfiguration;
julia> get(dict, "[Yb]", nothing)
"1s²2s²2p⁶3s²3p⁶3d¹⁰4s²4p⁶5s²4d¹⁰5p⁶6s²4f¹⁴"CamiXon.dictConfiguration — ConstantdictConfigurationElectronic ground state configurations for an atom of given (Z, Q).
julia> dictConfiguration
Dict{Int64, String} with 102 entries:
(5, 0) => "[Be]2p¹"
(56, 0) => "[Ba]"
(35, 0) => "[Zn]4p⁵"
(55, 0) => "[Na]6s¹"
(60, 0) => "[Ba]4f⁴"
(30, 0) => "[Zn]"
(32, 0) => "[Zn]4p²"
⋮ => ⋮Examples:
julia> Z, Q = (get(dictAtomicNumber, "Ta", nothing), 0)
(73, 0)
julia> dict = dictConfiguration;
julia> get(dict, (Z, Q), nothing)
"[Yb]5d³"