mo_two_e_ints

Here, all two-electron integrals (\(1/r_{12}\)) are computed. As they have 4 indices and many are zero, they are stored in a map, as defined in Utils/map_module.f90.

To fetch an AO integral, use the get_ao_two_e_integral(i,j,k,l,ao_integrals_map) function, and to fetch an MO integral, use get_two_e_integral(i,j,k,l,mo_integrals_map) or mo_two_e_integral(i,j,k,l).

The conventions are:

  • For AO integrals : (ik|jl) = (11|22)

  • For MO integrals : <ij|kl> = <12|12>

EZFIO parameters

io_mo_cholesky

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

Default: None

io_mo_two_e_integrals

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

Default: None

mo_integrals_cache_shift

Adjusts the size of the MO integrals cache. 2: 2KB, 3: 32KB, 4: 512KB, 5: 8MB, 6: 128MB, 7: 2GB, 8: 32GB, 9: 512GB

Default: 7

mo_integrals_threshold

If | <ij|kl> | < mo_integrals_threshold then <ij|kl> is zero

Default: 1.e-15

io_mo_two_e_integrals_erf

Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ]

Default: None

Providers

banned_excitation

File : mo_two_e_ints/map_integrals.irp.f

logical, allocatable    :: banned_excitation    (mo_num,mo_num)
logical :: use_banned_excitation

If true, the excitation is banned in the selection. Useful with local MOs.

Needs:

  • mo_num

Needed by:

  • big_array_coulomb_integrals

  • core_fock_operator

  • mo_two_e_integrals_jj

big_array_coulomb_integrals

File : mo_two_e_ints/integrals_3_index.irp.f

double precision, allocatable   :: big_array_coulomb_integrals  (mo_num,mo_num,mo_num)
double precision, allocatable   :: big_array_exchange_integrals (mo_num,mo_num,mo_num)

big_array_coulomb_integrals(j,i,k) = <ij|kj> = (ik|jj)

big_array_exchange_integrals(j,i,k) = <ij|jk> = (ij|kj)

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

Needed by:

  • coef_hf_selector

  • h_core_ri

  • h_matrix_all_dets

  • h_matrix_cas

  • h_matrix_diag_all_dets

  • psi_energy_two_e_trans

big_array_exchange_integrals

File : mo_two_e_ints/integrals_3_index.irp.f

double precision, allocatable   :: big_array_coulomb_integrals  (mo_num,mo_num,mo_num)
double precision, allocatable   :: big_array_exchange_integrals (mo_num,mo_num,mo_num)

big_array_coulomb_integrals(j,i,k) = <ij|kj> = (ik|jj)

big_array_exchange_integrals(j,i,k) = <ij|jk> = (ij|kj)

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

Needed by:

  • coef_hf_selector

  • h_core_ri

  • h_matrix_all_dets

  • h_matrix_cas

  • h_matrix_diag_all_dets

  • psi_energy_two_e_trans

cholesky_mo

File : mo_two_e_ints/cholesky.irp.f

double precision, allocatable   :: cholesky_mo  (mo_num,mo_num,cholesky_mo_num)

Cholesky vectors in MO basis

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • mo_num

cholesky_mo_num

File : mo_two_e_ints/cholesky.irp.f

integer :: cholesky_mo_num

Number of Cholesky vectors in MO basis

Needs:

  • cholesky_ao_num

  • ezfio_work_dir

  • read_mo_cholesky

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • cholesky_mo

  • cholesky_mo_transp

  • cholesky_no_1_idx_transp

  • cholesky_no_2_idx_transp

  • cholesky_no_total_transp

  • cholesky_semi_mo_transp_simple

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_in_map

  • mo_two_e_integrals_jj

cholesky_mo_transp

File : mo_two_e_ints/cholesky.irp.f

double precision, allocatable   :: cholesky_mo_transp   (cholesky_mo_num,mo_num,mo_num)

Cholesky vectors in MO basis. Warning: it is transposed wrt cholesky_ao:

  • cholesky_ao is (ao_num^2 x cholesky_ao_num)

  • cholesky_mo_transp is (cholesky_mo_num x mo_num^2)

Needs:

  • ao_num

  • cholesky_ao_num

  • cholesky_mo_num

  • ezfio_work_dir

  • mo_coef

  • mo_num

  • read_mo_cholesky

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • cholesky_mo

  • cholesky_no_1_idx_transp

  • cholesky_no_total_transp

  • cholesky_semi_mo_transp_simple

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_in_map

  • mo_two_e_integrals_jj

cholesky_semi_mo_transp_simple

File : mo_two_e_ints/cholesky.irp.f

double precision, allocatable   :: cholesky_semi_mo_transp_simple       (cholesky_mo_num,ao_num,mo_num)

Cholesky vectors in MO basis

Needs:

  • ao_num

  • cholesky_mo_num

  • cholesky_mo_transp

  • mo_coef_transp

  • mo_num

core_energy

File : mo_two_e_ints/core_quantities.irp.f

double precision        :: core_energy

energy from the core : contains all core-core contributions

Needs:

  • list_core

  • mo_one_e_integrals

  • mo_two_e_integrals_jj

  • n_core_orb

  • nuclear_repulsion

core_energy_erf

File : mo_two_e_ints/core_quantities_erf.irp.f

double precision        :: core_energy_erf

energy from the core : contains all core-core contributionswith the erf interaction

Needs:

  • list_core

  • mo_two_e_int_erf_jj

  • n_core_orb

  • nuclear_repulsion

core_fock_operator

File : mo_two_e_ints/core_quantities.irp.f

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

this is the contribution to the Fock operator from the core electrons

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • list_act

  • list_core

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

  • n_act_orb

  • n_core_orb

core_fock_operator_erf

File : mo_two_e_ints/core_quantities_erf.irp.f

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

this is the contribution to the Fock operator from the core electrons with the erf interaction

Needs:

  • list_act

  • list_core

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

  • n_act_orb

  • n_core_orb

do_mo_cholesky

File : mo_two_e_ints/cholesky.irp.f

logical :: do_mo_cholesky

If True, use Cholesky vectors for MO integrals

Needs:

  • do_ao_cholesky

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_in_map

  • mo_two_e_integrals_jj

h_core_ri

File : mo_two_e_ints/core_quantities.irp.f

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

Core Hamiltonian with 3-index exchange integrals:

\(\tilde{h}{pq} = h_{pq} - \frac{1}{2}\sum_{k} g(pk,kq)\)

Needs:

  • big_array_coulomb_integrals

  • mo_num

  • mo_one_e_integrals

insert_into_mo_integrals_erf_map:

File : mo_two_e_ints/map_integrals_erf.irp.f

  subroutine insert_into_mo_integrals_erf_map(n_integrals,                 &
buffer_i, buffer_values, thr)

Create new entry into MO map, or accumulate in an existing entry

Needs:

  • mo_integrals_erf_map

Called by:

  • add_integrals_to_map_erf()

Calls:

  • map_update()

insert_into_mo_integrals_map:

File : mo_two_e_ints/map_integrals.irp.f

  subroutine insert_into_mo_integrals_map(n_integrals,                 &
buffer_i, buffer_values, thr)

Create new entry into MO map, or accumulate in an existing entry

Needs:

  • mo_integrals_map

Called by:

  • add_integrals_to_map()

Calls:

  • map_update()

int_erf_3_index

File : mo_two_e_ints/ints_erf_3_index.irp.f

double precision, allocatable   :: int_erf_3_index      (mo_num,mo_num,mo_num)
double precision, allocatable   :: int_erf_3_index_exc  (mo_num,mo_num,mo_num)

int_erf_3_index(i,j) = <ij|ij> = (ii|jj) with the erf interaction

int_erf_3_index_exc(i,j) = <ij|ji> = (ij|ij) with the erf interaction

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

int_erf_3_index_exc

File : mo_two_e_ints/ints_erf_3_index.irp.f

double precision, allocatable   :: int_erf_3_index      (mo_num,mo_num,mo_num)
double precision, allocatable   :: int_erf_3_index_exc  (mo_num,mo_num,mo_num)

int_erf_3_index(i,j) = <ij|ij> = (ii|jj) with the erf interaction

int_erf_3_index_exc(i,j) = <ij|ji> = (ij|ij) with the erf interaction

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

mo_integrals_cache

File : mo_two_e_ints/map_integrals.irp.f

double precision, allocatable   :: mo_integrals_cache   (0_8:(1_8*mo_integrals_cache_size)**4)

Cache of MO integrals for fast access

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache_min

  • mo_integrals_cache_shift

  • mo_integrals_map

  • mo_two_e_integrals_in_map

Needed by:

  • bielecci

  • big_array_coulomb_integrals

  • core_fock_operator

  • mo_two_e_integrals_jj

mo_integrals_cache_max

File : mo_two_e_ints/map_integrals.irp.f

integer :: mo_integrals_cache_min
integer :: mo_integrals_cache_max
integer :: mo_integrals_cache_size

Min and max values of the MOs for which the integrals are in the cache

Needs:

  • elec_alpha_num

  • mo_integrals_cache_shift

  • mo_num

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_jj

mo_integrals_cache_min

File : mo_two_e_ints/map_integrals.irp.f

integer :: mo_integrals_cache_min
integer :: mo_integrals_cache_max
integer :: mo_integrals_cache_size

Min and max values of the MOs for which the integrals are in the cache

Needs:

  • elec_alpha_num

  • mo_integrals_cache_shift

  • mo_num

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_jj

mo_integrals_cache_size

File : mo_two_e_ints/map_integrals.irp.f

integer :: mo_integrals_cache_min
integer :: mo_integrals_cache_max
integer :: mo_integrals_cache_size

Min and max values of the MOs for which the integrals are in the cache

Needs:

  • elec_alpha_num

  • mo_integrals_cache_shift

  • mo_num

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • big_array_coulomb_integrals

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • mo_integrals_cache

  • mo_two_e_integrals_jj

mo_integrals_erf_cache

File : mo_two_e_ints/map_integrals_erf.irp.f

double precision, allocatable   :: mo_integrals_erf_cache       (0:64*64*64*64)

Cache of MO integrals for fast access

Needs:

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

Needed by:

  • core_fock_operator_erf

  • int_erf_3_index

  • mo_two_e_int_erf_jj

mo_integrals_erf_cache_max

File : mo_two_e_ints/map_integrals_erf.irp.f

integer :: mo_integrals_erf_cache_min
integer :: mo_integrals_erf_cache_max

Min and max values of the MOs for which the integrals are in the cache

Needs:

  • elec_alpha_num

  • mo_num

Needed by:

  • core_fock_operator_erf

  • int_erf_3_index

  • mo_integrals_erf_cache

  • mo_two_e_int_erf_jj

mo_integrals_erf_cache_min

File : mo_two_e_ints/map_integrals_erf.irp.f

integer :: mo_integrals_erf_cache_min
integer :: mo_integrals_erf_cache_max

Min and max values of the MOs for which the integrals are in the cache

Needs:

  • elec_alpha_num

  • mo_num

Needed by:

  • core_fock_operator_erf

  • int_erf_3_index

  • mo_integrals_erf_cache

  • mo_two_e_int_erf_jj

mo_integrals_erf_map

File : mo_two_e_ints/map_integrals_erf.irp.f

type(map_type)  :: mo_integrals_erf_map

MO integrals

Needs:

  • mo_num

Needed by:

  • core_fock_operator_erf

  • int_erf_3_index

  • mo_integrals_erf_cache

  • mo_two_e_int_erf_jj

  • mo_two_e_integrals_erf_in_map

mo_integrals_map

File : mo_two_e_ints/map_integrals.irp.f

type(map_type)  :: mo_integrals_map

MO integrals

Needs:

  • mo_num

Needed by:

  • bielec_pqxx_array

  • bielec_pxxq_array

  • bielecci

  • big_array_coulomb_integrals

  • coef_hf_selector

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • h_matrix_all_dets

  • h_matrix_cas

  • h_matrix_diag_all_dets

  • mo_integrals_cache

  • mo_two_e_integrals_in_map

  • mo_two_e_integrals_jj

  • psi_energy_two_e_trans

mo_two_e_int_erf_jj

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

Needed by:

  • core_energy_erf

mo_two_e_int_erf_jj_anti

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

Needed by:

  • core_energy_erf

mo_two_e_int_erf_jj_anti_from_ao

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)

mo_two_e_integral_jj_from_ao(i,j) = J_ij mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

Needs:

  • ao_integrals_erf_map

  • ao_integrals_threshold

  • ao_num

  • ao_two_e_integral_erf_schwartz

  • ao_two_e_integrals_erf_in_map

  • do_direct_integrals

  • mo_coef

  • mo_coef_transp

  • mo_num

mo_two_e_int_erf_jj_exchange

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_integrals_erf_map

  • mo_num

  • mo_two_e_integrals_erf_in_map

Needed by:

  • core_energy_erf

mo_two_e_int_erf_jj_exchange_from_ao

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)

mo_two_e_integral_jj_from_ao(i,j) = J_ij mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

Needs:

  • ao_integrals_erf_map

  • ao_integrals_threshold

  • ao_num

  • ao_two_e_integral_erf_schwartz

  • ao_two_e_integrals_erf_in_map

  • do_direct_integrals

  • mo_coef

  • mo_coef_transp

  • mo_num

mo_two_e_int_erf_jj_from_ao

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)

mo_two_e_integral_jj_from_ao(i,j) = J_ij mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

Needs:

  • ao_integrals_erf_map

  • ao_integrals_threshold

  • ao_num

  • ao_two_e_integral_erf_schwartz

  • ao_two_e_integrals_erf_in_map

  • do_direct_integrals

  • mo_coef

  • mo_coef_transp

  • mo_num

mo_two_e_integrals_erf_in_map

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

logical :: mo_two_e_integrals_erf_in_map

If True, the map of MO two-electron integrals is provided

Needs:

  • ao_num

  • ao_two_e_integrals_erf_in_map

  • ao_two_e_integrals_in_map

  • ezfio_filename

  • full_ijkl_bitmask_4

  • mo_class

  • mo_coef

  • mo_coef_transp

  • mo_integrals_erf_map

  • mo_integrals_threshold

  • mo_num

  • mpi_master

  • n_int

  • qp_max_mem

  • read_mo_two_e_integrals_erf

Needed by:

  • core_fock_operator_erf

  • int_erf_3_index

  • mo_integrals_erf_cache

  • mo_two_e_int_erf_jj

mo_two_e_integrals_in_map

File : mo_two_e_ints/mo_bi_integrals.irp.f

logical :: mo_two_e_integrals_in_map

If True, the map of MO two-electron integrals is provided

Needs:

  • ao_num

  • ao_two_e_integrals_in_map

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_ao_cholesky

  • do_mo_cholesky

  • ezfio_filename

  • full_ijkl_bitmask_4

  • mo_class

  • mo_coef

  • mo_coef_transp

  • mo_integrals_map

  • mo_integrals_threshold

  • mo_num

  • mpi_master

  • n_int

  • qp_max_mem

  • read_mo_two_e_integrals

Needed by:

  • act_2_rdm_aa_mo

  • act_2_rdm_ab_mo

  • act_2_rdm_bb_mo

  • act_2_rdm_spin_trace_mo

  • act_2_rdm_trans_spin_trace_mo

  • bielec_pqxx_array

  • bielec_pxxq_array

  • bielecci

  • big_array_coulomb_integrals

  • ci_electronic_energy

  • coef_hf_selector

  • core_fock_operator

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

  • h_matrix_all_dets

  • h_matrix_cas

  • h_matrix_diag_all_dets

  • hessmat

  • hessmat_peter

  • mo_integrals_cache

  • mo_two_e_integrals_jj

  • psi_energy_two_e_trans

mo_two_e_integrals_jj

File : mo_two_e_ints/mo_bi_integrals.irp.f

double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

Needed by:

  • core_energy

  • ref_bitmask_energy

mo_two_e_integrals_jj_anti

File : mo_two_e_ints/mo_bi_integrals.irp.f

double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

Needed by:

  • core_energy

  • ref_bitmask_energy

mo_two_e_integrals_jj_exchange

File : mo_two_e_ints/mo_bi_integrals.irp.f

double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)

mo_two_e_integrals_jj(i,j) = J_ij mo_two_e_integrals_jj_exchange(i,j) = K_ij mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_map

  • mo_num

  • mo_two_e_integrals_in_map

Needed by:

  • core_energy

  • ref_bitmask_energy

use_banned_excitation

File : mo_two_e_ints/map_integrals.irp.f

logical, allocatable    :: banned_excitation    (mo_num,mo_num)
logical :: use_banned_excitation

If true, the excitation is banned in the selection. Useful with local MOs.

Needs:

  • mo_num

Needed by:

  • big_array_coulomb_integrals

  • core_fock_operator

  • mo_two_e_integrals_jj

Subroutines / functions

add_integrals_to_map:

File : mo_two_e_ints/mo_bi_integrals.irp.f

subroutine add_integrals_to_map(mask_ijkl)

Adds integrals to the MO map according to some bitmask

Needs:

  • ao_num

  • ao_two_e_integrals_in_map

  • mo_coef

  • mo_coef_transp

  • mo_integrals_map

  • mo_integrals_threshold

  • mo_num

  • n_int

Called by:

  • mo_two_e_integrals_in_map

Calls:

  • bitstring_to_list()

  • get_ao_two_e_integrals()

  • insert_into_mo_integrals_map()

  • map_merge()

  • mo_two_e_integrals_index()

  • wall_time()

add_integrals_to_map_cholesky:

File : mo_two_e_ints/mo_bi_integrals.irp.f

subroutine add_integrals_to_map_cholesky

Adds integrals to the MO map using Cholesky vectors

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • mo_integrals_map

  • mo_integrals_threshold

  • mo_num

Called by:

  • mo_two_e_integrals_in_map

Calls:

  • dgemm()

  • map_append()

  • map_sort()

  • map_unique()

  • mo_two_e_integrals_index()

  • set_multiple_levels_omp()

add_integrals_to_map_erf:

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

subroutine add_integrals_to_map_erf(mask_ijkl)

Adds integrals to tha MO map according to some bitmask

Needs:

  • ao_num

  • ao_two_e_integrals_in_map

  • mo_coef

  • mo_coef_transp

  • mo_integrals_erf_map

  • mo_integrals_threshold

  • mo_num

  • n_int

Called by:

  • mo_two_e_integrals_erf_in_map

Calls:

  • bitstring_to_list()

  • bitstring_to_str()

  • cpu_time()

  • get_ao_two_e_integrals_erf()

  • insert_into_mo_integrals_erf_map()

  • map_merge()

  • mo_two_e_integrals_index()

  • wall_time()

clear_mo_erf_map:

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

subroutine clear_mo_erf_map

Frees the memory of the MO map

Needs:

  • mo_integrals_erf_map

Calls:

  • map_deinit()

clear_mo_map:

File : mo_two_e_ints/mo_bi_integrals.irp.f

subroutine clear_mo_map

Frees the memory of the MO map

Needs:

  • mo_integrals_map

Called by:

  • run_orb_opt_trust_v2()

  • update_parameters()

Calls:

  • map_deinit()

dump_mo_integrals:

File : mo_two_e_ints/map_integrals.irp.f

subroutine dump_mo_integrals(filename)

Save to disk the MO integrals

Needs:

  • mo_integrals_map

  • mpi_master

Calls:

  • ezfio_set_work_empty()

four_idx_dgemm:

File : mo_two_e_ints/mo_bi_integrals.irp.f

subroutine four_idx_dgemm

Needs:

  • ao_num

  • ao_two_e_integrals_in_map

  • mo_coef

  • mo_integrals_map

  • mo_integrals_threshold

  • mo_num

Called by:

  • mo_two_e_integrals_in_map

Calls:

  • dgemm()

  • get_ao_two_e_integrals()

  • map_append()

  • map_sort()

  • map_unique()

  • mo_two_e_integrals_index()

four_idx_dgemm_erf:

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

subroutine four_idx_dgemm_erf

Needs:

  • ao_num

  • mo_coef

  • mo_integrals_erf_map

  • mo_integrals_threshold

  • mo_num

Called by:

  • mo_two_e_integrals_erf_in_map

Calls:

  • dgemm()

  • get_ao_two_e_integrals_erf()

  • map_append()

  • map_sort()

  • map_unique()

  • mo_two_e_integrals_index()

get_mo_erf_map_size:

File : mo_two_e_ints/map_integrals_erf.irp.f

integer*8 function get_mo_erf_map_size()

Returns the number of elements in the MO map

Needs:

  • mo_integrals_erf_map

get_mo_map_size:

File : mo_two_e_ints/map_integrals.irp.f

integer*8 function get_mo_map_size()

Return the number of elements in the MO map

Needs:

  • mo_integrals_map

get_mo_two_e_integral_erf:

File : mo_two_e_ints/map_integrals_erf.irp.f

double precision function get_mo_two_e_integral_erf(i,j,k,l,map)

Returns one integral $langle ij|kl rangle$ in the MO basis

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_cache_min

  • mo_two_e_integrals_erf_in_map

Calls:

  • map_get()

  • two_e_integrals_index()

get_mo_two_e_integrals:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map)

Returns multiple integrals <ij|kl> in the MO basis, all i for j,k,l fixed.

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_num

  • mo_two_e_integrals_in_map

Called by:

  • get_d0()

  • get_d1()

  • get_mo_two_e_integrals_i1j1()

  • get_mo_two_e_integrals_ij()

Calls:

  • dgemv()

  • get_mo_two_e_integrals_cache()

  • map_get()

get_mo_two_e_integrals_cache:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals_cache(j,k,l,sze,out_val)

Returns multiple integrals <ij|kl> in the MO basis, all i for j,k,l fixed, all integrals from the cache

Needs:

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_cache_shift

Called by:

  • get_mo_two_e_integrals()

  • get_mo_two_e_integrals_i1j1()

  • get_mo_two_e_integrals_ij()

get_mo_two_e_integrals_coulomb_ii:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map)

Returns multiple integrals <ki|li> k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed.

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache_min

  • mo_num

  • mo_two_e_integrals_in_map

Called by:

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

Calls:

  • dgemv()

get_mo_two_e_integrals_erf:

File : mo_two_e_ints/map_integrals_erf.irp.f

subroutine get_mo_two_e_integrals_erf(j,k,l,sze,out_val,map)

Returns multiple integrals $langle ij|kl rangle$ in the MO basis, all i for j,k,l fixed.

Needs:

  • mo_two_e_integrals_erf_in_map

Calls:

  • map_get_many()

  • two_e_integrals_index()

get_mo_two_e_integrals_erf_coulomb_ii:

File : mo_two_e_ints/map_integrals_erf.irp.f

subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map)

Returns multiple integrals $langle ki|li rangle$

k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed.

Needs:

  • mo_two_e_integrals_erf_in_map

Calls:

  • map_get_many()

  • two_e_integrals_index()

get_mo_two_e_integrals_erf_exch_ii:

File : mo_two_e_ints/map_integrals_erf.irp.f

subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map)

Returns multiple integrals $langle ki|il rangle$

$int k(1)i(2) frac{1}{r_{12}} i(1)l(2)$ :: out_val(i1) for k,l fixed.

Needs:

  • mo_two_e_integrals_erf_in_map

Calls:

  • map_get_many()

  • two_e_integrals_index()

get_mo_two_e_integrals_erf_i1j1:

File : mo_two_e_ints/map_integrals_erf.irp.f

subroutine get_mo_two_e_integrals_erf_i1j1(k,l,sze,out_array,map)

Returns multiple integrals $langle ik|jl rangle$ in the MO basis, all $int i(1)j(1) frac{erf(mu * r_{12})}{r_{12}} k(2)l(2)$ i, j for k,l fixed.

Needs:

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

Calls:

  • i2sort()

  • i8sort()

  • isort()

  • map_get_many()

  • two_e_integrals_index()

get_mo_two_e_integrals_erf_ij:

File : mo_two_e_ints/map_integrals_erf.irp.f

subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map)

Returns multiple integrals $langle ij|kl rangle$ in the MO basis, all $int i(1)j(2) frac{1}{r_{12}} k(1)l(2)$ i, j for k,l fixed.

Needs:

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

Calls:

  • i2sort()

  • i8sort()

  • isort()

  • map_get_many()

  • two_e_integrals_index()

get_mo_two_e_integrals_exch_ii:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map)

Returns multiple integrals <ki|il> k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed.

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache_min

  • mo_num

  • mo_two_e_integrals_in_map

Called by:

  • fock_operator_closed_shell_ref_bitmask

  • fock_wee_closed_shell

get_mo_two_e_integrals_i1j1:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map)

Returns multiple integrals <ik|jl> in the MO basis, all i(1)j(1) 1/r12 k(2)l(2) i, j for k,l fixed.

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache_min

  • mo_num

  • mo_two_e_integrals_in_map

Called by:

  • bielec_pqxx_array

Calls:

  • dgemv()

  • get_mo_two_e_integrals()

  • get_mo_two_e_integrals_cache()

get_mo_two_e_integrals_ij:

File : mo_two_e_ints/map_integrals.irp.f

subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map)

Returns multiple integrals <ij|kl> in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed.

Needs:

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache_min

  • mo_num

Called by:

  • bielec_pxxq_array

Calls:

  • dgemm()

  • get_mo_two_e_integrals()

  • get_mo_two_e_integrals_cache()

get_two_e_integral:

File : mo_two_e_ints/map_integrals.irp.f

double precision function get_two_e_integral(i,j,k,l,map)

Returns one integral <ij|kl> in the MO basis

Needs:

  • banned_excitation

  • cholesky_mo_num

  • cholesky_mo_transp

  • do_mo_cholesky

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_two_e_integrals_in_map

Calls:

  • map_get()

  • two_e_integrals_index()

get_two_e_integral_cache:

File : mo_two_e_ints/map_integrals.irp.f

double precision function get_two_e_integral_cache(i,j,k,l)

Returns one integral <ij|kl> in the MO basis taken from the cache

Needs:

  • mo_integrals_cache

  • mo_integrals_cache_min

  • mo_integrals_cache_shift

load_mo_integrals:

File : mo_two_e_ints/map_integrals.irp.f

integer function load_mo_integrals(filename)

Read from disk the MO integrals

Needs:

  • mo_integrals_map

Calls:

  • cache_map_reallocate()

  • lock_io()

  • map_deinit()

  • map_sort()

  • unlock_io()

load_mo_integrals_erf:

File : mo_two_e_ints/map_integrals_erf.irp.f

integer function load_mo_integrals_erf(filename)

Read from disk the MO erf integrals

Needs:

  • mo_integrals_erf_map

Calls:

  • cache_map_reallocate()

  • map_deinit()

  • map_sort()

mo_two_e_integral:

File : mo_two_e_ints/map_integrals.irp.f

double precision function mo_two_e_integral(i,j,k,l)

Returns one integral <ij|kl> in the MO basis

Needs:

  • mo_integrals_cache

  • mo_integrals_map

  • mo_two_e_integrals_in_map

mo_two_e_integral_erf:

File : mo_two_e_ints/map_integrals_erf.irp.f

double precision function mo_two_e_integral_erf(i,j,k,l)

Returns one integral $langle ij|kl rangle$ in the MO basis

Needs:

  • mo_integrals_erf_cache

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

mo_two_e_integrals_erf_index:

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1)

Computes an unique index for i,j,k,l integrals

mo_two_e_integrals_index:

File : mo_two_e_ints/mo_bi_integrals.irp.f

subroutine mo_two_e_integrals_index(i,j,k,l,i1)

Computes an unique index for i,j,k,l integrals

Called by:

  • add_integrals_to_map()

  • add_integrals_to_map_cholesky()

  • add_integrals_to_map_erf()

  • four_idx_dgemm()

  • four_idx_dgemm_erf()

provide_all_mo_integrals_erf:

File : mo_two_e_ints/mo_bi_integrals_erf.irp.f

subroutine provide_all_mo_integrals_erf

Needs:

  • mo_integrals_erf_map

  • mo_two_e_int_erf_jj

  • mo_two_e_int_erf_jj

  • mo_two_e_int_erf_jj

  • mo_two_e_integrals_erf_in_map

save_erf_two_e_integrals_mo:

File : mo_two_e_ints/routines_save_integrals_erf.irp.f

subroutine save_erf_two_e_integrals_mo

Needs:

  • ezfio_filename

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

Calls:

  • ezfio_set_mo_two_e_ints_io_mo_two_e_integrals_erf()

  • ezfio_set_work_empty()

  • map_save_to_disk()

save_erf_two_e_ints_mo_into_ints_mo:

File : mo_two_e_ints/routines_save_integrals_erf.irp.f

subroutine save_erf_two_e_ints_mo_into_ints_mo

Needs:

  • ezfio_filename

  • mo_integrals_erf_map

  • mo_two_e_integrals_erf_in_map

Calls:

  • ezfio_set_mo_two_e_ints_io_mo_two_e_integrals()

  • ezfio_set_work_empty()

  • map_save_to_disk()