9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-18 11:23:38 +01:00

starting kpts

This commit is contained in:
Kevin Gasperich 2020-03-12 18:22:37 -05:00
parent d504108a33
commit 922eeb24c0
7 changed files with 140 additions and 4 deletions

View File

@ -10,6 +10,12 @@ doc: Complex nucleus-electron integrals in |AO| basis set
size: (2,ao_basis.ao_num,ao_basis.ao_num) size: (2,ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio interface: ezfio
[ao_integrals_n_e_kpts]
type: double precision
doc: Complex nucleus-electron integrals in |AO| basis set
size: (2,ao_basis.ao_num_per_kpt,ao_basis.ao_num_per_kpt,nuclei.kpt_num)
interface: ezfio
[io_ao_integrals_n_e] [io_ao_integrals_n_e]
type: Disk_access type: Disk_access
doc: Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ] doc: Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ]
@ -29,6 +35,12 @@ doc: Complex kinetic energy integrals in |AO| basis set
size: (2,ao_basis.ao_num,ao_basis.ao_num) size: (2,ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio interface: ezfio
[ao_integrals_kinetic_kpts]
type: double precision
doc: Complex kinetic energy integrals in |AO| basis set
size: (2,ao_basis.ao_num_per_kpt,ao_basis.ao_num_per_kpt,nuclei.kpt_num)
interface: ezfio
[io_ao_integrals_kinetic] [io_ao_integrals_kinetic]
type: Disk_access type: Disk_access
doc: Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ] doc: Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ]
@ -48,6 +60,12 @@ doc: Complex pseudopotential integrals in |AO| basis set
size: (2,ao_basis.ao_num,ao_basis.ao_num) size: (2,ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio interface: ezfio
[ao_integrals_pseudo_kpts]
type: double precision
doc: Complex pseudopotential integrals in |AO| basis set
size: (2,ao_basis.ao_num_per_kpt,ao_basis.ao_num_per_kpt,nuclei.kpt_num)
interface: ezfio
[io_ao_integrals_pseudo] [io_ao_integrals_pseudo]
type: Disk_access type: Disk_access
doc: Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ] doc: Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ]
@ -67,6 +85,12 @@ doc: Complex overlap integrals in |AO| basis set
size: (2,ao_basis.ao_num,ao_basis.ao_num) size: (2,ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio interface: ezfio
[ao_integrals_overlap_kpts]
type: double precision
doc: Complex overlap integrals in |AO| basis set
size: (2,ao_basis.ao_num_per_kpt,ao_basis.ao_num_per_kpt,nuclei.kpt_num)
interface: ezfio
[io_ao_integrals_overlap] [io_ao_integrals_overlap]
type: Disk_access type: Disk_access
doc: Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ] doc: Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ]
@ -86,6 +110,12 @@ doc: Complex combined integrals in |AO| basis set
size: (2,ao_basis.ao_num,ao_basis.ao_num) size: (2,ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio interface: ezfio
[ao_one_e_integrals_kpts]
type: double precision
doc: Complex combined integrals in |AO| basis set
size: (2,ao_basis.ao_num_per_kpt,ao_basis.ao_num_per_kpt,nuclei.kpt_num)
interface: ezfio
[io_ao_one_e_integrals] [io_ao_one_e_integrals]
type: Disk_access type: Disk_access
doc: Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] doc: Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]

View File

@ -82,3 +82,33 @@ END_PROVIDER
ENDIF ENDIF
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ complex*16, ao_one_e_integrals_kpts,(ao_num_per_kpt,ao_num_per_kpt,kpt_num)]
&BEGIN_PROVIDER [ double precision, ao_one_e_integrals_diag_kpts,(ao_num_per_kpt,kpt_num)]
implicit none
integer :: j,k
BEGIN_DOC
! One-electron Hamiltonian in the |AO| basis.
END_DOC
if (read_ao_one_e_integrals) then
call ezfio_get_ao_one_e_ints_ao_one_e_integrals_kpts(ao_one_e_integrals_kpts)
else
ao_one_e_integrals_kpts = ao_integrals_n_e_kpts + ao_kinetic_integrals_kpts
if (do_pseudo) then
ao_one_e_integrals_kpts += ao_pseudo_integrals_kpts
endif
endif
do k = 1, kpt_num
do j = 1, ao_num_per_kpt
ao_one_e_integrals_diag_kpts(j,k) = dble(ao_one_e_integrals_kpts(j,j,k))
enddo
enddo
if (write_ao_one_e_integrals) then
call ezfio_set_ao_one_e_ints_ao_one_e_integrals_kpts(ao_one_e_integrals_kpts)
print *, 'AO one-e integrals written to disk'
endif
END_PROVIDER

View File

@ -1,4 +1,4 @@
!todo: add kpts
BEGIN_PROVIDER [ complex*16, ao_cart_to_sphe_coef_complex, (ao_num,ao_cart_to_sphe_num) ] BEGIN_PROVIDER [ complex*16, ao_cart_to_sphe_coef_complex, (ao_num,ao_cart_to_sphe_num) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC

View File

@ -104,6 +104,23 @@ BEGIN_PROVIDER [ complex*16, ao_overlap_complex, (ao_num, ao_num) ]
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ complex*16, ao_overlap_kpts, (ao_num_per_kpt, ao_num_per_kpt, kpt_num) ]
implicit none
BEGIN_DOC
! Overlap for complex AOs
END_DOC
if (read_ao_integrals_overlap) then
call ezfio_get_ao_one_e_ints_ao_integrals_overlap_kpts(ao_overlap_kpts)
print *, 'AO overlap integrals read from disk'
else
print*,'complex AO overlap ints must be provided',irp_here
endif
if (write_ao_integrals_overlap) then
call ezfio_set_ao_one_e_ints_ao_integrals_overlap_kpts(ao_overlap_kpts)
print *, 'AO overlap integrals written to disk'
endif
END_PROVIDER
@ -123,9 +140,14 @@ BEGIN_PROVIDER [ double precision, ao_overlap_abs,(ao_num,ao_num) ]
integer :: power_A(3), power_B(3) integer :: power_A(3), power_B(3)
double precision :: lower_exp_val, dx double precision :: lower_exp_val, dx
if (is_complex) then if (is_complex) then
do j=1,ao_num ao_overlap_abs = 0.d0
do i= 1,ao_num integer :: k, ishift
ao_overlap_abs(i,j)= cdabs(ao_overlap_complex(i,j)) do k=1,kpt_num
ishift = (k-1)*ao_num_per_kpt
do j=1,ao_num_per_kpt
do i= 1,ao_num_per_kpt
ao_overlap_abs(ishift+i,ishift+j)= cdabs(ao_overlap_kpts(i,j,k))
enddo
enddo enddo
enddo enddo
else else

View File

@ -191,3 +191,24 @@ BEGIN_PROVIDER [complex*16, ao_kinetic_integrals_complex, (ao_num,ao_num)]
print *, 'AO kinetic integrals written to disk' print *, 'AO kinetic integrals written to disk'
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [complex*16, ao_kinetic_integrals_kpts, (ao_num_per_kpt,ao_num_per_kpt,kpt_num)]
implicit none
BEGIN_DOC
! Kinetic energy integrals in the |AO| basis.
!
! $\langle \chi_i |\hat{T}| \chi_j \rangle$
!
END_DOC
if (read_ao_integrals_kinetic) then
call ezfio_get_ao_one_e_ints_ao_integrals_kinetic_kpts(ao_kinetic_integrals_kpts)
print *, 'AO kinetic integrals read from disk'
else
print *, irp_here, ': Not yet implemented'
stop -1
endif
if (write_ao_integrals_kinetic) then
call ezfio_set_ao_one_e_ints_ao_integrals_kinetic_kpts(ao_kinetic_integrals_kpts)
print *, 'AO kinetic integrals written to disk'
endif
END_PROVIDER

View File

@ -120,6 +120,21 @@ BEGIN_PROVIDER [complex*16, ao_integrals_n_e_complex, (ao_num,ao_num)]
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [complex*16, ao_integrals_n_e_kpts, (ao_num_per_kpt,ao_num_per_kpt,kpt_num)]
implicit none
BEGIN_DOC
! Nucleus-electron interaction, in the |AO| basis set.
!
! :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle`
END_DOC
if (read_ao_integrals_n_e) then
call ezfio_get_ao_one_e_ints_ao_integrals_n_e_kpts(ao_integrals_n_e_kpts)
print *, 'AO N-e integrals read from disk'
else
print *, irp_here, ': Not yet implemented'
endif
END_PROVIDER
BEGIN_PROVIDER [ double precision, ao_integrals_n_e_per_atom, (ao_num,ao_num,nucl_num)] BEGIN_PROVIDER [ double precision, ao_integrals_n_e_per_atom, (ao_num,ao_num,nucl_num)]
BEGIN_DOC BEGIN_DOC
! Nucleus-electron interaction in the |AO| basis set, per atom A. ! Nucleus-electron interaction in the |AO| basis set, per atom A.

View File

@ -62,6 +62,24 @@ BEGIN_PROVIDER [ complex*16, ao_pseudo_integrals_complex, (ao_num, ao_num) ]
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ complex*16, ao_pseudo_integrals_kpts, (ao_num_per_kpt, ao_num_per_kpt, kpt_num) ]
implicit none
BEGIN_DOC
! Overlap for complex AOs
END_DOC
if (read_ao_integrals_pseudo) then
call ezfio_get_ao_one_e_ints_ao_integrals_pseudo_kpts(ao_pseudo_integrals_kpts)
print *, 'AO pseudo_integrals integrals read from disk'
else
print*,irp_here,'not implemented'
stop -1
endif
if (write_ao_integrals_pseudo) then
call ezfio_set_ao_one_e_ints_ao_integrals_pseudo_kpts(ao_pseudo_integrals_kpts)
print *, 'AO pseudo_integrals integrals written to disk'
endif
END_PROVIDER
BEGIN_PROVIDER [ double precision, ao_pseudo_integrals_local, (ao_num,ao_num)] BEGIN_PROVIDER [ double precision, ao_pseudo_integrals_local, (ao_num,ao_num)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC