Orbital properties

Configuration tools

CamiXon.extractCoreMethod
extractCore(config::String)

Extract core configuration from config given in compact configuration notation

Example

julia> extractCore("[Ar]4s¹")
"1s²2s²2p⁶3s²3p⁶"
source
CamiXon.extractValenceMethod
extractValence(config::String)

Extract valence configuration from config given in compact configuration notation

Example

julia> extractValence("[Ar]4s¹")
"4s¹"
source
CamiXon.collectConfigMethod
collectConfig(config::String)

Example:

julia> collectConfig("[Be]2p¹") == ["1s↓0", "1s↑0", "2s↓0", "2s↑0", "2p↓-1"]
true

julia> julia> collectConfig("1s↑1s↓02p↑-1") == ["1s↑", "1s↓0", "2p↑-1"]
true
source

Orbital

CamiXon.dictAtomicOrbitalConstant
dictAtomicOrbital

Example:

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)
source
CamiXon.OrbitType
Orbit(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.

source
CamiXon.castOrbitMethod
castOrbit(;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)
source

Spinorbital

CamiXon.SpinorbitType
Spinorbit

Type 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.

source
CamiXon.castSpinorbitMethod
castSpinorbit(;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)
source
CamiXon.collectSpinorbitMethod
collectSpinorbit(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)
source

Shells

CamiXon.ShellType
Shell(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.

source
CamiXon.castShellMethod
castShell(;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=1, ℓ=0, msg=true)
Shell: 3s²
    number of shell electrons: N = 2
    principal quantum number: n = 3
    orbital angular momentum of electrons: ℓ = 0
Shell("3s²", Spinorbit[Spinorbit("3s↓", Orbit("3s", 3, 2, 0, 0), -1//2), Spinorbit("3s↑", Orbit("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)])
source
CamiXon.ShellsType
Shells(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.

source
CamiXon.castShellsMethod
castShells(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: ℓ = 0
source

Term

CamiXon.TermType
Term(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.

source
CamiXon.castTermMethod
castTerm(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)
source