mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-18 11:23:38 +01:00
fixed array assignment for complex nos
This commit is contained in:
parent
f011ca845e
commit
f32dc836a8
@ -259,6 +259,7 @@ subroutine set_natural_mos
|
|||||||
label = "Natural"
|
label = "Natural"
|
||||||
integer :: i,j,iorb,jorb,k
|
integer :: i,j,iorb,jorb,k
|
||||||
if (is_complex) then
|
if (is_complex) then
|
||||||
|
|
||||||
!todo: implement for kpts
|
!todo: implement for kpts
|
||||||
do k=1,kpt_num
|
do k=1,kpt_num
|
||||||
do i = 1, n_virt_orb_kpts(k)
|
do i = 1, n_virt_orb_kpts(k)
|
||||||
@ -273,6 +274,14 @@ subroutine set_natural_mos
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
!print*,'1RDM'
|
||||||
|
!do k=1,kpt_num
|
||||||
|
! do j=1,mo_num_per_kpt
|
||||||
|
! do i=1,mo_num_per_kpt
|
||||||
|
! print'(3(I5),2(E25.15))',i,j,k,one_e_dm_mo_kpts(i,j,k)
|
||||||
|
! enddo
|
||||||
|
! enddo
|
||||||
|
!enddo
|
||||||
! call mo_as_svd_vectors_of_mo_matrix_eig_complex(one_e_dm_mo_complex,size(one_e_dm_mo_complex,1),mo_num,mo_num,mo_occ,label)
|
! call mo_as_svd_vectors_of_mo_matrix_eig_complex(one_e_dm_mo_complex,size(one_e_dm_mo_complex,1),mo_num,mo_num,mo_occ,label)
|
||||||
call mo_as_svd_vectors_of_mo_matrix_eig_kpts(one_e_dm_mo_kpts,size(one_e_dm_mo_kpts,1),mo_num_per_kpt,mo_num_per_kpt,kpt_num,mo_occ_kpts,label)
|
call mo_as_svd_vectors_of_mo_matrix_eig_kpts(one_e_dm_mo_kpts,size(one_e_dm_mo_kpts,1),mo_num_per_kpt,mo_num_per_kpt,kpt_num,mo_occ_kpts,label)
|
||||||
soft_touch mo_occ_kpts
|
soft_touch mo_occ_kpts
|
||||||
|
@ -228,7 +228,7 @@ BEGIN_PROVIDER [ complex*16, mo_coef_kpts, (ao_num_per_kpt, mo_num_per_kpt, kpt_
|
|||||||
|
|
||||||
if (mpi_master) then
|
if (mpi_master) then
|
||||||
! Coefs
|
! Coefs
|
||||||
call ezfio_has_mo_basis_mo_coef_complex(exists)
|
call ezfio_has_mo_basis_mo_coef_kpts(exists)
|
||||||
endif
|
endif
|
||||||
IRP_IF MPI_DEBUG
|
IRP_IF MPI_DEBUG
|
||||||
print *, irp_here, mpi_rank
|
print *, irp_here, mpi_rank
|
||||||
|
@ -2,7 +2,7 @@ subroutine save_mos
|
|||||||
implicit none
|
implicit none
|
||||||
double precision, allocatable :: buffer(:,:)
|
double precision, allocatable :: buffer(:,:)
|
||||||
complex*16, allocatable :: buffer_c(:,:),buffer_k(:,:,:)
|
complex*16, allocatable :: buffer_c(:,:),buffer_k(:,:,:)
|
||||||
integer :: i,j,k
|
integer :: i,j,k,ishft,jshft
|
||||||
!TODO: change this for periodic?
|
!TODO: change this for periodic?
|
||||||
! save real/imag parts of mo_coef_complex
|
! save real/imag parts of mo_coef_complex
|
||||||
! otherwise need to make sure mo_coef and mo_coef_imag
|
! otherwise need to make sure mo_coef and mo_coef_imag
|
||||||
@ -12,19 +12,40 @@ subroutine save_mos
|
|||||||
call ezfio_set_mo_basis_mo_label(mo_label)
|
call ezfio_set_mo_basis_mo_label(mo_label)
|
||||||
call ezfio_set_mo_basis_ao_md5(ao_md5)
|
call ezfio_set_mo_basis_ao_md5(ao_md5)
|
||||||
if (is_complex) then
|
if (is_complex) then
|
||||||
!allocate ( buffer_c(ao_num,mo_num))
|
allocate ( buffer_c(ao_num,mo_num))
|
||||||
allocate ( buffer_k(ao_num_per_kpt,mo_num_per_kpt,kpt_num))
|
allocate ( buffer_k(ao_num_per_kpt,mo_num_per_kpt,kpt_num))
|
||||||
buffer_k = (0.d0,0.d0)
|
buffer_k = (0.d0,0.d0)
|
||||||
do k=1,kpt_num
|
do k=1,kpt_num
|
||||||
do j = 1, mo_num_per_kpt
|
do j = 1, mo_num_per_kpt
|
||||||
do i = 1, ao_num_per_kpt
|
do i = 1, ao_num_per_kpt
|
||||||
buffer_k(i,j,k) = mo_coef_kpts(i,j,k)
|
buffer_k(i,j,k) = mo_coef_kpts(i,j,k)
|
||||||
|
!print*,i,j,k,buffer_k(i,j,k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
buffer_c = (0.d0,0.d0)
|
||||||
|
do k=1,kpt_num
|
||||||
|
ishft = (k-1)*ao_num_per_kpt
|
||||||
|
jshft = (k-1)*mo_num_per_kpt
|
||||||
|
do j=1,mo_num_per_kpt
|
||||||
|
do i=1,ao_num_per_kpt
|
||||||
|
buffer_c(i+ishft,j+jshft) = buffer_k(i,j,k)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
call ezfio_set_mo_basis_mo_coef_kpts(buffer_k)
|
call ezfio_set_mo_basis_mo_coef_kpts(buffer_k)
|
||||||
deallocate (buffer_k)
|
call ezfio_set_mo_basis_mo_coef_complex(buffer_c)
|
||||||
|
|
||||||
|
deallocate (buffer_k,buffer_c)
|
||||||
|
mo_occ = 0.d0
|
||||||
|
do k=1,kpt_num
|
||||||
|
ishft=(k-1)*mo_num_per_kpt
|
||||||
|
do i=1,mo_num_per_kpt
|
||||||
|
mo_occ(i+ishft)=mo_occ_kpts(i,k)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
call ezfio_set_mo_basis_mo_occ_kpts(mo_occ_kpts)
|
call ezfio_set_mo_basis_mo_occ_kpts(mo_occ_kpts)
|
||||||
|
call ezfio_set_mo_basis_mo_occ(mo_occ)
|
||||||
else
|
else
|
||||||
allocate ( buffer(ao_num,mo_num) )
|
allocate ( buffer(ao_num,mo_num) )
|
||||||
buffer = 0.d0
|
buffer = 0.d0
|
||||||
|
@ -415,7 +415,7 @@ subroutine mo_as_svd_vectors_of_mo_matrix_eig_kpts(matrix,lda,m,n,nk,eig,label)
|
|||||||
A(i,j) = matrix(i,j,k)
|
A(i,j) = matrix(i,j,k)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
mo_coef_new = mo_coef_kpts(1,1,k)
|
mo_coef_new(1:ao_num_per_kpt,1:m) = mo_coef_kpts(1:ao_num_per_kpt,1:m,k)
|
||||||
|
|
||||||
call svd_complex(A,lda,U,lda,D,Vt,lda,m,n)
|
call svd_complex(A,lda,U,lda,D,Vt,lda,m,n)
|
||||||
|
|
||||||
@ -428,6 +428,11 @@ subroutine mo_as_svd_vectors_of_mo_matrix_eig_kpts(matrix,lda,m,n,nk,eig,label)
|
|||||||
do i=1,m
|
do i=1,m
|
||||||
eig(i,k) = D(i)
|
eig(i,k) = D(i)
|
||||||
enddo
|
enddo
|
||||||
|
!do j=1,mo_num_per_kpt
|
||||||
|
! do i=1,mo_num_per_kpt
|
||||||
|
! print'(3(I5),2(E25.15))',i,j,k,mo_coef_kpts(i,j,k)
|
||||||
|
! enddo
|
||||||
|
!enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
deallocate(A,mo_coef_new,U,Vt,D)
|
deallocate(A,mo_coef_new,U,Vt,D)
|
||||||
|
@ -17,6 +17,7 @@ program save_natorb
|
|||||||
call save_natural_mos
|
call save_natural_mos
|
||||||
call save_ref_determinant
|
call save_ref_determinant
|
||||||
call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals('None')
|
call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals('None')
|
||||||
|
call ezfio_set_mo_two_e_ints_io_df_mo_integrals('None')
|
||||||
call ezfio_set_mo_one_e_ints_io_mo_one_e_integrals('None')
|
call ezfio_set_mo_one_e_ints_io_mo_one_e_integrals('None')
|
||||||
call ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic('None')
|
call ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic('None')
|
||||||
call ezfio_set_mo_one_e_ints_io_mo_integrals_e_n('None')
|
call ezfio_set_mo_one_e_ints_io_mo_integrals_e_n('None')
|
||||||
|
Loading…
Reference in New Issue
Block a user