mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-08-25 05:31:48 +02:00
554 lines
18 KiB
Fortran
554 lines
18 KiB
Fortran
|
|
! ---
|
|
|
|
BEGIN_PROVIDER [double precision, v_ij_erf_rk_cst_mu_env, (ao_num, ao_num, n_points_final_grid)]
|
|
|
|
BEGIN_DOC
|
|
!
|
|
! int dr phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R| - 1) / |r - R|
|
|
!
|
|
END_DOC
|
|
|
|
implicit none
|
|
integer :: i, j, ipoint, i_1s
|
|
double precision :: r(3), int_mu, int_coulomb
|
|
double precision :: coef, beta, B_center(3)
|
|
double precision :: tmp
|
|
double precision :: wall0, wall1
|
|
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
|
|
|
PROVIDE mu_erf
|
|
PROVIDE final_grid_points
|
|
PROVIDE env_expo
|
|
|
|
print *, ' providing v_ij_erf_rk_cst_mu_env ...'
|
|
call wall_time(wall0)
|
|
|
|
v_ij_erf_rk_cst_mu_env = 0.d0
|
|
|
|
!$OMP PARALLEL DEFAULT (NONE) &
|
|
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, int_mu, int_coulomb, tmp) &
|
|
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, final_grid_points, &
|
|
!$OMP List_env1s_coef, List_env1s_expo, List_env1s_cent, &
|
|
!$OMP v_ij_erf_rk_cst_mu_env, mu_erf)
|
|
!$OMP DO
|
|
!do ipoint = 1, 10
|
|
do ipoint = 1, n_points_final_grid
|
|
r(1) = final_grid_points(1,ipoint)
|
|
r(2) = final_grid_points(2,ipoint)
|
|
r(3) = final_grid_points(3,ipoint)
|
|
|
|
do i = 1, ao_num
|
|
do j = i, ao_num
|
|
|
|
tmp = 0.d0
|
|
|
|
! ---
|
|
|
|
coef = List_env1s_coef (1)
|
|
beta = List_env1s_expo (1)
|
|
B_center(1) = List_env1s_cent(1,1)
|
|
B_center(2) = List_env1s_cent(2,1)
|
|
B_center(3) = List_env1s_cent(3,1)
|
|
|
|
int_mu = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
|
int_coulomb = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
|
|
|
tmp += coef * (int_mu - int_coulomb)
|
|
|
|
! ---
|
|
|
|
do i_1s = 2, List_env1s_size
|
|
|
|
coef = List_env1s_coef (i_1s)
|
|
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
|
beta = List_env1s_expo (i_1s)
|
|
B_center(1) = List_env1s_cent(1,i_1s)
|
|
B_center(2) = List_env1s_cent(2,i_1s)
|
|
B_center(3) = List_env1s_cent(3,i_1s)
|
|
|
|
int_mu = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
|
int_coulomb = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
|
|
|
tmp += coef * (int_mu - int_coulomb)
|
|
enddo
|
|
|
|
! ---
|
|
|
|
v_ij_erf_rk_cst_mu_env(j,i,ipoint) = tmp
|
|
enddo
|
|
enddo
|
|
enddo
|
|
!$OMP END DO
|
|
!$OMP END PARALLEL
|
|
|
|
do ipoint = 1, n_points_final_grid
|
|
do i = 2, ao_num
|
|
do j = 1, i-1
|
|
v_ij_erf_rk_cst_mu_env(j,i,ipoint) = v_ij_erf_rk_cst_mu_env(i,j,ipoint)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
|
|
call wall_time(wall1)
|
|
print*, ' wall time for v_ij_erf_rk_cst_mu_env (min) = ', (wall1 - wall0) / 60.d0
|
|
|
|
END_PROVIDER
|
|
|
|
! ---
|
|
|
|
BEGIN_PROVIDER [double precision, x_v_ij_erf_rk_cst_mu_env, (ao_num, ao_num, n_points_final_grid, 3)]
|
|
|
|
BEGIN_DOC
|
|
! int dr x phi_i(r) phi_j(r) 1s_env(r) (erf(mu(R) |r - R|) - 1)/|r - R|
|
|
END_DOC
|
|
|
|
implicit none
|
|
integer :: i, j, ipoint, i_1s
|
|
double precision :: coef, beta, B_center(3), r(3), ints(3), ints_coulomb(3)
|
|
double precision :: tmp_x, tmp_y, tmp_z
|
|
double precision :: wall0, wall1
|
|
|
|
print*, ' providing x_v_ij_erf_rk_cst_mu_env ...'
|
|
call wall_time(wall0)
|
|
|
|
x_v_ij_erf_rk_cst_mu_env = 0.d0
|
|
|
|
!$OMP PARALLEL DEFAULT (NONE) &
|
|
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, ints, ints_coulomb, &
|
|
!$OMP tmp_x, tmp_y, tmp_z) &
|
|
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, final_grid_points,&
|
|
!$OMP List_env1s_coef, List_env1s_expo, List_env1s_cent, &
|
|
!$OMP x_v_ij_erf_rk_cst_mu_env, mu_erf)
|
|
!$OMP DO
|
|
!do ipoint = 1, 10
|
|
do ipoint = 1, n_points_final_grid
|
|
r(1) = final_grid_points(1,ipoint)
|
|
r(2) = final_grid_points(2,ipoint)
|
|
r(3) = final_grid_points(3,ipoint)
|
|
|
|
do i = 1, ao_num
|
|
do j = i, ao_num
|
|
|
|
tmp_x = 0.d0
|
|
tmp_y = 0.d0
|
|
tmp_z = 0.d0
|
|
|
|
! ---
|
|
|
|
coef = List_env1s_coef (1)
|
|
beta = List_env1s_expo (1)
|
|
B_center(1) = List_env1s_cent(1,1)
|
|
B_center(2) = List_env1s_cent(2,1)
|
|
B_center(3) = List_env1s_cent(3,1)
|
|
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, ints )
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, ints_coulomb)
|
|
|
|
! if( dabs(coef)*(dabs(ints(1)-ints_coulomb(1)) + dabs(ints(2)-ints_coulomb(2)) + dabs(ints(3)-ints_coulomb(3))) .lt. 3d-10) cycle
|
|
|
|
tmp_x += coef * (ints(1) - ints_coulomb(1))
|
|
tmp_y += coef * (ints(2) - ints_coulomb(2))
|
|
tmp_z += coef * (ints(3) - ints_coulomb(3))
|
|
|
|
! ---
|
|
|
|
do i_1s = 2, List_env1s_size
|
|
|
|
coef = List_env1s_coef (i_1s)
|
|
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
|
beta = List_env1s_expo (i_1s)
|
|
B_center(1) = List_env1s_cent(1,i_1s)
|
|
B_center(2) = List_env1s_cent(2,i_1s)
|
|
B_center(3) = List_env1s_cent(3,i_1s)
|
|
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, ints )
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, ints_coulomb)
|
|
|
|
tmp_x += coef * (ints(1) - ints_coulomb(1))
|
|
tmp_y += coef * (ints(2) - ints_coulomb(2))
|
|
tmp_z += coef * (ints(3) - ints_coulomb(3))
|
|
enddo
|
|
|
|
! ---
|
|
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,1) = tmp_x
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,2) = tmp_y
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,3) = tmp_z
|
|
enddo
|
|
enddo
|
|
enddo
|
|
!$OMP END DO
|
|
!$OMP END PARALLEL
|
|
|
|
do ipoint = 1, n_points_final_grid
|
|
do i = 2, ao_num
|
|
do j = 1, i-1
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,1) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,1)
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,2) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,2)
|
|
x_v_ij_erf_rk_cst_mu_env(j,i,ipoint,3) = x_v_ij_erf_rk_cst_mu_env(i,j,ipoint,3)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
|
|
call wall_time(wall1)
|
|
print*, ' wall time for x_v_ij_erf_rk_cst_mu_env (min) =', (wall1 - wall0) / 60.d0
|
|
|
|
END_PROVIDER
|
|
|
|
! ---
|
|
|
|
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_fit, (ao_num, ao_num, n_points_final_grid)]
|
|
|
|
BEGIN_DOC
|
|
!
|
|
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
|
!
|
|
END_DOC
|
|
|
|
implicit none
|
|
integer :: i, j, ipoint, i_1s, i_fit
|
|
double precision :: r(3), int_fit, expo_fit, coef_fit
|
|
double precision :: coef, beta, B_center(3)
|
|
double precision :: tmp
|
|
double precision :: wall0, wall1
|
|
|
|
double precision, external :: overlap_gauss_r12_ao_with1s
|
|
|
|
print*, ' providing v_ij_u_cst_mu_env_fit ...'
|
|
call wall_time(wall0)
|
|
|
|
provide mu_erf final_grid_points env_expo
|
|
PROVIDE ng_fit_jast expo_gauss_j_mu_x coef_gauss_j_mu_x
|
|
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
|
|
|
v_ij_u_cst_mu_env_fit = 0.d0
|
|
|
|
!$OMP PARALLEL DEFAULT (NONE) &
|
|
!$OMP PRIVATE (ipoint, i, j, i_1s, i_fit, r, coef, beta, B_center, &
|
|
!$OMP coef_fit, expo_fit, int_fit, tmp) &
|
|
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
|
!$OMP final_grid_points, ng_fit_jast, &
|
|
!$OMP expo_gauss_j_mu_x, coef_gauss_j_mu_x, &
|
|
!$OMP List_env1s_coef, List_env1s_expo, &
|
|
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_fit)
|
|
!$OMP DO
|
|
do ipoint = 1, n_points_final_grid
|
|
r(1) = final_grid_points(1,ipoint)
|
|
r(2) = final_grid_points(2,ipoint)
|
|
r(3) = final_grid_points(3,ipoint)
|
|
|
|
do i = 1, ao_num
|
|
do j = i, ao_num
|
|
|
|
tmp = 0.d0
|
|
do i_fit = 1, ng_fit_jast
|
|
expo_fit = expo_gauss_j_mu_x(i_fit)
|
|
coef_fit = coef_gauss_j_mu_x(i_fit)
|
|
|
|
! ---
|
|
|
|
coef = List_env1s_coef (1)
|
|
beta = List_env1s_expo (1)
|
|
B_center(1) = List_env1s_cent(1,1)
|
|
B_center(2) = List_env1s_cent(2,1)
|
|
B_center(3) = List_env1s_cent(3,1)
|
|
|
|
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
|
|
|
tmp += coef * coef_fit * int_fit
|
|
|
|
! ---
|
|
|
|
do i_1s = 2, List_env1s_size
|
|
|
|
coef = List_env1s_coef (i_1s)
|
|
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
|
beta = List_env1s_expo (i_1s)
|
|
B_center(1) = List_env1s_cent(1,i_1s)
|
|
B_center(2) = List_env1s_cent(2,i_1s)
|
|
B_center(3) = List_env1s_cent(3,i_1s)
|
|
|
|
int_fit = overlap_gauss_r12_ao_with1s(B_center, beta, r, expo_fit, i, j)
|
|
|
|
tmp += coef * coef_fit * int_fit
|
|
enddo
|
|
|
|
! ---
|
|
|
|
enddo
|
|
|
|
v_ij_u_cst_mu_env_fit(j,i,ipoint) = tmp
|
|
enddo
|
|
enddo
|
|
enddo
|
|
!$OMP END DO
|
|
!$OMP END PARALLEL
|
|
|
|
do ipoint = 1, n_points_final_grid
|
|
do i = 2, ao_num
|
|
do j = 1, i-1
|
|
v_ij_u_cst_mu_env_fit(j,i,ipoint) = v_ij_u_cst_mu_env_fit(i,j,ipoint)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
|
|
call wall_time(wall1)
|
|
print*, ' wall time for v_ij_u_cst_mu_env_fit (min) = ', (wall1 - wall0) / 60.d0
|
|
|
|
END_PROVIDER
|
|
|
|
! ---
|
|
|
|
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_an_old, (ao_num, ao_num, n_points_final_grid)]
|
|
|
|
BEGIN_DOC
|
|
!
|
|
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
|
!
|
|
END_DOC
|
|
|
|
include 'constants.include.F'
|
|
|
|
implicit none
|
|
integer :: i, j, ipoint, i_1s
|
|
double precision :: r(3), r1_2
|
|
double precision :: int_c1, int_e1, int_o
|
|
double precision :: int_c2(3), int_e2(3)
|
|
double precision :: int_c3(3), int_e3(3)
|
|
double precision :: coef, beta, B_center(3)
|
|
double precision :: tmp, ct
|
|
double precision :: wall0, wall1
|
|
|
|
double precision, external :: overlap_gauss_r12_ao_with1s
|
|
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
|
|
|
print*, ' providing v_ij_u_cst_mu_env_an_old ...'
|
|
call wall_time(wall0)
|
|
|
|
provide mu_erf final_grid_points env_expo
|
|
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
|
|
|
ct = inv_sq_pi_2 / mu_erf
|
|
|
|
v_ij_u_cst_mu_env_an_old = 0.d0
|
|
|
|
!$OMP PARALLEL DEFAULT (NONE) &
|
|
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, &
|
|
!$OMP r1_2, tmp, int_c1, int_e1, int_o, int_c2, &
|
|
!$OMP int_e2, int_c3, int_e3) &
|
|
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
|
!$OMP final_grid_points, mu_erf, ct, &
|
|
!$OMP List_env1s_coef, List_env1s_expo, &
|
|
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_an_old)
|
|
!$OMP DO
|
|
do ipoint = 1, n_points_final_grid
|
|
|
|
r(1) = final_grid_points(1,ipoint)
|
|
r(2) = final_grid_points(2,ipoint)
|
|
r(3) = final_grid_points(3,ipoint)
|
|
r1_2 = 0.5d0 * (r(1)*r(1) + r(2)*r(2) + r(3)*r(3))
|
|
|
|
do i = 1, ao_num
|
|
do j = i, ao_num
|
|
|
|
! ---
|
|
|
|
coef = List_env1s_coef (1)
|
|
beta = List_env1s_expo (1)
|
|
B_center(1) = List_env1s_cent(1,1)
|
|
B_center(2) = List_env1s_cent(2,1)
|
|
B_center(3) = List_env1s_cent(3,1)
|
|
|
|
int_c1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
|
int_e1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
|
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c2)
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e2)
|
|
|
|
call NAI_pol_x2_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c3)
|
|
call NAI_pol_x2_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e3)
|
|
|
|
int_o = overlap_gauss_r12_ao_with1s(B_center, beta, r, mu_erf*mu_erf, i, j)
|
|
|
|
tmp = coef &
|
|
* ( r1_2 * (int_c1 - int_e1) &
|
|
- r(1) * (int_c2(1) - int_e2(1)) - r(2) * (int_c2(2) - int_e2(2)) - r(3) * (int_c2(3) - int_e2(3)) &
|
|
+ 0.5d0 * (int_c3(1) + int_c3(2) + int_c3(3) - int_e3(1) - int_e3(2) - int_e3(3)) &
|
|
- ct * int_o &
|
|
)
|
|
|
|
! ---
|
|
|
|
do i_1s = 2, List_env1s_size
|
|
|
|
coef = List_env1s_coef (i_1s)
|
|
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
|
beta = List_env1s_expo (i_1s)
|
|
B_center(1) = List_env1s_cent(1,i_1s)
|
|
B_center(2) = List_env1s_cent(2,i_1s)
|
|
B_center(3) = List_env1s_cent(3,i_1s)
|
|
|
|
int_c1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r)
|
|
int_e1 = NAI_pol_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r)
|
|
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c2)
|
|
call NAI_pol_x_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e2)
|
|
|
|
call NAI_pol_x2_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c3)
|
|
call NAI_pol_x2_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e3)
|
|
|
|
int_o = overlap_gauss_r12_ao_with1s(B_center, beta, r, mu_erf*mu_erf, i, j)
|
|
|
|
tmp = tmp + coef &
|
|
* ( r1_2 * (int_c1 - int_e1) &
|
|
- r(1) * (int_c2(1) - int_e2(1)) - r(2) * (int_c2(2) - int_e2(2)) - r(3) * (int_c2(3) - int_e2(3)) &
|
|
+ 0.5d0 * (int_c3(1) + int_c3(2) + int_c3(3) - int_e3(1) - int_e3(2) - int_e3(3)) &
|
|
- ct * int_o &
|
|
)
|
|
|
|
enddo
|
|
|
|
! ---
|
|
|
|
v_ij_u_cst_mu_env_an_old(j,i,ipoint) = tmp
|
|
enddo
|
|
enddo
|
|
enddo
|
|
!$OMP END DO
|
|
!$OMP END PARALLEL
|
|
|
|
do ipoint = 1, n_points_final_grid
|
|
do i = 2, ao_num
|
|
do j = 1, i-1
|
|
v_ij_u_cst_mu_env_an_old(j,i,ipoint) = v_ij_u_cst_mu_env_an_old(i,j,ipoint)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
|
|
call wall_time(wall1)
|
|
print*, ' wall time for v_ij_u_cst_mu_env_an_old (min) = ', (wall1 - wall0) / 60.d0
|
|
|
|
END_PROVIDER
|
|
|
|
! ---
|
|
|
|
BEGIN_PROVIDER [double precision, v_ij_u_cst_mu_env_an, (ao_num, ao_num, n_points_final_grid)]
|
|
|
|
BEGIN_DOC
|
|
!
|
|
! int dr2 phi_i(r2) phi_j(r2) 1s_env(r2) u(mu, r12)
|
|
!
|
|
END_DOC
|
|
|
|
include 'constants.include.F'
|
|
|
|
implicit none
|
|
integer :: i, j, ipoint, i_1s
|
|
double precision :: r(3), r1_2
|
|
double precision :: int_o
|
|
double precision :: int_c(7), int_e(7)
|
|
double precision :: coef, beta, B_center(3)
|
|
double precision :: tmp, ct
|
|
double precision :: wall0, wall1
|
|
|
|
double precision, external :: overlap_gauss_r12_ao_with1s
|
|
double precision, external :: NAI_pol_mult_erf_ao_with1s
|
|
|
|
print*, ' providing v_ij_u_cst_mu_env_an ...'
|
|
call wall_time(wall0)
|
|
|
|
provide mu_erf final_grid_points env_expo
|
|
PROVIDE List_env1s_size List_env1s_coef List_env1s_expo List_env1s_cent
|
|
|
|
ct = inv_sq_pi_2 / mu_erf
|
|
|
|
v_ij_u_cst_mu_env_an = 0.d0
|
|
|
|
!$OMP PARALLEL DEFAULT (NONE) &
|
|
!$OMP PRIVATE (ipoint, i, j, i_1s, r, coef, beta, B_center, &
|
|
!$OMP r1_2, tmp, int_c, int_e, int_o) &
|
|
!$OMP SHARED (n_points_final_grid, ao_num, List_env1s_size, &
|
|
!$OMP final_grid_points, mu_erf, ct, &
|
|
!$OMP List_env1s_coef, List_env1s_expo, &
|
|
!$OMP List_env1s_cent, v_ij_u_cst_mu_env_an)
|
|
!$OMP DO
|
|
do ipoint = 1, n_points_final_grid
|
|
|
|
r(1) = final_grid_points(1,ipoint)
|
|
r(2) = final_grid_points(2,ipoint)
|
|
r(3) = final_grid_points(3,ipoint)
|
|
r1_2 = 0.5d0 * (r(1)*r(1) + r(2)*r(2) + r(3)*r(3))
|
|
|
|
do i = 1, ao_num
|
|
do j = i, ao_num
|
|
|
|
! ---
|
|
|
|
coef = List_env1s_coef (1)
|
|
beta = List_env1s_expo (1)
|
|
B_center(1) = List_env1s_cent(1,1)
|
|
B_center(2) = List_env1s_cent(2,1)
|
|
B_center(3) = List_env1s_cent(3,1)
|
|
|
|
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c)
|
|
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e)
|
|
|
|
int_o = overlap_gauss_r12_ao_with1s(B_center, beta, r, mu_erf*mu_erf, i, j)
|
|
|
|
tmp = coef &
|
|
* ( r1_2 * (int_c(1) - int_e(1)) &
|
|
- r(1) * (int_c(2) - int_e(2)) - r(2) * (int_c(3) - int_e(3)) - r(3) * (int_c(4) - int_e(4)) &
|
|
+ 0.5d0 * (int_c(5) + int_c(6) + int_c(7) - int_e(5) - int_e(6) - int_e(7)) &
|
|
- ct * int_o &
|
|
)
|
|
|
|
! ---
|
|
|
|
do i_1s = 2, List_env1s_size
|
|
|
|
coef = List_env1s_coef (i_1s)
|
|
if(dabs(coef) .lt. 1d-15) cycle ! beta = 0.0
|
|
beta = List_env1s_expo (i_1s)
|
|
B_center(1) = List_env1s_cent(1,i_1s)
|
|
B_center(2) = List_env1s_cent(2,i_1s)
|
|
B_center(3) = List_env1s_cent(3,i_1s)
|
|
|
|
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, 1.d+9, r, int_c)
|
|
call NAI_pol_012_mult_erf_ao_with1s(i, j, beta, B_center, mu_erf, r, int_e)
|
|
|
|
int_o = overlap_gauss_r12_ao_with1s(B_center, beta, r, mu_erf*mu_erf, i, j)
|
|
|
|
tmp = tmp + coef &
|
|
* ( r1_2 * (int_c(1) - int_e(1)) &
|
|
- r(1) * (int_c(2) - int_e(2)) - r(2) * (int_c(3) - int_e(3)) - r(3) * (int_c(4) - int_e(4)) &
|
|
+ 0.5d0 * (int_c(5) + int_c(6) + int_c(7) - int_e(5) - int_e(6) - int_e(7)) &
|
|
- ct * int_o &
|
|
)
|
|
|
|
enddo
|
|
|
|
! ---
|
|
|
|
v_ij_u_cst_mu_env_an(j,i,ipoint) = tmp
|
|
enddo
|
|
enddo
|
|
enddo
|
|
!$OMP END DO
|
|
!$OMP END PARALLEL
|
|
|
|
do ipoint = 1, n_points_final_grid
|
|
do i = 2, ao_num
|
|
do j = 1, i-1
|
|
v_ij_u_cst_mu_env_an(j,i,ipoint) = v_ij_u_cst_mu_env_an(i,j,ipoint)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
|
|
call wall_time(wall1)
|
|
print*, ' wall time for v_ij_u_cst_mu_env_an (min) = ', (wall1 - wall0) / 60.d0
|
|
|
|
END_PROVIDER
|
|
|
|
! ---
|