X2C and local X2C¶
This tutorial briefly demonstrates the keywords and their usage to invoke the exact two-component (X2C) Hamiltonian and a local X2C variant of it in Dirac. The current available implementation and other features which will be part of the next release Dirac2014 are described in [Knecht2014].
A recent and comprehensive review on the topic of relativistic Hamiltonians for chemistry can be found in [Saue2011] by
Trond Saue. The central idea of any decoupling approach is to generate a two-component Hamiltonian that reproduces the positive-energy spectrum
of the parent four-component Hamiltonian in the best possible way. This goal may be achieved by
a unitary transformation
Popular choices to obtain a unitary transformation matrix
it is mandatory to also transform the parent four-component property-operator
since otherwise we would introduce (significant) errors (‘picture-change errors’) by simply using the approximate relation
X2C¶
X2C with spin-same-orbit two-electron corrections¶
To invoke the X2C Hamiltonian
**HAMILTONIAN
.X2C
This includes by default atomic-mean-field two-electron spin-same-orbit corrections from the AMFI module.
X2C with spin-same-orbit and spin-other-orbit two-electron corrections¶
To add spin-other-orbit corrections (Gaunt term of the Breit interaction) use:
**HAMILTONIAN
.X2C
.GAUNT
spinfree X2C¶
In the spinfree case one should use:
**HAMILTONIAN
.X2C
.SPINFREE
local X2C¶
For large systems the diagonalisation of the Dirac Hamiltonian — which is an essential step in the derivation of the
unitary transformation matrix
In order to benefit from the above DLU approach in Dirac which at present works only for C1 symmetry we need to first carry
out the atomic calculations and save the atomic
**DIRAC
.TITLE
atomic X2C - U matrix construction
**HAMILTONIAN
.X2C
**WAVE FUNCTION
*SCF
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
*SYMMETRY
.NOSYM
**INTEGRALS
*READIN
.UNCONTRACT
**END OF
Note the use of .NOSYM to enforce C1 symmetry in the atomic run even for an atom. A possible corresponding xyz input for an atom (here Cl) would look like:
1
chlorine atom XYZ file
Cl 0.0 0.0 0.0
We save the file X2CMAT containing the atomic
$ ./pam --inp=atom.inp --mol=carbon.xyz --get=X2CMAT
$ mv X2CMAT X2CMAT.006
After we have created all atomic
**DIRAC
.TITLE
local X2C based on atomic U matrices
.WAVE FUNCTION
**HAMILTONIAN
.X2C
*X2C
.fragX2C
**WAVE FUNCTION
.SCF
*SCF
...
...
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
*SYMMETRY
.NOSYM
**INTEGRALS
*READIN
.UNCONTRACT
**END OF
This input should be used with the following pam line:
$ ./pam ... --put=X2CMAT.* --mw=200
In this DLU approach proposed by Peng and Reiher [Peng2012] the molecular