9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2025-01-08 19:32:58 +01:00
qp2/plugins/local/extra_basis_int/extra_basis_int.irp.f

150 lines
3.2 KiB
Fortran

program extra_basis_int
implicit none
BEGIN_DOC
! TODO : Put the documentation of the program here
END_DOC
! call test_overlap
! call routine_test_pot_ne
! call routine_test_pot_ne_mixed
! call routine_pot_ne_extra
! call routine_test_pot_ne_mixed
! call routine_pot_ne
! call routine_test_pot_ne_extra_mixed
call routine_test_coul_1s
end
subroutine test_overlap
implicit none
integer :: i,j
do i = 1, ao_extra_num
do j = 1, ao_extra_num
write(33,*)ao_extra_overlap(j,i)
enddo
enddo
end
subroutine test_overlap_mixed
implicit none
integer :: i,j
double precision, allocatable :: ao_mixed_overlap(:,:)
allocate(ao_mixed_overlap(ao_extra_num,ao_num))
call get_ao_mixed_overlap(extra_nucl_coord,ao_mixed_overlap)
do i = 1, ao_extra_num
do j = 1, ao_num
write(33,*)dabs(ao_extra_overlap_mixed(j,i)-ao_mixed_overlap(i,j))
write(*,*)ao_extra_overlap_mixed(j,i),ao_mixed_overlap(i,j),dabs(ao_extra_overlap_mixed(j,i)-ao_mixed_overlap(i,j))
enddo
enddo
end
subroutine routine_test_pot_ne
implicit none
integer :: i,j
double precision :: integral, C_center(3), mu_in
double precision :: NAI_pol_mult_erf_ao_extra
C_center(1) = 0.1d0
C_center(2) = -0.3d0
C_center(3) = 0.8d0
mu_in = 1.d10
do i = 1, ao_extra_num
do j = 1, ao_extra_num
integral = NAI_pol_mult_erf_ao_extra(i, j, mu_in, C_center)
write(33,*)j,i,integral
enddo
enddo
end
subroutine routine_test_pot_mixed
implicit none
integer :: i,j
double precision :: integral, C_center(3), mu_in
double precision :: NAI_pol_mult_erf_ao_extra_mixed
C_center(1) = 0.1d0
C_center(2) = -0.3d0
C_center(3) = 0.8d0
mu_in = 1.d10
do j = 1, ao_num
do i = 1, ao_extra_num
integral = NAI_pol_mult_erf_ao_extra_mixed(i, j, mu_in, C_center)
write(33,*)integral
enddo
enddo
end
subroutine routine_pot_ne_extra
implicit none
integer :: i,j
double precision :: v_extra_nucl_extra_ao
do i = 1, ao_extra_num
do j = 1, ao_extra_num
write(33,*)v_extra_nucl_extra_ao(i,j)
enddo
enddo
end
subroutine routine_pot_ne
implicit none
integer :: i,j
double precision :: v_nucl_extra_ao
do i = 1, ao_extra_num
do j = 1, ao_extra_num
write(33,*)v_nucl_extra_ao(i,j)
enddo
enddo
end
subroutine routine_test_pot_ne_mixed
implicit none
integer :: i,j
double precision :: integral,v_extra_nucl_mixed_ao
do j = 1, ao_num
do i = 1, ao_extra_num
integral = v_extra_nucl_mixed_ao(i,j)
write(33,*)integral
enddo
enddo
end
subroutine routine_test_pot_ne_extra_mixed
implicit none
integer :: i,j
double precision :: integral,v_nucl_mixed_ao
do j = 1, ao_num
do i = 1, ao_extra_num
integral = v_nucl_mixed_ao(i,j)
write(33,*)integral
enddo
enddo
end
subroutine routine_test_coul_1s
implicit none
integer :: i,j
double precision :: r(3) ,mu_in,NAI_pol_mult_erf_ao_extra
double precision :: ref,new, accu,coul_full_pq_r_1s,v_nucl_extra_ao
r(1) = 0.d0
r(2) = 0.5d0
r(3) = -1.5d0
r=nucl_coord(1,1:3)
mu_in = 1.d+10
accu = 0.d0
do i = 1, ao_extra_num
do j = 1, ao_extra_num
! do i = 1, 1
! do j = 1, 1
ref = NAI_pol_mult_erf_ao_extra(i, j, mu_in, r)
new = coul_full_pq_r_1s(i,j,r,ao_extra_center_1s(1,i),ao_extra_center_1s(1,j))
! new = v_nucl_extra_ao(i,j)
accu += dabs(new-ref)
enddo
enddo
print*,'accu = ',accu
end