From 73f24c31300c621a81920de14b32d7c7ad91d225 Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Tue, 28 Jan 2020 15:40:00 -0600 Subject: [PATCH] complex mo overlap --- src/mo_one_e_ints/mo_overlap.irp.f | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/mo_one_e_ints/mo_overlap.irp.f b/src/mo_one_e_ints/mo_overlap.irp.f index 4ce83fcd..1301d473 100644 --- a/src/mo_one_e_ints/mo_overlap.irp.f +++ b/src/mo_one_e_ints/mo_overlap.irp.f @@ -37,3 +37,40 @@ BEGIN_PROVIDER [ double precision, mo_overlap,(mo_num,mo_num) ] END_PROVIDER +BEGIN_PROVIDER [ complex*16, mo_overlap_complex,(mo_num,mo_num) ] + implicit none + BEGIN_DOC +! Provider to check that the MOs are indeed orthonormal. + END_DOC + integer :: i,j,n,l + integer :: lmax + + + lmax = (ao_num/4) * 4 + !$OMP PARALLEL DO SCHEDULE(STATIC) DEFAULT(NONE) & + !$OMP PRIVATE(i,j,n,l) & + !$OMP SHARED(mo_overlap_complex,mo_coef_complex,ao_overlap_complex, & + !$OMP mo_num,ao_num,lmax) + do j=1,mo_num + do i= 1,mo_num + mo_overlap(i,j) = (0.d0,0.d0) + do n = 1, lmax,4 + do l = 1, ao_num + mo_overlap_complex(i,j) = mo_overlap_complex(i,j) + dconjg(mo_coef_complex(l,i)) * & + ( mo_coef_complex(n ,j) * ao_overlap_complex(l,n ) & + + mo_coef_complex(n+1,j) * ao_overlap_complex(l,n+1) & + + mo_coef_complex(n+2,j) * ao_overlap_complex(l,n+2) & + + mo_coef_complex(n+3,j) * ao_overlap_complex(l,n+3) ) + enddo + enddo + do n = lmax+1, ao_num + do l = 1, ao_num + mo_overlap_complex(i,j) = mo_overlap_complex(i,j) + mo_coef_complex(n,j) * dconjg(mo_coef_complex(l,i)) * ao_overlap_complex(l,n) + enddo + enddo + enddo + enddo + !$OMP END PARALLEL DO + +END_PROVIDER +