Atomic properties of neutral Sr
In this example, we will utilize the pCI-py scripts detailed here to calculate energies, \(E1\) reduced matrix elements, and dc and ac polarizabilities for the \(^1S_0\) state of neutral Sr.
We treat Sr as a divalent ion, constructing the basis set in the \(V^{N-2}\) approximation, where \(N\) is the number of electrons. The basis.py script will construct a basis set in both CI+all-order and CI+MBPT approximations, in their respective directories. Both are constructed as non-diagonalized basis sets in a spherical cavity radius of 70 a.u. The initial HFD self-consistency procedure is carried out for the core \(1s\), \(2s\), \(2p\), \(3s\), \(3p\), \(3d\), \(4s\), and \(4p\) orbitals, and then the valence \(5s\), \(5p\), \(4d\), \(6s\), \(6p\), \(5d\), \(7s\), \(7p\), and \(6d\) orbitals are constructed in the frozen-core potential. The remaining virtual orbitals are formed using 40 B-spline orbitals of order 7, including partial waves up to \(l=5\). The coupled-cluster equations are then solved to all-order and to second-order in the respective directories. These basis set is stored in the file HFD.DAT, while corrections from all-order and MBPT are stored in the form of effective radial integrals in the files SGC.CON and SCRC.CON.
Next, the ci.py script generates lists of configurations by exciting electrons from the odd-parity \(5s 5p\) and even-parity \(5s^2\) configurations to all orbitals up to \(17spdfg\), then run the CI computations. The energies and wave functions of the lowest 12 states with \(J=1\) are calculated for the odd-parity CI run, and the lowest 24 with \(J=0\) for the even-parity CI run.
The dtm.py script is then run to calculate \(E1\) reduced matrix elements, including RPA corrections. In config.yml we specify transitions from the first 3 odd states to the first even state. This will compute reduced matrix elements for the \(^3P_1^o-\,^1S_0\) and \(^1P_1^o-\,^1S_0\) transitions. Running dtm, we obtain \(|\langle ^3P_1^o || E1 || ^1S_0\rangle|=0.155\) a.u. and \(|\langle ^1P_1^o || E1 || ^1S_0\rangle|=5.275\) a.u.
Finally, the pol.py script is run to calculate dc and ac valence polarizabilities for the \(^1S_0\) state. Doing so, we obtain dc polarizability \(\alpha(^1S_0)=192.78\) a.u., and ac polarizability \(\alpha(^1S_0)=242.97\) a.u. at \(\lambda=1000\) nm. To calculate polarizabilities for the $^3P_0^o$ state, one has to set pol.parity to odd, then swap the values of conf.odd.J and conf.odd.JM with conf.even.J and conf.even.JM. The ci.py script is re-run to calculate wave functions in the respective projections, and then pol.py is re-run to obtain polarizabilities.
As an extra test, one can calculate valence polarizabilities for the \(^3P_1^o\) state by setting conf.odd.J and conf.odd.JM to 1, conf.even.J and conf.even.JM to 0, and re-running pol.py. Doing so, we obtain scalar polarizability \(\alpha_0(^3P_1)=194.84\) a.u., vector polarizability \(\alpha_2(^3P_1)=23.45\) a.u., and total ac polarizability \(\alpha(^3P_1)=218.29\) a.u. at \(\lambda=1000\) nm.
Higher precision of the polarizabilities can be attained by including core polarizabilities, which are calculated with a different program not included in this work.
config.yml
The config.yml file defines the entire calculation from beginning to end using the pCI-py scripts. A detailed explanation of the contents of this configuration file can be found here.
Click here to see config.yml
The sample configuration file we used for this calculation can be downloaded here.
# System parameters
system:
bin_directory: ""
generate_directories: False
run_codes: True
on_hpc: True
pci_version: default
# HPC parameters
hpc:
partition: large-mem
nodes: 1
tasks_per_node: 64
submit_job = False
# Atomic information
atom:
name: Sr
isotope:
include_breit: True
code_method: [ci+all-order, ci+second-order]
# Parameters used by basis programs
basis:
cavity_radius: 70
diagonalized: True
orbitals:
core: 1s 2s 2p 3s 3p 3d 4s 4p
valence: 5s 5p 4d 6s 6p 5d 7s 7p 6d
nmax: 35
lmax: 5
b_splines:
nmax: 40
lmax: 6
k: 7
val_aov:
s: 5
p: 5
d: 5
f: 3
val_energies:
kval: 1
energies:
s: -0.28000
p: [-0.22000, -0.22000]
d: [-0.31000, -0.31000]
f: [-0.13000, -0.13000]
# Parameters used by add program
add:
# Lists of even and odd parity reference configurations
ref_configs:
odd: [5s1 5p1]
even: [5s2]
basis_set: 17spdfg
orbitals:
core: 1s 2s 2p 3s 3p 3d 4s 4p
active: [
4-7p: 0 4,
4-7d: 0 4,
4-7f: 0 4,
5-7g: 0 4,
]
excitations:
single: True
double: True
triple: False
# Parameters used by conf program
conf:
odd:
J: 1.0
JM: 1.0
J_selection: False
num_energy_levels: 12
num_dvdsn_iterations: 50
even:
J: 0.0
JM: 0.0
J_selection: False
num_energy_levels: 24
num_dvdsn_iterations: 50
include_lsj: True
write_hij: True
# Parameters used by dtm program
dtm:
include_rpa: True
DM:
matrix_elements:
level_range:
odd:
even:
TM:
matrix_elements: E1
from:
parity: odd
level_range: 1 3
to:
parity: even
level_range: 1 1
# Parameters used by pol program
pol:
parity: even
level: 1
method: 1
field_type: static, dynamic
wavelength_range: 1000 1000
step_size: 0
# Optional parameters
optional:
qed:
include: False
isotope_shifts:
include: False
K_is: 0
C_is: 0