fock_jk Subroutine

public subroutine fock_jk(basis, d, f, scalefactor, infos)

Uses

  • proc~~fock_jk~~UsesGraph proc~fock_jk fock_jk module~basis_tools basis_tools proc~fock_jk->module~basis_tools module~int2_compute int2_compute proc~fock_jk->module~int2_compute module~io_constants io_constants proc~fock_jk->module~io_constants module~precision precision proc~fock_jk->module~precision module~types types proc~fock_jk->module~types module~util util proc~fock_jk->module~util module~basis_tools->module~io_constants module~basis_tools->module~precision iso_fortran_env iso_fortran_env module~basis_tools->iso_fortran_env module~atomic_structure_m atomic_structure_m module~basis_tools->module~atomic_structure_m module~constants constants module~basis_tools->module~constants module~parallel parallel module~basis_tools->module~parallel module~int2_compute->module~basis_tools module~int2_compute->module~precision module~int2_compute->module~atomic_structure_m module~int2_pairs int2_pairs module~int2_compute->module~int2_pairs module~int2e_libint int2e_libint module~int2_compute->module~int2e_libint module~int2e_rys int2e_rys module~int2_compute->module~int2e_rys module~messages messages module~int2_compute->module~messages module~int2_compute->module~parallel module~precision->iso_fortran_env module~types->module~basis_tools module~types->module~precision iso_c_binding iso_c_binding module~types->iso_c_binding module~types->module~atomic_structure_m module~functionals functionals module~types->module~functionals module~types->module~parallel tagarray tagarray module~types->tagarray module~util->module~precision module~atomic_structure_m->iso_c_binding module~constants->module~precision module~functionals->module~precision module~functionals->iso_c_binding xc_f03_lib_m xc_f03_lib_m module~functionals->xc_f03_lib_m module~int2_pairs->module~precision module~int2e_libint->module~precision module~int2e_libint->iso_c_binding module~int2e_libint->module~constants module~int2e_libint->module~int2_pairs module~libint_f libint_f module~int2e_libint->module~libint_f module~int2e_rys->module~basis_tools module~int2e_rys->module~precision module~int2e_rys->module~constants module~messages->module~io_constants module~messages->module~precision comm_IOFILE comm_IOFILE module~messages->comm_IOFILE comm_PAR comm_PAR module~messages->comm_PAR module~parallel->module~precision module~parallel->iso_c_binding module~parallel->iso_fortran_env mpi mpi module~parallel->mpi module~libint_f->iso_c_binding

Arguments

Type IntentOptional Attributes Name
type(basis_set), intent(in) :: basis
real(kind=dp), intent(in), target :: d(:,:)
real(kind=dp), intent(inout) :: f(:,:)
real(kind=dp), intent(in), optional :: scalefactor
type(information), intent(inout) :: infos

Calls

proc~~fock_jk~~CallsGraph proc~fock_jk fock_jk none~clean~18 int2_compute_t%clean proc~fock_jk->none~clean~18 none~init~16 int2_compute_t%init proc~fock_jk->none~init~16 none~run~6 int2_compute_t%run proc~fock_jk->none~run~6 none~set_screening~2 int2_compute_t%set_screening proc~fock_jk->none~set_screening~2 proc~measure_time measure_time proc~fock_jk->proc~measure_time none~clean~5 int2_pair_storage%clean none~clean~18->none~clean~5 none~alloc int2_pair_storage%alloc none~init~16->none~alloc none~compute int2_pair_storage%compute none~init~16->none~compute none~init_shell_centers basis_set%init_shell_centers none~init~16->none~init_shell_centers none~init~14 par_env_t%init none~init~16->none~init~14 none~set int2_cutoffs_t%set none~init~16->none~set proc~libint_static_init libint_static_init none~init~16->proc~libint_static_init interface~show_message show_message none~run~6->interface~show_message none~run_cam int2_compute_t%run_cam none~run~6->none~run_cam none~run_generic int2_compute_t%run_generic none~run~6->none~run_generic proc~ints_exchange ints_exchange none~set_screening~2->proc~ints_exchange mpi_comm_rank mpi_comm_rank none~init~14->mpi_comm_rank mpi_comm_size mpi_comm_size none~init~14->mpi_comm_size none~run_cam->none~run_generic none~run_generic->interface~show_message none~run_generic->proc~ints_exchange libint2_cleanup_eri libint2_cleanup_eri none~run_generic->libint2_cleanup_eri libint2_init_eri libint2_init_eri none~run_generic->libint2_init_eri none~clean~2 int2_rys_data_t%clean none~run_generic->none~clean~2 none~init~2 int2_rys_data_t%init none~run_generic->none~init~2 none~screen_ij int2_compute_data_t%screen_ij none~run_generic->none~screen_ij none~screen_ijkl int2_compute_data_t%screen_ijkl none~run_generic->none~screen_ijkl none~set_ids int2_rys_data_t%set_ids none~run_generic->none~set_ids parallel_start parallel_start none~run_generic->parallel_start parallel_stop parallel_stop none~run_generic->parallel_stop proc~genr22 genr22 none~run_generic->proc~genr22 proc~int2_rys_compute int2_rys_compute none~run_generic->proc~int2_rys_compute proc~libint_compute_eri libint_compute_eri none~run_generic->proc~libint_compute_eri proc~libint_print_eri libint_print_eri none~run_generic->proc~libint_print_eri proc~rys_print_eri rys_print_eri none~run_generic->proc~rys_print_eri update update none~run_generic->update proc~ints_exchange->interface~show_message proc~ints_exchange->none~alloc proc~ints_exchange->none~compute proc~ints_exchange->none~set proc~ints_exchange->libint2_cleanup_eri proc~ints_exchange->libint2_init_eri proc~ints_exchange->none~clean~2 proc~ints_exchange->none~init~2 proc~ints_exchange->none~set_ids proc~ints_exchange->proc~genr22 proc~ints_exchange->proc~int2_rys_compute proc~ints_exchange->proc~libint_compute_eri libint2_static_init libint2_static_init proc~libint_static_init->libint2_static_init unused_dummy unused_dummy none~screen_ij->unused_dummy none~screen_ijkl->unused_dummy fgrid fgrid proc~genr22->fgrid rfinc rfinc proc~genr22->rfinc rmr rmr proc~genr22->rmr xgrid xgrid proc~genr22->xgrid none~evaluate rys_root_t%evaluate proc~int2_rys_compute->none~evaluate ab_x ab_x proc~libint_compute_eri->ab_x ab_y ab_y proc~libint_compute_eri->ab_y ab_z ab_z proc~libint_compute_eri->ab_z alpha1over_zetapluseta alpha1over_zetapluseta proc~libint_compute_eri->alpha1over_zetapluseta alpha1rho_over_zeta2 alpha1rho_over_zeta2 proc~libint_compute_eri->alpha1rho_over_zeta2 alpha2over_zetapluseta alpha2over_zetapluseta proc~libint_compute_eri->alpha2over_zetapluseta alpha2rho_over_zeta2 alpha2rho_over_zeta2 proc~libint_compute_eri->alpha2rho_over_zeta2 alpha3over_zetapluseta alpha3over_zetapluseta proc~libint_compute_eri->alpha3over_zetapluseta alpha3rho_over_eta2 alpha3rho_over_eta2 proc~libint_compute_eri->alpha3rho_over_eta2 alpha4over_zetapluseta alpha4over_zetapluseta proc~libint_compute_eri->alpha4over_zetapluseta alpha4rho_over_eta2 alpha4rho_over_eta2 proc~libint_compute_eri->alpha4rho_over_eta2 cd_x cd_x proc~libint_compute_eri->cd_x cd_y cd_y proc~libint_compute_eri->cd_y cd_z cd_z proc~libint_compute_eri->cd_z f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 proc~libint_compute_eri->fgrid igrid igrid proc~libint_compute_eri->igrid irgrd irgrd proc~libint_compute_eri->irgrd oo2e oo2e proc~libint_compute_eri->oo2e oo2z oo2z proc~libint_compute_eri->oo2z oo2ze oo2ze proc~libint_compute_eri->oo2ze pa_x pa_x proc~libint_compute_eri->pa_x pa_y pa_y proc~libint_compute_eri->pa_y pa_z pa_z proc~libint_compute_eri->pa_z qc_x qc_x proc~libint_compute_eri->qc_x qc_y qc_y proc~libint_compute_eri->qc_y qc_z qc_z proc~libint_compute_eri->qc_z proc~libint_compute_eri->rfinc rho12_over_alpha1 rho12_over_alpha1 proc~libint_compute_eri->rho12_over_alpha1 rho12_over_alpha2 rho12_over_alpha2 proc~libint_compute_eri->rho12_over_alpha2 rho34_over_alpha3 rho34_over_alpha3 proc~libint_compute_eri->rho34_over_alpha3 rho34_over_alpha4 rho34_over_alpha4 proc~libint_compute_eri->rho34_over_alpha4 proc~libint_compute_eri->rmr roe roe proc~libint_compute_eri->roe roz roz proc~libint_compute_eri->roz two_alpha0_bra two_alpha0_bra proc~libint_compute_eri->two_alpha0_bra two_alpha0_ket two_alpha0_ket proc~libint_compute_eri->two_alpha0_ket two_alpha1bra two_alpha1bra proc~libint_compute_eri->two_alpha1bra two_alpha1ket two_alpha1ket proc~libint_compute_eri->two_alpha1ket wp_x wp_x proc~libint_compute_eri->wp_x wp_y wp_y proc~libint_compute_eri->wp_y wp_z wp_z proc~libint_compute_eri->wp_z wq_x wq_x proc~libint_compute_eri->wq_x wq_y wq_y proc~libint_compute_eri->wq_y wq_z wq_z proc~libint_compute_eri->wq_z

Source Code

  subroutine fock_jk(basis, d, f, scalefactor, infos)
   use precision, only: dp
   use io_constants, only: iw
   use util, only: measure_time
   use basis_tools, only: basis_set
   use types, only: information
   use int2_compute, only: int2_compute_t, int2_fock_data_t, int2_rhf_data_t, int2_urohf_data_t

   implicit none

   type(basis_set), intent(in) :: basis
   type(information), intent(inout) :: infos
   real(kind=dp), optional, intent(in) :: scalefactor

   integer :: i, ii, nf, nschwz
   real(kind=dp) :: scalef
   real(kind=dp), target, intent(in) :: d(:,:)
   real(kind=dp), intent(inout) :: f(:,:)

     type(int2_compute_t) :: int2_driver
     class(int2_fock_data_t), allocatable :: int2_data

!  Initial Settings
   scalef = 1.0d0
   if (present(scalefactor)) scalef = scalefactor

   call measure_time(print_total=1, log_unit=iw)

   write(iw,"(/3x,'Form Two-Electron J and K Fock')")

!  Initialize ERI calculations
   call int2_driver%init(basis, infos)
   call int2_driver%set_screening()
   int2_data = int2_rhf_data_t(nfocks=1, d=d, scale_exchange=scalefactor)

   call flush(iw)

!  Constructing two electron Fock matrix
   call int2_driver%run(int2_data)
   nschwz = int2_driver%skipped

!  Scaling (everything except diagonal is halved)
   f =  0.5 * int2_data%f(:,:,1)

   do nf = 1, ubound(f,2)
     ii = 0
     do i = 1, basis%nbf
        ii = ii + i
        f(ii,nf) = 2*f(ii,nf)
     end do
   end do

   call int2_driver%clean()

 end subroutine fock_jk