pdtm - density transition matrix

The pdtm program calculates matrix elements of one-electron operators between many-electron states, under the density (or transition) matrix formalism. This formalism allows us to express the matrix elements between many-electron states via one-electron matrix elements. The pdtm program forms these reduced density (or transition) matrices and calculates the reduced matrix elements. The following quantities can be calculated from this program:

  • electron g-factors

  • magnetic dipole and electronic quadrupole hyperfine structure constants \(A\) and \(B\)

  • electric \(Ek\) and magnetic \(Mk\) multipole transition amplitudes, where \(k = 1,2,3\) corresponds to the dipole, quadrupole, and octupole transitions

  • nuclear spin independent parity nonconserving PNC amplitude

  • amplitude of the electron interaction with the P-odd nuclear anapole moment AM

  • P, T-odd interaction of the dipole electric dipole moment

  • nucleus magnetic quadrupole moment

This program begins by reading the file CONF.INP for system parameters and the list of configurations. Next, basis radial orbitals are read from the file CONF.DAT, and radial integrals for all operators are calculated and written to the file DTM.INT. If this file already exists, pdtm uses it and does not recalculate the radial integrals.

For the diagonal matrix elements, the list of determinants and eigenvectors corresponding to the state of interest are read from the files CONF.DET and CONF.XIJ, respectively. For the non-diagonal matrix elements, the initial state is read from the file CONF.DET and CONF.XIJ, and the final state is read from the files CONF1.DET and CONF1.XIJ. The results of the diagonal and non-diagonal matrix elements are written to the files DM.RES and TM.RES, respectively.

pdtm takes in the input file dtm.in:

Mode = (DM, TM, Init)                           # DM - density matrix, TM - transition matrix, Init - form DTM.INT
Levels = level_range_from (level_range_to)      # from level_range_from to level_range_to
Operators = E1                                  # form final tables of listed operators

The value of Mode can take the following values:

  • DM - form density matrix and calculate diagonal matrix elements

  • TM - form transition matrix and calculate non-diagonal matrix elements

  • Init - create the file DTM.INT, which is used for rpa_dtm and pol programs

The value of Levels can take in a range of levels depending on whether Mode was specified as DM or TM. The following are some examples.

To calculate DM for energy levels 1 to 5, with a table of g-factors:

Mode = DM
Levels = 1 5
Operators = GF

To calculate TM for energy levels 1 to 4 from CONF.XIJ to energy levels 4 to 9 from CONF1.XIJ, with tables of \(E1\) and \(M2\) reduced matrix elements:

Mode = TM
Levels = 1 5, 4 9
Operators = E1, M2

The value of Operators takes in a list of operators to produce a final table for.

Note

Levels and Operators is not read if Mode == Init.

Note

Some \(3J\)-coefficients might be zero in some cases, such as trying to compute \(E1\) matrix element for \(5s^2\, {}^1S_0 \rightarrow 5s5p\,{}^3P_1\). This will fail if the odd run had \(J=0\), \(M_J=0\). One needs to re-run CI with \(J=1\), \(M_J=1\).

Running dtm

To run parallel pdtm, run the command:

mpirun -n <nprocs> ./dtm