xamfX2C: Two-electon picture change corrections for the X2C Hamiltonian¶
This tutorial demonstrates the usage and usefulness of the (extended) atomic mean-field two-electron picture-change corrections for the X2C Hamiltonian. For more information on the actual details of the theory and implementation see Ref. [Knecht2022].
Methane ( ) - The ultrarelativistic case¶
In the following example, we will calculate total energies and spinor energies of
CH
For convenience, in the Table below (see also Table IX in Ref. [Knecht2022]),
we summarise the SCF total energy (E) and spinor energies (
E |
-42.14220 |
-42.14039 |
-42.26469 |
-42.25774 |
-42.25850 |
-10.22206 |
-10.22401 |
-10.36154 |
-10.36028 |
-10.35794 |
|
-0.65939 |
-0.65966 |
-0.66288 |
-0.66269 |
-0.66274 |
|
-0.35705 |
-0.35288 |
-0.35649 |
-0.35291 |
-0.35290 |
|
-0.33313 |
-0.33503 |
-0.33282 |
-0.33527 |
-0.33544 |
In order to make use of the (e)amf two-electron picture-change corrections, we will need to run atomic
calculations for each element / nuclei type in the molecule. Hence, in the present case,
we will run atomic calculations for C and H, respectively. The latter seems odd as H is by definition a
one-electron system but as we will see, the MO coefficients will be needed for the
Discussion¶
For a detailed discussion of the performance of the various picture-change correction models for the X2C Hamiltonian
in comparison with the four-component reference data, we refer the interested user to Ref. [Knecht2022].
Let us highlight, though, that for the particular case of
Atomic calculations¶
Note that, besides scaling the speed of light by a factor of
Warning
Do not use approximations like .LVCORR for the parent 4-component Hamiltonian. Always use .DOSSSS in the atomic molecular-mean field calculations.
H atom
For the atomic run of H, we use the following input (h.inp
)
**DIRAC
.WAVE FUNCTION
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**HAMILTONIAN
.X2Cmmf
.DOSSSS
.DFT
PBE
.ONESYS
*X-AMFI
.amf
.eamf
**WAVE FUNCTION
.SCF
*SCF
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
and the xyz file (h.xyz
):
1
atom xyz file
H 0.0000000000 0.0000000000 0.0000000000
and run the calculation with:
$ ./pam --inp=h.inp --mol=h.xyz --get="amfPCEC.h5" && mv amfPCEC.h5 amfPCEC.001.h5
In the latter step, we rename the file amfPCEC.h5
for later convenience.
C atom
For the atomic run of C, we use the following input (c.inp
)
**DIRAC
.WAVE FUNCTION
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**HAMILTONIAN
.X2Cmmf
.DOSSSS
.DFT
PBE
*X-AMFI
.amf
.eamf
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
4 0
.OPEN SHELL
1
2/0,6
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
and the xyz file (c.xyz
):
1
atom xyz file
C 0.0000000000 0.0000000000 0.0000000000
and run the calculation with:
$ ./pam --inp=c.inp --mol=c.xyz --get="amfPCEC.h5" && mv amfPCEC.h5 amfPCEC.006.h5
In the latter step, we rename the file amfPCEC.h5
for later convenience.
Molecular calculations¶
Before embarking on the molecular calculations, we need to make a single preparatory step, that is:
$ $BUILD_DIR/merge_amf.py amfPCEC.006.h5 amfPCEC.001.h5
which will combine the atomic amfPCEC.xxx.h5
files into a single amfPCEC.h5
file
ready for use in the molecular merge_amf.py
is located in the build directory (named in the above code line
$BUILD_DIR
) of DIRAC.
The xyz coordinates for ch4.xyz
):
5
C 0.0000000000 0.0000000000 0.0000000000
H 0.6298891440 0.6298891440 -0.6298891440
H 0.6298891440 -0.6298891440 0.6298891440
H -0.6298891440 0.6298891440 0.6298891440
H -0.6298891440 -0.6298891440 -0.6298891440
To run the molecular calculation for 1eX2C.inp
):
**DIRAC
.WAVE FUNCTION
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.X2C
.DFT
PBE
.NOAMFI
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
10
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
The calculation can be run with:
$ ./pam --inp=1eX2C.inp --mol=ch4.xyz
To run the molecular calculation for AMFIX2C.inp
):
**DIRAC
.WAVE FUNCTION
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.X2C
.DFT
PBE
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
10
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
The calculation can be run with:
$ ./pam --inp=AMFIX2C.inp --mol=ch4.xyz
To run the molecular calculation for amfX2C.inp
):
**DIRAC
.WAVE FUNCTION
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.X2C
.DFT
PBE
*X-AMFI
.amf
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
10
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
The calculation can be run with:
$ ./pam --inp=amfX2C.inp --mol=ch4.xyz --put="amfPCEC.h5"
To run the molecular calculation for eamfX2C.inp
):
**DIRAC
.WAVE FUNCTION
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.X2C
.DFT
PBE
*X-AMFI
.eamf
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
10
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
The calculation can be run with:
$ ./pam --inp=eamfX2C.inp --mol=ch4.xyz --put="amfPCEC.h5"
To run the molecular calculation for 4DC.inp
):
**DIRAC
.WAVE FUNCTION
**GENERAL
.CVALUE
13.703599907400d0
.CODATA
CODATA10
**INTEGRAL
.NUCMOD
1
*READIN
.UNCONTRACTED
**HAMILTONIAN
.DOSSSS
.DFT
PBE
**WAVE FUNCTION
.SCF
*SCF
.CLOSED SHELL
10
**MOLECULE
*BASIS
.DEFAULT
dyall.v2z
**END OF
The calculation can be run with:
$ ./pam --inp=4DC.inp --mol=ch4.xyz