10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-07-08 04:15:59 +02:00
quantum_package/src/Integrals_Monoelec/read_write.irp.f

85 lines
2.4 KiB
Fortran

BEGIN_PROVIDER [ logical, read_ao_one_integrals ]
&BEGIN_PROVIDER [ logical, read_mo_one_integrals ]
&BEGIN_PROVIDER [ logical, write_ao_one_integrals ]
&BEGIN_PROVIDER [ logical, write_mo_one_integrals ]
BEGIN_DOC
! One level of abstraction for disk_access_ao_integrals and disk_access_mo_integrals
END_DOC
implicit none
if (disk_access_ao_one_integrals.EQ.'Read') then
read_ao_one_integrals = .True.
write_ao_one_integrals = .False.
else if (disk_access_ao_one_integrals.EQ.'Write') then
read_ao_one_integrals = .False.
write_ao_one_integrals = .True.
else if (disk_access_ao_one_integrals.EQ.'None') then
read_ao_one_integrals = .False.
write_ao_one_integrals = .False.
else
print *, 'bielec_integrals/disk_access_ao_integrals has a wrong type'
stop 1
endif
if (disk_access_mo_one_integrals.EQ.'Read') then
read_mo_one_integrals = .True.
write_mo_one_integrals = .False.
else if (disk_access_mo_one_integrals.EQ.'Write') then
read_mo_one_integrals = .False.
write_mo_one_integrals = .True.
else if (disk_access_mo_one_integrals.EQ.'None') then
read_mo_one_integrals = .False.
write_mo_one_integrals = .False.
else
print *, 'bielec_integrals/disk_access_mo_integrals has a wrong type'
stop 1
endif
END_PROVIDER
subroutine write_one_e_integrals(filename, A, m, n)
implicit none
BEGIN_DOC
! Write the 1-electron integrals stored in A(m,n) into file 'filename'
END_DOC
character(len=*), intent(in) :: filename
integer, intent(in) :: m,n
double precision, intent(in) :: A(m,n)
integer :: iunit
integer, external :: getUnitAndOpen
character*(256) :: f
iunit = getUnitAndOpen( trim(ezfio_work_dir)//trim(filename), 'W' )
write(iunit) A
close(iunit)
end
subroutine read_one_e_integrals(filename, A, m, n)
implicit none
BEGIN_DOC
! Read the 1-electron integrals into in A(m,n) from file 'filename'
END_DOC
character(len=*), intent(in) :: filename
integer, intent(in) :: m,n
double precision, intent(out) :: A(m,n)
integer :: iunit
integer, external :: getUnitAndOpen
character*(256) :: f
iunit = getUnitAndOpen( trim(ezfio_work_dir)//trim(filename), 'R' )
read(iunit) A
close(iunit)
end