mirror of
https://github.com/LCPQ/quantum_package
synced 2024-09-27 12:00:56 +02:00
410 lines
8.3 KiB
ReStructuredText
410 lines
8.3 KiB
ReStructuredText
.. _hartree_fock:
|
|
|
|
.. program:: hartree_fock
|
|
|
|
.. default-role:: option
|
|
|
|
============
|
|
Hartree-Fock
|
|
============
|
|
|
|
|
|
The Hartree-Fock module performs *Restricted* Hartree-Fock calculations (the
|
|
spatial part of the |MOs| is common for alpha and beta spinorbitals).
|
|
|
|
The Hartree-Fock program does the following:
|
|
|
|
#. Compute/Read all the one- and two-electron integrals, and store them in memory
|
|
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
|
|
will read them as initial guess. Otherwise, it will create a guess.
|
|
#. Perform the |SCF| iterations
|
|
|
|
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
|
|
crashes for any unexpected reason, the calculation can be restarted by running again
|
|
the |SCF| with the same |EZFIO| database.
|
|
|
|
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
|
|
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
|
|
|
|
To start a calculation from scratch, the simplest way is to remove the
|
|
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
|
|
|
|
|
|
|
|
|
|
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
|
|
.. _level-shifting: https://doi.org/10.1002/qua.560070407
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EZFIO parameters
|
|
----------------
|
|
|
|
.. option:: max_dim_diis
|
|
|
|
Maximum size of the |DIIS| extrapolation procedure
|
|
|
|
Default: 15
|
|
|
|
.. option:: threshold_diis
|
|
|
|
Threshold on the convergence of the |DIIS| error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
|
|
|
|
Default: 0.
|
|
|
|
.. option:: thresh_scf
|
|
|
|
Threshold on the convergence of the Hartree Fock energy.
|
|
|
|
Default: 1.e-10
|
|
|
|
.. option:: n_it_scf_max
|
|
|
|
Maximum number of |SCF| iterations
|
|
|
|
Default: 500
|
|
|
|
.. option:: level_shift
|
|
|
|
Initial value of the energy shift on the virtual |MOs|
|
|
|
|
Default: 0.0
|
|
|
|
.. option:: scf_algorithm
|
|
|
|
Type of |SCF| algorithm used. Possible choices are [ Simple | DIIS]
|
|
|
|
Default: DIIS
|
|
|
|
.. option:: mo_guess_type
|
|
|
|
Initial MO guess. Can be [ Huckel | HCore ]
|
|
|
|
Default: Huckel
|
|
|
|
.. option:: energy
|
|
|
|
Calculated HF energy
|
|
|
|
|
|
.. option:: no_oa_or_av_opt
|
|
|
|
If |true|, skip the (inactive+core) --> (active) and the (active) --> (virtual) orbital rotations within the |SCF| procedure
|
|
|
|
Default: False
|
|
|
|
|
|
Providers
|
|
---------
|
|
|
|
|
|
.. option:: fock_matrix_mo_alpha
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_mo_alpha (mo_tot_num,mo_tot_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Fock matrix on the MO basis
|
|
|
|
|
|
|
|
|
|
.. option:: extrapolate_fock_matrix
|
|
|
|
.. code:: text
|
|
|
|
subroutine extrapolate_Fock_matrix( &
|
|
error_matrix_DIIS,Fock_matrix_DIIS, &
|
|
Fock_matrix_AO_,size_Fock_matrix_AO, &
|
|
iteration_SCF,dim_DIIS &
|
|
)
|
|
|
|
File: Roothaan_Hall_SCF.irp.f
|
|
|
|
Compute the extrapolated Fock matrix using the DIIS procedure
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_ao_alpha
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
|
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Alpha Fock matrix in AO basis set
|
|
|
|
|
|
|
|
|
|
.. option:: hf_energy
|
|
|
|
.. code:: text
|
|
|
|
double precision :: hf_energy
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Hartree-Fock energy
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_diag_mo
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
|
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
|
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
|
F = 1/2 (Fa + Fb)
|
|
K = Fb - Fa
|
|
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_ao_beta
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
|
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Alpha Fock matrix in AO basis set
|
|
|
|
|
|
|
|
|
|
.. option:: hf_density_matrix_ao
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: hf_density_matrix_ao (ao_num,ao_num)
|
|
|
|
File: HF_density_matrix_ao.irp.f
|
|
|
|
S^{-1}.P.S^{-1} where P = C.C^t
|
|
|
|
|
|
|
|
|
|
.. option:: fps_spf_matrix_ao
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
|
|
|
|
File: DIIS.irp.f
|
|
|
|
Commutator FPS - SPF
|
|
|
|
|
|
|
|
|
|
.. option:: threshold_diis_nonzero
|
|
|
|
.. code:: text
|
|
|
|
double precision :: threshold_diis_nonzero
|
|
|
|
File: DIIS.irp.f
|
|
|
|
If threshold_DIIS is zero, choose sqrt(thresh_scf)
|
|
|
|
|
|
|
|
|
|
.. option:: ao_bi_elec_integral_alpha
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
|
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Alpha Fock matrix in AO basis set
|
|
|
|
|
|
|
|
|
|
.. option:: eigenvectors_fock_matrix_ao
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
|
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
|
|
|
File: DIIS.irp.f
|
|
|
|
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_mo_beta
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_mo_beta (mo_tot_num,mo_tot_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Fock matrix on the MO basis
|
|
|
|
|
|
|
|
|
|
.. option:: eigenvectors_fock_matrix_mo
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
|
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
|
|
|
File: diagonalize_fock.irp.f
|
|
|
|
Diagonal Fock matrix in the MO basis
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_mo
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num)
|
|
double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is
|
|
| F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K |
|
|
F = 1/2 (Fa + Fb)
|
|
K = Fb - Fa
|
|
|
|
|
|
|
|
|
|
|
|
.. option:: fps_spf_matrix_mo
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fps_spf_matrix_mo (mo_tot_num,mo_tot_num)
|
|
|
|
File: DIIS.irp.f
|
|
|
|
Commutator FPS - SPF in MO basis
|
|
|
|
|
|
|
|
|
|
.. option:: diagonal_fock_matrix_mo_sum
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: diagonal_fock_matrix_mo_sum (mo_tot_num)
|
|
|
|
File: diagonalize_fock.irp.f
|
|
|
|
diagonal element of the fock matrix calculated as the sum over all the interactions with all the electrons in the RHF determinant diagonal_Fock_matrix_mo_sum(i) = sum_{j=1, N_elec} 2 J_ij -K_ij
|
|
|
|
|
|
|
|
|
|
.. option:: hf_density_matrix_ao_alpha
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: hf_density_matrix_ao_alpha (ao_num,ao_num)
|
|
|
|
File: HF_density_matrix_ao.irp.f
|
|
|
|
S^{-1}.P_alpha.S^{-1}
|
|
|
|
|
|
|
|
|
|
.. option:: hf_density_matrix_ao_beta
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: hf_density_matrix_ao_beta (ao_num,ao_num)
|
|
|
|
File: HF_density_matrix_ao.irp.f
|
|
|
|
S^{-1}.P_beta.S^{-1}
|
|
|
|
|
|
|
|
|
|
.. option:: eigenvalues_fock_matrix_ao
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
|
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
|
|
|
File: DIIS.irp.f
|
|
|
|
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
|
|
|
|
|
|
|
|
|
.. option:: ao_bi_elec_integral_beta
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
|
|
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Alpha Fock matrix in AO basis set
|
|
|
|
|
|
|
|
|
|
.. option:: fock_matrix_ao
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
|
|
|
|
File: Fock_matrix.irp.f
|
|
|
|
Fock matrix in AO basis set
|
|
|
|
|
|
|
|
|
|
.. option:: diagonal_fock_matrix_mo
|
|
|
|
.. code:: text
|
|
|
|
double precision, allocatable :: diagonal_fock_matrix_mo (mo_tot_num)
|
|
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num)
|
|
|
|
File: diagonalize_fock.irp.f
|
|
|
|
Diagonal Fock matrix in the MO basis
|
|
|
|
|