using AtomicLevelsThe ground state of hydrogen and helium:
c"1s",(c"1s2",c"[He]")(1s, (1s², [He]ᶜ))
The ground state configuration of xenon, in relativistic notation:
Xe = rc"[Kr] 5s2 5p6"[Kr]ᶜ 5s² 5p-² 5p⁴
As we see above, by default, the krypton core is declared
“closed”. This is useful for calculations when the core should be
frozen. We can “open” it by affixing *:
Xe = c"[Kr]* 5s2 5p6"1s² 2s² 2p-² 2p⁴ 3s² 3p-² 3p⁴ 3d-⁴ 3d⁶ 4s² 4p-² 4p⁴ 5s² 5p-² 5p⁴
Note that the 5p shell was broken up into 2 5p- electrons and 4 5p electrons. If we are not filling the shell, occupancy of the spin-up and spin-down electrons has to be given separately:
Xe⁺ = rc"[Kr] 5s2 5p-2 5p3"[Kr]ᶜ 5s² 5p-² 5p³
It is also possible to work with “continuum orbitals”, where the
main quantum number is replaced by a Symbol:
Xe⁺e = rc"[Kr] 5s2 5p-2 5p3 ks"[Kr]ᶜ 5s² 5p-² 5p³ ks
A single orbital is constructed this way:
o"2s",ro"5f-"(2s, 5f-)
Their parities and degeneracies are given by
(parity(ro"2s"),degeneracy(ro"2s")),(parity(ro"5f-"),degeneracy(ro"5f-"))((even, 2), (odd, 6))
It is possible to generate a range of orbitals quickly:
os"5[d] 6[s-p] k[7-10]"7-element Array{Orbital,1}:
5d
6s
6p
kk
kl
km
kn
ros"5[d] 6[s-p] k[7-10]"13-element Array{RelativisticOrbital,1}:
5d-
5d
6s
6p-
6p
kk-
kk
kl-
kl
km-
km
kn-
kn
We can easily generate all possible excitations from a reference configuration. If no extra orbitals are specified, only those that are “open” within the reference set will be considered:
excited_configurations(rc"[Kr] 5s2 5p-2 5p3")2-element Array{Configuration{RelativisticOrbital{Int64}},1}:
[Kr]ᶜ 5s² 5p-² 5p³c
[Kr]ᶜ 5s² 5p- 5p⁴
By appending virtual orbitals, we can generate excitations to configurations beyond those spanned by the reference set:
excited_configurations(rc"[Kr] 5s2 5p-2 5p3", ros"5[d] 6[s-p]"...)64-element Array{Configuration{RelativisticOrbital{Int64}},1}:
[Kr]ᶜ 5s² 5p-² 5p³
[Kr]ᶜ 5s 5p-² 5p³ 5d-
[Kr]ᶜ 5s 5p-² 5p³ 5d
[Kr]ᶜ 5s 5p-² 5p³ 6s
[Kr]ᶜ 5s² 5p- 5p⁴
[Kr]ᶜ 5s² 5p- 5p³ 6p-
[Kr]ᶜ 5s² 5p- 5p³ 6p
[Kr]ᶜ 5s² 5p-² 5p² 6p-
[Kr]ᶜ 5s² 5p-² 5p² 6p
[Kr]ᶜ 5p-² 5p⁴ 6p-
[Kr]ᶜ 5p-² 5p⁴ 6p
[Kr]ᶜ 5s 5p- 5p⁴ 5d-
[Kr]ᶜ 5s 5p- 5p⁴ 5d
[Kr]ᶜ 5s 5p- 5p⁴ 6s
[Kr]ᶜ 5p-² 5p³ 5d-²
[Kr]ᶜ 5p-² 5p³ 5d- 5d
[Kr]ᶜ 5p-² 5p³ 5d- 6s
[Kr]ᶜ 5s 5p- 5p³ 5d- 6p-
[Kr]ᶜ 5s 5p- 5p³ 5d- 6p
[Kr]ᶜ 5s 5p-² 5p² 5d- 6p-
[Kr]ᶜ 5s 5p-² 5p² 5d- 6p
[Kr]ᶜ 5p-² 5p³ 5d²
[Kr]ᶜ 5p-² 5p³ 5d 6s
[Kr]ᶜ 5s 5p- 5p³ 5d 6p-
[Kr]ᶜ 5s 5p- 5p³ 5d 6p
[Kr]ᶜ 5s 5p-² 5p² 5d 6p-
[Kr]ᶜ 5s 5p-² 5p² 5d 6p
[Kr]ᶜ 5p-² 5p³ 6s²
[Kr]ᶜ 5s 5p- 5p³ 6s 6p-
[Kr]ᶜ 5s 5p- 5p³ 6s 6p
[Kr]ᶜ 5s 5p-² 5p² 6s 6p-
[Kr]ᶜ 5s 5p-² 5p² 6s 6p
[Kr]ᶜ 5p-² 5p³ 6p-²
[Kr]ᶜ 5p-² 5p³ 6p- 6p
[Kr]ᶜ 5p-² 5p³ 6p²
[Kr]ᶜ 5s² 5p⁴ 6p-
[Kr]ᶜ 5s² 5p⁴ 6p
[Kr]ᶜ 5s² 5p³ 5d-²
[Kr]ᶜ 5s² 5p³ 5d- 5d
[Kr]ᶜ 5s² 5p³ 5d- 6s
[Kr]ᶜ 5s² 5p- 5p² 5d-²
[Kr]ᶜ 5s² 5p- 5p² 5d- 5d
[Kr]ᶜ 5s² 5p- 5p² 5d- 6s
[Kr]ᶜ 5s² 5p³ 5d²
[Kr]ᶜ 5s² 5p³ 5d 6s
[Kr]ᶜ 5s² 5p- 5p² 5d²
[Kr]ᶜ 5s² 5p- 5p² 5d 6s
[Kr]ᶜ 5s² 5p³ 6s²
[Kr]ᶜ 5s² 5p- 5p² 6s²
[Kr]ᶜ 5s² 5p³ 6p-²
[Kr]ᶜ 5s² 5p³ 6p- 6p
[Kr]ᶜ 5s² 5p- 5p² 6p-²
[Kr]ᶜ 5s² 5p- 5p² 6p- 6p
[Kr]ᶜ 5s² 5p³ 6p²
[Kr]ᶜ 5s² 5p- 5p² 6p²
[Kr]ᶜ 5s² 5p-² 5p 5d-²
[Kr]ᶜ 5s² 5p-² 5p 5d- 5d
[Kr]ᶜ 5s² 5p-² 5p 5d- 6s
[Kr]ᶜ 5s² 5p-² 5p 5d²
[Kr]ᶜ 5s² 5p-² 5p 5d 6s
[Kr]ᶜ 5s² 5p-² 5p 6s²
[Kr]ᶜ 5s² 5p-² 5p 6p-²
[Kr]ᶜ 5s² 5p-² 5p 6p- 6p
[Kr]ᶜ 5s² 5p-² 5p 6p²
Again, using the “continuum orbitals”, it is possible to generate the state space accessible via one-photon transitions from the ground state:
Xe⁺e = excited_configurations(rc"[Kr] 5s2 5p6", ros"k[s-d]"...,
max_excitations=:singles,
keep_parity=false)16-element Array{Configuration,1}:
[Kr]ᶜ 5s² 5p-² 5p⁴
[Kr]ᶜ 5s 5p-² 5p⁴ ks
[Kr]ᶜ 5s 5p-² 5p⁴ kp-
[Kr]ᶜ 5s 5p-² 5p⁴ kp
[Kr]ᶜ 5s 5p-² 5p⁴ kd-
[Kr]ᶜ 5s 5p-² 5p⁴ kd
[Kr]ᶜ 5s² 5p- 5p⁴ ks
[Kr]ᶜ 5s² 5p- 5p⁴ kp-
[Kr]ᶜ 5s² 5p- 5p⁴ kp
[Kr]ᶜ 5s² 5p- 5p⁴ kd-
[Kr]ᶜ 5s² 5p- 5p⁴ kd
[Kr]ᶜ 5s² 5p-² 5p³ ks
[Kr]ᶜ 5s² 5p-² 5p³ kp-
[Kr]ᶜ 5s² 5p-² 5p³ kp
[Kr]ᶜ 5s² 5p-² 5p³ kd-
[Kr]ᶜ 5s² 5p-² 5p³ kd
We can then query for the bound and continuum orbitals thus:
map(Xe⁺e) do c
b = bound(c)
num_electrons(b) => b
end16-element Array{Pair{Int64,Configuration{RelativisticOrbital{Int64}}},1}:
44 => [Kr]ᶜ 5s² 5p-² 5p⁴
43 => [Kr]ᶜ 5s 5p-² 5p⁴
43 => [Kr]ᶜ 5s 5p-² 5p⁴
43 => [Kr]ᶜ 5s 5p-² 5p⁴
43 => [Kr]ᶜ 5s 5p-² 5p⁴
43 => [Kr]ᶜ 5s 5p-² 5p⁴
43 => [Kr]ᶜ 5s² 5p- 5p⁴
43 => [Kr]ᶜ 5s² 5p- 5p⁴
43 => [Kr]ᶜ 5s² 5p- 5p⁴
43 => [Kr]ᶜ 5s² 5p- 5p⁴
43 => [Kr]ᶜ 5s² 5p- 5p⁴
43 => [Kr]ᶜ 5s² 5p-² 5p³
43 => [Kr]ᶜ 5s² 5p-² 5p³
43 => [Kr]ᶜ 5s² 5p-² 5p³
43 => [Kr]ᶜ 5s² 5p-² 5p³
43 => [Kr]ᶜ 5s² 5p-² 5p³
map(Xe⁺e) do c
b = continuum(c)
num_electrons(b) => b
end16-element Array{Pair{Int64,_1} where _1,1}:
0 => ∅
1 => ks
1 => kp-
1 => kp
1 => kd-
1 => kd
1 => ks
1 => kp-
1 => kp
1 => kd-
1 => kd
1 => ks
1 => kp-
1 => kp
1 => kd-
1 => kd
Angular momentum coupling overview
This is done purely non-relativistic, i.e. 2p- is considered
equivalent to 2p.
terms(c"1s")1-element Array{Term{Int64},1}:
²S
terms(c"[Kr] 5s2 5p5")1-element Array{Term{Int64},1}:
²Pᵒ
terms(c"[Kr] 5s2 5p4 6s 7g")13-element Array{Term{Int64},1}:
¹D
¹F
¹G
¹H
¹I
³D
³F
³G
³H
³I
⁵F
⁵G
⁵H
jj coupling is implemented slightly differently, it calculates the
possible J:s resulting from coupling n equivalent electrons in
all combinations allowed by the Pauli principle.
intermediate_terms(ro"1s", 1)1-element Array{Rational{Int64},1}:
1//2
intermediate_terms(ro"5p", 2)2-element Array{Rational{Int64},1}:
0//1
2//1
intermediate_terms(ro"7g", 3)9-element Array{Rational{Int64},1}:
3//2
5//2
7//2
9//2
11//2
13//2
15//2
17//2
21//2
CSFs are formed from electronic configurations and their possible term couplings (along with intermediate terms, resulting from unfilled subshells).:
sort(vcat(csfs(rc"3s 3p2")..., csfs(rc"3s 3p- 3p")...))7-element Array{CSF{RelativisticOrbital,Rational{Int64}},1}:
3s(1/2|1/2) 3p²(0|1/2)+
3s(1/2|1/2) 3p-(1/2|1) 3p(3/2|1/2)+
3s(1/2|1/2) 3p²(2|3/2)+
3s(1/2|1/2) 3p-(1/2|0) 3p(3/2|3/2)+
3s(1/2|1/2) 3p-(1/2|1) 3p(3/2|3/2)+
3s(1/2|1/2) 3p²(2|5/2)+
3s(1/2|1/2) 3p-(1/2|1) 3p(3/2|5/2)+
- [x] Generate configurations with cores; [He], [Ne], &.
- [ ] Coefficient of fractional parentage
- [ ] Seniority number
- [-] Different coupling schemes
- [X] LS-coupling
- [ ] jk-coupling, e.g., Ne I, first excited state: 1s²2s²2p⁵(²P⁰₃.₂)3s ²[³/₂]⁰₀,₁
- [x] jj-coupling