Orbital properties
Configuration tools
CamiXon.expandConfig — MethodexpandConfig(config::String; Err=true)Expand configuration into Array of shell configurations.
Example
julia> expandConfig("[Ar]4s¹") == ["1s²", "2s²", "2p⁶", "3s²", "3p⁶", "4s¹"]
trueCamiXon.formatConfig — MethodformatConfig(config::String)format configuration in hydrogenic ordering
Example
julia> formatConfig("[Ar]4s¹")
"1s²2s²2p⁶3s²3p⁶"CamiXon.splitConfig — MethodsplitConfig(config::String; Err=true)Expand configuration into Array of shell configurations.
Example
julia> splitConfig("[Ar]4s¹") == (["1s²", "2s²", "2p⁶", "3s²", "3p⁶"], ["4s¹"])
trueCamiXon.collectConfig — MethodcollectConfig(config::String)Example:
julia> collectConfig("[Be]2p¹") == ["1s↓0", "1s↑0", "2s↓0", "2s↑0", "2p↓-1"]
true
julia> collectConfig("1s²2p¹") == ["1s↓0", "1s↑0", "2p↓-1"]
trueCamiXon.listConfigurations — MethodlistConfigurations(Z1::Int, Z2::Int; Q=0)List of groundstate configurations of atoms with atomic charge Q.
Example
julia> listConfigurations(1:4; Q=0)
(1, " 1s¹", "1s¹")
(2, "1s² ", "[He]")
(3, "1s² 2s¹", "[He]2s¹")
(4, "1s²2s² ", "[Be]")Orbital
CamiXon.dictAtomicOrbital — ConstantdictAtomicOrbitalExample:
julia> dictAtomicOrbital
Dict{String, Tuple{Int64, Int64}} with 15 entries:
"4d" => (4, 2)
"5f" => (5, 3)
"3p" => (3, 1)
"4p" => (4, 1)
"5d" => (5, 2)
⋮ => ⋮
julia> n, l = get(dictAtomicOrbital, "3d", nothing)
(3, 2)CamiXon.Orbit — TypeOrbit(name, n, n′, ℓ, mℓ)Type for specification of atomic orbitals with fields:
.name: name.n: principal quantum number.n′: radial quantum number (number of nodes in radial wavefunction).ℓ: orbital angular momentum valence electron.mℓ: orbital angular momentum projection valence electron
The type Orbit is best created with the function castOrbit.
CamiXon.castOrbit — MethodcastOrbit(;n=1, ℓ=0, mℓ=0, msg=true)Create Orbit with fields:
.name: name.n: principal quantum number.n′: radial quantum number (number of nodes in radial wavefunction).ℓ: orbital angular momentum valence electron.mℓ: orbital angular momentum projection valence electron
Example:
julia> castOrbit(n=1, ℓ=0; msg=true)
Orbital: 1s
principal quantum number: n = 1
radial quantum number: n′ = 0 (number of nodes in radial wavefunction)
orbital angular momentum of valence electron: ℓ = 0
orbital angular momentum projection of valence electron: mℓ = 0
Orbit("1s", 1, 0, 0, 0)castOrbit(strOrbit::String; mℓ=0, msg=false)Example:
julia> castOrbit("2p"; mℓ=-1, msg=true)
Orbital: 2p
principal quantum number: n = 2
radial quantum number: n′ = 0 (number of nodes in radial wavefunction)
orbital angular momentum of valence electron: ℓ = 1
orbital angular momentum projection of valence electron: mℓ = -1
Orbit("2p", 2, 0, 1, -1)Spinorbital
CamiXon.Spinorbit — TypeSpinorbitType for specification of atomic Spinorbitals with fields:
.name: spinorbital name (string).n: principal quantum number.n′: radial quantum number (number of nodes in radial wavefunction).ℓ: orbital angular momentum valence electron.mℓ: orbital angular momentum projection valence electron.ms: spin magnetic quantum number (Rational{Int})
The type Spinorbit is best created with the function castSpinorbit.
CamiXon.castSpinorbit — MethodcastSpinorbit(;n=1, ℓ=0, mℓ=0, up=true, msg=false)Create Spinorbit with fields:
.name: spinorbital name (string).n: principal quantum number.n′: radial quantum number (number of nodes in radial wavefunction).ℓ: orbital angular momentum valence electron.mℓ: orbital angular momentum projection valence electron.ms: spin magnetic quantum number (Rational{Int})
Example:
julia> castSpinorbit(n=1, ℓ=0, msg=true)
Spinorbital: 1s↑
principal quantum number: n = 1
radial quantum number: n′ = 0 (number of nodes in radial wavefunction)
orbital angular momentum of valence electron: ℓ = 0
orbital angular momentum projection of valence electron: mℓ = 0
spin magnetic quantum number: ms = 1/2
Spinorbit("1s↑", 1, 0, 0, 0, 1//2)castSpinorbit(config::String; msg=false)Example:
julia> castSpinorbit1("2p"; msg=true)
Spinorbital: 2p↓
principal quantum number: n = 2
radial quantum number: n′ = 0 (number of nodes in radial wavefunction)
orbital angular momentum of valence electron: ℓ = 1
orbital angular momentum projection of valence electron: mℓ = 1
spin magnetic quantum number: ms = -1/2
Spinorbit("2p↓", 2, 0, 1, 1, -1//2)
julia> castSpinorbit1("2p↑-1"; msg=true)
Spinorbital: 2p↑
principal quantum number: n = 2
radial quantum number: n′ = 0 (number of nodes in radial wavefunction)
orbital angular momentum of valence electron: ℓ = 1
orbital angular momentum projection of valence electron: mℓ = -1
spin magnetic quantum number: ms = 1/2
Spinorbit("2p↑", 2, 0, 1, -1, 1//2)CamiXon.collectSpinorbit — MethodcollectSpinorbit(config::String; msg=false)Collect the spinobitals specified by config (in standard configuration notation) into an array of spinorbitals.
Example:
julia> config = "1s²2s²2p⁶";
julia> collectSpinorbit(config; msg=true)
10-element Vector{Spinorbit}:
Spinorbit("1s↓", 1, 0, 0, 0, -1//2)
Spinorbit("1s↑", 1, 0, 0, 0, 1//2)
Spinorbit("2s↓", 2, 1, 0, 0, -1//2)
Spinorbit("2s↑", 2, 1, 0, 0, 1//2)
Spinorbit("2p↓", 2, 0, 1, -1, -1//2)
Spinorbit("2p↓", 2, 0, 1, 0, -1//2)
Spinorbit("2p↓", 2, 0, 1, 1, -1//2)
Spinorbit("2p↑", 2, 0, 1, -1, 1//2)
Spinorbit("2p↑", 2, 0, 1, 0, 1//2)
Spinorbit("2p↑", 2, 0, 1, 1, 1//2)Shells
CamiXon.Shell — TypeShell(name, spinorbitals)Type for specification of closed electron shells with fields:
.name: shell configuration (::String).spinorbit: Array of spinorbitals (::Vector{Spinorbit})
The type Shell is best created with the function castShell.
CamiXon.castShell — MethodcastShell(;n=1, ℓ=0, msg=false)Create closed electron Shell with fields:
.name: shell configuration (::String).spinorbit: Array of Spinorbitals (::Vector{Spinorbit})
Example:
julia> castShell(n=3, ℓ=0, msg=true)
Shell configuration: 3s²
shell occupation: wl = 2 electrons
principal quantum number: n = 3
orbital angular momentum of electrons: ℓ = 0
Shell("3s²", Spinorbit[Spinorbit("3s↓", 3, 2, 0, 0, -1//2), Spinorbit("3s↑", 3, 2, 0, 0, 1//2)])castShell(strShell::String; msg=false)Example:
julia> castShell("3s", msg=false)
Shell("3s²", Spinorbit[Spinorbit("3s↓", Orbit("3s", 3, 2, 0, 0), -1//2), Spinorbit("3s↑", Orbit("3s", 3, 2, 0, 0), 1//2)])CamiXon.Shells — TypeShells(name, shells)Type for specification of closed electron Shells with fields:
.name: shell configuration (::String).count: number of shells (::Int).n: array of shell principal quantum numers (Vector{Int}).ℓ: array of shell angular momenta (::Vector{Int}).shell: Array of Shells (::Vector{Shell})
The type Shells is best created with the function castShells.
CamiXon.castShells — MethodcastShells(strShells::String; msg=false)Create configuration of closed electron Shells with fields:
.name: shell configuration (::String).count: number of shells (::Int).n: array of shell principal quantum numers (Vector{Int}).ℓ: array of shell angular momenta (::Vector{Int}).shell: Array of Shells (::Vector{Shell})
Example:
julia> castShells("1s2s",msg=true);
Shell: 1s²
number of shell electrons: N = 2
principal quantum number: n = 1
orbital angular momentum of electrons: ℓ = 0
Shell: 2s²
number of shell electrons: N = 2
principal quantum number: n = 2
orbital angular momentum of electrons: ℓ = 0Term
CamiXon.Term — TypeTerm(name::String, n::Int, ℓ::Int, S::Real, L::Int, J::Real)Type for specification of atomic fine-structure Terms with fields:
name: name.n: principal quantum number.n′: radial quantum number (number of nodes in wavefunction).ℓ: orbital angular momentum valence electron.S: total electron spin in units of ħ.L: total orbital angular momentum in units of ħ.J: total electronic angular momentum in units of ħ
The type Term is best created with the function castTerm.
CamiXon.castTerm — MethodcastTerm(n::Int; ℓ=0, S=1//2, L=0, J=1//2, msg=false)Specify Term in the Term notatation with fields:
.n: principal quantum number.n′: radial quantum number (number of nodes - autogenerated).ℓ: orbital angular momentum valence electron.S: total electron spin.L: total orbital angular momentum.J: total electronic angular momentum
Examples:
julia> castTerm(1; ℓ=0, S=1//2, L=0, J=1//2, msg=true)
Term created: 1s ²S₁⸝₂; n = 1, n′ = 0, ℓ = 0, S = 1//2, L = 0, J = 1//2
Term("1s ²S₁⸝₂", 1, 0, 0, 1//2, 0, 1//2)