2023-05-04 15:50:40 +02:00
|
|
|
BEGIN_PROVIDER [ double precision, cholesky_mo, (mo_num, mo_num, cholesky_ao_num) ]
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Cholesky vectors in MO basis
|
|
|
|
END_DOC
|
|
|
|
|
|
|
|
integer :: k
|
|
|
|
|
2023-05-26 11:48:08 +02:00
|
|
|
call set_multiple_levels_omp(.False.)
|
2023-05-17 16:55:29 +02:00
|
|
|
print *, 'AO->MO Transformation of Cholesky vectors'
|
2023-05-04 15:50:40 +02:00
|
|
|
!$OMP PARALLEL DO PRIVATE(k)
|
|
|
|
do k=1,cholesky_ao_num
|
|
|
|
call ao_to_mo(cholesky_ao(1,1,k),ao_num,cholesky_mo(1,1,k),mo_num)
|
|
|
|
enddo
|
|
|
|
!$OMP END PARALLEL DO
|
2023-05-17 16:55:29 +02:00
|
|
|
print *, ''
|
|
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [ double precision, cholesky_mo_transp, (cholesky_ao_num, mo_num, mo_num) ]
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Cholesky vectors in MO basis
|
|
|
|
END_DOC
|
|
|
|
|
|
|
|
integer :: i,j,k
|
|
|
|
double precision, allocatable :: buffer(:,:)
|
|
|
|
|
|
|
|
print *, 'AO->MO Transformation of Cholesky vectors .'
|
2023-06-12 14:05:36 +02:00
|
|
|
|
|
|
|
call set_multiple_levels_omp(.False.)
|
2023-05-17 16:55:29 +02:00
|
|
|
!$OMP PARALLEL PRIVATE(i,j,k,buffer)
|
|
|
|
allocate(buffer(mo_num,mo_num))
|
|
|
|
!$OMP DO SCHEDULE(static)
|
|
|
|
do k=1,cholesky_ao_num
|
|
|
|
call ao_to_mo(cholesky_ao(1,1,k),ao_num,buffer,mo_num)
|
|
|
|
do j=1,mo_num
|
|
|
|
do i=1,mo_num
|
|
|
|
cholesky_mo_transp(k,i,j) = buffer(i,j)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
!$OMP END DO
|
|
|
|
deallocate(buffer)
|
|
|
|
!$OMP END PARALLEL
|
|
|
|
print *, ''
|
2023-05-04 15:50:40 +02:00
|
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|