BEGIN_PROVIDER [ double precision, TC_HF_energy ] &BEGIN_PROVIDER [ double precision, TC_HF_one_e_energy] &BEGIN_PROVIDER [ double precision, TC_HF_two_e_energy] BEGIN_DOC ! TC Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. END_DOC implicit none integer :: i, j double precision :: t0, t1 !print*, ' Providing TC energy ...' !call wall_time(t0) PROVIDE mo_l_coef mo_r_coef PROVIDE two_e_tc_non_hermit_integral_alpha two_e_tc_non_hermit_integral_beta TC_HF_energy = nuclear_repulsion TC_HF_one_e_energy = 0.d0 TC_HF_two_e_energy = 0.d0 do j = 1, ao_num do i = 1, ao_num TC_HF_two_e_energy += 0.5d0 * ( two_e_tc_non_hermit_integral_alpha(i,j) * TCSCF_density_matrix_ao_alpha(i,j) & + two_e_tc_non_hermit_integral_beta (i,j) * TCSCF_density_matrix_ao_beta (i,j) ) TC_HF_one_e_energy += ao_one_e_integrals_tc_tot(i,j) & * (TCSCF_density_matrix_ao_alpha(i,j) + TCSCF_density_matrix_ao_beta (i,j) ) enddo enddo TC_HF_energy += TC_HF_one_e_energy + TC_HF_two_e_energy TC_HF_energy += diag_three_elem_hf !call wall_time(t1) !print*, ' Wall time for TC energy=', t1-t0 END_PROVIDER ! --- BEGIN_PROVIDER [ double precision, VARTC_HF_energy] &BEGIN_PROVIDER [ double precision, VARTC_HF_one_e_energy] &BEGIN_PROVIDER [ double precision, VARTC_HF_two_e_energy] implicit none integer :: i, j PROVIDE mo_r_coef VARTC_HF_energy = nuclear_repulsion VARTC_HF_one_e_energy = 0.d0 VARTC_HF_two_e_energy = 0.d0 do j = 1, ao_num do i = 1, ao_num VARTC_HF_two_e_energy += 0.5d0 * ( two_e_vartc_integral_alpha(i,j) * TCSCF_density_matrix_ao_alpha(i,j) & + two_e_vartc_integral_beta (i,j) * TCSCF_density_matrix_ao_beta (i,j) ) VARTC_HF_one_e_energy += ao_one_e_integrals_tc_tot(i,j) & * (TCSCF_density_matrix_ao_alpha(i,j) + TCSCF_density_matrix_ao_beta (i,j) ) enddo enddo VARTC_HF_energy += VARTC_HF_one_e_energy + VARTC_HF_two_e_energy VARTC_HF_energy += diag_three_elem_hf END_PROVIDER ! ---