4
1
mirror of https://github.com/pfloos/quack synced 2024-06-02 11:25:28 +02:00
quack/src/HF/dipole_moment.f90

54 lines
1.0 KiB
Fortran
Raw Permalink Normal View History

2020-10-04 09:36:03 +02:00
subroutine dipole_moment(nBas,P,nNuc,ZNuc,rNuc,dipole_int,dipole)
! Compute density matrix based on the occupation numbers
implicit none
include 'parameters.h'
! Input variables
integer,intent(in) :: nBas
integer,intent(in) :: nNuc
double precision,intent(in) :: P(nBas,nBas)
double precision,intent(in) :: ZNuc(nNuc)
double precision,intent(in) :: rNuc(nNuc,ncart)
double precision,intent(in) :: dipole_int(nBas,nBas,ncart)
! Local variables
integer :: ixyz
integer :: iNuc
integer :: mu,nu
! Output variables
double precision,intent(out) :: dipole(ncart)
! Initialization
dipole(:) = 0d0
! Loop over cartesian components
do ixyz=1,ncart
! Nuclear part
do iNuc=1,nNuc
dipole(ixyz) = dipole(ixyz) + ZNuc(iNuc)*rNuc(iNuc,ixyz)
end do
! Electronic part
2022-12-10 09:03:28 +01:00
do nu=1,nBas
do mu=1,nBas
2020-10-04 12:40:44 +02:00
dipole(ixyz) = dipole(ixyz) - P(mu,nu)*dipole_int(mu,nu,ixyz)
2023-12-03 18:47:30 +01:00
end do
end do
2020-10-04 09:36:03 +02:00
2023-12-03 18:47:30 +01:00
end do
2020-10-04 09:36:03 +02:00
end subroutine