9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2025-04-26 02:04:45 +02:00

ao_cart_one_ints compiles

This commit is contained in:
eginer 2025-04-25 12:03:51 +02:00
parent 451351600e
commit 6695444367
10 changed files with 44 additions and 43 deletions

View File

@ -67,8 +67,8 @@ subroutine ao_cart_to_ao_basis(A_cart, LDA_cart, A_ao_basis, LDA_ao_basis)
!
! A_cart = ao_cart_to_ao_basis_mat A_cart ao_cart_to_ao_basis_mat^T
END_DOC
double precision, intent(in) :: A_cart(LDA_cart, ao_cart_num)
double precision, intent(out :: A_ao_basis(LDA_ao_basis, ao_num)
double precision, intent(in) :: A_cart(LDA_cart, ao_cart_num)
double precision, intent(out) :: A_ao_basis(LDA_ao_basis, ao_num)
integer, intent(in) :: LDA_cart, LDA_ao_basis
double precision, allocatable :: tmp(:,:)
allocate (tmp(ao_num,ao_cart_num))
@ -96,8 +96,8 @@ subroutine ao_cart_to_ao_basis_vec(V_cart, V_ao_basis)
!
! V_cart = ao_cart_to_ao_basis_mat V_cart
END_DOC
double precision, intent(in) :: V_cart(ao_cart_num)
double precision, intent(out :: A_ao_basis(ao_num)
double precision, intent(in) :: V_cart(ao_cart_num)
double precision, intent(out) :: V_ao_basis(ao_num)
call dgemv('N',ao_num,ao_cart_num, 1.d0, &
ao_cart_to_ao_basis_mat,size(ao_cart_to_ao_basis_mat,1), &

View File

@ -45,7 +45,7 @@ END_PROVIDER
! Spherical to cartesian transformation matrix obtained with
! Horton (http://theochem.github.com/horton/, 2015)
! First index is the index of the cartesian AO, obtained by ao_power_index
! First index is the index of the cartesian AO, obtained by ao_cart_power_index
! Second index is the index of the spherical AO
BEGIN_PROVIDER [ double precision, cart_to_sphe_0, (1,1) ]
@ -855,7 +855,7 @@ END_PROVIDER
!! S_cart^-1 <cart|sphe>
! END_DOC
! integer :: i
! integer, external :: ao_power_index
! integer, external :: ao_cart_power_index
! integer :: ibegin,j,k
! integer :: prev, ao_sphe_count
! prev = 0
@ -868,18 +868,18 @@ END_PROVIDER
! enddo
! else
! ! Assume order provided by ao_power_index
! ! Assume order provided by ao_cart_power_index
! i = 1
! ao_sphe_count = 0
! do while (i <= ao_num)
! select case ( ao_l(i) )
! select case ( ao_cart_l(i) )
! case (0)
! ao_sphe_count += 1
! ao_cart_to_sphe_coef(i,ao_sphe_count) = 1.d0
! i += 1
! BEGIN_TEMPLATE
! case ($SHELL)
! if (ao_power(i,1) == $SHELL) then
! if (ao_cart_power(i,1) == $SHELL) then
! do k=1,size(cart_to_sphe_$SHELL,2)
! do j=1,size(cart_to_sphe_$SHELL,1)
! ao_cart_to_sphe_coef(i+j-1,ao_sphe_count+k) = cart_to_sphe_$SHELL(j,k)
@ -924,7 +924,7 @@ END_PROVIDER
! S_cart^-1 <cart|sphe>
END_DOC
integer :: i
integer, external :: ao_power_index
integer, external :: ao_cart_power_index
integer :: ibegin,j,k
integer :: prev, ao_sphe_count
prev = 0
@ -938,11 +938,11 @@ END_PROVIDER
enddo
else
! Assume order provided by ao_power_index
! Assume order provided by ao_cart_power_index
i = 1
ao_sphe_count = 0
do while (i <= ao_num)
select case ( ao_l(i) )
select case ( ao_cart_l(i) )
case (0)
ao_sphe_count += 1
ao_cart_to_sphe_coef(i,ao_sphe_count) = 1.d0
@ -950,7 +950,7 @@ END_PROVIDER
i += 1
BEGIN_TEMPLATE
case ($SHELL)
if (ao_power(i,1) == $SHELL) then
if (ao_cart_power(i,1) == $SHELL) then
do k=1,size(cart_to_sphe_$SHELL,2)
do j=1,size(cart_to_sphe_$SHELL,1)
ao_cart_to_sphe_coef(i+j-1,ao_sphe_count+k) = cart_to_sphe_$SHELL(j,k)

View File

@ -26,7 +26,7 @@ BEGIN_PROVIDER [double precision, ao_cart_integrals_n_e_cgtos, (ao_cart_num, ao_
ao_cart_coul_n_e_cgtos = 0.d0
ao_cart_integrals_n_e_cgtos = 0.d0
!$OMP PARALLEL &
!$OMP DEFAULT (NONE) &
@ -37,7 +37,7 @@ BEGIN_PROVIDER [double precision, ao_cart_integrals_n_e_cgtos, (ao_cart_num, ao_
!$OMP ao_cart_power, nucl_num, nucl_charge, n_pt_max_integrals, &
!$OMP ao_cart_expo_cgtos_ord_transp, ao_cart_coef_cgtos_norm_ord_transp, &
!$OMP ao_cart_expo_pw_ord_transp, ao_cart_expo_phase_ord_transp, &
!$OMP ao_cart_coul_n_e_cgtos)
!$OMP ao_cart_integrals_n_e_cgtos)
!$OMP DO SCHEDULE (dynamic)
do j = 1, ao_cart_num
@ -91,7 +91,7 @@ BEGIN_PROVIDER [double precision, ao_cart_integrals_n_e_cgtos, (ao_cart_num, ao_
c = c - Z * 2.d0 * real(C1 * I1 + C2 * I2)
enddo
ao_cart_coul_n_e_cgtos(i,j) += c * ao_cart_coef_cgtos_norm_ord_transp(n,j) &
ao_cart_integrals_n_e_cgtos(i,j) += c * ao_cart_coef_cgtos_norm_ord_transp(n,j) &
* ao_cart_coef_cgtos_norm_ord_transp(l,i)
enddo
enddo

View File

@ -47,7 +47,7 @@ double precision function NAI_pol_mult_erf_ao_cart(i_ao, j_ao, mu_in, C_center)
n_pt_in = n_pt_max_integrals
NAI_pol_mult_erf_ao = 0.d0
NAI_pol_mult_erf_ao_cart = 0.d0
do i = 1, ao_cart_prim_num(i_ao)
alpha = ao_cart_expo_ordered_transp(i,i_ao)
do j = 1, ao_cart_prim_num(j_ao)
@ -55,11 +55,11 @@ double precision function NAI_pol_mult_erf_ao_cart(i_ao, j_ao, mu_in, C_center)
integral = NAI_pol_mult_erf(A_center, B_center, power_A, power_B, alpha, beta, C_center, n_pt_in,mu_in)
NAI_pol_mult_erf_ao += integral * ao_cart_coef_normalized_ordered_transp(j,j_ao) * ao_cart_coef_normalized_ordered_transp(i,i_ao)
NAI_pol_mult_erf_ao_cart += integral * ao_cart_coef_normalized_ordered_transp(j,j_ao) * ao_cart_coef_normalized_ordered_transp(i,i_ao)
enddo
enddo
end function NAI_pol_mult_erf_ao
end function NAI_pol_mult_erf_ao_cart
! ---

View File

@ -1,7 +1,7 @@
! ---
BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
BEGIN_PROVIDER [ double precision, ao_cart_integrals_n_e, (ao_cart_num,ao_cart_num)]
BEGIN_DOC
! Nucleus-electron interaction, in the |AO| basis set.
@ -18,11 +18,11 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
double precision :: A_center(3),B_center(3),C_center(3)
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
ao_cart_coul_n_e = 0.d0
ao_cart_integrals_n_e = 0.d0
if (read_ao_cart_coul_n_e) then
if (read_ao_cart_integrals_n_e) then
call ezfio_get_ao_cart_one_e_ints_ao_cart_coul_n_e(ao_cart_coul_n_e)
call ezfio_get_ao_cart_one_e_ints_ao_cart_integrals_n_e(ao_cart_integrals_n_e)
print *, 'AO N-e integrals read from disk'
else
@ -31,7 +31,7 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
do j = 1, ao_cart_num
do i = 1, ao_cart_num
ao_cart_coul_n_e(i,j) = ao_cart_coul_n_e_cgtos(i,j)
ao_cart_integrals_n_e(i,j) = ao_cart_integrals_n_e_cgtos(i,j)
enddo
enddo
@ -42,7 +42,7 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,C_center,power_A,power_B,&
!$OMP num_A,num_B,Z,c,c1,n_pt_in) &
!$OMP SHARED (ao_cart_num,ao_cart_prim_num,ao_cart_expo_ordered_transp,ao_cart_power,ao_cart_nucl,nucl_coord,ao_cart_coef_normalized_ordered_transp,&
!$OMP n_pt_max_integrals,ao_cart_coul_n_e,nucl_num,nucl_charge)
!$OMP n_pt_max_integrals,ao_cart_integrals_n_e,nucl_num,nucl_charge)
n_pt_in = n_pt_max_integrals
@ -86,7 +86,7 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
c = c - Z * c1
enddo
ao_cart_coul_n_e(i,j) = ao_cart_coul_n_e(i,j) &
ao_cart_integrals_n_e(i,j) = ao_cart_integrals_n_e(i,j) &
+ ao_cart_coef_normalized_ordered_transp(l,j) &
* ao_cart_coef_normalized_ordered_transp(m,i) * c
enddo
@ -102,14 +102,14 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e, (ao_cart_num,ao_cart_num)]
endif
if (write_ao_cart_coul_n_e) then
call ezfio_set_ao_cart_one_e_ints_ao_cart_coul_n_e(ao_cart_coul_n_e)
if (write_ao_cart_integrals_n_e) then
call ezfio_set_ao_cart_one_e_ints_ao_cart_integrals_n_e(ao_cart_integrals_n_e)
print *, 'AO N-e integrals written to disk'
endif
END_PROVIDER
BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_imag, (ao_cart_num,ao_cart_num)]
BEGIN_PROVIDER [ double precision, ao_cart_integrals_n_e_imag, (ao_cart_num,ao_cart_num)]
BEGIN_DOC
! Nucleus-electron interaction, in the |AO| basis set.
!
@ -123,8 +123,8 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_imag, (ao_cart_num,ao_cart_n
integer :: i,j,k,l,n_pt_in,m
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
if (read_ao_cart_coul_n_e) then
call ezfio_get_ao_cart_one_e_ints_ao_cart_coul_n_e_imag(ao_cart_coul_n_e_imag)
if (read_ao_cart_integrals_n_e) then
call ezfio_get_ao_cart_one_e_ints_ao_cart_integrals_n_e_imag(ao_cart_integrals_n_e_imag)
print *, 'AO N-e integrals read from disk'
else
print *, irp_here, ': Not yet implemented'
@ -132,7 +132,7 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_imag, (ao_cart_num,ao_cart_n
END_PROVIDER
BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_per_atom, (ao_cart_num,ao_cart_num,nucl_num)]
BEGIN_PROVIDER [ double precision, ao_cart_integrals_n_e_per_atom, (ao_cart_num,ao_cart_num,nucl_num)]
BEGIN_DOC
! Nucleus-electron interaction in the |AO| basis set, per atom A.
!
@ -146,14 +146,14 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_per_atom, (ao_cart_num,ao_ca
integer :: i,j,k,l,n_pt_in,m
double precision :: overlap_x,overlap_y,overlap_z,overlap,dx,NAI_pol_mult
ao_cart_coul_n_e_per_atom = 0.d0
ao_cart_integrals_n_e_per_atom = 0.d0
!$OMP PARALLEL &
!$OMP DEFAULT (NONE) &
!$OMP PRIVATE (i,j,k,l,m,alpha,beta,A_center,B_center,power_A,power_B,&
!$OMP num_A,num_B,c,n_pt_in,C_center) &
!$OMP SHARED (ao_cart_num,ao_cart_prim_num,ao_cart_expo_ordered_transp,ao_cart_power,ao_cart_nucl,nucl_coord,ao_cart_coef_normalized_ordered_transp,&
!$OMP n_pt_max_integrals,ao_cart_coul_n_e_per_atom,nucl_num)
!$OMP n_pt_max_integrals,ao_cart_integrals_n_e_per_atom,nucl_num)
n_pt_in = n_pt_max_integrals
!$OMP DO SCHEDULE (dynamic)
@ -189,7 +189,7 @@ BEGIN_PROVIDER [ double precision, ao_cart_coul_n_e_per_atom, (ao_cart_num,ao_ca
* ao_cart_coef_normalized_ordered_transp(m,i)
enddo
enddo
ao_cart_coul_n_e_per_atom(i,j,k) = -c
ao_cart_integrals_n_e_per_atom(i,j,k) = -c
enddo
enddo
enddo

View File

@ -3,7 +3,8 @@ logical function ao_cart_two_e_integral_zero(i,j,k,l)
integer, intent(in) :: i,j,k,l
ao_cart_two_e_integral_zero = .False.
if (.not.(read_ao_cart_two_e_integrals.or.is_periodic.or.use_cgtos)) then
! if (.not.(read_ao_cart_two_e_integrals.or.is_periodic.or.use_cgtos)) then
if (.not.(is_periodic.or.use_cgtos)) then
if (ao_cart_overlap_abs(j,l)*ao_cart_overlap_abs(i,k) < ao_cart_integrals_threshold) then
ao_cart_two_e_integral_zero = .True.
return

View File

@ -39,7 +39,7 @@ double precision function NAI_pol_mult_erf_ao(i_ao, j_ao, mu_in, C_center)
end function NAI_pol_mult_erf_ao
! ---
subroutine all_NAI_pol_mult_erf_ao_with1s(beta, B_center, mu_in, C_center)
subroutine all_NAI_pol_mult_erf_ao_with1s(beta, B_center, mu_in, C_center,integrals_ao)
BEGIN_DOC
!
@ -59,7 +59,7 @@ subroutine all_NAI_pol_mult_erf_ao_with1s(beta, B_center, mu_in, C_center)
allocate(integrals_ao_cart(ao_cart_num,ao_cart_num))
do i = 1, ao_cart_num
do j = 1, ao_cart_num
integrals_ao_car(j,i) = NAI_pol_mult_erf_ao_cart_with1s(i_ao, j_ao, beta, B_center, mu_in, C_center)
integrals_ao_cart(j,i) = NAI_pol_mult_erf_ao_cart_with1s(i, j, beta, B_center, mu_in, C_center)
enddo
enddo
call ao_cart_to_ao_basis(integrals_ao_cart, ao_cart_num, integrals_ao, ao_num)
@ -84,7 +84,7 @@ double precision function NAI_pol_mult_erf_ao_with1s(i_ao, j_ao, beta, B_center,
allocate(integrals_ao(ao_num,ao_num),integrals_ao_cart(ao_cart_num,ao_cart_num))
do i = 1, ao_cart_num
do j = 1, ao_cart_num
integrals_ao_car(j,i) = NAI_pol_mult_erf_ao_cart_with1s(i_ao, j_ao, beta, B_center, mu_in, C_center)
integrals_ao_cart(j,i) = NAI_pol_mult_erf_ao_cart_with1s(i_ao, j_ao, beta, B_center, mu_in, C_center)
enddo
enddo
call ao_cart_to_ao_basis(integrals_ao_cart, ao_cart_num, integrals_ao, ao_num)

View File

@ -27,7 +27,7 @@ BEGIN_PROVIDER [ double precision, ao_integrals_n_e, (ao_num,ao_num)]
else
call ao_cart_to_ao_basis(ao_cart_coul_n_e, ao_cart_num, ao_integrals_n_e, ao_num)
call ao_cart_to_ao_basis(ao_cart_integrals_n_e, ao_cart_num, ao_integrals_n_e, ao_num)
IF(do_pseudo) THEN
ao_integrals_n_e += ao_pseudo_integrals
@ -78,7 +78,7 @@ BEGIN_PROVIDER [ double precision, ao_integrals_n_e_per_atom, (ao_num,ao_num,nuc
implicit none
integer :: i
do i = 1, nucl_num
call ao_cart_to_ao_basis(ao_cart_coul_n_e_per_atom(1,1,i), ao_cart_num,ao_integrals_n_e_per_atom(1,1,i), ao_num)
call ao_cart_to_ao_basis(ao_cart_integrals_n_e_per_atom(1,1,i), ao_cart_num,ao_integrals_n_e_per_atom(1,1,i), ao_num)
enddo
END_PROVIDER

View File

@ -79,7 +79,7 @@ doc: If true, assume primitive basis functions are normalized
interface: ezfio, provider, ocaml
default: true
[ao_normalized]
[ao_cart_normalized]
type: logical
doc: If true, normalize the basis functions
interface: ezfio, provider, ocaml

View File

@ -7,7 +7,7 @@
integer :: n_pt_sup
integer :: prim_power_l_max
include 'utils/constants.include.F'
prim_power_l_max = maxval(ao_power)
prim_power_l_max = maxval(ao_cart_power)
n_pt_max_integrals = 24 * prim_power_l_max + 4
n_pt_max_i_x = 8 * prim_power_l_max
ASSERT (n_pt_max_i_x-1 <= max_dim)