pol - polarizabilities
The pol program calculates the dc and ac polarizabilities of the specified atomic states. The expression for electric-dipole ac polarizability at the frequency \(\omega\) of the state \(|JM\rangle\) can be written (in a.u.) as a sum over unperturbed intermediate states \(n\),
where \(D\) is an electric dipole moment operator and \(E\) and \(E_n\) are the energies of the initial and intermediate states, respectively.
To find \(\alpha\), we can rewrite this expression as
Then we use the Sternheimer[1] or Dalgarno-Lewis[2] method and solve the inhomogeneous equations
to find \(|\delta \phi_{\pm} \rangle\),
where \(H\) is the Hamiltonian, and we use the closure relation \(\sum_n | n \rangle \langle n | = 1\). After that, the polarizability can be found as the sum of two matrix elements
If electrons in an atomic system are divided into valence and core electrons, the polarizability can be divided accordingly as
where \(\alpha_v\) and \(\alpha_c\) are the valence and core contributions.
The program pol calculates only the valence polarizability \(\alpha_v\). The core polarizability needs to be computed separately with a different program.
Disregarding the vector polarizability, we can present the expression for \(\alpha(\omega)\) as the sum of the scalar and tensor parts,
The pol program gives both scalar and tensor polarizabilities if the latter is not zero.
This program requires several input files from previously run pconf and pdtm programs, including CONF.DET and CONF.XIJ of the parity of the level of interest (renamed to CONF0.DET and CONF0.XIJ), CONF.INP, CONF.XIJ, CONF.HIJ, and CONF.JJJ of the opposite parity, and the file DTM.INT from pdtm.
For example, if we want to calculate polarizabilities for an even state:
cp CONFeven.DET CONF0.DET
cp CONFeven.XIJ CONF0.XIJ
cp CONFodd.INP CONF.INP
cp CONFodd.XIJ CONF.XIJ
cp CONFodd.HIJ CONF.HIJ
cp CONFodd.JJJ CONF.JJJ
Note that the pconf program outputs CONFp.HIJ and CONFp.JJJ files, but not the CONF.HIJ and CONF.JJJ files. The only difference between these files is that the former are not sorted and require the additional sort program to process them in the latter.
The pol program requires a list of key-value parameters in a file pol.in:
Mode = (0, 1)
Method = (0, 1, 2)
Level = (energy level index)
Ranges = (list of ranges of wavelengths)
IP1 = (dimension of initial matrix)
The value of Mode can take the following values:
Mode = 0- start a new calculationMode = 1- continue the calculation
The value of Method cane take the following values:
Method = 0- invert the matrix and iterate if divergedMethod = 1- only invert the matrixMethod = 2- modified iteration procedure where computation restarts after every 2 iterations while retaining vectors (used in cases whereMethod = 0diverges)
The value of Levels is the ordinal number of the vector in the CONF0.XIJ file corresponding to the energy level for which the user wants to calculate the polarizability.
The Ranges field takes in a list of wavelength ranges with step size in the format initial_wavelength final_wavelength step_size, separated by commas.
The value of IP1 sets the dimension of the initial approximation of the matrix (by default, this is set to IP1=15000).
For example, to calculate dc polarizabilities, as well as ac polarizabilities from \(\lambda=500\) nm to \(\lambda=505\) nm in steps of \(0.5\) nm, for the first state in CONF0.XIJ, we can use the following pol.in:
Mode = 0
Method = 0
Level = 1
Ranges = 0 0 0, 500 505 0.5
The range 0 0 0 corresponds to calculations of dc polarizabilities, while 500 505 0.5 corresponds to calculating ac polarizabilities from \(\lambda=500\) nm to \(\lambda=505\) nm in steps of \(0.5\) nm.
Before parallel pol can be run, the parallel matrix files CONFp.HIJ and CONFp.JJJ have to be sorted. This can be done using the sort program.
Running pol
To run pol, run the command:
pol
References