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_integralswhich are the kinetic operator integrals on the AO basis (seekin_mo_ints.irp.f)mo_integrals_n_ewhich are the nuclear-elctron operator integrals on the AO basis (seepot_mo_ints.irp.f)mo_one_e_integralswhich are the the h_core operator integrals on the AO basis (seemo_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_n_e
Nucleus-electron integrals in MO basis set
- io_mo_integrals_n_e
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
- ao_one_e_integrals_from_mo
File :
mo_one_e_ints/ao_to_mo.irp.fdouble precision, allocatable :: ao_one_e_integrals_from_mo (ao_num,ao_num)
Integrals of the one e hamiltonian obtained from the integrals on the MO basis
WARNING : this is equal to ao_one_e_integrals only if the AO and MO basis have the same number of functions
Needs:
ao_nummo_num
mo_one_e_integrals
s_mo_coef
- mo_dipole_x
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_dipole_xao_num
mo_coef
mo_num
Needed by:
mo_spread_centered_x
multi_s_dipole_moment
z_dipole_moment
- mo_dipole_y
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_dipole_xao_num
mo_coef
mo_num
Needed by:
mo_spread_centered_x
multi_s_dipole_moment
z_dipole_moment
- mo_dipole_z
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_dipole_xao_num
mo_coef
mo_num
Needed by:
mo_spread_centered_x
multi_s_dipole_moment
z_dipole_moment
- mo_integrals_n_e
File :
mo_one_e_ints/pot_mo_ints.irp.fdouble precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
Nucleus-electron interaction on the MO basis
Needs:
ao_integrals_n_eao_num
mo_coefmo_num
read_mo_integrals_n_e
Needed by:
mo_one_e_integrals
ref_bitmask_energy
v_ne_psi_energy
- mo_integrals_n_e_per_atom
File :
mo_one_e_ints/pot_mo_ints.irp.fdouble 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:
ao_integrals_n_e_per_atomao_num
mo_coefmo_num
nucl_num
- mo_kinetic_integrals
File :
mo_one_e_ints/kin_mo_ints.irp.fdouble precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
Kinetic energy integrals in the MO basis
Needs:
ao_kinetic_integralsao_num
mo_coefmo_num
read_mo_integrals_kinetic
Needed by:
mo_one_e_integrals
ref_bitmask_energy
- mo_one_e_integrals
File :
mo_one_e_ints/mo_one_e_ints.irp.fdouble precision, allocatable :: mo_one_e_integrals (mo_num,mo_num)
array of the one-electron Hamiltonian on the MO basis : sum of the kinetic and nuclear electronic potentials (and pseudo potential if needed)
Needs:
mo_integrals_n_emo_kinetic_integrals
mo_num
read_mo_one_e_integrals
Needed by:
ao_one_e_integrals_from_mocore_energyetwo
fock_operator_closed_shell_ref_bitmaskh_core_rione_ints_no
psi_energy_h_coreref_bitmask_energy
- mo_overlap
File :
mo_one_e_ints/mo_overlap.irp.fdouble precision, allocatable :: mo_overlap (mo_num,mo_num)
Provider to check that the MOs are indeed orthonormal.
Needs:
ao_numao_overlap
mo_coef
mo_num
- mo_pseudo_integrals
File :
mo_one_e_ints/pot_mo_pseudo_ints.irp.fdouble precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
Pseudopotential integrals in MO basis
Needs:
ao_numao_pseudo_integrals
do_pseudomo_coef
mo_numread_mo_integrals_pseudo
- mo_pseudo_integrals_local
File :
mo_one_e_ints/pot_mo_pseudo_ints.irp.fdouble precision, allocatable :: mo_pseudo_integrals_local (mo_num,mo_num)
Pseudopotential integrals in MO basis
Needs:
ao_numao_pseudo_integrals_local
do_pseudomo_coef
mo_num
- mo_pseudo_integrals_non_local
File :
mo_one_e_ints/pot_mo_pseudo_ints.irp.fdouble precision, allocatable :: mo_pseudo_integrals_non_local (mo_num,mo_num)
Pseudopotential integrals in MO basis
Needs:
ao_numao_pseudo_integrals_non_local
do_pseudomo_coef
mo_num
- mo_spread_centered_x
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num)
array of the integrals of MO_i * (x^2 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2
Needs:
mo_dipole_x
mo_num
mo_spread_x
- mo_spread_centered_y
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num)
array of the integrals of MO_i * (x^2 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2
Needs:
mo_dipole_x
mo_num
mo_spread_x
- mo_spread_centered_z
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num)
array of the integrals of MO_i * (x^2 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2
Needs:
mo_dipole_x
mo_num
mo_spread_x
- mo_spread_x
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_numao_spread_x
mo_coef
mo_num
Needed by:
mo_spread_centered_x
- mo_spread_y
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_numao_spread_x
mo_coef
mo_num
Needed by:
mo_spread_centered_x
- mo_spread_z
File :
mo_one_e_ints/spread_dipole_mo.irp.fdouble 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:
ao_numao_spread_x
mo_coef
mo_num
Needed by:
mo_spread_centered_x
- s_mo_coef
File :
mo_one_e_ints/ao_to_mo.irp.fdouble 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:
ao_numao_overlap
mo_coef
mo_num
Needed by:
ao_one_e_integrals_from_mo
fock_matrix_ao
Subroutines / functions
- mo_to_ao:
File :
mo_one_e_ints/ao_to_mo.irp.fsubroutine 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
mo_num
s_mo_coef
Called by:
ao_one_e_integrals_from_mo
fock_matrix_ao
Calls:
dgemm()
- mo_to_ao_no_overlap:
File :
mo_one_e_ints/ao_to_mo.irp.fsubroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
$C.A_{mo}.C^dagger$
Needs:
ao_num
mo_coef
mo_num
Called by:
d0tu_alpha_ao
one_e_dm_alpha_ao_for_dft
one_e_dm_alpha_ao_for_dft_no_core
Calls:
dgemm()
- orthonormalize_mos:
File :
mo_one_e_ints/orthonormalize.irp.fsubroutine orthonormalize_mos
Needs:
ao_numlin_dep_cutoff
mo_coefmo_num
mo_overlap
Called by:
huckel_guess()roothaan_hall_scf()
save_natural_mos()save_natural_mos_canon_label()
save_natural_mos_no_ov_rot()scf()
Calls:
ortho_lowdin()
Touches:
mo_coef