mirror of
https://gitlab.com/scemama/qp_plugins_scemama.git
synced 2024-08-29 23:43:43 +02:00
Added cholesky vectors in export
This commit is contained in:
parent
cfbae398c7
commit
400ec36d26
@ -34,9 +34,21 @@ doc: If True, export two-electron integrals in AO basis
|
||||
interface: ezfio, ocaml, provider
|
||||
default: False
|
||||
|
||||
[export_ao_two_e_ints_cholesky]
|
||||
type: logical
|
||||
doc: If True, export Cholesky-decomposed two-electron integrals in AO basis
|
||||
interface: ezfio, ocaml, provider
|
||||
default: False
|
||||
|
||||
[export_mo_two_e_ints]
|
||||
type: logical
|
||||
doc: If True, export two-electron integrals in MO basis
|
||||
interface: ezfio, ocaml, provider
|
||||
default: False
|
||||
|
||||
[export_mo_two_e_ints_cholesky]
|
||||
type: logical
|
||||
doc: If True, export Cholesky-decomposed two-electron integrals in MO basis
|
||||
interface: ezfio, ocaml, provider
|
||||
default: False
|
||||
|
||||
|
@ -319,6 +319,44 @@ subroutine export_trexio
|
||||
end if
|
||||
end if
|
||||
|
||||
! Two-e AO integrals - Cholesky
|
||||
! -----------------------------
|
||||
|
||||
if (export_ao_two_e_ints_cholesky) then
|
||||
print *, 'AO two-e integrals Cholesky'
|
||||
|
||||
rc = trexio_write_ao_2e_int_eri_cholesky_num(f, cholesky_ao_num)
|
||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||
|
||||
icount = 0_8
|
||||
offset = 0_8
|
||||
do k=1,cholesky_ao_num
|
||||
do j=1,ao_num
|
||||
do i=1,ao_num
|
||||
integral = cholesky_ao(i,j,k)
|
||||
if (integral == 0.d0) cycle
|
||||
icount += 1_8
|
||||
eri_buffer(icount) = integral
|
||||
eri_index(1,icount) = i
|
||||
eri_index(2,icount) = j
|
||||
eri_index(3,icount) = k
|
||||
if (icount == BUFSIZE) then
|
||||
rc = trexio_write_ao_2e_int_eri_cholesky(f, offset, icount, eri_index, eri_buffer)
|
||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||
offset += icount
|
||||
icount = 0_8
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
if (icount > 0_8) then
|
||||
rc = trexio_write_ao_2e_int_eri_cholesky(f, offset, icount, eri_index, eri_buffer)
|
||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
|
||||
! Molecular orbitals
|
||||
! ------------------
|
||||
@ -404,6 +442,46 @@ subroutine export_trexio
|
||||
end if
|
||||
end if
|
||||
|
||||
! Two-e MO integrals - Cholesky
|
||||
! -----------------------------
|
||||
|
||||
if (export_mo_two_e_ints_cholesky) then
|
||||
print *, 'MO two-e integrals Cholesky'
|
||||
PROVIDE mo_two_e_integrals_in_map
|
||||
|
||||
icount = 0_8
|
||||
offset = 0_8
|
||||
do l=1,mo_num
|
||||
do k=1,mo_num
|
||||
do j=l,mo_num
|
||||
do i=k,mo_num
|
||||
if (i==j .and. k<l) cycle
|
||||
if (i<j) cycle
|
||||
integral = mo_two_e_integral(i,j,k,l)
|
||||
if (integral == 0.d0) cycle
|
||||
icount += 1_8
|
||||
eri_buffer(icount) = integral
|
||||
eri_index(1,icount) = i
|
||||
eri_index(2,icount) = j
|
||||
eri_index(3,icount) = k
|
||||
eri_index(4,icount) = l
|
||||
if (icount == BUFSIZE) then
|
||||
rc = trexio_write_mo_2e_int_eri(f, offset, icount, eri_index, eri_buffer)
|
||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||
offset += icount
|
||||
icount = 0_8
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
if (icount > 0_8) then
|
||||
rc = trexio_write_mo_2e_int_eri(f, offset, icount, eri_index, eri_buffer)
|
||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
|
||||
! One-e RDM
|
||||
|
Loading…
Reference in New Issue
Block a user