mo_one_e_integrals

All the one-electron integrals in MO basis are defined here.

The most important providers for usual quantum-chemistry calculation are:

  • mo_kinetic_integrals which are the kinetic operator integrals on the AO basis (see kin_mo_ints.irp.f)
  • mo_integrals_n_e which are the nuclear-elctron operator integrals on the AO basis (see pot_mo_ints.irp.f)
  • mo_one_e_integrals which are the the h_core operator integrals on the AO basis (see mo_mono_ints.irp.f)

Note that you can find other interesting integrals related to the position operator in spread_dipole_mo.irp.f.

EZFIO parameters

mo_integrals_e_n

Nucleus-electron integrals in MO basis set

io_mo_integrals_e_n

Read/Write MO electron-nucleus attraction integrals from/to disk [ Write | Read | None ]

Default: None

mo_integrals_kinetic

Kinetic energy integrals in MO basis set

io_mo_integrals_kinetic

Read/Write MO one-electron kinetic integrals from/to disk [ Write | Read | None ]

Default: None

mo_integrals_pseudo

Pseudopotential integrals in MO basis set

io_mo_integrals_pseudo

Read/Write MO pseudopotential integrals from/to disk [ Write | Read | None ]

Default: None

mo_one_e_integrals

One-electron integrals in MO basis set

io_mo_one_e_integrals

Read/Write MO one-electron integrals from/to disk [ Write | Read | None ]

Default: None

Providers

mo_dipole_x

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_dipole_x  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_y  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_z  (mo_num,mo_num)

array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j

Needs:

mo_dipole_y

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_dipole_x  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_y  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_z  (mo_num,mo_num)

array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j

Needs:

mo_dipole_z

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_dipole_x  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_y  (mo_num,mo_num)
double precision, allocatable   :: mo_dipole_z  (mo_num,mo_num)

array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j

Needs:

mo_integrals_n_e

File : mo_one_e_ints/pot_mo_ints.irp.f

double precision, allocatable   :: mo_integrals_n_e     (mo_num,mo_num)

Nucleus-electron interaction on the MO basis

Needs:

  • read_mo_integrals_e_n

Needed by:

mo_integrals_n_e_per_atom

File : mo_one_e_ints/pot_mo_ints.irp.f

double precision, allocatable   :: mo_integrals_n_e_per_atom    (mo_num,mo_num,nucl_num)

mo_integrals_n_e_per_atom(i,j,k) = \(\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle\) . where R_k is the coordinate of the k-th nucleus.

Needs:

  • nucl_num
mo_kinetic_integrals

File : mo_one_e_ints/kin_mo_ints.irp.f

double precision, allocatable   :: mo_kinetic_integrals (mo_num,mo_num)

Kinetic energy integrals in the MO basis

Needs:

  • read_mo_integrals_kinetic

Needed by:

mo_one_e_integrals

File : mo_one_e_ints/mo_one_e_ints.irp.f

double precision, allocatable   :: mo_one_e_integrals   (mo_num,mo_num)

array of the mono electronic hamiltonian on the MOs basis : sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)

Needs:

Needed by:

mo_overlap

File : mo_one_e_ints/mo_overlap.irp.f

double precision, allocatable   :: mo_overlap   (mo_num,mo_num)

Provider to check that the MOs are indeed orthonormal.

Needs:

mo_pseudo_integrals

File : mo_one_e_ints/pot_mo_pseudo_ints.irp.f

double precision, allocatable   :: mo_pseudo_integrals  (mo_num,mo_num)

Pseudopotential integrals in MO basis

Needs:

  • mo_num
  • read_mo_integrals_pseudo

Needed by:

mo_spread_x

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_spread_x  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_y  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_z  (mo_num,mo_num)

array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j

Needs:

mo_spread_y

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_spread_x  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_y  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_z  (mo_num,mo_num)

array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j

Needs:

mo_spread_z

File : mo_one_e_ints/spread_dipole_mo.irp.f

double precision, allocatable   :: mo_spread_x  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_y  (mo_num,mo_num)
double precision, allocatable   :: mo_spread_z  (mo_num,mo_num)

array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j

Needs:

s_mo_coef

File : mo_one_e_ints/ao_to_mo.irp.f

double precision, allocatable   :: s_mo_coef    (ao_num,mo_num)

Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix.

Needs:

Needed by:

Subroutines / functions

mo_to_ao:()

File : mo_one_e_ints/ao_to_mo.irp.f

subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)

Transform A from the MO basis to the AO basis

$(S.C).A_{mo}.(S.C)^dagger$

Needs:

  • ao_num

Called by:

Calls:

  • dgemm()
mo_to_ao_no_overlap:()

File : mo_one_e_ints/ao_to_mo.irp.f

subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)

$C.A_{mo}.C^dagger$

Needs:

  • ao_num

Calls:

  • dgemm()
orthonormalize_mos:()

File : mo_one_e_ints/orthonormalize.irp.f

subroutine orthonormalize_mos

Needs:

Called by:

  • save_ortho_mos()
  • scf()

Calls:

  • ortho_lowdin()

Touches: